source: osm/applications/editors/josm/plugins/smed1/src/panels/PanelMain.java@ 29036

Last change on this file since 29036 was 29036, checked in by malcolmh, 13 years ago

initial

File size: 10.6 KB
Line 
1package panels;
2
3import static org.openstreetmap.josm.tools.I18n.tr;
4
5import java.awt.*;
6import java.awt.event.*;
7import javax.swing.*;
8
9import oseam.Messages;
10import oseam.OSeaMAction;
11import seamarks.SeaMark;
12
13public class PanelMain extends JPanel {
14 private static final long serialVersionUID = 1L;
15 private OSeaMAction dlg;
16 public SeaMark mark = null;
17 public PanelChan panelChan = null;
18 public PanelHaz panelHaz = null;
19 public PanelSpec panelSpec = null;
20 public PanelLights panelLights = null;
21 public PanelMore panelMore = null;
22 public PanelTop panelTop = null;
23 public PanelFog panelFog = null;
24 public PanelRadar panelRadar = null;
25 public PanelLit panelLit = null;
26 public JLabel nameLabel = null;
27 public JTextField nameBox = null;
28 private FocusListener flName = new FocusListener() {
29 public void focusLost(java.awt.event.FocusEvent e) {
30 mark.setName(nameBox.getText());
31 }
32 public void focusGained(java.awt.event.FocusEvent e) {
33 }
34 };
35 public JButton saveButton = null;
36 private ActionListener alSave = new ActionListener() {
37 public void actionPerformed(java.awt.event.ActionEvent e) {
38 mark.saveSign(dlg.node);
39 }
40 };
41 public JButton moreButton = null;
42 private ActionListener alMore = new ActionListener() {
43 public void actionPerformed(java.awt.event.ActionEvent e) {
44 if (panelMore.isVisible()) {
45 moreButton.setText(">>");
46 panelMore.setVisible(false);
47 topButton.setEnabled(true);
48 radButton.setEnabled(true);
49 fogButton.setEnabled(true);
50 litButton.setEnabled(true);
51 } else {
52 panelMore.setVisible(true);
53 moreButton.setText("<<");
54 miscButtons.clearSelection();
55 panelTop.setVisible(false);
56 topButton.setBorderPainted(false);
57 topButton.setEnabled(false);
58 panelRadar.setVisible(false);
59 radButton.setBorderPainted(false);
60 radButton.setEnabled(false);
61 panelFog.setVisible(false);
62 fogButton.setBorderPainted(false);
63 fogButton.setEnabled(false);
64 panelLit.setVisible(false);
65 litButton.setBorderPainted(false);
66 litButton.setEnabled(false);
67 }
68 }
69 };
70 public ButtonGroup typeButtons = null;
71 public JRadioButton chanButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ChanButton.png")));
72 public JRadioButton hazButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/HazButton.png")));
73 public JRadioButton specButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SpecButton.png")));
74 public JRadioButton lightsButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightsButton.png")));
75 private ActionListener alType = new ActionListener() {
76 public void actionPerformed(java.awt.event.ActionEvent e) {
77 if (chanButton.isSelected()) {
78 chanButton.setBorderPainted(true);
79 panelChan.syncPanel();
80 panelChan.setVisible(true);
81 } else {
82 chanButton.setBorderPainted(false);
83 panelChan.setVisible(false);
84 }
85 if (hazButton.isSelected()) {
86 hazButton.setBorderPainted(true);
87 panelHaz.syncPanel();
88 panelHaz.setVisible(true);
89 } else {
90 hazButton.setBorderPainted(false);
91 panelHaz.setVisible(false);
92 }
93 if (specButton.isSelected()) {
94 specButton.setBorderPainted(true);
95 panelSpec.syncPanel();
96 panelSpec.setVisible(true);
97 } else {
98 specButton.setBorderPainted(false);
99 panelSpec.setVisible(false);
100 }
101 if (lightsButton.isSelected()) {
102 lightsButton.setBorderPainted(true);
103 panelLights.syncPanel();
104 panelLights.setVisible(true);
105 } else {
106 lightsButton.setBorderPainted(false);
107 panelLights.setVisible(false);
108 }
109 }
110 };
111 private ButtonGroup miscButtons = null;
112 public JRadioButton topButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TopButton.png")));
113 public JRadioButton fogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FogButton.png")));
114 public JRadioButton radButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadarButton.png")));
115 public JRadioButton litButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LitButton.png")));
116 private ActionListener alMisc = new ActionListener() {
117 public void actionPerformed(java.awt.event.ActionEvent e) {
118 if (topButton.isSelected()) {
119 moreButton.setText(">>");
120 panelMore.setVisible(false);
121 topButton.setBorderPainted(true);
122 panelTop.setVisible(true);
123 panelTop.syncPanel();
124 } else {
125 topButton.setBorderPainted(false);
126 panelTop.setVisible(false);
127 }
128 if (fogButton.isSelected()) {
129 moreButton.setText(">>");
130 panelMore.setVisible(false);
131 fogButton.setBorderPainted(true);
132 panelFog.setVisible(true);
133 panelFog.syncPanel();
134 } else {
135 fogButton.setBorderPainted(false);
136 panelFog.setVisible(false);
137 }
138 if (radButton.isSelected()) {
139 moreButton.setText(">>");
140 panelMore.setVisible(false);
141 radButton.setBorderPainted(true);
142 panelRadar.setVisible(true);
143 panelRadar.syncPanel();
144 } else {
145 radButton.setBorderPainted(false);
146 panelRadar.setVisible(false);
147 }
148 if (litButton.isSelected()) {
149 moreButton.setText(">>");
150 panelMore.setVisible(false);
151 litButton.setBorderPainted(true);
152 panelLit.setVisible(true);
153 panelLit.syncPanel();
154 } else {
155 litButton.setBorderPainted(false);
156 panelLit.setVisible(false);
157 }
158 }
159 };
160
161 public PanelMain(OSeaMAction dia) {
162
163 dlg = dia;
164 setLayout(null);
165 mark = new SeaMark(dlg);
166 mark.setBounds(new Rectangle(235, 0, 165, 160));
167 add(mark);
168 panelChan = new PanelChan(dlg);
169 panelChan.setBounds(new Rectangle(65, 0, 170, 160));
170 panelChan.setVisible(false);
171 add(panelChan);
172 panelHaz = new PanelHaz(dlg);
173 panelHaz.setBounds(new Rectangle(65, 0, 170, 160));
174 panelHaz.setVisible(false);
175 add(panelHaz);
176 panelSpec = new PanelSpec(dlg);
177 panelSpec.setBounds(new Rectangle(65, 0, 170, 160));
178 panelSpec.setVisible(false);
179 add(panelSpec);
180 panelLights = new PanelLights(dlg);
181 panelLights.setBounds(new Rectangle(65, 0, 170, 160));
182 panelLights.setVisible(false);
183 add(panelLights);
184 panelMore = new PanelMore(dlg);
185 panelMore.setBounds(new Rectangle(40, 165, 360, 160));
186 panelMore.setVisible(false);
187 add(panelMore);
188 panelTop = new PanelTop(dlg);
189 panelTop.setBounds(new Rectangle(40, 165, 360, 160));
190 panelTop.setVisible(false);
191 add(panelTop);
192 panelFog = new PanelFog(dlg);
193 panelFog.setBounds(new Rectangle(40, 165, 360, 160));
194 panelFog.setVisible(false);
195 add(panelFog);
196 panelRadar = new PanelRadar(dlg);
197 panelRadar.setBounds(new Rectangle(40, 165, 360, 160));
198 panelRadar.setVisible(false);
199 add(panelRadar);
200 panelLit = new PanelLit(dlg);
201 panelLit.setBounds(new Rectangle(40, 165, 360, 160));
202 panelLit.setVisible(false);
203 add(panelLit);
204
205 add(getButton(chanButton, 0, 0, 62, 40, "Chan"), null);
206 add(getButton(hazButton, 0, 40, 62, 40, "Haz"), null);
207 add(getButton(specButton, 0, 80, 62, 40, "Spec"), null);
208 add(getButton(lightsButton, 0, 120, 62, 40, "Lights"), null);
209 typeButtons = new ButtonGroup();
210 typeButtons.add(chanButton);
211 typeButtons.add(hazButton);
212 typeButtons.add(specButton);
213 typeButtons.add(lightsButton);
214 chanButton.addActionListener(alType);
215 hazButton.addActionListener(alType);
216 specButton.addActionListener(alType);
217 lightsButton.addActionListener(alType);
218
219 add(getButton(topButton, 0, 185, 34, 32, "Topmarks"));
220 add(getButton(fogButton, 0, 220, 34, 32, "FogSignals"));
221 add(getButton(radButton, 0, 255, 34, 32, "Radar"));
222 add(getButton(litButton, 0, 290, 34, 32, "Lit"));
223 miscButtons = new ButtonGroup();
224 miscButtons.add(topButton);
225 miscButtons.add(fogButton);
226 miscButtons.add(radButton);
227 miscButtons.add(litButton);
228 topButton.addActionListener(alMisc);
229 fogButton.addActionListener(alMisc);
230 radButton.addActionListener(alMisc);
231 litButton.addActionListener(alMisc);
232
233 nameLabel = new JLabel();
234 nameLabel.setBounds(new Rectangle(5, 329, 60, 20));
235 nameLabel.setText(tr("Name:"));
236 add(nameLabel);
237 nameBox = new JTextField();
238 nameBox.setBounds(new Rectangle(60, 330, 200, 20));
239 nameBox.setHorizontalAlignment(SwingConstants.CENTER);
240 add(nameBox);
241 nameBox.addFocusListener(flName);
242
243 saveButton = new JButton();
244 saveButton.setBounds(new Rectangle(285, 330, 100, 20));
245 saveButton.setText(tr("Save"));
246 add(saveButton);
247 saveButton.addActionListener(alSave);
248
249 moreButton = new JButton();
250 moreButton.setBounds(new Rectangle(0, 165, 34, 15));
251 moreButton.setMargin(new Insets(0, 0, 0, 0));
252 moreButton.setText(">>");
253 add(moreButton);
254 moreButton.addActionListener(alMore);
255
256 }
257
258 public void syncPanel() {
259 typeButtons.clearSelection();
260 chanButton.setBorderPainted(false);
261 chanButton.setEnabled(false);
262 hazButton.setBorderPainted(false);
263 hazButton.setEnabled(false);
264 specButton.setBorderPainted(false);
265 specButton.setEnabled(false);
266 lightsButton.setBorderPainted(false);
267 lightsButton.setEnabled(false);
268 miscButtons.clearSelection();
269 topButton.setEnabled(false);
270 topButton.setBorderPainted(false);
271 fogButton.setEnabled(false);
272 fogButton.setBorderPainted(false);
273 radButton.setEnabled(false);
274 radButton.setBorderPainted(false);
275 litButton.setEnabled(false);
276 litButton.setBorderPainted(false);
277 saveButton.setEnabled(false);
278 moreButton.setVisible(false);
279 moreButton.setText(">>");
280 moreButton.setSelected(false);
281 panelChan.setVisible(false);
282 panelHaz.setVisible(false);
283 panelSpec.setVisible(false);
284 panelLights.setVisible(false);
285 panelMore.setVisible(false);
286 panelTop.setVisible(false);
287 panelFog.setVisible(false);
288 panelRadar.setVisible(false);
289 panelLit.setVisible(false);
290 nameBox.setEnabled(false);
291 if (mark != null) {
292 nameBox.setEnabled(true);
293 chanButton.setEnabled(true);
294 hazButton.setEnabled(true);
295 specButton.setEnabled(true);
296 lightsButton.setEnabled(true);
297 nameBox.setText(mark.getName());
298 switch (SeaMark.GrpMAP.get(mark.getObject())) {
299 case LAT:
300 case SAW:
301 chanButton.setBorderPainted(true);
302 panelChan.setVisible(true);
303 panelChan.syncPanel();
304 break;
305 case CAR:
306 case ISD:
307 hazButton.setBorderPainted(true);
308 panelHaz.setVisible(true);
309 panelHaz.syncPanel();
310 break;
311 case SPP:
312 specButton.setBorderPainted(true);
313 panelSpec.setVisible(true);
314 panelSpec.syncPanel();
315 break;
316 case LGT:
317 case STN:
318 case PLF:
319 lightsButton.setBorderPainted(true);
320 panelLights.setVisible(true);
321 panelLights.syncPanel();
322 break;
323 }
324 panelMore.syncPanel();
325 panelTop.syncPanel();
326 panelFog.syncPanel();
327 panelRadar.syncPanel();
328 panelLit.syncPanel();
329 }
330 }
331
332 private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
333 button.setBounds(new Rectangle(x, y, w, h));
334 button.setBorder(BorderFactory.createLoweredBevelBorder());
335 button.setToolTipText(Messages.getString(tip));
336 return button;
337 }
338
339}
Note: See TracBrowser for help on using the repository browser.