]> gerrit.simantics Code Review - simantics/3d.git/blob - vtk.rendering/src/vtk/rendering/swt/vtkSwtInteractorForwarderDecorator.java
Compiler warning elimination
[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 import org.eclipse.swt.internal.DPIUtil;
17
18 /**
19  * Decorator class used to implement all Mouse/Key SWT listener and convert them
20  * into the vtkInteractorForwarder proper AWT event.
21  *
22  * @author    Joachim Pouderoux - joachim.pouderoux@kitware.com, Kitware SAS 2012
23  * @copyright This work was supported by CEA/CESTA
24  *            Commissariat a l'Energie Atomique et aux Energies Alternatives,
25  *            15 avenue des Sablieres, CS 60001, 33116 Le Barp, France.
26  */
27 @SuppressWarnings("restriction")
28 public class vtkSwtInteractorForwarderDecorator extends vtkInteractorForwarder
29 implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListener, KeyListener {
30
31   vtkInteractorForwarder forwarder;
32   Label dummyComponent;
33
34   public vtkSwtInteractorForwarderDecorator(vtkComponent<?> component, vtkInteractorForwarder forwarder) {
35     super(component);
36     dummyComponent = new Label();
37     this.forwarder = forwarder;
38   }
39
40   public static int convertModifiers(int button , int mods) {
41     int modifiers = 0;
42     if ((mods & SWT.SHIFT) != 0) modifiers |= java.awt.Event.SHIFT_MASK;
43     if ((mods & SWT.CTRL) != 0) modifiers |= java.awt.Event.CTRL_MASK;
44     if ((mods & SWT.ALT) != 0) modifiers |= java.awt.Event.ALT_MASK;
45     if ((mods & SWT.BUTTON1) != 0 || button == 1) modifiers |= java.awt.event.InputEvent.BUTTON1_MASK;
46     if ((mods & SWT.BUTTON2) != 0 || button == 2) modifiers |= java.awt.event.InputEvent.BUTTON2_MASK;
47     if ((mods & SWT.BUTTON3) != 0 || button == 3) modifiers |= java.awt.event.InputEvent.BUTTON3_MASK;
48     return modifiers;
49   }
50
51   public java.awt.event.KeyEvent convertKeyEvent(org.eclipse.swt.events.KeyEvent e) {
52     return new java.awt.event.KeyEvent(dummyComponent, 0, (long)e.time, convertModifiers(0, e.stateMask), convertKeyCode(e.keyCode), e.character);
53   }
54
55   public java.awt.event.MouseEvent convertMouseEvent(org.eclipse.swt.events.MouseEvent e) {
56     int button = 0;
57     if ((e.button == 1) || (e.stateMask & SWT.BUTTON1) != 0) button = java.awt.event.MouseEvent.BUTTON1;
58     else if ((e.button == 2) || (e.stateMask & SWT.BUTTON2) != 0) button = java.awt.event.MouseEvent.BUTTON2;
59     else if ((e.button == 3) || (e.stateMask & SWT.BUTTON3) != 0) button = java.awt.event.MouseEvent.BUTTON3;
60     return new java.awt.event.MouseEvent(dummyComponent, 0, (long)e.time, convertModifiers(e.button,e.stateMask), DPIUtil.autoScaleUp(e.x), DPIUtil.autoScaleUp(e.y), e.count, false, button);
61   }
62   
63   public int convertKeyCode(int swtKeyCode) {
64           if (swtKeyCode >= 'a' && swtKeyCode <= 'z') {
65                   return Character.toUpperCase(swtKeyCode);
66           }
67           return swtKeyCode;
68   }
69
70   public java.awt.event.MouseWheelEvent convertMouseWheelEvent(org.eclipse.swt.events.MouseEvent e) {
71     return new java.awt.event.MouseWheelEvent(dummyComponent, 0, e.time, convertModifiers(e.button,e.stateMask), DPIUtil.autoScaleUp(e.x), DPIUtil.autoScaleUp(e.y), 0, false, java.awt.event.MouseWheelEvent.WHEEL_UNIT_SCROLL, 1, e.count);
72   }
73
74   public void keyPressed(KeyEvent e) {
75     super.keyPressed(convertKeyEvent(e));
76   }
77
78   public void keyReleased(KeyEvent e) {
79     super.keyReleased(convertKeyEvent(e));
80   }
81
82   public void mouseEnter(MouseEvent e) {
83     super.mouseEntered(convertMouseEvent(e));
84   }
85
86   public void mouseExit(MouseEvent e) {
87     super.mouseExited(convertMouseEvent(e));
88   }
89
90   public void mouseMove(MouseEvent e) {
91     if (((e.stateMask & SWT.BUTTON1) == 0)
92         && ((e.stateMask & SWT.BUTTON2) == 0)
93         && ((e.stateMask & SWT.BUTTON3) == 0)) {
94       super.mouseMoved(convertMouseEvent(e));
95     } else {
96       super.mouseDragged(convertMouseEvent(e));
97     }
98   }
99
100   int x = 0;
101   int y = 0;
102   int d = 4;
103   
104   public void mouseDown(MouseEvent e) {
105     super.mousePressed(convertMouseEvent(e));
106     x = e.x;
107     y = e.y;
108   }
109
110   public void mouseUp(MouseEvent e) {
111     super.mouseReleased(convertMouseEvent(e));
112     // Emulate AWT mouse clicks
113     if (Math.abs(x-e.x) < d && Math.abs(y-e.y) < d)
114         super.mouseClicked(convertMouseEvent(e));
115   }
116
117   public void mouseScrolled(MouseEvent e) {
118     super.mouseWheelMoved(convertMouseWheelEvent(e));
119   }
120
121   public void mouseHover(MouseEvent e) {
122   }
123
124   public void mouseDoubleClick(MouseEvent e) {
125   }
126 }