From 2a9dd1a71ead201c6726741a1eb80e866501b0ca Mon Sep 17 00:00:00 2001 From: Fabien Tessier <fabien.tessier@telecom-paristech.fr> Date: Thu, 26 Oct 2017 14:53:39 +0200 Subject: [PATCH] Issue #93: Enable the possibility to move several selected components --- src/main/java/ui/PanelKeyListener.java | 30 +++++++++++++++++++++- src/main/java/ui/TDiagramMouseManager.java | 1 + src/main/java/ui/TDiagramPanel.java | 22 ++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/ui/PanelKeyListener.java b/src/main/java/ui/PanelKeyListener.java index 0dd929c2e0..16f23f1f94 100644 --- a/src/main/java/ui/PanelKeyListener.java +++ b/src/main/java/ui/PanelKeyListener.java @@ -1,5 +1,7 @@ package ui; +import java.awt.Cursor; +import java.awt.MouseInfo; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; @@ -18,6 +20,24 @@ public class PanelKeyListener implements KeyListener { @Override public void keyPressed(KeyEvent arg0) { + if (arg0.isShiftDown() && (tdp.mode == TDiagramPanel.SELECTED_COMPONENTS || tdp.mode == TDiagramPanel.MOVING_SELECTED_COMPONENTS)) { + tdp.showSelectionZone = true; + tdp.mode = TDiagramPanel.MOVING_SELECTED_COMPONENTS; + tdp.setMovingSelectedComponents(); + tdp.repaint(); + if (arg0.getKeyCode() == KeyEvent.VK_UP) { + tdp.upComponents(); + } + if (arg0.getKeyCode() == KeyEvent.VK_DOWN) { + tdp.downComponents(); + } + if (arg0.getKeyCode() == KeyEvent.VK_LEFT) { + tdp.leftComponents(); + } + if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) { + tdp.rightComponents(); + } + } if (arg0.getKeyCode() == KeyEvent.VK_UP && arg0.isShiftDown()) tdp.upComponent(); if (arg0.getKeyCode() == KeyEvent.VK_DOWN && arg0.isShiftDown()) @@ -42,7 +62,15 @@ public class PanelKeyListener implements KeyListener { } @Override - public void keyReleased(KeyEvent arg0) { + public void keyReleased(KeyEvent arg0) { + if (!arg0.isShiftDown()) + if (tdp.mode == TDiagramPanel.MOVING_SELECTED_COMPONENTS) { + tdp.showSelectionZone(tdp.currentX, tdp.currentY); + tdp.mode = TDiagramPanel.SELECTED_COMPONENTS; + tdp.setStopMovingSelectedComponents(); + tdp.getGUI().changeMade(tdp, TDiagramPanel.MOVE_COMPONENT); + tdp.repaint(); + } } @Override diff --git a/src/main/java/ui/TDiagramMouseManager.java b/src/main/java/ui/TDiagramMouseManager.java index 6abec2258a..fd01d7a806 100755 --- a/src/main/java/ui/TDiagramMouseManager.java +++ b/src/main/java/ui/TDiagramMouseManager.java @@ -396,6 +396,7 @@ public class TDiagramMouseManager extends MouseAdapter {//implements MouseListen tdp.mode = TDiagramPanel.NORMAL; tdp.mgui.setMode(MainGUI.CUTCOPY_KO); tdp.mgui.setMode(MainGUI.EXPORT_LIB_KO); + tdp.getMainGUI().actions[TGUIAction.MOVE_ENABLED].setEnabled(false); tdp.unselectSelectedComponents(); tdp.repaint(); } diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java index e906f43de7..42c2e36563 100755 --- a/src/main/java/ui/TDiagramPanel.java +++ b/src/main/java/ui/TDiagramPanel.java @@ -1144,10 +1144,12 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { mode = NORMAL; mgui.setMode(MainGUI.CUTCOPY_KO); mgui.setMode(MainGUI.EXPORT_LIB_KO); + mgui.actions[TGUIAction.MOVE_ENABLED].setEnabled(false); } else { mode = SELECTED_COMPONENTS; mgui.setMode(MainGUI.CUTCOPY_OK); mgui.setMode(MainGUI.EXPORT_LIB_OK); + mgui.actions[TGUIAction.MOVE_ENABLED].setEnabled(true); showSelectionZone = true; xSel = Math.min(currentSelectX, initSelectX); ySel = Math.min(currentSelectY, initSelectY); @@ -3445,6 +3447,26 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { } } + public void upComponents() { + moveSelected(xSel, ySel - MOVE_SPEED); + repaint(); + } + + public void downComponents() { + moveSelected(xSel, ySel + MOVE_SPEED); + repaint(); + } + + public void leftComponents() { + moveSelected(xSel - MOVE_SPEED, ySel); + repaint(); + } + + public void rightComponents() { + moveSelected(xSel + MOVE_SPEED, ySel); + repaint(); + } + public void setComponentPointed(TGComponent tgc) { componentPointed = tgc; } -- GitLab