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));
}
}