Browse Source

Merge pull request #282 from Dokthar/sdk_scenecomposer

SDK SceneComposer : smalls changes and cleaner code
Rémy Bouquet 10 years ago
parent
commit
5ae659ed48

+ 4 - 2
jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/shortcuts/DeleteShortcut.java

@@ -29,7 +29,9 @@ public class DeleteShortcut extends ShortcutTool {
     @Override
     public boolean isActivableBy(KeyInputEvent kie) {
         if (kie.getKeyCode() == KeyInput.KEY_X && kie.isPressed()) {
-            if (Lookup.getDefault().lookup(ShortcutManager.class).isShiftDown()) {
+            ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
+            if (!scm.isActive() && scm.isShiftDown()) {
+                // ^ can't be enable if an other shortcut is allready active
                 return true;
             }
         }
@@ -99,7 +101,7 @@ public class DeleteShortcut extends ShortcutTool {
     @Override
     public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
     }
-    
+
     private class DeleteUndo extends AbstractUndoableSceneEdit {
 
         private Spatial spatial;

+ 8 - 6
jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/shortcuts/MoveShortcut.java

@@ -78,14 +78,16 @@ public class MoveShortcut extends ShortcutTool {
         if (kie.isPressed()) {
             Lookup.getDefault().lookup(ShortcutManager.class).activateShortcut(kie);
 
-            Vector3f axis = new Vector3f();
-            boolean axisChanged = ShortcutManager.checkAxisKey(kie, axis);
+            boolean axisChanged = ShortcutManager.isAxisKey(kie);
             if (axisChanged) {
-                currentAxis = axis;
+                currentAxis = ShortcutManager.getAxisKey(kie);
             }
-            boolean numberChanged = ShortcutManager.checkNumberKey(kie, numberBuilder);
-            boolean enterHit = ShortcutManager.checkEnterHit(kie);
-            boolean escHit = ShortcutManager.checkEscHit(kie);
+            boolean numberChanged = ShortcutManager.isNumberKey(kie);
+            if(numberChanged){
+                ShortcutManager.setNumberKey(kie, numberBuilder);
+            }
+            boolean enterHit = ShortcutManager.isEnterKey(kie);
+            boolean escHit = ShortcutManager.isEscKey(kie);
 
             if (escHit) {
                 cancel();

+ 8 - 6
jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/shortcuts/RotateShortcut.java

@@ -77,14 +77,16 @@ public class RotateShortcut extends ShortcutTool {
         if (kie.isPressed()) {
             Lookup.getDefault().lookup(ShortcutManager.class).activateShortcut(kie);
 
-            Vector3f axis = new Vector3f();
-            boolean axisChanged = ShortcutManager.checkAxisKey(kie, axis);
+            boolean axisChanged = ShortcutManager.isAxisKey(kie);
             if (axisChanged) {
-                currentAxis = axis;
+                currentAxis = ShortcutManager.getAxisKey(kie);
             }
-            boolean numberChanged = ShortcutManager.checkNumberKey(kie, numberBuilder);
-            boolean enterHit = ShortcutManager.checkEnterHit(kie);
-            boolean escHit = ShortcutManager.checkEscHit(kie);
+            boolean numberChanged = ShortcutManager.isNumberKey(kie);
+            if(numberChanged){
+                ShortcutManager.setNumberKey(kie, numberBuilder);
+            }
+            boolean enterHit = ShortcutManager.isEnterKey(kie);
+            boolean escHit = ShortcutManager.isEscKey(kie);
 
             if (escHit) {
                 cancel();

+ 8 - 6
jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/shortcuts/ScaleShortcut.java

@@ -77,14 +77,16 @@ public class ScaleShortcut extends ShortcutTool {
         if (kie.isPressed()) {
             Lookup.getDefault().lookup(ShortcutManager.class).activateShortcut(kie);
 
-            Vector3f axis = new Vector3f();
-            boolean axisChanged = ShortcutManager.checkAxisKey(kie, axis);
+            boolean axisChanged = ShortcutManager.isAxisKey(kie);
             if (axisChanged) {
-                currentAxis = axis;
+                currentAxis = ShortcutManager.getAxisKey(kie);
             }
-            boolean numberChanged = ShortcutManager.checkNumberKey(kie, numberBuilder);
-            boolean enterHit = ShortcutManager.checkEnterHit(kie);
-            boolean escHit = ShortcutManager.checkEscHit(kie);
+            boolean numberChanged = ShortcutManager.isNumberKey(kie);
+            if(numberChanged){
+                ShortcutManager.setNumberKey(kie, numberBuilder);
+            }
+            boolean enterHit = ShortcutManager.isEnterKey(kie);
+            boolean escHit = ShortcutManager.isEscKey(kie);
 
             if (escHit) {
                 cancel();

+ 121 - 95
jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/shortcuts/ShortcutManager.java

@@ -157,13 +157,13 @@ public class ShortcutManager {
     }
 
     private boolean checkCommandeKey(KeyInputEvent kie) {
-        if (checkCtrlHit(kie)) {
+        if (isCtrlKey(kie)) {
             ctrlDown = kie.isPressed();
             return true;
-        } else if (checkAltHit(kie)) {
+        } else if (isAltKey(kie)) {
             altDown = kie.isPressed();
             return true;
-        } else if (checkShiftHit(kie)) {
+        } else if (isShiftKey(kie)) {
             shiftDown = kie.isPressed();
             return true;
         }
@@ -178,11 +178,8 @@ public class ShortcutManager {
      * @param kie
      * @return true if the given kie is KEY_RETURN
      */
-    public static boolean checkEnterHit(KeyInputEvent kie) {
-        if (kie.getKeyCode() == KeyInput.KEY_RETURN) {
-            return true;
-        }
-        return false;
+    public static boolean isEnterKey(KeyInputEvent kie) {
+        return (kie.getKeyCode() == KeyInput.KEY_RETURN);
     }
 
     /**
@@ -190,11 +187,8 @@ public class ShortcutManager {
      * @param kie
      * @return true if the given kie is KEY_ESCAPE
      */
-    public static boolean checkEscHit(KeyInputEvent kie) {
-        if (kie.getKeyCode() == KeyInput.KEY_ESCAPE) {
-            return true;
-        }
-        return false;
+    public static boolean isEscKey(KeyInputEvent kie) {
+        return (kie.getKeyCode() == KeyInput.KEY_ESCAPE);
     }
 
     /**
@@ -202,11 +196,8 @@ public class ShortcutManager {
      * @param kie
      * @return true if the given kie is KEY_LCONTROL || KEY_RCONTROL
      */
-    public static boolean checkCtrlHit(KeyInputEvent kie) {
-        if (kie.getKeyCode() == KeyInput.KEY_LCONTROL || kie.getKeyCode() == KeyInput.KEY_RCONTROL) {
-            return true;
-        }
-        return false;
+    public static boolean isCtrlKey(KeyInputEvent kie) {
+        return (kie.getKeyCode() == KeyInput.KEY_LCONTROL || kie.getKeyCode() == KeyInput.KEY_RCONTROL);
     }
 
     /**
@@ -214,11 +205,8 @@ public class ShortcutManager {
      * @param kie
      * @return true if the given kie is KEY_LSHIFT || KEY_RSHIFT
      */
-    public static boolean checkShiftHit(KeyInputEvent kie) {
-        if (kie.getKeyCode() == KeyInput.KEY_LSHIFT || kie.getKeyCode() == KeyInput.KEY_RSHIFT) {
-            return true;
-        }
-        return false;
+    public static boolean isShiftKey(KeyInputEvent kie) {
+        return (kie.getKeyCode() == KeyInput.KEY_LSHIFT || kie.getKeyCode() == KeyInput.KEY_RSHIFT);
     }
 
     /**
@@ -226,9 +214,40 @@ public class ShortcutManager {
      * @param kie
      * @return true if the given kie is KEY_LMENU || KEY_RMENU
      */
-    public static boolean checkAltHit(KeyInputEvent kie) {
-        if (kie.getKeyCode() == KeyInput.KEY_LMENU || kie.getKeyCode() == KeyInput.KEY_RMENU) {
-            return true;
+    public static boolean isAltKey(KeyInputEvent kie) {
+        return (kie.getKeyCode() == KeyInput.KEY_LMENU || kie.getKeyCode() == KeyInput.KEY_RMENU);
+    }
+
+    /**
+     *
+     * @param kie
+     * @return
+     */
+    public static boolean isNumberKey(KeyInputEvent kie) {
+        switch (kie.getKeyCode()) {
+            case KeyInput.KEY_MINUS:
+            case KeyInput.KEY_0:
+            case KeyInput.KEY_1:
+            case KeyInput.KEY_2:
+            case KeyInput.KEY_3:
+            case KeyInput.KEY_4:
+            case KeyInput.KEY_5:
+            case KeyInput.KEY_6:
+            case KeyInput.KEY_7:
+            case KeyInput.KEY_8:
+            case KeyInput.KEY_9:
+            case KeyInput.KEY_NUMPAD0:
+            case KeyInput.KEY_NUMPAD1:
+            case KeyInput.KEY_NUMPAD2:
+            case KeyInput.KEY_NUMPAD3:
+            case KeyInput.KEY_NUMPAD4:
+            case KeyInput.KEY_NUMPAD5:
+            case KeyInput.KEY_NUMPAD6:
+            case KeyInput.KEY_NUMPAD7:
+            case KeyInput.KEY_NUMPAD8:
+            case KeyInput.KEY_NUMPAD9:
+            case KeyInput.KEY_PERIOD:
+                return true;
         }
         return false;
     }
@@ -236,65 +255,55 @@ public class ShortcutManager {
     /**
      * store the number kie into the numberBuilder
      *
-     * @param kie
-     * @param numberBuilder
-     * @return true if the given kie is handled as a number key event
+     * @param kie the KeiInputEvent to be handled as a number.
+     * @param numberBuilder the number builder that will be modified !
      */
-    public static boolean checkNumberKey(KeyInputEvent kie, StringBuilder numberBuilder) {
-        if (kie.getKeyCode() == KeyInput.KEY_MINUS) {
-            if (numberBuilder.length() > 0) {
-                if (numberBuilder.charAt(0) == '-') {
-                    numberBuilder.replace(0, 1, "");
+    public static void setNumberKey(KeyInputEvent kie, StringBuilder numberBuilder) {
+        switch (kie.getKeyCode()) {
+            case KeyInput.KEY_MINUS:
+                if (numberBuilder.length() > 0) {
+                    if (numberBuilder.charAt(0) == '-') {
+                        numberBuilder.replace(0, 1, "");
+                    } else {
+                        numberBuilder.insert(0, '-');
+                    }
                 } else {
-                    numberBuilder.insert(0, '-');
+                    numberBuilder.append('-');
                 }
-            } else {
-                numberBuilder.append('-');
-            }
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_0 || kie.getKeyCode() == KeyInput.KEY_NUMPAD0) {
-            numberBuilder.append('0');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_1 || kie.getKeyCode() == KeyInput.KEY_NUMPAD1) {
-            numberBuilder.append('1');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_2 || kie.getKeyCode() == KeyInput.KEY_NUMPAD2) {
-            numberBuilder.append('2');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_3 || kie.getKeyCode() == KeyInput.KEY_NUMPAD3) {
-            numberBuilder.append('3');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_4 || kie.getKeyCode() == KeyInput.KEY_NUMPAD4) {
-            numberBuilder.append('4');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_5 || kie.getKeyCode() == KeyInput.KEY_NUMPAD5) {
-            numberBuilder.append('5');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_6 || kie.getKeyCode() == KeyInput.KEY_NUMPAD6) {
-            numberBuilder.append('6');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_7 || kie.getKeyCode() == KeyInput.KEY_NUMPAD7) {
-            numberBuilder.append('7');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_8 || kie.getKeyCode() == KeyInput.KEY_NUMPAD8) {
-            numberBuilder.append('8');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_9 || kie.getKeyCode() == KeyInput.KEY_NUMPAD9) {
-            numberBuilder.append('9');
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_PERIOD) {
-            if (numberBuilder.indexOf(".") == -1) { // if it doesn't exist yet
-                if (numberBuilder.length() == 0
-                        || (numberBuilder.length() == 1 && numberBuilder.charAt(0) == '-')) {
-                    numberBuilder.append("0.");
-                } else {
-                    numberBuilder.append(".");
+                break;
+            case KeyInput.KEY_0:
+            case KeyInput.KEY_1:
+            case KeyInput.KEY_2:
+            case KeyInput.KEY_3:
+            case KeyInput.KEY_4:
+            case KeyInput.KEY_5:
+            case KeyInput.KEY_6:
+            case KeyInput.KEY_7:
+            case KeyInput.KEY_8:
+            case KeyInput.KEY_9:
+            case KeyInput.KEY_NUMPAD0:
+            case KeyInput.KEY_NUMPAD1:
+            case KeyInput.KEY_NUMPAD2:
+            case KeyInput.KEY_NUMPAD3:
+            case KeyInput.KEY_NUMPAD4:
+            case KeyInput.KEY_NUMPAD5:
+            case KeyInput.KEY_NUMPAD6:
+            case KeyInput.KEY_NUMPAD7:
+            case KeyInput.KEY_NUMPAD8:
+            case KeyInput.KEY_NUMPAD9:
+                numberBuilder.append(kie.getKeyChar());
+                break;
+            case KeyInput.KEY_PERIOD:
+                if (numberBuilder.indexOf(".") == -1) { // if it doesn't exist yet
+                    if (numberBuilder.length() == 0
+                            || (numberBuilder.length() == 1 && numberBuilder.charAt(0) == '-')) {
+                        numberBuilder.append("0.");
+                    } else {
+                        numberBuilder.append(".");
+                    }
                 }
-            }
-            return true;
+                break;
         }
-
-        return false;
     }
 
     /**
@@ -311,25 +320,42 @@ public class ShortcutManager {
     }
 
     /**
-     * Check for axis input for key X,Y,Z and store the corresponding UNIT_ into
-     * the axisStore
+     * Test if the given kie can be handled as en axis input by the getAxisKey()
+     * method.
      *
-     * @param kie
-     * @param axisStore
-     * @return true if the given kie is handled as a Axis input
+     * @param kie the KeyInputEvent to test
+     * @return true is the kie can be handled as an axis input, else false
      */
-    public static boolean checkAxisKey(KeyInputEvent kie, Vector3f axisStore) {
-        if (kie.getKeyCode() == KeyInput.KEY_X) {
-            axisStore.set(Vector3f.UNIT_X);
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_Y) {
-            axisStore.set(Vector3f.UNIT_Y);
-            return true;
-        } else if (kie.getKeyCode() == KeyInput.KEY_Z) {
-            axisStore.set(Vector3f.UNIT_Z);
-            return true;
+    public static boolean isAxisKey(KeyInputEvent kie) {
+        switch (kie.getKeyCode()) {
+            case KeyInput.KEY_X:
+            case KeyInput.KEY_Y:
+            case KeyInput.KEY_Z:
+                return true;
         }
         return false;
     }
 
+    /**
+     * Handle the Kie as an axis input : return a Vector3f from the kie keyCode.
+     *
+     * @param kie the KeyInputEvent to handle as an Axis
+     * @return UNIT_X for 'x', UNIT_Y for 'y' and UNIT_Z for 'z' kie.
+     */
+    public static Vector3f getAxisKey(KeyInputEvent kie) {
+        Vector3f result = Vector3f.ZERO;
+        switch (kie.getKeyCode()) {
+            case KeyInput.KEY_X:
+                result = Vector3f.UNIT_X;
+                break;
+            case KeyInput.KEY_Y:
+                result = Vector3f.UNIT_Y;
+                break;
+            case KeyInput.KEY_Z:
+                result = Vector3f.UNIT_Z;
+                break;
+        }
+        return result;
+    }
+
 }