diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java index 5231d5e80f734f92df76c0042e31969da5bf37ab..a5d757268224fbd3835baffdeb24ebc8d6563bf0 100755 --- a/src/main/java/ui/ActionPerformer.java +++ b/src/main/java/ui/ActionPerformer.java @@ -1026,5 +1026,14 @@ public class ActionPerformer { } else if (command.endsWith(".dot")) { mgui.viewAutomata(command); } + else if (command.equals(mgui.actions[TGUIAction.ACT_UP].getActionCommand())) { + tdp1.upComponent(); + } else if (command.equals(mgui.actions[TGUIAction.ACT_DOWN].getActionCommand())) { + tdp1.downComponent(); + } else if (command.equals(mgui.actions[TGUIAction.ACT_LEFT].getActionCommand())) { + tdp1.leftComponent(); + } else if (command.equals(mgui.actions[TGUIAction.ACT_RIGHT].getActionCommand())) { + tdp1.rightComponent(); + } } } diff --git a/src/main/java/ui/ArrowListener.java b/src/main/java/ui/ArrowListener.java new file mode 100644 index 0000000000000000000000000000000000000000..fcc6d77c11fe802171db2663a8498ed824712f4b --- /dev/null +++ b/src/main/java/ui/ArrowListener.java @@ -0,0 +1,37 @@ +package ui; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +public class ArrowListener implements KeyListener { + + private TDiagramPanel tdp; + + public ArrowListener(TDiagramPanel t) { + tdp = t; + } + + @Override + public void keyPressed(KeyEvent arg0) { + if (arg0.getKeyCode() == KeyEvent.VK_UP) + tdp.upComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_DOWN) + tdp.downComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_LEFT) + tdp.leftComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) + tdp.rightComponent(); + } + + @Override + public void keyReleased(KeyEvent arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void keyTyped(KeyEvent arg0) { + + } + +} diff --git a/src/main/java/ui/JMenuBarTurtle.java b/src/main/java/ui/JMenuBarTurtle.java index 8e2c0d40d910a76e5d95c8001d06ebf9753bbcc2..16e8753f8109b660657c97e549b59cfefc7f14ec 100755 --- a/src/main/java/ui/JMenuBarTurtle.java +++ b/src/main/java/ui/JMenuBarTurtle.java @@ -173,6 +173,14 @@ public class JMenuBarTurtle extends JMenuBar { menuItem.addMouseListener(mgui.mouseHandler); menuItem = edit.add(mgui.actions[TGUIAction.ACT_SUPPR]); menuItem.addMouseListener(mgui.mouseHandler); + menuItem = edit.add(mgui.actions[TGUIAction.ACT_UP]); + menuItem.addMouseListener(mgui.mouseHandler); + menuItem = edit.add(mgui.actions[TGUIAction.ACT_DOWN]); + menuItem.addMouseListener(mgui.mouseHandler); + menuItem = edit.add(mgui.actions[TGUIAction.ACT_RIGHT]); + menuItem.addMouseListener(mgui.mouseHandler); + menuItem = edit.add(mgui.actions[TGUIAction.ACT_LEFT]); + menuItem.addMouseListener(mgui.mouseHandler); edit.addSeparator(); diff --git a/src/main/java/ui/JToolBarMainTurtle.java b/src/main/java/ui/JToolBarMainTurtle.java index 40be8381c2d4e8452fd0093f08db7b26cb917d30..92b08986e8523b8cf8fcb0460d9ceeeea8d5ceaf 100755 --- a/src/main/java/ui/JToolBarMainTurtle.java +++ b/src/main/java/ui/JToolBarMainTurtle.java @@ -107,7 +107,13 @@ public class JToolBarMainTurtle extends JToolBar implements ActionListener button.addMouseListener(mgui.mouseHandler); button = add(mgui.actions[TGUIAction.ACT_DELETE]); button.addMouseListener(mgui.mouseHandler); - button = add(mgui.actions[TGUIAction.ACT_SUPPR]); + button = add(mgui.actions[TGUIAction.ACT_UP]); + button.addMouseListener(mgui.mouseHandler); + button = add(mgui.actions[TGUIAction.ACT_DOWN]); + button.addMouseListener(mgui.mouseHandler); + button = add(mgui.actions[TGUIAction.ACT_RIGHT]); + button.addMouseListener(mgui.mouseHandler); + button = add(mgui.actions[TGUIAction.ACT_LEFT]); button.addMouseListener(mgui.mouseHandler); addSeparator(); diff --git a/src/main/java/ui/ModeManager.java b/src/main/java/ui/ModeManager.java index 7838577a0f2148c0868314279b789afd80cd8231..fb11391da3bdbcb805540c47e823de29ff1cfcd4 100755 --- a/src/main/java/ui/ModeManager.java +++ b/src/main/java/ui/ModeManager.java @@ -121,6 +121,10 @@ public class ModeManager { actions[TGUIAction.ACT_GENERATE_ONTOLOGIES_ALL_DIAGRAMS].setEnabled(true); actions[TGUIAction.ACT_DELETE].setEnabled(true); actions[TGUIAction.ACT_SUPPR].setEnabled(true); + actions[TGUIAction.ACT_UP].setEnabled(true); + actions[TGUIAction.ACT_DOWN].setEnabled(true); + actions[TGUIAction.ACT_LEFT].setEnabled(true); + actions[TGUIAction.ACT_RIGHT].setEnabled(true); if (mainBar != null) { mainBar.activateSearch(true); diff --git a/src/main/java/ui/TDiagramMouseManager.java b/src/main/java/ui/TDiagramMouseManager.java index c5ad2a57ebc3d9e50b632c2b08e2616a02d30e29..43df70d235337a2e78fd2a0cffb0912c30fa6404 100755 --- a/src/main/java/ui/TDiagramMouseManager.java +++ b/src/main/java/ui/TDiagramMouseManager.java @@ -41,8 +41,6 @@ package ui; import ui.window.JDialogSearchBox; import java.awt.*; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; @@ -276,6 +274,7 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen //System.out.println("change2"); tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); } + setSelection(e.getX(), e.getY()); } if (tdp.mode == TDiagramPanel.RESIZING_COMPONENT) { @@ -461,7 +460,7 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen //If one click is done for selection if ((selected == TGComponentManager.EDIT) && (e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { - setSelection(e.getX(), e.getY()); + setSelection(e.getX(), e.getY()); } } @@ -469,7 +468,8 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen * Set the selection on the clicked component * @author Fabien Tessier */ - public void setSelection(int x, int y) { + private void setSelection(int x, int y) { + tdp.requestFocusInWindow(); tdp.unselectClickSelectedComponents(); //Unselect all components tgc = null; for (TGComponent tgc: tdp.componentList) { diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java index 28d1d714911ba5f6acf8860a33f75e78516de726..d48f476bfd5c53011bdf378de10b67a6f360f8a7 100755 --- a/src/main/java/ui/TDiagramPanel.java +++ b/src/main/java/ui/TDiagramPanel.java @@ -87,6 +87,7 @@ import java.util.List; public abstract class TDiagramPanel extends JPanel implements GenericTree { protected TDiagramMouseManager tdmm; + protected ArrowListener al; // for tracking changes public static final int NEW_COMPONENT = 0; @@ -111,7 +112,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { protected TGConnectingPoint selectedConnectingPoint; protected CAMSConnectingPoint selectedCAMSConnectingPoints; protected TGComponent componentPointed; - protected TGComponent lastClickComponent = null; protected TGComponent componentPopup; protected TToolBar ttb; protected TGComponent fatherOfRemoved; @@ -235,11 +235,14 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { public boolean drawable = true; + public static final int MOVE_SPEED = 3; // Constructor public TDiagramPanel(MainGUI _mgui, TToolBar _ttb) { + UIManager.getDefaults().put("ScrollPane.ancestorInputMap", + new UIDefaults.LazyInputMap(new Object[] {})); setBackground(ColorManager.DIAGRAM_BACKGROUND); //setBackground(Color.red); //setMinimumSize(new Dimension(1000, 1000)); @@ -253,11 +256,15 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { tdmm = new TDiagramMouseManager(this); addMouseListener(tdmm); addMouseMotionListener(tdmm); + + al = new ArrowListener(this); + addKeyListener(al); + + setFocusable(true); buildPopupMenus(); } - - + // Abstract operations public abstract boolean actionOnDoubleClick(TGComponent tgc); public abstract boolean actionOnAdd(TGComponent tgc); @@ -3406,4 +3413,36 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { public void setSelect(boolean b) { select = b; } + + public void upComponent() { + TGComponent tgc = componentPointed; + if (tgc != null && tgc.moveable) { + tgc.setMoveCd(tgc.x, tgc.y - MOVE_SPEED); + repaint(); + } + } + + public void downComponent() { + TGComponent tgc = componentPointed; + if (tgc != null && tgc.moveable) { + tgc.setMoveCd(tgc.x, tgc.y + MOVE_SPEED); + repaint(); + } + } + + public void leftComponent() { + TGComponent tgc = componentPointed; + if (tgc != null && tgc.moveable) { + tgc.setMoveCd(tgc.x - MOVE_SPEED, tgc.y); + repaint(); + } + } + + public void rightComponent() { + TGComponent tgc = componentPointed; + if (tgc != null && tgc.moveable) { + tgc.setMoveCd(tgc.x + MOVE_SPEED, tgc.y); + repaint(); + } + } } diff --git a/src/main/java/ui/TGComponent.java b/src/main/java/ui/TGComponent.java index 7d927979f8bb0bce1e24ab282102aee1c49fc09a..10575a4063f50febc27f306f3ff35b4d034eb4c8 100755 --- a/src/main/java/ui/TGComponent.java +++ b/src/main/java/ui/TGComponent.java @@ -2732,16 +2732,10 @@ public abstract class TGComponent implements CDElement, GenericTree { * Highlight the selected component * @author Fabien Tessier */ - public final boolean singleClick(JFrame frame, int x, int y) + public final void singleClick(JFrame frame, int x, int y) { - boolean b = true; isSelect = true; - tdp.highlightComponent(x, y); - if (moveable) { - - } - - return b; + tdp.highlightComponent(x, y); } public final void actionOnRemove(){ diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java index 78c760074ac7ba3b7b1590d3491a95e96b67bf2e..000a9814ab18250bc9f88cfd9b38cfad8be92154 100755 --- a/src/main/java/ui/TGUIAction.java +++ b/src/main/java/ui/TGUIAction.java @@ -551,7 +551,7 @@ public class TGUIAction extends AbstractAction { public static final int ACT_COPY = 45; public static final int ACT_PASTE = 46; public static final int ACT_DELETE = 47; - public static final int ACT_SUPPR = 462; //Last added input + public static final int ACT_SUPPR = 462; public static final int ACT_ZOOM_MORE = 235; public static final int ACT_ZOOM_LESS = 236; @@ -615,7 +615,12 @@ public class TGUIAction extends AbstractAction { public static final int ACT_INTERNAL_SEARCH = 415; //-- - public static final int NB_ACTION = 463; + public static final int ACT_UP = 463; + public static final int ACT_DOWN = 464; + public static final int ACT_LEFT = 465; + public static final int ACT_RIGHT = 466; + + public static final int NB_ACTION = 467; private static final TAction [] actions = new TAction[NB_ACTION]; @@ -652,7 +657,10 @@ public class TGUIAction extends AbstractAction { if (actions[id].hasControl) { putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].KEY, java.awt.event.InputEvent.CTRL_MASK)); } else { - putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].KEY)); + if (actions[id].MNEMONIC_KEY >= 500 && actions[id].MNEMONIC_KEY <= 503) + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].ACTION_COMMAND_KEY)); + else + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].KEY)); } } putValue(Action.ACTION_COMMAND_KEY, actions[id].ACTION_COMMAND_KEY); @@ -1224,7 +1232,10 @@ public class TGUIAction extends AbstractAction { actions[ACT_GENERATE_ONTOLOGIES_CURRENT_SET_OF_DIAGRAMS] = new TAction("generate-ontology-current-set-of-diagrams", "Generate ontology (current set of diagrams)", IconManager.imgic338, IconManager.imgic339, "Generate ontology (current set of diagrams)", "Generate the ontology for the current set of diagrams under edition", 0); actions[ACT_GENERATE_ONTOLOGIES_ALL_DIAGRAMS] = new TAction("generate-ontology-all-diagrams", "Generate ontology (all diagrams)", IconManager.imgic338, IconManager.imgic339, "Generate ontology (all diagrams)", "Generate the ontology for the diagrams under edition", 0); - + actions[ACT_UP] = new TAction("UP", "Up", IconManager.imgic78, IconManager.imgic78, "Up", "Up", 500); + actions[ACT_DOWN] = new TAction("DOWN", "Down", IconManager.imgic79, IconManager.imgic79, "Down", "Down", 501); + actions[ACT_RIGHT] = new TAction("RIGHT", "Right", IconManager.imgic780, IconManager.imgic780, "Right", "Right", 502); + actions[ACT_LEFT] = new TAction("LEFT", "Left", IconManager.imgic790, IconManager.imgic790, "Left", "Left", 503); } diff --git a/src/main/java/ui/util/IconManager.java b/src/main/java/ui/util/IconManager.java index 2af58c41e42580c510d0e746ee91215d07711c73..4c9f0c226fa1b54cb87473b2c38ecb7e2221ccfd 100755 --- a/src/main/java/ui/util/IconManager.java +++ b/src/main/java/ui/util/IconManager.java @@ -71,7 +71,7 @@ public class IconManager { public static ImageIcon imgic40, imgic41, imgic42, imgic43, imgic44, imgic45, imgic46, imgic47, imgic48, imgic49; public static ImageIcon imgic50, imgic51, imgic52, imgic53, imgic54, imgic55, imgic56, imgic57, imgic58, imgic59; public static ImageIcon imgic60, imgic61, imgic62, imgic63, imgic64, imgic65, imgic66, imgic68; - public static ImageIcon imgic70, imgic71, imgic72, imgic73, imgic75, imgic76, imgic77, imgic78, imgic79; + public static ImageIcon imgic70, imgic71, imgic72, imgic73, imgic75, imgic76, imgic77, imgic78, imgic79, imgic780, imgic790; public static ImageIcon imgic80, imgic82, imgic84, imgic86, imgic88, imgic89; public static ImageIcon imgic90, imgic92, imgic94, imgic96, imgic98, imgic99; @@ -254,6 +254,8 @@ public class IconManager { private static String icon77 = "toolbarButtonGraphics/general/Preferences24.gif"; private static String icon78 = "toolbarButtonGraphics/navigation/Up16.gif"; private static String icon79 = "toolbarButtonGraphics/navigation/Down16.gif"; + private static String icon780 = "toolbarButtonGraphics/navigation/Right16.gif"; + private static String icon790 = "toolbarButtonGraphics/navigation/Left16.gif"; private static String icon80 = "avatarbd.gif"; @@ -727,6 +729,8 @@ public class IconManager { imgic77 = getIcon(icon77); imgic78 = getIcon(icon78); imgic79 = getIcon(icon79); + imgic780 = getIcon(icon780); + imgic790 = getIcon(icon790); imgic80 = getIcon(icon80); imgic82 = getIcon(icon82); diff --git a/src/main/resources/ui/util/toolbarButtonGraphics/navigation/Left16.gif b/src/main/resources/ui/util/toolbarButtonGraphics/navigation/Left16.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a7424d87db7ebb22e07cc6d813aa16e4d2c483f Binary files /dev/null and b/src/main/resources/ui/util/toolbarButtonGraphics/navigation/Left16.gif differ diff --git a/src/main/resources/ui/util/toolbarButtonGraphics/navigation/Right16.gif b/src/main/resources/ui/util/toolbarButtonGraphics/navigation/Right16.gif new file mode 100644 index 0000000000000000000000000000000000000000..af8b908ed29873ea5f486ae153abd75bec50090d Binary files /dev/null and b/src/main/resources/ui/util/toolbarButtonGraphics/navigation/Right16.gif differ