1 package org.lsst.ccs.plugin.jas3.jms;
2
3 import java.awt.Component;
4 import javax.swing.JOptionPane;
5
6
7
8
9
10 class JmsPreferencesPanel extends javax.swing.JPanel {
11 private final JmsPreferences prefs;
12
13
14
15
16 JmsPreferencesPanel(JmsPreferences prefs) {
17 this.prefs = prefs;
18 initComponents();
19 setEnabled();
20 }
21
22
23
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
47
48
49
50 @SuppressWarnings("unchecked")
51
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 }
131
132 private void jmsTransportCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
133 if (!prefs.canUseTransport()) {
134 JOptionPane.showMessageDialog(this, "Transport not available.");
135 jmsTransportCheckbox.setSelected(false);
136 }
137 setEnabled();
138 }
139
140
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
146 }