From c95d572a2043f00f7f84a30f06b1fb26ca169a28 Mon Sep 17 00:00:00 2001 From: Fabien Tessier <fabien.tessier@telecom-paristech.fr> Date: Wed, 27 Sep 2017 17:48:58 +0200 Subject: [PATCH] #Issue 70: Implement standard diagram editing keys --- src/main/java/ui/ActionPerformer.java | 4 +-- src/main/java/ui/ArrowListener.java | 37 ------------------- src/main/java/ui/JMenuBarTurtle.java | 8 ----- src/main/java/ui/PanelKeyListener.java | 50 ++++++++++++++++++++++++++ src/main/java/ui/TDiagramPanel.java | 10 +++--- src/main/java/ui/TGUIAction.java | 12 +++---- 6 files changed, 62 insertions(+), 59 deletions(-) delete mode 100644 src/main/java/ui/ArrowListener.java create mode 100644 src/main/java/ui/PanelKeyListener.java diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java index a5d7572682..0a021dac7d 100755 --- a/src/main/java/ui/ActionPerformer.java +++ b/src/main/java/ui/ActionPerformer.java @@ -1031,9 +1031,9 @@ public class ActionPerformer { } else if (command.equals(mgui.actions[TGUIAction.ACT_DOWN].getActionCommand())) { tdp1.downComponent(); } else if (command.equals(mgui.actions[TGUIAction.ACT_LEFT].getActionCommand())) { - tdp1.leftComponent(); + tdp1.leftComponent(); } else if (command.equals(mgui.actions[TGUIAction.ACT_RIGHT].getActionCommand())) { - tdp1.rightComponent(); + tdp1.rightComponent(); } } } diff --git a/src/main/java/ui/ArrowListener.java b/src/main/java/ui/ArrowListener.java deleted file mode 100644 index fcc6d77c11..0000000000 --- a/src/main/java/ui/ArrowListener.java +++ /dev/null @@ -1,37 +0,0 @@ -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 16e8753f81..8e2c0d40d9 100755 --- a/src/main/java/ui/JMenuBarTurtle.java +++ b/src/main/java/ui/JMenuBarTurtle.java @@ -173,14 +173,6 @@ 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/PanelKeyListener.java b/src/main/java/ui/PanelKeyListener.java new file mode 100644 index 0000000000..2bede92afa --- /dev/null +++ b/src/main/java/ui/PanelKeyListener.java @@ -0,0 +1,50 @@ +package ui; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +/** + * KeyListener for TDiagramPanel + * @author Fabien Tessier + */ + +public class PanelKeyListener implements KeyListener { + + private TDiagramPanel tdp; + + public PanelKeyListener(TDiagramPanel t) { + tdp = t; + } + + @Override + public void keyPressed(KeyEvent arg0) { + if (arg0.getKeyCode() == KeyEvent.VK_UP && arg0.isShiftDown()) + tdp.upComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_DOWN && arg0.isShiftDown()) + tdp.downComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_LEFT && arg0.isShiftDown()) + tdp.leftComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_RIGHT && arg0.isShiftDown()) + tdp.rightComponent(); + if (arg0.getKeyCode() == KeyEvent.VK_ESCAPE && tdp.mode == TDiagramPanel.ADDING_CONNECTOR) { + if (tdp.mode == TDiagramPanel.ADDING_CONNECTOR) { + tdp.mode = TDiagramPanel.NORMAL; + tdp.stopAddingConnector(true); + tdp.getGUI().setEditMode(); + tdp.repaint(); + } else { + tdp.getGUI().setEditMode(); + tdp.repaint(); + } + } + } + + @Override + public void keyReleased(KeyEvent arg0) { + } + + @Override + public void keyTyped(KeyEvent arg0) { + } + +} diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java index d48f476bfd..b872772f95 100755 --- a/src/main/java/ui/TDiagramPanel.java +++ b/src/main/java/ui/TDiagramPanel.java @@ -87,7 +87,7 @@ import java.util.List; public abstract class TDiagramPanel extends JPanel implements GenericTree { protected TDiagramMouseManager tdmm; - protected ArrowListener al; + protected PanelKeyListener pkl; // for tracking changes public static final int NEW_COMPONENT = 0; @@ -235,14 +235,12 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { public boolean drawable = true; - public static final int MOVE_SPEED = 3; + public static final int MOVE_SPEED = 1; //Speed of component moving with arrow keys // 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)); @@ -257,8 +255,8 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { addMouseListener(tdmm); addMouseMotionListener(tdmm); - al = new ArrowListener(this); - addKeyListener(al); + pkl = new PanelKeyListener(this); + addKeyListener(pkl); setFocusable(true); diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java index 000a9814ab..a204941ad7 100755 --- a/src/main/java/ui/TGUIAction.java +++ b/src/main/java/ui/TGUIAction.java @@ -657,8 +657,8 @@ 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 { - if (actions[id].MNEMONIC_KEY >= 500 && actions[id].MNEMONIC_KEY <= 503) - putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].ACTION_COMMAND_KEY)); + if (actions[id].MNEMONIC_KEY >= 37 && actions[id].MNEMONIC_KEY <= 40) //handling for arrow keys + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].MNEMONIC_KEY, 0)); else putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].KEY)); } @@ -1232,10 +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); + actions[ACT_UP] = new TAction("UP", "Up", IconManager.imgic78, IconManager.imgic78, "Up (Maj-Haut)", "Up", KeyEvent.VK_UP); + actions[ACT_DOWN] = new TAction("DOWN", "Down", IconManager.imgic79, IconManager.imgic79, "Down (Maj-Bas)", "Down", KeyEvent.VK_DOWN); + actions[ACT_RIGHT] = new TAction("RIGHT", "Right", IconManager.imgic780, IconManager.imgic780, "Right (Maj-Droit)", "Right", KeyEvent.VK_RIGHT); + actions[ACT_LEFT] = new TAction("LEFT", "Left", IconManager.imgic790, IconManager.imgic790, "Left (Maj-Gauche)", "Left", KeyEvent.VK_LEFT); } -- GitLab