gvsig-3d / 1.10 / trunk / extensions / ext3Dgui / src / org / gvsig / gvsig3dgui / display / DisplayPanel.java @ 109
History | View | Annotate | Download (14 KB)
1 |
package org.gvsig.gvsig3dgui.display; |
---|---|
2 |
|
3 |
import java.awt.event.ActionEvent; |
4 |
import java.awt.event.ItemEvent; |
5 |
import java.awt.event.ItemListener; |
6 |
|
7 |
import javax.swing.JFormattedTextField; |
8 |
import javax.swing.JSpinner; |
9 |
import javax.swing.SpinnerNumberModel; |
10 |
import javax.swing.event.ChangeEvent; |
11 |
import javax.swing.event.ChangeListener; |
12 |
|
13 |
import org.gvsig.gui.beans.swing.GridBagLayoutPanel; |
14 |
import org.gvsig.gvsig3dgui.view.View3D; |
15 |
import org.gvsig.osgvp.viewer.DisplaySettings; |
16 |
|
17 |
import com.iver.andami.PluginServices; |
18 |
import com.iver.andami.ui.mdiManager.IWindow; |
19 |
import com.iver.andami.ui.mdiManager.IWindowListener; |
20 |
import com.iver.andami.ui.mdiManager.WindowInfo; |
21 |
|
22 |
public class DisplayPanel extends GridBagLayoutPanel implements IWindow, |
23 |
ChangeListener, IWindowListener {
|
24 |
|
25 |
/**
|
26 |
*
|
27 |
*/
|
28 |
private static final long serialVersionUID = -7937904493499301555L; |
29 |
|
30 |
private WindowInfo _viewinfo;
|
31 |
private int _width = 480; |
32 |
private int _height = 200; |
33 |
private View3D _view3D;
|
34 |
private DisplaySettings _ds;
|
35 |
|
36 |
private javax.swing.JButton jButton1;
|
37 |
private javax.swing.JButton jButton2;
|
38 |
private javax.swing.JComboBox jComboBox1;
|
39 |
private javax.swing.JComboBox jComboBox3;
|
40 |
private javax.swing.JLabel jLabel1;
|
41 |
private javax.swing.JLabel jLabel3;
|
42 |
private javax.swing.JLabel jLabel4;
|
43 |
private javax.swing.JLabel jLabel5;
|
44 |
private javax.swing.JLabel jLabel6;
|
45 |
private javax.swing.JPanel jPanel1;
|
46 |
private javax.swing.JSpinner jSpinner1;
|
47 |
private javax.swing.JSpinner jSpinner2;
|
48 |
private javax.swing.JSpinner jSpinner3;
|
49 |
|
50 |
public DisplayPanel() {
|
51 |
|
52 |
if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D) { |
53 |
_view3D = (View3D) PluginServices.getMDIManager().getActiveWindow(); |
54 |
_ds = _view3D.getDisplaySettings(); |
55 |
initialize(); |
56 |
} |
57 |
|
58 |
else
|
59 |
PluginServices.getMDIManager().closeWindow(this);
|
60 |
|
61 |
} |
62 |
|
63 |
public Object getWindowModel() { |
64 |
return _view3D;
|
65 |
} |
66 |
|
67 |
public void initialize() { |
68 |
|
69 |
java.awt.GridBagConstraints gridBagConstraints; |
70 |
|
71 |
jPanel1 = new javax.swing.JPanel();
|
72 |
jComboBox1 = new javax.swing.JComboBox();
|
73 |
jButton2 = new javax.swing.JButton();
|
74 |
jButton1 = new javax.swing.JButton();
|
75 |
jComboBox3 = new javax.swing.JComboBox();
|
76 |
jLabel1 = new javax.swing.JLabel();
|
77 |
jLabel3 = new javax.swing.JLabel();
|
78 |
jLabel4 = new javax.swing.JLabel();
|
79 |
jLabel5 = new javax.swing.JLabel();
|
80 |
jLabel6 = new javax.swing.JLabel();
|
81 |
|
82 |
float min = (float) 0.01; |
83 |
float max = (float) 0.1; |
84 |
float step = (float) 0.005; |
85 |
float initValue = (float) 0.065; |
86 |
SpinnerNumberModel model = new SpinnerNumberModel(initValue, min, max, step); |
87 |
|
88 |
jSpinner1 = new JSpinner(model); |
89 |
JFormattedTextField tf = ((JSpinner.DefaultEditor) jSpinner1 |
90 |
.getEditor()).getTextField(); |
91 |
tf.setEditable(false);
|
92 |
|
93 |
min = (float) 0.1; |
94 |
max = (float) 1.0; |
95 |
step = (float) 0.1; |
96 |
initValue = (float) 0.5; |
97 |
SpinnerNumberModel model2 = new SpinnerNumberModel(initValue, min, max, step); |
98 |
|
99 |
jSpinner2 = new JSpinner(model2); |
100 |
JFormattedTextField tf2 = ((JSpinner.DefaultEditor) jSpinner2 |
101 |
.getEditor()).getTextField(); |
102 |
tf2.setEditable(false);
|
103 |
|
104 |
min = (float) -100.0; |
105 |
max = (float) 100.0; |
106 |
step = (float) 1.0; |
107 |
initValue = (float) 0.0; |
108 |
SpinnerNumberModel model3 = new SpinnerNumberModel(initValue, min, max, step); |
109 |
|
110 |
jSpinner3 = new JSpinner(model3); |
111 |
JFormattedTextField tf3 = ((JSpinner.DefaultEditor) jSpinner3 |
112 |
.getEditor()).getTextField(); |
113 |
tf3.setEditable(false);
|
114 |
|
115 |
setLayout(new java.awt.GridBagLayout());
|
116 |
|
117 |
jPanel1.setLayout(new java.awt.GridBagLayout());
|
118 |
|
119 |
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { |
120 |
PluginServices.getText(this, "None"), |
121 |
PluginServices.getText(this, "Anaglyphic"), |
122 |
PluginServices.getText(this, "HorizontalInterlace"), |
123 |
PluginServices.getText(this, "VerticalInterlace"), |
124 |
PluginServices.getText(this, "HorizontalSplit"), |
125 |
PluginServices.getText(this, "VerticalSplit"), |
126 |
PluginServices.getText(this, "LeftEye"), |
127 |
PluginServices.getText(this, "RightEye"), |
128 |
PluginServices.getText(this, "QuadBuffer"), |
129 |
PluginServices.getText(this, "CheckerBoard")})); |
130 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
131 |
gridBagConstraints.gridx = 1;
|
132 |
gridBagConstraints.gridy = 0;
|
133 |
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; |
134 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); |
135 |
jPanel1.add(jComboBox1, gridBagConstraints); |
136 |
|
137 |
jComboBox1.addItemListener(new ItemListener() { |
138 |
|
139 |
public void itemStateChanged(ItemEvent e) { |
140 |
jComboBox1ItemSelected(e); |
141 |
} |
142 |
|
143 |
}); |
144 |
|
145 |
jButton2.setText(PluginServices.getText(this, "Cancel")); |
146 |
jButton2.addActionListener(new java.awt.event.ActionListener() {
|
147 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
148 |
jButton2ActionPerformed(evt); |
149 |
} |
150 |
}); |
151 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
152 |
gridBagConstraints.gridx = 1;
|
153 |
gridBagConstraints.gridy = 7;
|
154 |
jPanel1.add(jButton2, gridBagConstraints); |
155 |
|
156 |
jButton1.setText(PluginServices.getText(this, "Accept")); |
157 |
jButton1.addActionListener(new java.awt.event.ActionListener() {
|
158 |
public void actionPerformed(java.awt.event.ActionEvent evt) { |
159 |
jButton1ActionPerformed(evt); |
160 |
} |
161 |
}); |
162 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
163 |
gridBagConstraints.gridx = 0;
|
164 |
gridBagConstraints.gridy = 7;
|
165 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; |
166 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 6); |
167 |
jPanel1.add(jButton1, gridBagConstraints); |
168 |
|
169 |
jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { |
170 |
PluginServices.getText(this, "Monitor"), |
171 |
PluginServices.getText(this, "HeadMounted"), |
172 |
PluginServices.getText(this, "PowerWall"), |
173 |
PluginServices.getText(this, "RealityCenter") })); |
174 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
175 |
gridBagConstraints.gridx = 1;
|
176 |
gridBagConstraints.gridy = 3;
|
177 |
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; |
178 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); |
179 |
jPanel1.add(jComboBox3, gridBagConstraints); |
180 |
jComboBox3.setEnabled(false);
|
181 |
|
182 |
jComboBox3.addItemListener(new ItemListener() { |
183 |
|
184 |
public void itemStateChanged(ItemEvent e) { |
185 |
jComboBox3ItemSelected(e); |
186 |
} |
187 |
|
188 |
}); |
189 |
|
190 |
jLabel1.setText(PluginServices.getText(this, "Tipo_pantalla")); |
191 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
192 |
gridBagConstraints.gridx = 0;
|
193 |
gridBagConstraints.gridy = 3;
|
194 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
195 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); |
196 |
jPanel1.add(jLabel1, gridBagConstraints); |
197 |
|
198 |
jLabel3.setText(PluginServices.getText(this, "Visualizacion_estereo")); |
199 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
200 |
gridBagConstraints.gridx = 0;
|
201 |
gridBagConstraints.gridy = 0;
|
202 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
203 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 22); |
204 |
jPanel1.add(jLabel3, gridBagConstraints); |
205 |
|
206 |
jLabel4.setText(PluginServices.getText(this, "Distancia_interocular")); |
207 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
208 |
gridBagConstraints.gridx = 0;
|
209 |
gridBagConstraints.gridy = 1;
|
210 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
211 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10); |
212 |
jPanel1.add(jLabel4, gridBagConstraints); |
213 |
|
214 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
215 |
gridBagConstraints.gridx = 1;
|
216 |
gridBagConstraints.gridy = 1;
|
217 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; |
218 |
gridBagConstraints.ipadx = 30;
|
219 |
// gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 22);
|
220 |
jSpinner1.setEnabled(false);
|
221 |
jPanel1.add(jSpinner1, gridBagConstraints); |
222 |
|
223 |
jLabel5.setText(PluginServices.getText(this, "Distancia_pantalla")); |
224 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
225 |
gridBagConstraints.gridx = 0;
|
226 |
gridBagConstraints.gridy = 5;
|
227 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); |
228 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
229 |
// gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
|
230 |
jPanel1.add(jLabel5, gridBagConstraints); |
231 |
|
232 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
233 |
gridBagConstraints.gridx = 1;
|
234 |
gridBagConstraints.gridy = 5;
|
235 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; |
236 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); |
237 |
gridBagConstraints.ipadx = 30;
|
238 |
jSpinner2.setEnabled(false);
|
239 |
jPanel1.add(jSpinner2, gridBagConstraints); |
240 |
|
241 |
jLabel6.setText(PluginServices.getText(this, "Increm_distancia_fusion")); |
242 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
243 |
gridBagConstraints.gridx = 0;
|
244 |
gridBagConstraints.gridy = 6;
|
245 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); |
246 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; |
247 |
// gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
|
248 |
jPanel1.add(jLabel6, gridBagConstraints); |
249 |
|
250 |
gridBagConstraints = new java.awt.GridBagConstraints();
|
251 |
gridBagConstraints.gridx = 1;
|
252 |
gridBagConstraints.gridy = 6;
|
253 |
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; |
254 |
gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); |
255 |
gridBagConstraints.ipadx = 30;
|
256 |
jSpinner3.setEnabled(false);
|
257 |
jPanel1.add(jSpinner3, gridBagConstraints); |
258 |
// jSpinner1.addChangeListener(new ChangeListener() {
|
259 |
//
|
260 |
// public void stateChanged(ChangeEvent e) {
|
261 |
// JSpinner spinner = (JSpinner) e.getSource();
|
262 |
//
|
263 |
// double value = (Double) spinner.getValue();
|
264 |
// ds.setEyeSeparation((float) value);
|
265 |
// view3D.getCanvas3d().getOSGViewer().setDisplaySettings(ds);
|
266 |
//
|
267 |
// }
|
268 |
//
|
269 |
// });
|
270 |
|
271 |
add(jPanel1, new java.awt.GridBagConstraints());
|
272 |
|
273 |
if (_ds != null) |
274 |
setDisplaySettings(); |
275 |
|
276 |
} |
277 |
|
278 |
protected void jButton2ActionPerformed(ActionEvent evt) { |
279 |
PluginServices.getMDIManager().closeWindow(this);
|
280 |
|
281 |
} |
282 |
|
283 |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { |
284 |
|
285 |
int stereo, device;
|
286 |
|
287 |
_view3D = (View3D) PluginServices.getMDIManager().getActiveWindow(); |
288 |
stereo = jComboBox1.getSelectedIndex(); |
289 |
device = jComboBox3.getSelectedIndex(); |
290 |
switch (stereo) {
|
291 |
|
292 |
case 0: |
293 |
_ds.setStereo(false);
|
294 |
break;
|
295 |
|
296 |
case 1: |
297 |
_ds.setStereo(true);
|
298 |
_ds.setStereoMode(DisplaySettings.StereoMode.ANAGLYPHIC); |
299 |
break;
|
300 |
|
301 |
case 2: |
302 |
_ds.setStereo(true);
|
303 |
_ds.setStereoMode(DisplaySettings.StereoMode.HORIZONTAL_INTERLACE); |
304 |
break;
|
305 |
|
306 |
case 3: |
307 |
_ds.setStereo(true);
|
308 |
_ds.setStereoMode(DisplaySettings.StereoMode.VERTICAL_INTERLACE); |
309 |
break;
|
310 |
|
311 |
case 4: |
312 |
_ds.setStereo(true);
|
313 |
_ds.setStereoMode(DisplaySettings.StereoMode.HORIZONTAL_SPLIT); |
314 |
break;
|
315 |
|
316 |
case 5: |
317 |
_ds.setStereo(true);
|
318 |
_ds.setStereoMode(DisplaySettings.StereoMode.VERTICAL_SPLIT); |
319 |
break;
|
320 |
|
321 |
case 6: |
322 |
_ds.setStereo(true);
|
323 |
_ds.setStereoMode(DisplaySettings.StereoMode.LEFT_EYE); |
324 |
break;
|
325 |
|
326 |
case 7: |
327 |
_ds.setStereo(true);
|
328 |
_ds.setStereoMode(DisplaySettings.StereoMode.RIGHT_EYE); |
329 |
break;
|
330 |
|
331 |
case 8: |
332 |
_ds.setStereo(false);
|
333 |
_ds.setStereoMode(DisplaySettings.StereoMode.QUAD_BUFFER); |
334 |
break;
|
335 |
case 9: |
336 |
_ds.setStereo(true);
|
337 |
_ds.setStereoMode(DisplaySettings.StereoMode.CHECKERBOARD); |
338 |
break;
|
339 |
|
340 |
} |
341 |
/*switch (antialias) {
|
342 |
|
343 |
case 0:
|
344 |
break;
|
345 |
|
346 |
case 1:
|
347 |
_ds.setNumMultiSamples(2);
|
348 |
break;
|
349 |
|
350 |
case 2:
|
351 |
_ds.setNumMultiSamples(4);
|
352 |
break;
|
353 |
|
354 |
}*/
|
355 |
|
356 |
switch (device) {
|
357 |
|
358 |
case 0: |
359 |
_ds.setDisplayType(DisplaySettings.DisplayType.MONITOR); |
360 |
break;
|
361 |
|
362 |
case 1: |
363 |
_ds.setDisplayType(DisplaySettings.DisplayType.HEAD_MOUNTED_DISPLAY); |
364 |
break;
|
365 |
|
366 |
case 2: |
367 |
_ds.setDisplayType(DisplaySettings.DisplayType.POWERWALL); |
368 |
break;
|
369 |
|
370 |
case 3: |
371 |
_ds.setDisplayType(DisplaySettings.DisplayType.REALITY_CENTER); |
372 |
break;
|
373 |
|
374 |
} |
375 |
|
376 |
if (jSpinner1.isEnabled()) {
|
377 |
|
378 |
_ds.setEyeSeparation(((SpinnerNumberModel) jSpinner1.getModel()).getNumber().floatValue());
|
379 |
_ds.setScreenDistance(((SpinnerNumberModel) jSpinner2.getModel()).getNumber().floatValue());
|
380 |
|
381 |
} |
382 |
_view3D.getCanvas3d().getOSGViewer().setDisplaySettings(_ds); |
383 |
|
384 |
PluginServices.getMDIManager().closeWindow(this);
|
385 |
|
386 |
} |
387 |
|
388 |
private void jComboBox3ItemSelected(ItemEvent e) { |
389 |
|
390 |
} |
391 |
|
392 |
private void jComboBox1ItemSelected(ItemEvent e) { |
393 |
if (e.getItem().equals(PluginServices.getText(this, "None"))) { |
394 |
jComboBox3.setEnabled(false);
|
395 |
jComboBox3.setSelectedIndex(0);
|
396 |
jSpinner1.setEnabled(false);
|
397 |
jSpinner2.setEnabled(false);
|
398 |
jSpinner3.setEnabled(false);
|
399 |
} else {
|
400 |
jComboBox3.setEnabled(true);
|
401 |
jSpinner1.setEnabled(true);
|
402 |
jSpinner2.setEnabled(true);
|
403 |
jSpinner3.setEnabled(true);
|
404 |
} |
405 |
|
406 |
} |
407 |
|
408 |
public WindowInfo getWindowInfo() {
|
409 |
_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
|
410 |
_viewinfo.setTitle(PluginServices.getText(this, "Display")); |
411 |
_viewinfo.setHeight(_height); |
412 |
_viewinfo.setWidth(_width); |
413 |
return _viewinfo;
|
414 |
} |
415 |
|
416 |
public void stateChanged(ChangeEvent e) { |
417 |
|
418 |
} |
419 |
|
420 |
public void windowActivated() { |
421 |
_view3D = (View3D) PluginServices.getMDIManager().getActiveWindow(); |
422 |
System.out.println(_view3D.getName());
|
423 |
} |
424 |
|
425 |
public void windowClosed() { |
426 |
|
427 |
} |
428 |
|
429 |
public void setDisplaySettings() { |
430 |
|
431 |
int stereo, antialias, device;
|
432 |
|
433 |
|
434 |
|
435 |
System.out.println(_ds);
|
436 |
if (_ds.getStereo()) {
|
437 |
|
438 |
stereo = _ds.getStereoMode(); |
439 |
jSpinner1.setValue(_ds.getEyeSeparation()); |
440 |
jSpinner2.setValue((_ds.getScreenDistance())); |
441 |
|
442 |
} |
443 |
|
444 |
else
|
445 |
stereo = -1;
|
446 |
antialias = _ds.getNumMultiSamples(); |
447 |
device = _ds.getDisplayType(); |
448 |
|
449 |
switch (stereo) {
|
450 |
|
451 |
case 0: |
452 |
jComboBox1.setSelectedIndex(7);
|
453 |
break;
|
454 |
|
455 |
case 1: |
456 |
jComboBox1.setSelectedIndex(1);
|
457 |
break;
|
458 |
|
459 |
case 2: |
460 |
jComboBox1.setSelectedIndex(4);
|
461 |
break;
|
462 |
|
463 |
case 3: |
464 |
jComboBox1.setSelectedIndex(5);
|
465 |
break;
|
466 |
|
467 |
case 4: |
468 |
jComboBox1.setSelectedIndex(6);
|
469 |
break;
|
470 |
|
471 |
case 5: |
472 |
jComboBox1.setSelectedIndex(2);
|
473 |
break;
|
474 |
|
475 |
case 6: |
476 |
jComboBox1.setSelectedIndex(3);
|
477 |
break;
|
478 |
|
479 |
default:
|
480 |
jComboBox1.setSelectedIndex(0);
|
481 |
break;
|
482 |
|
483 |
} |
484 |
|
485 |
if (!_ds.getStereo())
|
486 |
jComboBox1.setSelectedIndex(0);
|
487 |
|
488 |
switch (device) {
|
489 |
|
490 |
case 0: |
491 |
jComboBox3.setSelectedIndex(0);
|
492 |
break;
|
493 |
|
494 |
case 1: |
495 |
jComboBox3.setSelectedIndex(2);
|
496 |
break;
|
497 |
|
498 |
case 2: |
499 |
jComboBox3.setSelectedIndex(3);
|
500 |
break;
|
501 |
|
502 |
case 3: |
503 |
jComboBox3.setSelectedIndex(1);
|
504 |
break;
|
505 |
|
506 |
} |
507 |
|
508 |
} |
509 |
|
510 |
/*
|
511 |
* public DisplaySettings getDisplaySettings() {
|
512 |
*
|
513 |
* return ds; }
|
514 |
*/
|
515 |
public Object getWindowProfile() { |
516 |
return WindowInfo.DIALOG_PROFILE;
|
517 |
} |
518 |
} |