]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - vtk.rendering/src/vtk/rendering/swt/vtkSwtInteractorForwarderDecorator.java
Compiler warning elimination
[simantics/3d.git] / vtk.rendering / src / vtk / rendering / swt / vtkSwtInteractorForwarderDecorator.java
index 28178862d983c8f974f13685c72bac61e6051617..2784838877c5b2527fd9c2053721ed46b546956f 100644 (file)
@@ -13,6 +13,7 @@ import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.events.MouseMoveListener;
 import org.eclipse.swt.events.MouseTrackListener;
 import org.eclipse.swt.events.MouseWheelListener;
+import org.eclipse.swt.internal.DPIUtil;
 
 /**
  * Decorator class used to implement all Mouse/Key SWT listener and convert them
@@ -23,6 +24,7 @@ import org.eclipse.swt.events.MouseWheelListener;
  *            Commissariat a l'Energie Atomique et aux Energies Alternatives,
  *            15 avenue des Sablieres, CS 60001, 33116 Le Barp, France.
  */
+@SuppressWarnings("restriction")
 public class vtkSwtInteractorForwarderDecorator extends vtkInteractorForwarder
 implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListener, KeyListener {
 
@@ -35,16 +37,19 @@ implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListe
     this.forwarder = forwarder;
   }
 
-  public static int convertModifiers(int mods) {
+  public static int convertModifiers(int button , int mods) {
     int modifiers = 0;
     if ((mods & SWT.SHIFT) != 0) modifiers |= java.awt.Event.SHIFT_MASK;
     if ((mods & SWT.CTRL) != 0) modifiers |= java.awt.Event.CTRL_MASK;
     if ((mods & SWT.ALT) != 0) modifiers |= java.awt.Event.ALT_MASK;
+    if ((mods & SWT.BUTTON1) != 0 || button == 1) modifiers |= java.awt.event.InputEvent.BUTTON1_MASK;
+    if ((mods & SWT.BUTTON2) != 0 || button == 2) modifiers |= java.awt.event.InputEvent.BUTTON2_MASK;
+    if ((mods & SWT.BUTTON3) != 0 || button == 3) modifiers |= java.awt.event.InputEvent.BUTTON3_MASK;
     return modifiers;
   }
 
   public java.awt.event.KeyEvent convertKeyEvent(org.eclipse.swt.events.KeyEvent e) {
-    return new java.awt.event.KeyEvent(dummyComponent, 0, (long)e.time, convertModifiers(e.stateMask), e.keyCode, e.character);
+    return new java.awt.event.KeyEvent(dummyComponent, 0, (long)e.time, convertModifiers(0, e.stateMask), convertKeyCode(e.keyCode), e.character);
   }
 
   public java.awt.event.MouseEvent convertMouseEvent(org.eclipse.swt.events.MouseEvent e) {
@@ -52,11 +57,18 @@ implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListe
     if ((e.button == 1) || (e.stateMask & SWT.BUTTON1) != 0) button = java.awt.event.MouseEvent.BUTTON1;
     else if ((e.button == 2) || (e.stateMask & SWT.BUTTON2) != 0) button = java.awt.event.MouseEvent.BUTTON2;
     else if ((e.button == 3) || (e.stateMask & SWT.BUTTON3) != 0) button = java.awt.event.MouseEvent.BUTTON3;
-    return new java.awt.event.MouseEvent(dummyComponent, 0, (long)e.time, convertModifiers(e.stateMask), e.x, e.y, e.count, false, button);
+    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);
+  }
+  
+  public int convertKeyCode(int swtKeyCode) {
+         if (swtKeyCode >= 'a' && swtKeyCode <= 'z') {
+                 return Character.toUpperCase(swtKeyCode);
+         }
+         return swtKeyCode;
   }
 
   public java.awt.event.MouseWheelEvent convertMouseWheelEvent(org.eclipse.swt.events.MouseEvent e) {
-    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);
+    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);
   }
 
   public void keyPressed(KeyEvent e) {
@@ -85,12 +97,21 @@ implements MouseListener, MouseMoveListener, MouseTrackListener, MouseWheelListe
     }
   }
 
+  int x = 0;
+  int y = 0;
+  int d = 4;
+  
   public void mouseDown(MouseEvent e) {
     super.mousePressed(convertMouseEvent(e));
+    x = e.x;
+    y = e.y;
   }
 
   public void mouseUp(MouseEvent e) {
     super.mouseReleased(convertMouseEvent(e));
+    // Emulate AWT mouse clicks
+    if (Math.abs(x-e.x) < d && Math.abs(y-e.y) < d)
+       super.mouseClicked(convertMouseEvent(e));
   }
 
   public void mouseScrolled(MouseEvent e) {