]> gerrit.simantics Code Review - simantics/3d.git/blob - vtk.rendering/src/vtk/rendering/swt/vtkSwtInteractorForwarderDecorator.java
VTK.Rendering plug-in + win64 fragment
[simantics/3d.git] / vtk.rendering / src / vtk / rendering / swt / vtkSwtInteractorForwarderDecorator.java
1 package vtk.rendering.swt;
2
3 import java.awt.Label;
4
5 import vtk.rendering.vtkComponent;
6 import vtk.rendering.vtkInteractorForwarder;
7
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.events.KeyEvent;
10 import org.eclipse.swt.events.KeyListener;
11 import org.eclipse.swt.events.MouseEvent;
12 import org.eclipse.swt.events.MouseListener;
13 import org.eclipse.swt.events.MouseMoveListener;
14 import org.eclipse.swt.events.MouseTrackListener;
15 import org.eclipse.swt.events.MouseWheelListener;
16
17 /**
18  * Decorator class used to implement all Mouse/Key SWT listener and convert them
19  * into the vtkInteractorForwarder proper AWT event.
20  *
21  * @author    Joachim Pouderoux - joachim.pouderoux@kitware.com, Kitware SAS 2012
22  * @copyright This work was supported by CEA/CESTA
23  *            Commissariat a l'Energie Atomique et aux Energies Alternatives,
24  *            15 avenue des Sablieres, CS 60001, 33116 Le Barp, France.
25  */
26 public class vtkSwtInteractorForwarderDecorator extends vtkInteractorForwarder
27 implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListener, KeyListener {
28
29   vtkInteractorForwarder forwarder;
30   Label dummyComponent;
31
32   public vtkSwtInteractorForwarderDecorator(vtkComponent<?> component, vtkInteractorForwarder forwarder) {
33     super(component);
34     dummyComponent = new Label();
35     this.forwarder = forwarder;
36   }
37
38   public static int convertModifiers(int mods) {
39     int modifiers = 0;
40     if ((mods & SWT.SHIFT) != 0) modifiers |= java.awt.Event.SHIFT_MASK;
41     if ((mods & SWT.CTRL) != 0) modifiers |= java.awt.Event.CTRL_MASK;
42     if ((mods & SWT.ALT) != 0) modifiers |= java.awt.Event.ALT_MASK;
43     return modifiers;
44   }
45
46   public java.awt.event.KeyEvent convertKeyEvent(org.eclipse.swt.events.KeyEvent e) {
47     return new java.awt.event.KeyEvent(dummyComponent, 0, (long)e.time, convertModifiers(e.stateMask), e.keyCode, e.character);
48   }
49
50   public java.awt.event.MouseEvent convertMouseEvent(org.eclipse.swt.events.MouseEvent e) {
51     int button = 0;
52     if ((e.button == 1) || (e.stateMask & SWT.BUTTON1) != 0) button = java.awt.event.MouseEvent.BUTTON1;
53     else if ((e.button == 2) || (e.stateMask & SWT.BUTTON2) != 0) button = java.awt.event.MouseEvent.BUTTON2;
54     else if ((e.button == 3) || (e.stateMask & SWT.BUTTON3) != 0) button = java.awt.event.MouseEvent.BUTTON3;
55     return new java.awt.event.MouseEvent(dummyComponent, 0, (long)e.time, convertModifiers(e.stateMask), e.x, e.y, e.count, false, button);
56   }
57
58   public java.awt.event.MouseWheelEvent convertMouseWheelEvent(org.eclipse.swt.events.MouseEvent e) {
59     return new java.awt.event.MouseWheelEvent(dummyComponent, 0, e.time, convertModifiers(e.stateMask), e.x, e.y, 0, false, java.awt.event.MouseWheelEvent.WHEEL_UNIT_SCROLL, 1, e.count);
60   }
61
62   public void keyPressed(KeyEvent e) {
63     super.keyPressed(convertKeyEvent(e));
64   }
65
66   public void keyReleased(KeyEvent e) {
67     super.keyReleased(convertKeyEvent(e));
68   }
69
70   public void mouseEnter(MouseEvent e) {
71     super.mouseEntered(convertMouseEvent(e));
72   }
73
74   public void mouseExit(MouseEvent e) {
75     super.mouseExited(convertMouseEvent(e));
76   }
77
78   public void mouseMove(MouseEvent e) {
79     if (((e.stateMask & SWT.BUTTON1) == 0)
80         && ((e.stateMask & SWT.BUTTON2) == 0)
81         && ((e.stateMask & SWT.BUTTON3) == 0)) {
82       super.mouseMoved(convertMouseEvent(e));
83     } else {
84       super.mouseDragged(convertMouseEvent(e));
85     }
86   }
87
88   public void mouseDown(MouseEvent e) {
89     super.mousePressed(convertMouseEvent(e));
90   }
91
92   public void mouseUp(MouseEvent e) {
93     super.mouseReleased(convertMouseEvent(e));
94   }
95
96   public void mouseScrolled(MouseEvent e) {
97     super.mouseWheelMoved(convertMouseWheelEvent(e));
98   }
99
100   public void mouseHover(MouseEvent e) {
101   }
102
103   public void mouseDoubleClick(MouseEvent e) {
104   }
105 }