]> gerrit.simantics Code Review - simantics/3d.git/blob - vtk/src/vtk/vtkRenderWindowPanel.java
Mesh API to use Tuple3d instead of Vector3d
[simantics/3d.git] / vtk / src / vtk / vtkRenderWindowPanel.java
1 package vtk;
2
3 import java.awt.event.InputEvent;
4 import java.awt.event.KeyEvent;
5 import java.awt.event.MouseEvent;
6
7 /**
8  * vtkRenderWindowPanel is a vtkCanvas which allows additional vtkRenderers to
9  * be added. vtkPanel and vtkCanvas force you to add actors to the internal
10  * vtkRenderer. vtkRenderWindowPanel always renders, even if the internal
11  * renderer has no visible actors.
12  *
13  * @author Kitware
14  */
15 public class vtkRenderWindowPanel extends vtkCanvas {
16     private static final long serialVersionUID = 1L;
17
18     public vtkRenderWindowPanel() {
19         cam = new vtkCamera();
20         lgt = new vtkLight();
21     }
22
23     public vtkRenderWindowPanel(vtkRenderWindow win) {
24         super(win);
25         cam = new vtkCamera();
26         lgt = new vtkLight();
27     }
28
29     public synchronized void Render() {
30         if (!rendering) {
31             rendering = true;
32             if (rw != null) {
33                 if (windowset == 0) {
34                     // set the window id and the active camera
35                     RenderCreate(rw);
36                     Lock();
37                     rw.SetSize(getWidth(), getHeight());
38                     UnLock();
39                     windowset = 1;
40                     // notify observers that we have a renderwindow created
41                     // windowSetObservable.notifyObservers();
42                 }
43                 Lock();
44                 rw.Render();
45                 UnLock();
46             }
47             rendering = false;
48         }
49     }
50
51     public void mousePressed(MouseEvent e) {
52         Lock();
53         rw.SetDesiredUpdateRate(5.0);
54         lastX = e.getX();
55         lastY = e.getY();
56
57         ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
58         shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
59
60         iren.SetEventInformationFlipY(e.getX(), e.getY(), ctrlPressed, shiftPressed, '0', 0, "0");
61
62         if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
63             iren.LeftButtonPressEvent();
64         }
65
66         else if ((e.getModifiers() & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK) {
67             iren.MiddleButtonPressEvent();
68         }
69
70         else if ((e.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) {
71             iren.RightButtonPressEvent();
72         }
73
74         UnLock();
75     }
76
77     public void mouseDragged(MouseEvent e) {
78         ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
79         shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
80
81         iren.SetEventInformationFlipY(e.getX(), e.getY(), ctrlPressed, shiftPressed, '0', 0, "0");
82
83         Lock();
84         iren.MouseMoveEvent();
85         UnLock();
86     }
87
88     public void keyPressed(KeyEvent e) {
89         char keyChar = e.getKeyChar();
90
91         ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
92         shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
93
94         iren.SetEventInformationFlipY(lastX, lastY, ctrlPressed, shiftPressed, keyChar, 0, String.valueOf(keyChar));
95
96         Lock();
97         iren.KeyPressEvent();
98         iren.CharEvent();
99         UnLock();
100     }
101 }