0
|
1 |
/*
|
|
2 |
* Copyright (c) 2000 - 2006 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
* All rights reserved.
|
|
4 |
* This component and the accompanying materials are made available
|
|
5 |
* under the terms of "Eclipse Public License v1.0"
|
|
6 |
* which accompanies this distribution, and is available
|
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
*
|
|
9 |
* Initial Contributors:
|
|
10 |
* Nokia Corporation - initial contribution.
|
|
11 |
*
|
|
12 |
* Contributors:
|
|
13 |
*
|
|
14 |
* Description:
|
|
15 |
*
|
|
16 |
*/
|
|
17 |
|
|
18 |
|
|
19 |
package com.nokia.epdt.plugins.s60.pan;
|
|
20 |
|
|
21 |
/* java.awt */
|
|
22 |
import java.awt.Component;
|
|
23 |
import java.awt.BorderLayout;
|
|
24 |
import java.awt.GridBagLayout;
|
|
25 |
import java.awt.GridBagConstraints;
|
|
26 |
|
|
27 |
/* java.awt.event */
|
|
28 |
import java.awt.event.ActionEvent;
|
|
29 |
import java.awt.event.ActionListener;
|
|
30 |
|
|
31 |
/* javax.swing */
|
|
32 |
import javax.swing.Icon;
|
|
33 |
import javax.swing.JOptionPane;
|
|
34 |
import javax.swing.JPanel;
|
|
35 |
import javax.swing.JLabel;
|
|
36 |
import javax.swing.JComboBox;
|
|
37 |
import javax.swing.JRadioButton;
|
|
38 |
import javax.swing.ButtonGroup;
|
|
39 |
|
|
40 |
/* javax.swing.border */
|
|
41 |
import javax.swing.border.EmptyBorder;
|
|
42 |
import javax.swing.border.TitledBorder;
|
|
43 |
|
|
44 |
/* com.nokia.wtk.util.gui */
|
|
45 |
import com.nokia.wtk.util.gui.GUI;
|
|
46 |
import com.nokia.wtk.util.gui.BorderPanel;
|
|
47 |
|
|
48 |
/**
|
|
49 |
* PanPluginJPanel
|
|
50 |
*
|
|
51 |
* @version 1.0
|
|
52 |
*/
|
|
53 |
class PanPluginJPanel extends JPanel
|
|
54 |
{
|
|
55 |
private static final int GAP = 6;
|
|
56 |
private static final String AUTO_PORT = "auto";
|
|
57 |
private static final String[] HCI_MODULES = new String[]{"BCSP", "H4",
|
|
58 |
"USB"};
|
|
59 |
private static final int HCI_USB_INDEX = 2;
|
|
60 |
private static final int MAX_COM_PORTS = 16;
|
|
61 |
|
|
62 |
private PanModel panModel;
|
|
63 |
private PanPlugin panPlugin;
|
|
64 |
|
|
65 |
private boolean updateInProgress = false;
|
|
66 |
private JComboBox bluetoothComPortJComboBox;
|
|
67 |
private JRadioButton bluetoothDisableJRadioButton;
|
|
68 |
private JRadioButton bluetoothEnableJRadioButton;
|
|
69 |
private JComboBox bluetoothHciJComboBox;
|
|
70 |
private JComboBox irdaComPortJComboBox;
|
|
71 |
private JRadioButton irdaDisableJRadioButton;
|
|
72 |
private JRadioButton irdaEnableJRadioButton;
|
|
73 |
|
|
74 |
/**
|
|
75 |
* Creates new form PanPluginJPanel
|
|
76 |
* @param plugin the plugin that creates this panel
|
|
77 |
* @param connected <code>true</code> if we are connected to the emulator
|
|
78 |
*/
|
|
79 |
PanPluginJPanel(PanPlugin plugin)
|
|
80 |
{
|
|
81 |
super(new GridBagLayout());
|
|
82 |
panPlugin = plugin;
|
|
83 |
panModel = plugin.getModel();
|
|
84 |
initComponents();
|
|
85 |
}
|
|
86 |
|
|
87 |
private static String getResString(String key)
|
|
88 |
{
|
|
89 |
return PanResourceBundle.getInstance().getValue(key);
|
|
90 |
}
|
|
91 |
|
|
92 |
JPanel buildOnePanel(String t, JRadioButton b1, JRadioButton b2, JPanel c)
|
|
93 |
{
|
|
94 |
BorderPanel bp = new BorderPanel(b2);
|
|
95 |
bp.getContentPanel().add(c);
|
|
96 |
|
|
97 |
JPanel p = new JPanel(new GridBagLayout());
|
|
98 |
GridBagConstraints gbc = new GridBagConstraints();
|
|
99 |
|
|
100 |
gbc.weightx = 1.0;
|
|
101 |
gbc.gridwidth = GridBagConstraints.REMAINDER;
|
|
102 |
gbc.fill = GridBagConstraints.HORIZONTAL;
|
|
103 |
gbc.anchor = GridBagConstraints.NORTH;
|
|
104 |
gbc.insets.left = bp.getBorder().getBorderInsets(bp).left
|
|
105 |
+ BorderPanel.COMPONENT_INSET_H;
|
|
106 |
p.add(b1, gbc);
|
|
107 |
|
|
108 |
gbc.weighty = 1.0;
|
|
109 |
gbc.insets.left = 0;
|
|
110 |
gbc.fill = GridBagConstraints.BOTH;
|
|
111 |
gbc.gridheight = GridBagConstraints.REMAINDER;
|
|
112 |
p.add(bp, gbc);
|
|
113 |
|
|
114 |
int left = BorderPanel.COMPONENT_INSET_H + GAP;
|
|
115 |
c.setBorder(new EmptyBorder(0, left, GAP, GAP));
|
|
116 |
p.setBorder(new TitledBorder(t));
|
|
117 |
return p;
|
|
118 |
}
|
|
119 |
|
|
120 |
/** This method is called from within the constructor to
|
|
121 |
* initialize the form.
|
|
122 |
*/
|
|
123 |
private void initComponents()
|
|
124 |
{
|
|
125 |
Object[] btComPorts = new Object[MAX_COM_PORTS];
|
|
126 |
Object[] irdaComPorts = new Object[MAX_COM_PORTS];
|
|
127 |
for (int i = 0; i < MAX_COM_PORTS; i++)
|
|
128 |
{
|
|
129 |
String label = Integer.toString(i + 1);
|
|
130 |
btComPorts[i] = new ComPortItem(label);
|
|
131 |
irdaComPorts[i] = label;
|
|
132 |
}
|
|
133 |
|
|
134 |
bluetoothDisableJRadioButton = new JRadioButton(
|
|
135 |
getResString(PanConstants.BLUETOOTH_DISABLE_LABEL));
|
|
136 |
bluetoothEnableJRadioButton = new JRadioButton(
|
|
137 |
getResString(PanConstants.BLUETOOTH_ENABLE_LABEL));
|
|
138 |
bluetoothComPortJComboBox = new JComboBox(btComPorts);
|
|
139 |
bluetoothHciJComboBox = new JComboBox(HCI_MODULES);
|
|
140 |
irdaDisableJRadioButton = new JRadioButton(
|
|
141 |
getResString(PanConstants.IRDA_DISABLE_LABEL));
|
|
142 |
irdaEnableJRadioButton = new JRadioButton(
|
|
143 |
getResString(PanConstants.IRDA_ENABLE_LABEL));
|
|
144 |
irdaComPortJComboBox = new JComboBox(irdaComPorts);
|
|
145 |
|
|
146 |
// Bluetooth
|
|
147 |
JPanel bluetoothEnableJPanel = GUI
|
|
148 |
.createRowPanel(new Component[]{
|
|
149 |
new JLabel(
|
|
150 |
getResString(PanConstants.BLUETOOTH_COM_PORT_LABEL)),
|
|
151 |
bluetoothComPortJComboBox,
|
|
152 |
new JLabel(
|
|
153 |
getResString(PanConstants.BLUETOOTH_COM_HCI_LABEL)),
|
|
154 |
bluetoothHciJComboBox});
|
|
155 |
|
|
156 |
JPanel bluetoothJPanel = buildOnePanel(
|
|
157 |
getResString(PanConstants.BLUETOOTH_BORDER_TITLE),
|
|
158 |
bluetoothDisableJRadioButton, bluetoothEnableJRadioButton,
|
|
159 |
bluetoothEnableJPanel);
|
|
160 |
|
|
161 |
ButtonGroup bluetoothButtonGroup = new ButtonGroup();
|
|
162 |
bluetoothButtonGroup.add(bluetoothDisableJRadioButton);
|
|
163 |
bluetoothDisableJRadioButton.addActionListener(new ActionListener()
|
|
164 |
{
|
|
165 |
public void actionPerformed(ActionEvent evt)
|
|
166 |
{
|
|
167 |
bluetoothDisableJRadioButtonActionPerformed(evt);
|
|
168 |
}
|
|
169 |
});
|
|
170 |
|
|
171 |
bluetoothButtonGroup.add(bluetoothEnableJRadioButton);
|
|
172 |
bluetoothEnableJRadioButton.addActionListener(new ActionListener()
|
|
173 |
{
|
|
174 |
public void actionPerformed(ActionEvent evt)
|
|
175 |
{
|
|
176 |
bluetoothEnableJRadioButtonActionPerformed(evt);
|
|
177 |
}
|
|
178 |
});
|
|
179 |
|
|
180 |
bluetoothComPortJComboBox.addActionListener(new ActionListener()
|
|
181 |
{
|
|
182 |
public void actionPerformed(ActionEvent evt)
|
|
183 |
{
|
|
184 |
bluetoothComPortJComboBoxActionPerformed(evt);
|
|
185 |
}
|
|
186 |
});
|
|
187 |
|
|
188 |
bluetoothHciJComboBox.addActionListener(new ActionListener()
|
|
189 |
{
|
|
190 |
public void actionPerformed(ActionEvent evt)
|
|
191 |
{
|
|
192 |
bluetoothHciJComboBoxActionPerformed(evt);
|
|
193 |
}
|
|
194 |
});
|
|
195 |
|
|
196 |
// IRDA
|
|
197 |
JPanel irdaEnableJPanel = GUI.createRowPanel(new Component[]{
|
|
198 |
new JLabel(getResString(PanConstants.IRDA_COM_PORT_LABEL)),
|
|
199 |
irdaComPortJComboBox});
|
|
200 |
|
|
201 |
JPanel irdaJPanel = buildOnePanel(
|
|
202 |
getResString(PanConstants.IRDA_BORDER_TITLE),
|
|
203 |
irdaDisableJRadioButton, irdaEnableJRadioButton,
|
|
204 |
irdaEnableJPanel);
|
|
205 |
|
|
206 |
ButtonGroup irdaButtonGroup = new ButtonGroup();
|
|
207 |
irdaButtonGroup.add(irdaDisableJRadioButton);
|
|
208 |
irdaDisableJRadioButton.addActionListener(new ActionListener()
|
|
209 |
{
|
|
210 |
public void actionPerformed(ActionEvent evt)
|
|
211 |
{
|
|
212 |
irdaDisableJRadioButtonActionPerformed(evt);
|
|
213 |
}
|
|
214 |
});
|
|
215 |
|
|
216 |
irdaButtonGroup.add(irdaEnableJRadioButton);
|
|
217 |
irdaEnableJRadioButton.addActionListener(new ActionListener()
|
|
218 |
{
|
|
219 |
public void actionPerformed(ActionEvent evt)
|
|
220 |
{
|
|
221 |
irdaEnableJRadioButtonActionPerformed(evt);
|
|
222 |
}
|
|
223 |
});
|
|
224 |
|
|
225 |
irdaComPortJComboBox.addActionListener(new ActionListener()
|
|
226 |
{
|
|
227 |
public void actionPerformed(ActionEvent evt)
|
|
228 |
{
|
|
229 |
irdaComPortJComboBoxActionPerformed(evt);
|
|
230 |
}
|
|
231 |
});
|
|
232 |
|
|
233 |
JPanel row = new JPanel(new GridBagLayout());
|
|
234 |
GridBagConstraints gbc = new GridBagConstraints();
|
|
235 |
gbc.gridheight = GridBagConstraints.REMAINDER;
|
|
236 |
gbc.fill = GridBagConstraints.BOTH;
|
|
237 |
gbc.insets.right = GAP;
|
|
238 |
gbc.weightx = 1.0;
|
|
239 |
gbc.weighty = 1.0;
|
|
240 |
row.add(bluetoothJPanel, gbc);
|
|
241 |
|
|
242 |
gbc.insets.right = 0;
|
|
243 |
gbc.gridwidth = GridBagConstraints.REMAINDER;
|
|
244 |
row.add(irdaJPanel, gbc);
|
|
245 |
|
|
246 |
gbc.gridheight = 1;
|
|
247 |
gbc.fill = GridBagConstraints.HORIZONTAL;
|
|
248 |
gbc.anchor = GridBagConstraints.NORTH;
|
|
249 |
add(row, gbc);
|
|
250 |
|
|
251 |
gbc.gridheight = GridBagConstraints.REMAINDER;
|
|
252 |
gbc.anchor = GridBagConstraints.SOUTH;
|
|
253 |
|
|
254 |
setBorder(new EmptyBorder(GAP, GAP, GAP, GAP));
|
|
255 |
|
|
256 |
//Set the initial values, obtained from .esk files:
|
|
257 |
update();
|
|
258 |
}
|
|
259 |
|
|
260 |
/**
|
|
261 |
* Update UI components from Model:
|
|
262 |
*/
|
|
263 |
public void update()
|
|
264 |
{
|
|
265 |
// Update Bluetooth panel
|
|
266 |
if (!updateInProgress)
|
|
267 |
{//If the function is not called as the result of components updates,
|
|
268 |
//i.e. there is no update ongiong already
|
|
269 |
updateInProgress = true;
|
|
270 |
boolean bluetoothEnabled = panModel.isBluetoothEnabled();
|
|
271 |
int hci = panModel.getBluetoothHci();
|
|
272 |
boolean usb = (hci == HCI_USB_INDEX);
|
|
273 |
bluetoothDisableJRadioButton.setSelected(!bluetoothEnabled);
|
|
274 |
bluetoothEnableJRadioButton.setSelected(bluetoothEnabled);
|
|
275 |
bluetoothHciJComboBox.setSelectedIndex(bluetoothEnabled ? hci : -1);
|
|
276 |
bluetoothHciJComboBox.setEnabled(bluetoothEnabled);
|
|
277 |
bluetoothComPortJComboBox.setEnabled(bluetoothEnabled);
|
|
278 |
bluetoothComPortJComboBox.setSelectedIndex(panModel
|
|
279 |
.getBluetoothComPort());
|
|
280 |
bluetoothComPortJComboBox.setEnabled(bluetoothEnabled && !usb);
|
|
281 |
|
|
282 |
// Update IRDA panel
|
|
283 |
boolean irdaEnabled = panModel.isIrdaEnabled();
|
|
284 |
irdaDisableJRadioButton.setSelected(!irdaEnabled);
|
|
285 |
irdaEnableJRadioButton.setSelected(irdaEnabled);
|
|
286 |
irdaComPortJComboBox.setEnabled(irdaEnabled);
|
|
287 |
irdaComPortJComboBox.setSelectedIndex(panModel.getIrdaComPort());
|
|
288 |
updateInProgress = false;
|
|
289 |
}
|
|
290 |
}
|
|
291 |
|
|
292 |
private void irdaComPortJComboBoxActionPerformed(ActionEvent evt)
|
|
293 |
{
|
|
294 |
if (!updateInProgress)
|
|
295 |
{//I.e. if update came from UI
|
|
296 |
if (panModel.getBluetoothHci() == panModel.BT_HCI_USB_INDEX ||
|
|
297 |
//HCI is not USB, where com port is selected automatically
|
|
298 |
irdaComPortJComboBox.getSelectedIndex() != panModel
|
|
299 |
.getBluetoothComPort())
|
|
300 |
//or com ports are different
|
|
301 |
{
|
|
302 |
panModel
|
|
303 |
.setIrdaComPort(irdaComPortJComboBox.getSelectedIndex());
|
|
304 |
panPlugin.pluginModelChangedAction();
|
|
305 |
} else
|
|
306 |
{
|
|
307 |
irdaComPortJComboBox
|
|
308 |
.setSelectedIndex(panModel.getIrdaComPort());
|
|
309 |
JOptionPane.showMessageDialog(this,
|
|
310 |
getResString("comPortEqualWarning"),
|
|
311 |
getResString("dialogTitle"), JOptionPane.ERROR_MESSAGE);
|
|
312 |
}
|
|
313 |
}
|
|
314 |
}
|
|
315 |
|
|
316 |
private void irdaEnableJRadioButtonActionPerformed(ActionEvent evt)
|
|
317 |
{
|
|
318 |
if (!updateInProgress)
|
|
319 |
{//I.e. if update came from UI
|
|
320 |
//We set the default values of com ports (COM 1) when switching
|
|
321 |
//from disabled mode
|
|
322 |
panModel.setIrdaComPort(0);
|
|
323 |
panPlugin.pluginModelChangedAction();
|
|
324 |
update();
|
|
325 |
}
|
|
326 |
}
|
|
327 |
|
|
328 |
private void irdaDisableJRadioButtonActionPerformed(ActionEvent evt)
|
|
329 |
{
|
|
330 |
if (!updateInProgress)
|
|
331 |
{//I.e. if update came from UI
|
|
332 |
//Setting com port to -1 means disabling it
|
|
333 |
panModel.setIrdaComPort(-1);
|
|
334 |
panPlugin.pluginModelChangedAction();
|
|
335 |
update();
|
|
336 |
}
|
|
337 |
}
|
|
338 |
|
|
339 |
private void bluetoothEnableJRadioButtonActionPerformed(ActionEvent evt)
|
|
340 |
{
|
|
341 |
if (!updateInProgress)
|
|
342 |
{//I.e. if update came from UI
|
|
343 |
//We set the default values of com ports (COM 1) when switching
|
|
344 |
//from disabled mode
|
|
345 |
panModel.setBluetoothComPort(0);
|
|
346 |
panPlugin.pluginModelChangedAction();
|
|
347 |
update();
|
|
348 |
}
|
|
349 |
}
|
|
350 |
|
|
351 |
private void bluetoothDisableJRadioButtonActionPerformed(ActionEvent evt)
|
|
352 |
{
|
|
353 |
if (!updateInProgress)
|
|
354 |
{//I.e. if update came from UI
|
|
355 |
//Setting com port to -1 means disabling it
|
|
356 |
panModel.setBluetoothComPort(-1);
|
|
357 |
panPlugin.pluginModelChangedAction();
|
|
358 |
update();
|
|
359 |
}
|
|
360 |
}
|
|
361 |
|
|
362 |
private void bluetoothHciJComboBoxActionPerformed(ActionEvent evt)
|
|
363 |
{
|
|
364 |
if (!updateInProgress)
|
|
365 |
{//I.e. if update came from UI
|
|
366 |
int index = bluetoothHciJComboBox.getSelectedIndex();
|
|
367 |
if (index >= 0)
|
|
368 |
{
|
|
369 |
panModel.setBluetoothHci(index);
|
|
370 |
panPlugin.pluginModelChangedAction();
|
|
371 |
update();
|
|
372 |
}
|
|
373 |
}
|
|
374 |
}
|
|
375 |
|
|
376 |
private void bluetoothComPortJComboBoxActionPerformed(ActionEvent evt)
|
|
377 |
{
|
|
378 |
if (!updateInProgress)
|
|
379 |
{//I.e. if update came from UI
|
|
380 |
if (bluetoothComPortJComboBox.getSelectedIndex() != panModel
|
|
381 |
.getIrdaComPort())
|
|
382 |
{
|
|
383 |
panModel.setBluetoothComPort(bluetoothComPortJComboBox
|
|
384 |
.getSelectedIndex());
|
|
385 |
panPlugin.pluginModelChangedAction();
|
|
386 |
} else
|
|
387 |
{
|
|
388 |
bluetoothComPortJComboBox.setSelectedIndex(panModel
|
|
389 |
.getBluetoothComPort());
|
|
390 |
JOptionPane.showMessageDialog(this,
|
|
391 |
getResString("comPortEqualWarning"),
|
|
392 |
getResString("dialogTitle"), JOptionPane.ERROR_MESSAGE);
|
|
393 |
}
|
|
394 |
}
|
|
395 |
}
|
|
396 |
|
|
397 |
private class ComPortItem
|
|
398 |
{
|
|
399 |
private String comPortNumber;
|
|
400 |
ComPortItem(String label)
|
|
401 |
{
|
|
402 |
comPortNumber = label;
|
|
403 |
}
|
|
404 |
public String toString()
|
|
405 |
{
|
|
406 |
return panModel.getBluetoothHci() == HCI_USB_INDEX
|
|
407 |
? AUTO_PORT
|
|
408 |
: comPortNumber;
|
|
409 |
}
|
|
410 |
}
|
|
411 |
|
|
412 |
}
|