From d7ea8f3738641180e06f62d1a3baa516ef8fc522 Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 2 Sep 2020 09:58:33 +0200 Subject: [PATCH] "Highlight Continuity Area" mode improvements --- .../src/org/diylc/common/IPlugInPort.java | 7 +++++-- .../src/org/diylc/presenter/DrawingManager.java | 3 +-- .../src/org/diylc/presenter/Presenter.java | 7 ++++--- .../diylc-core/src/org/diylc/presenter/update.xml | 8 ++++++++ diylc/diylc-swing/src/org/diylc/DIYLCStarter.java | 6 ++++++ .../diylc/swing/loadline/LoadlineEditorFrame.java | 3 ++- .../plugins/canvas/CanvasGestureListener.java | 2 +- .../diylc/swing/plugins/canvas/CanvasPlugin.java | 14 +++++++++++--- .../swing/plugins/tree/TreeGestureListener.java | 2 +- 9 files changed, 39 insertions(+), 13 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java b/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java index 5a35a83f..a7287893 100644 --- a/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java +++ b/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java @@ -125,10 +125,13 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP * * Note: point coordinates are scaled for zoom factor. * - * @param point + * @param point + * @param ctrlDown + * @param shiftDown + * @param altDown * @return cursor */ - Cursor getCursorAt(Point point); + Cursor getCursorAt(Point point, boolean ctrlDown, boolean shiftDown, boolean altDown); /** * Returns an instance of currently loaded project. diff --git a/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java b/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java index f02ff64a..16894028 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java +++ b/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java @@ -470,8 +470,7 @@ public class DrawingManager { } } - if (currentContinuityArea != null - && (configManager.readBoolean(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false))) { + if (currentContinuityArea != null) { Composite oldComposite = g2d.getComposite(); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); g2d.setColor(Color.green); diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index 734f7ba9..f8966c49 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -265,9 +265,9 @@ public class Presenter implements IPlugInPort { } @Override - public Cursor getCursorAt(Point point) { + public Cursor getCursorAt(Point point, boolean ctrlDown, boolean shiftDown, boolean altDown) { // Only change the cursor if we're not making a new component. - if (configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false)) + if (configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false) || altDown) return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); if (instantiationManager.getComponentTypeSlot() == null) { // Scale point to remove zoom factor. @@ -686,7 +686,7 @@ public class Presenter implements IPlugInPort { drawingManager.clearContinuityArea(); projectFileManager.notifyFileChange(); } - } else if (configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false)) { + } else if (configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false) || altDown) { drawingManager.findContinuityAreaAtPoint(currentProject, scaledPoint); messageDispatcher.dispatchMessage(EventType.REPAINT); } else { @@ -717,6 +717,7 @@ public class Presenter implements IPlugInPort { newSelection.addAll(findAllGroupedComponents(topComponent)); } } + drawingManager.clearContinuityArea(); updateSelection(newSelection); // messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, // selectedComponents); diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 251a945e..e31a4a98 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3130,6 +3130,14 @@ NEW_FEATURE Added German UI translation + + NEW_FEATURE + Use ALT key to temporarily switch to "Highlight Continuity Area" mode + + + IMPROVEMENT + Reset "Highlight Continuity Area" mode configuration on application exit to avoid confusion in the next session + IMPROVEMENT Improved Dutch translation diff --git a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java index 98a316b4..ed26839b 100644 --- a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java +++ b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java @@ -33,6 +33,7 @@ import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.diylc.appframework.miscutils.ConfigurationManager; import org.diylc.appframework.miscutils.PropertyInjector; +import org.diylc.common.IPlugInPort; import org.diylc.core.IView; import org.diylc.lang.LangUtil; import org.diylc.presenter.Presenter; @@ -82,6 +83,11 @@ public class DIYLCStarter { ConfigurationManager.initialize("diylc"); + // disable HIGHLIGHT_CONTINUITY_AREA config, keep it transient + ConfigurationManager.getInstance().writeValue(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false); + + LOG.info("Loading languages..."); + LangUtil.configure(); LOG.debug("Java version: " + System.getProperty("java.runtime.version") + " by " diff --git a/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java b/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java index fefc03f8..21a30125 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java +++ b/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java @@ -211,7 +211,8 @@ public class LoadlineEditorFrame extends JFrame implements IView { @Override public void mouseMoved(MouseEvent e) { - canvasPanel.setCursor(plugInPort.getCursorAt(e.getPoint())); + canvasPanel.setCursor(plugInPort.getCursorAt(e.getPoint(), Utils.isMac() ? e.isMetaDown() : e.isControlDown(), + e.isShiftDown(), e.isAltDown())); plugInPort.mouseMoved(e.getPoint(), Utils.isMac() ? e.isMetaDown() : e.isControlDown(), e.isShiftDown(), e.isAltDown()); } diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasGestureListener.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasGestureListener.java index ee6d84de..5906bcb7 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasGestureListener.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasGestureListener.java @@ -51,7 +51,7 @@ class CanvasGestureListener implements DragGestureListener { forceReSelection = me.getButton() != MouseEvent.BUTTON1; } presenter.dragStarted(dge.getDragOrigin(), dge.getDragAction(), forceReSelection); - dge.startDrag(presenter.getCursorAt(dge.getDragOrigin()), new EmptyTransferable(), new CanvasSourceListener( + dge.startDrag(presenter.getCursorAt(dge.getDragOrigin(), false, false, false), new EmptyTransferable(), new CanvasSourceListener( presenter)); } } diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java index 5107bd33..82850da2 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java @@ -311,12 +311,19 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { } }); } - }); + }); canvasPanel.addKeyListener(new KeyAdapter() { + + @Override + public void keyReleased(KeyEvent e) { + canvasPanel.setCursor(plugInPort.getCursorAt(canvasPanel.getMousePosition(), false, false, false)); + } @Override - public void keyPressed(KeyEvent e) { + public void keyPressed(KeyEvent e) { + canvasPanel.setCursor(plugInPort.getCursorAt(canvasPanel.getMousePosition(), Utils.isMac() ? e.isMetaDown() : e.isControlDown(), + e.isShiftDown(), e.isAltDown())); if (plugInPort.keyPressed(e.getKeyCode(), Utils.isMac() ? e.isMetaDown() : e.isControlDown(), e.isShiftDown(), e.isAltDown())) { e.consume(); @@ -330,7 +337,8 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { public void mouseMoved(MouseEvent e) { if (scrollPane.isMouseScrollMode()) return; - canvasPanel.setCursor(plugInPort.getCursorAt(e.getPoint())); + canvasPanel.setCursor(plugInPort.getCursorAt(e.getPoint(), Utils.isMac() ? e.isMetaDown() : e.isControlDown(), + e.isShiftDown(), e.isAltDown())); plugInPort.mouseMoved(e.getPoint(), Utils.isMac() ? e.isMetaDown() : e.isControlDown(), e.isShiftDown(), e.isAltDown()); } diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreeGestureListener.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreeGestureListener.java index 39d23efe..203d1cbe 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreeGestureListener.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreeGestureListener.java @@ -76,7 +76,7 @@ class TreeGestureListener implements DragGestureListener { } if (start) - dge.startDrag(presenter.getCursorAt(dge.getDragOrigin()), new EmptyTransferable(), + dge.startDrag(presenter.getCursorAt(dge.getDragOrigin(), false, false, false), new EmptyTransferable(), new TreeSourceListener(presenter)); } }