Statistics
| Revision:

gvsig-3d / 1.10 / trunk / extensions / ext3Dgui / src / org / gvsig / gvsig3dgui / display / FullScreenPanel.java @ 81

History | View | Annotate | Download (21.9 KB)

1
package org.gvsig.gvsig3dgui.display;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.Component;
5
import java.awt.Dimension;
6
import java.awt.GraphicsDevice;
7
import java.awt.GraphicsEnvironment;
8
import java.awt.HeadlessException;
9
import java.awt.Toolkit;
10
import java.awt.event.ActionEvent;
11
import java.awt.event.ComponentEvent;
12
import java.awt.event.ComponentListener;
13
import java.awt.event.ItemEvent;
14
import java.awt.event.ItemListener;
15
import java.awt.event.KeyEvent;
16
import java.awt.event.KeyListener;
17
import java.awt.event.WindowAdapter;
18
import java.awt.event.WindowEvent;
19
import java.io.File;
20
import java.io.FileNotFoundException;
21

    
22
import javax.swing.JButton;
23
import javax.swing.JCheckBox;
24
import javax.swing.JDialog;
25
import javax.swing.JFileChooser;
26
import javax.swing.JFormattedTextField;
27
import javax.swing.JLabel;
28
import javax.swing.JOptionPane;
29
import javax.swing.JPanel;
30
import javax.swing.JSpinner;
31
import javax.swing.JTextField;
32
import javax.swing.SpinnerNumberModel;
33
import javax.swing.event.ChangeEvent;
34
import javax.swing.event.ChangeListener;
35

    
36
import org.apache.log4j.Logger;
37
import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
38
import org.gvsig.gvsig3d.gui.Compass;
39
import org.gvsig.gvsig3d.map3d.MapContext3D;
40
import org.gvsig.gvsig3dgui.view.View3D;
41
import org.gvsig.osgvp.core.osg.Group;
42
import org.gvsig.osgvp.core.osg.Matrix;
43
import org.gvsig.osgvp.core.osg.Node;
44
import org.gvsig.osgvp.core.osg.Vec3;
45
import org.gvsig.osgvp.core.osg.Vec4;
46
import org.gvsig.osgvp.core.osgdb.osgDB;
47
import org.gvsig.osgvp.exceptions.node.ChildIndexOutOfBoundsExceptions;
48
import org.gvsig.osgvp.exceptions.node.LoadNodeException;
49
import org.gvsig.osgvp.exceptions.node.NodeException;
50
import org.gvsig.osgvp.features.Polygon;
51
import org.gvsig.osgvp.stereoconfig.StereoConfig;
52
import org.gvsig.osgvp.terrain.Terrain;
53
import org.gvsig.osgvp.terrain.TerrainCameraManipulator;
54
import org.gvsig.osgvp.terrain.TerrainViewer;
55
import org.gvsig.osgvp.util.CameraHUD;
56
import org.gvsig.osgvp.util.UpdateNodeListener;
57
import org.gvsig.osgvp.viewer.Camera;
58
import org.gvsig.osgvp.viewer.DisplaySettings;
59
import org.gvsig.osgvp.viewer.ISlaveComponent;
60
import org.gvsig.osgvp.viewer.IViewerContainer;
61
import org.gvsig.osgvp.viewer.ViewerFactory;
62
import org.gvsig.osgvp.viewer.ViewerStateListener;
63

    
64
import com.iver.andami.PluginServices;
65
import com.iver.andami.messages.NotificationManager;
66
import com.iver.andami.ui.mdiManager.IWindow;
67
import com.iver.andami.ui.mdiManager.IWindowListener;
68
import com.iver.andami.ui.mdiManager.WindowInfo;
69
import com.iver.core.NotificationDialog;
70

    
71
public class FullScreenPanel extends GridBagLayoutPanel implements IWindow,
72
ChangeListener, IWindowListener {
73

    
74
        /**
75
         * 
76
         */
77
        private static final long serialVersionUID = 7918162328474597496L;
78
        private static Logger _logger = Logger.getLogger(FullScreenPanel.class
79
                        .getName());
80

    
81
        private WindowInfo _viewinfo;
82
        private int _width = 650;
83
        private int _height = 270;
84
        private View3D _view3D;
85
        private TerrainViewer _fullScreenViewer;
86
        private DisplaySettings _ds;
87
        private IViewerContainer _canvas3d;
88

    
89
        private JPanel jPanel1;
90
        private JButton jButton2;
91
        private JButton jButton1;
92
        private JTextField jTextField1;
93
        private JCheckBox jCheckBox1;
94
        private JCheckBox jCheckBox2;
95
        private JCheckBox jCheckBox3;
96
        private JCheckBox wowjCheckBox;
97
        private JCheckBox xyzjCheckBox;
98

    
99
        private javax.swing.JSpinner jSpinner1;
100
        private javax.swing.JSpinner jSpinner2;
101
        private javax.swing.JSpinner jSpinner3;
102
        private javax.swing.JSpinner jSpinner4;
103
        private javax.swing.JSpinner jSpinner5;
104

    
105
        private JLabel jLabel4;
106
        private JLabel jLabel3;
107

    
108
        public FullScreenPanel() {
109

    
110
                if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D) {
111
                        _view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
112
                        initialize();
113
                }
114

    
115
                else
116
                        PluginServices.getMDIManager().closeWindow(this);
117

    
118
        }
119

    
120
        public Object getWindowModel() {
121
                return _view3D;
122
        }
123

    
124
        public void initialize() {
125

    
126
                java.awt.GridBagConstraints gridBagConstraints;
127

    
128
                jPanel1 = new javax.swing.JPanel();
129
                jButton2 = new javax.swing.JButton();
130
                jButton1 = new javax.swing.JButton();
131
                jLabel3 = new javax.swing.JLabel();
132
                jLabel4 = new javax.swing.JLabel();
133
                jCheckBox1 = new javax.swing.JCheckBox();
134
                jCheckBox2 = new javax.swing.JCheckBox();
135
                jCheckBox3 = new javax.swing.JCheckBox();
136
                jSpinner1 = new javax.swing.JSpinner();
137
                jSpinner2 = new javax.swing.JSpinner();
138
                jSpinner3 = new javax.swing.JSpinner();
139
                jSpinner4 = new javax.swing.JSpinner();
140
                jSpinner5 = new javax.swing.JSpinner();
141
                wowjCheckBox = new JCheckBox();
142
                xyzjCheckBox = new JCheckBox();
143

    
144
                setLayout(new java.awt.GridBagLayout());
145

    
146
                jPanel1.setLayout(new java.awt.GridBagLayout());
147

    
148
                jButton2.setText(PluginServices.getText(this, "Cancel"));
149
                gridBagConstraints = new java.awt.GridBagConstraints();
150
                gridBagConstraints.gridx = 1;
151
                gridBagConstraints.gridy = 9;
152
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
153
                gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
154
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
155
                jButton2.addActionListener(new java.awt.event.ActionListener() {
156
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
157
                                jButton2ActionPerformed(evt);
158
                        }
159
                });
160
                jPanel1.add(jButton2, gridBagConstraints);
161

    
162
                jButton1.setText(PluginServices.getText(this, "Accept"));
163
                jButton1.addActionListener(new java.awt.event.ActionListener() {
164
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
165
                                jButton1ActionPerformed(evt);
166
                        }
167
                });
168

    
169
                gridBagConstraints = new java.awt.GridBagConstraints();
170
                gridBagConstraints.gridx = 2;
171
                gridBagConstraints.gridy = 9;
172
                gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
173
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
174
                jPanel1.add(jButton1, gridBagConstraints);
175

    
176
                jCheckBox1.setText(PluginServices.getText(this, "Sincronizar_camaras"));
177
                gridBagConstraints = new java.awt.GridBagConstraints();
178
                gridBagConstraints.gridx = 0;
179
                gridBagConstraints.gridy = 2;
180
                gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
181
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
182
                jPanel1.add(jCheckBox1, gridBagConstraints);
183
                jCheckBox1.setSelected(false);
184

    
185
                jCheckBox2.setText(PluginServices.getText(this, "Elegir_pantalla"));
186
                gridBagConstraints = new java.awt.GridBagConstraints();
187
                gridBagConstraints.gridx = 0;
188
                gridBagConstraints.gridy = 3;
189
                gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
190
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
191
                jPanel1.add(jCheckBox2, gridBagConstraints);
192

    
193
                jCheckBox2.addItemListener(new ItemListener() {
194

    
195
                        public void itemStateChanged(ItemEvent e) {
196
                                jCheckBox1ItemSelected(e);
197
                        }
198

    
199
                });
200

    
201
                wowjCheckBox.setText(PluginServices.getText(this, "Activar_WOW"));
202
                gridBagConstraints = new java.awt.GridBagConstraints();
203
                gridBagConstraints.gridx = 0;
204
                gridBagConstraints.gridy = 7;
205
                gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
206
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
207
                jPanel1.add(wowjCheckBox, gridBagConstraints);
208
                wowjCheckBox.setSelected(false);
209
                
210
                xyzjCheckBox.setText(PluginServices.getText(this, "Activar_XYZ"));
211
                xyzjCheckBox.setToolTipText(PluginServices.getText(this, "Activar_XYZ_tooltip"));
212
                gridBagConstraints = new java.awt.GridBagConstraints();
213
                gridBagConstraints.gridx = 0;
214
                gridBagConstraints.gridy = 8;
215
                gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
216
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
217
                jPanel1.add(xyzjCheckBox, gridBagConstraints);
218
                xyzjCheckBox.setSelected(false);
219

    
220
                jCheckBox3.setText(PluginServices.getText(this, "Modo_ventana"));
221
                gridBagConstraints = new java.awt.GridBagConstraints();
222
                gridBagConstraints.gridx = 0;
223
                gridBagConstraints.gridy = 4;
224
                gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
225
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
226
                jPanel1.add(jCheckBox3, gridBagConstraints);
227

    
228
                jCheckBox3.addItemListener(new ItemListener() {
229

    
230
                        public void itemStateChanged(ItemEvent e) {
231
                                jCheckBox3ItemSelected(e);
232
                        }
233

    
234
                });
235

    
236
                int min = 0;
237
                int max = 2;
238
                int step = 1;
239
                int initValue = 0;
240
                SpinnerNumberModel model = new SpinnerNumberModel(initValue, min, max,
241
                                step);
242

    
243
                jSpinner1 = new JSpinner(model);
244
                JFormattedTextField tf = ((JSpinner.DefaultEditor) jSpinner1
245
                                .getEditor()).getTextField();
246
                tf.setEditable(false);
247

    
248
                gridBagConstraints = new java.awt.GridBagConstraints();
249
                gridBagConstraints.gridx = 1;
250
                gridBagConstraints.gridy = 3;
251
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
252
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
253
                jSpinner1.setEnabled(false);
254
                jPanel1.add(jSpinner1, gridBagConstraints);
255

    
256
                min = 0;
257
                max = 10000;
258
                step = 1;
259
                initValue = 0;
260
                SpinnerNumberModel model2 = new SpinnerNumberModel(initValue, min, max,
261
                                step);
262

    
263
                jLabel3.setText(PluginServices.getText(this, "Posicion_origen"));
264
                gridBagConstraints = new java.awt.GridBagConstraints();
265
                gridBagConstraints.gridx = 0;
266
                gridBagConstraints.gridy = 5;
267
                gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
268
                jPanel1.add(jLabel3, gridBagConstraints);
269

    
270
                jSpinner2 = new JSpinner(model2);
271
                gridBagConstraints = new java.awt.GridBagConstraints();
272
                gridBagConstraints.gridx = 1;
273
                gridBagConstraints.gridy = 5;
274
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
275
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
276
                jSpinner2.setEnabled(false);
277
                jPanel1.add(jSpinner2, gridBagConstraints);
278

    
279
                min = 0;
280
                max = 10000;
281
                step = 1;
282
                initValue = 0;
283
                SpinnerNumberModel model3 = new SpinnerNumberModel(initValue, min, max,
284
                                step);
285

    
286
                jSpinner3 = new JSpinner(model3);
287
                gridBagConstraints = new java.awt.GridBagConstraints();
288
                gridBagConstraints.gridx = 2;
289
                gridBagConstraints.gridy = 5;
290
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
291
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
292
                jSpinner3.setEnabled(false);
293
                jPanel1.add(jSpinner3, gridBagConstraints);
294

    
295
                jLabel4.setText(PluginServices.getText(this, "Resolucion"));
296
                gridBagConstraints = new java.awt.GridBagConstraints();
297
                gridBagConstraints.gridx = 0;
298
                gridBagConstraints.gridy = 6;
299
                gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
300
                jPanel1.add(jLabel4, gridBagConstraints);
301

    
302
                min = 0;
303
                max = 10000;
304
                step = 1;
305
                initValue = 0;
306
                SpinnerNumberModel model4 = new SpinnerNumberModel(initValue, min, max,
307
                                step);
308

    
309
                jSpinner4 = new JSpinner(model4);
310
                gridBagConstraints = new java.awt.GridBagConstraints();
311
                gridBagConstraints.gridx = 1;
312
                gridBagConstraints.gridy = 6;
313
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
314
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
315
                jSpinner4.setEnabled(false);
316
                jSpinner4.setValue((int) 800);
317
                jPanel1.add(jSpinner4, gridBagConstraints);
318

    
319
                min = 0;
320
                max = 10000;
321
                step = 1;
322
                initValue = 0;
323
                SpinnerNumberModel model5 = new SpinnerNumberModel(initValue, min, max,
324
                                step);
325

    
326
                jSpinner5 = new JSpinner(model5);
327
                gridBagConstraints = new java.awt.GridBagConstraints();
328
                gridBagConstraints.gridx = 2;
329
                gridBagConstraints.gridy = 6;
330
                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
331
                gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
332
                jSpinner5.setEnabled(false);
333
                jSpinner5.setValue((int) 600);
334
                jPanel1.add(jSpinner5, gridBagConstraints);
335

    
336
                add(jPanel1, new java.awt.GridBagConstraints());
337

    
338
        }
339

    
340
        protected void jCheckBox3ItemSelected(ItemEvent e) {
341

    
342
                if (e.getStateChange() == ItemEvent.SELECTED) {
343
                        jSpinner2.setEnabled(true);
344
                        jSpinner3.setEnabled(true);
345
                        jSpinner4.setEnabled(true);
346
                        jSpinner5.setEnabled(true);
347
                } else {
348
                        jSpinner2.setEnabled(false);
349
                        jSpinner3.setEnabled(false);
350
                        jSpinner4.setEnabled(false);
351
                        jSpinner5.setEnabled(false);
352
                }
353

    
354
        }
355

    
356
        protected void jCheckBox1ItemSelected(ItemEvent e) {
357

    
358
                if (e.getStateChange() == ItemEvent.SELECTED)
359
                        jSpinner1.setEnabled(true);
360
                else
361
                        jSpinner1.setEnabled(false);
362

    
363
        }
364

    
365
        protected void jButton3ActionPerformed(ActionEvent evt) {
366
                JFileChooser jFileChooser1 = new JFileChooser();
367
                int returnVal = jFileChooser1.showOpenDialog(this);
368

    
369
                if (returnVal == JFileChooser.APPROVE_OPTION)
370
                        jTextField1.setText(jFileChooser1.getSelectedFile()
371
                                        .getAbsolutePath());
372

    
373
        }
374

    
375
        private JDialog frame;
376
        private boolean changedManipulator;
377
        private Camera viewCam;
378
        private int _numScreens;
379
        private int _screenWidth;
380
        private int _screenHeight;
381

    
382
        private Compass compass;
383

    
384
        
385

    
386
        protected void jButton1ActionPerformed(ActionEvent evt) {
387

    
388
                _view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
389
                PluginServices.getMDIManager().closeWindow(this);
390

    
391
                _ds = _view3D.getDisplaySettings();
392

    
393
                final boolean synchronize = jCheckBox1.isSelected();
394
                changedManipulator = false;
395

    
396
                GraphicsEnvironment ge = GraphicsEnvironment
397
                .getLocalGraphicsEnvironment();
398
                try {
399
                        GraphicsDevice[] gs = ge.getScreenDevices();
400
                        int screenNum = ((SpinnerNumberModel) jSpinner1
401
                                        .getModel()).getNumber().intValue();
402
                        _numScreens = gs.length;
403
                        if(_numScreens <= screenNum) screenNum=0;
404
                        _screenWidth = gs[screenNum].getDisplayMode().getWidth();
405
                        _screenHeight = gs[screenNum].getDisplayMode().getHeight();
406
                        _logger.debug("Num Screens:"+ _numScreens);
407
                        _logger.debug("Selected Screen:"+ screenNum);
408
                        _logger.debug("Selected Screen Resolution:("+_screenWidth+","+_screenHeight+")");
409
                } catch (HeadlessException e) {
410
                        // Is thrown if there are no screen devices
411
                }
412

    
413
                try {
414
                        Terrain planetView3D = ((TerrainViewer) _view3D.getCanvas3d()
415
                                        .getOSGViewer()).getTerrain(0);
416
                        final Terrain terrain = new Terrain();
417
                        terrain.setCoordinateSystemType(planetView3D
418
                                        .getCoordinateSystemType());
419
                        terrain.setCoordinateSystemName(planetView3D
420
                                        .getCoordinateSystemName());
421
                        terrain.setCoordinateSystemFormat(planetView3D
422
                                        .getCoordinateSystemFormat());
423
                        terrain.setExtent(planetView3D.getExtent());
424
                        terrain.setTerrainName(planetView3D.getTerrainName());
425

    
426
                        MapContext3D mc = (MapContext3D) _view3D.getMapControl()
427
                        .getMapContext();
428
                        terrain.init();
429
                        terrain.setLayerManager(mc.getTerrain().getLayerManager());
430
                        viewCam = new Camera();
431
                        _fullScreenViewer = new TerrainViewer() {
432

    
433
                                public void frame() {
434
                                        if (synchronize) {
435
                                                _fullScreenViewer.setFusionDistance((float) terrain
436
                                                                .getZoom());
437
                                                Matrix refView = _view3D.getCanvas3d().getOSGViewer()
438
                                                .getViewMatrix();
439
                                                viewCam.setViewMatrix(refView);
440
                                                _fullScreenViewer.setCamera(viewCam);
441

    
442

    
443
                                        }
444

    
445
                                        super.frame();
446
                                };
447
                        };
448

    
449

    
450

    
451
                        _fullScreenViewer.addTerrain(terrain);
452
                        _fullScreenViewer.addFeature((((TerrainViewer) _view3D
453
                                        .getCanvas3d().getOSGViewer()).getFeatures()));
454
                        Terrain pl = (((TerrainViewer) _view3D.getCanvas3d().getOSGViewer())
455
                                        .getTerrain(0));
456
                        compass = new Compass(pl);
457

    
458
                        if (pl.getCoordinateSystemType() == Terrain.CoordinateSystemType.GEOCENTRIC) {
459
                                compass.setPanetType(Compass.Mode.SPHERIC);
460
                        } else
461
                                compass.setPanetType(Compass.Mode.FLAT);
462

    
463
                        compass.setUpdateListener(new UpdateNodeListener() {
464

    
465
                                public void update(Node arg0) {
466
                                        compass.update(_fullScreenViewer.getCamera());
467

    
468
                                }
469
                        });
470

    
471
                        _fullScreenViewer.addNodeToCameraHUD(compass);
472

    
473
                        Vec4 color = ((TerrainViewer) _view3D.getCanvas3d().getOSGViewer())
474
                        .getClearColor();
475
                        _fullScreenViewer.setClearColor(color.x(), color.y(), color.z(),
476
                                        color.w());
477
                        _fullScreenViewer.setDisplaySettings(_ds);
478
                        Matrix refView = _view3D.getCanvas3d().getOSGViewer()
479
                        .getViewMatrix();
480
                        viewCam.setViewMatrix(refView);
481
                        _fullScreenViewer.setCamera(viewCam);
482

    
483

    
484

    
485
                        _canvas3d = ViewerFactory.getInstance().createViewer(
486
                                        ViewerFactory.VIEWER_TYPE.CANVAS_VIEWER, _fullScreenViewer);
487
                        _canvas3d
488
                        .addKeyListener(new ViewerStateListener(_fullScreenViewer));
489
                        frame = new JDialog();
490
                        JPanel jContentPane = new JPanel();
491
                        jContentPane.setLayout(new BorderLayout());
492
                        frame.setContentPane(jContentPane);
493
                        jContentPane.add((Component) _canvas3d, BorderLayout.CENTER);
494
                        ViewerFactory.getInstance().startAnimator();
495
                        frame.addWindowListener(new WindowAdapter() {
496
                                public void windowClosing(WindowEvent e) {
497
                                        if (changedManipulator) {
498
                                                ((TerrainViewer) (_view3D.getCanvas3d().getOSGViewer()))
499
                                                .setCameraManipulator(null);
500
                                        }
501

    
502
                                        _canvas3d.dispose();
503
                                }
504
                        });
505

    
506
                        frame.addComponentListener(new ComponentListener() {
507
                                public void componentResized(ComponentEvent arg0) {
508
                                        compass.setPosition(new Vec3(frame.getWidth() - 70, frame
509
                                                        .getHeight() - 70, 0));
510

    
511
                                }
512

    
513
                                public void componentMoved(ComponentEvent arg0) {
514
                                        // TODO Auto-generated method stub
515

    
516
                                }
517

    
518
                                public void componentShown(ComponentEvent arg0) {
519
                                        // TODO Auto-generated method stub
520

    
521
                                }
522

    
523
                                public void componentHidden(ComponentEvent e) {
524
                                        // TODO Auto-generated method stub
525

    
526
                                }
527
                        });
528
                        _canvas3d.addKeyListener(new KeyListener() {
529

    
530
                                public void keyPressed(KeyEvent arg0) {
531
                                        // TODO Auto-generated method stub
532

    
533
                                }
534

    
535
                                public void keyReleased(KeyEvent arg0) {
536

    
537
                                        if (arg0.getKeyCode() == KeyEvent.VK_ESCAPE) {
538

    
539
                                                frame.dispose();
540

    
541
                                        }
542

    
543
                                }
544

    
545
                                public void keyTyped(KeyEvent arg0) {
546
                                        // TODO Auto-generated method stub
547

    
548
                                }
549
                        });
550

    
551
                } catch (ChildIndexOutOfBoundsExceptions e1) {
552

    
553
                        e1.printStackTrace();
554
                } catch (NodeException e1) {
555

    
556
                        e1.printStackTrace();
557
                }
558

    
559
                if (_view3D.getCanvas3d().getOSGViewer().getCameraManipulator() == null) {
560
                        ((TerrainViewer) (_view3D.getCanvas3d().getOSGViewer()))
561
                        .restoreCustomTerrainManipulator();
562
                        changedManipulator = true;
563
                }
564

    
565
                if (synchronize)
566
                        _fullScreenViewer.setCameraManipulator(null);
567

    
568
                if (!jCheckBox3.isSelected()) { // the viewer is created in
569
                        // fullscreen
570
                        if (wowjCheckBox.isSelected()) {
571
                                enableWOWDisplay();
572
                                runViewer();
573
                        }
574
                        else if(_ds.getStereoMode()== DisplaySettings.StereoMode.QUAD_BUFFER) {
575
                                enableQUADBUFFERDisplay();
576
                                runViewer();
577
                                
578
                        }
579
                        else {
580
                                if (!jCheckBox2.isSelected()) {
581
                                        if(xyzjCheckBox.isSelected()) {
582
                                                enableXYZDisplay();
583
                                        }
584
                                        frame.setUndecorated(true);
585
                                        frame.requestFocus();
586
                                        //Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
587
                                        //frame.setSize(dim.width, dim.height);
588
                                        frame.setSize(_screenWidth,_screenHeight);
589
                                        frame.setVisible(true);
590
                                }
591

    
592
                                else {
593
                                        if(xyzjCheckBox.isSelected()) {
594
                                                enableXYZDisplay();
595
                                        }
596
                                        frame.setUndecorated(true);
597
                                        frame.requestFocus();
598
                                        //Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
599
                                        //frame.setSize(dim.width / _numScreens, dim.height);
600
                                        frame.setSize(_screenWidth,_screenHeight);
601
                                        frame.setLocation(((SpinnerNumberModel) jSpinner1
602
                                                        .getModel()).getNumber().intValue()
603
                                                        * _screenWidth, 0);
604
                                        frame.setVisible(true);
605
                                }
606
                        }
607
                }
608

    
609
                else { // here is created a windowed viewer
610

    
611
                        if (jCheckBox2.isSelected()) {
612

    
613
                                Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
614
                                frame.setSize(((SpinnerNumberModel) jSpinner4.getModel())
615
                                                .getNumber().intValue(),
616
                                                ((SpinnerNumberModel) jSpinner5.getModel()).getNumber()
617
                                                .intValue());
618
                                frame.setLocation((((SpinnerNumberModel) jSpinner1.getModel())
619
                                                .getNumber().intValue() * dim.width)
620
                                                + ((SpinnerNumberModel) jSpinner2.getModel())
621
                                                .getNumber().intValue(),
622
                                                ((SpinnerNumberModel) jSpinner3.getModel()).getNumber()
623
                                                .intValue());
624
                                frame.setVisible(true);
625
                        } else {
626

    
627
                                frame.setSize(((SpinnerNumberModel) jSpinner4.getModel())
628
                                                .getNumber().intValue(),
629
                                                ((SpinnerNumberModel) jSpinner5.getModel()).getNumber()
630
                                                .intValue());
631
                                frame.setLocation(((SpinnerNumberModel) jSpinner2.getModel())
632
                                                .getNumber().intValue(),
633
                                                ((SpinnerNumberModel) jSpinner3.getModel()).getNumber()
634
                                                .intValue());
635
                                frame.setVisible(true);
636

    
637
                        }
638

    
639
                }
640

    
641
                compass.setScale(new Vec3(75, 75, 75));
642

    
643
                System.gc();
644

    
645
        }
646

    
647
        protected void jButton2ActionPerformed(ActionEvent evt) {
648
                PluginServices.getMDIManager().closeWindow(this);
649

    
650
        }
651

    
652
        public WindowInfo getWindowInfo() {
653
                _viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
654
                _viewinfo.setTitle(PluginServices.getText(this, "FullScreen"));
655
                _viewinfo.setHeight(_height);
656
                _viewinfo.setWidth(_width);
657
                return _viewinfo;
658
        }
659

    
660
        public void stateChanged(ChangeEvent e) {
661

    
662
        }
663

    
664
        public void windowActivated() {
665
                _view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
666
                System.out.println(_view3D.getName());
667
        }
668

    
669
        public void windowClosed() {
670

    
671
        }
672

    
673
        public Object getWindowProfile() {
674
                // TODO Auto-generated method stub
675
                return WindowInfo.DIALOG_PROFILE;
676
        }
677
        
678
        protected void enableWOWDisplay()
679
        {
680
                char wow_content = 0x02, wow_factor = 0x40, wow_offset = 0x80;
681
                float wow_Zd = 0.459813f;
682
                float wow_vz = 6.180772f;
683
                float wow_M = -1586.34f;
684
                float wow_C = 127.5f;
685
                int screenNum = ((SpinnerNumberModel) jSpinner1
686
                                .getModel()).getNumber().intValue();
687

    
688
                _fullScreenViewer.setUpViewForWoWVxDisplay(screenNum,
689
                                wow_content, wow_factor, wow_offset, wow_Zd, wow_vz,
690
                                wow_M, wow_C);
691
        }
692
        
693
        protected void enableXYZDisplay()
694
        {
695
                //int screenNum = ((SpinnerNumberModel) jSpinner1
696
                //                .getModel()).getNumber().intValue();
697
                //_fullScreenViewer.setUpViewOnSingleScreen(screenNum);
698
                Node n = _fullScreenViewer.getSceneData();
699
                Node multiview = osgDB.readNodeFileNoException(String.valueOf(n.getCPtr())+".multiview");
700
                _fullScreenViewer.setSceneData(multiview);
701
        }
702
        
703
        protected void enableQUADBUFFERDisplay()
704
        {        
705
                if(!_fullScreenViewer.setUpViewerWithQuadBuffer(0, 0, _screenWidth, _screenHeight))
706
                        JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this, "Quadbuffer_error"));
707
                compass.setPosition(new Vec3(_screenWidth - 70, _screenHeight - 70, 0));
708
        }
709
        
710
        protected void runViewer()
711
        {
712
                final ISlaveComponent slavePainter = new ISlaveComponent() {
713

    
714
                        public void repaint() {
715
                                _fullScreenViewer.frame();
716
                        }
717
                };
718
                _view3D.getCanvas3d().addRenderSlaveComponent(slavePainter);
719
                new Thread(new Runnable() {
720

    
721
                        public void run() {
722
                                while(!_fullScreenViewer.done()) {
723
                                        try {
724
                                                Thread.sleep(60);
725
                                        } catch (InterruptedException e) {
726
                                        }
727
                                }
728
                                _view3D.getCanvas3d().removeRenderSlaveComponent(slavePainter);
729
                                _fullScreenViewer.dispose();
730
                        }
731
                }).start();                
732
        }
733
}