Statistics
| Revision:

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
}