source: osm/applications/editors/josm/plugins/smed/src/panels/PanelMain.java@ 32767

Last change on this file since 32767 was 32767, checked in by donvip, 8 years ago

code style

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