View Javadoc

1   package org.lsst.ccs.plugin.jas3.jms;
2   
3   import java.awt.Component;
4   import javax.swing.JOptionPane;
5   
6   /**
7    * A preferences panel for setting JMS preferences.
8    * @author tonyj
9    */
10  class JmsPreferencesPanel extends javax.swing.JPanel {
11      private final JmsPreferences prefs;
12  
13      /**
14       * Creates new form JmsPreferencesPanel
15       */
16      JmsPreferencesPanel(JmsPreferences prefs) {
17          this.prefs = prefs;
18          initComponents();
19          setEnabled();
20      }
21      
22          /**
23       * Write any changes back into the preferences
24       */
25      void apply() {
26          boolean transportChanged = jmsTransportCheckbox.isSelected() != prefs.isUseTransport();
27          final int newPort = ((Number) portSpinner.getValue()).intValue();
28          boolean serverOrPortChanged = newPort != prefs.getJmsPort() || !serverTextField.getText().equals(prefs.getJmsServer());
29          prefs.setJmsPort(newPort);
30          prefs.setJmsServer(serverTextField.getText());
31          prefs.setUseTransport(jmsTransportCheckbox.isSelected());
32          if (transportChanged || serverOrPortChanged) {
33             JOptionPane.showMessageDialog(this, "Console must be restarted for transport change to take effect.");
34          }
35      }
36      
37      private void setEnabled() {
38          final boolean enabled = jmsTransportCheckbox.isSelected();
39          jPanel1.setEnabled(enabled);
40          for (Component c : jPanel1.getComponents()) {
41              c.setEnabled(enabled);
42          }
43      }
44  
45      /**
46       * This method is called from within the constructor to initialize the form.
47       * WARNING: Do NOT modify this code. The content of this method is always
48       * regenerated by the Form Editor.
49       */
50      @SuppressWarnings("unchecked")
51      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
52      private void initComponents() {
53  
54          jmsTransportCheckbox = new javax.swing.JCheckBox();
55          jPanel1 = new javax.swing.JPanel();
56          javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
57          serverTextField = new javax.swing.JTextField();
58          javax.swing.JLabel jLabel2 = new javax.swing.JLabel();
59          portSpinner = new javax.swing.JSpinner();
60  
61          jmsTransportCheckbox.setSelected(prefs.isUseTransport());
62          jmsTransportCheckbox.setText("Use JMS transport (rather than default)");
63          jmsTransportCheckbox.addActionListener(new java.awt.event.ActionListener() {
64              public void actionPerformed(java.awt.event.ActionEvent evt) {
65                  jmsTransportCheckboxActionPerformed(evt);
66              }
67          });
68  
69          jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("JMS properties"));
70  
71          jLabel1.setText("Server:");
72  
73          serverTextField.setText(prefs.getJmsServer());
74  
75          jLabel2.setText("Port:");
76  
77          portSpinner.setModel(new javax.swing.SpinnerNumberModel(prefs.getJmsPort(),1,65535,1));
78  
79          javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
80          jPanel1.setLayout(jPanel1Layout);
81          jPanel1Layout.setHorizontalGroup(
82              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
83              .addGroup(jPanel1Layout.createSequentialGroup()
84                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
85                      .addComponent(jLabel2)
86                      .addComponent(jLabel1))
87                  .addGap(4, 4, 4)
88                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
89                      .addComponent(serverTextField)
90                      .addGroup(jPanel1Layout.createSequentialGroup()
91                          .addComponent(portSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
92                          .addGap(0, 0, Short.MAX_VALUE)))
93                  .addContainerGap())
94          );
95          jPanel1Layout.setVerticalGroup(
96              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
97              .addGroup(jPanel1Layout.createSequentialGroup()
98                  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
99                      .addComponent(jLabel1)
100                     .addComponent(serverTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
101                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
102                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
103                     .addComponent(jLabel2)
104                     .addComponent(portSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
105                 .addGap(0, 0, Short.MAX_VALUE))
106         );
107 
108         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
109         this.setLayout(layout);
110         layout.setHorizontalGroup(
111             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
112             .addGroup(layout.createSequentialGroup()
113                 .addContainerGap()
114                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
115                     .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
116                     .addGroup(layout.createSequentialGroup()
117                         .addComponent(jmsTransportCheckbox)
118                         .addGap(0, 0, Short.MAX_VALUE)))
119                 .addContainerGap())
120         );
121         layout.setVerticalGroup(
122             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
123             .addGroup(layout.createSequentialGroup()
124                 .addContainerGap()
125                 .addComponent(jmsTransportCheckbox)
126                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
127                 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
128                 .addContainerGap())
129         );
130     }// </editor-fold>//GEN-END:initComponents
131 
132     private void jmsTransportCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmsTransportCheckboxActionPerformed
133         if (!prefs.canUseTransport()) {
134             JOptionPane.showMessageDialog(this, "Transport not available.");
135             jmsTransportCheckbox.setSelected(false);
136         }
137         setEnabled();
138     }//GEN-LAST:event_jmsTransportCheckboxActionPerformed
139 
140     // Variables declaration - do not modify//GEN-BEGIN:variables
141     private javax.swing.JPanel jPanel1;
142     private javax.swing.JCheckBox jmsTransportCheckbox;
143     private javax.swing.JSpinner portSpinner;
144     private javax.swing.JTextField serverTextField;
145     // End of variables declaration//GEN-END:variables
146 }