From d5aac6b26571a31b5e279ce867d1c9385685c327 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sat, 9 Mar 2019 11:19:32 +0100 Subject: [PATCH] When in "Highlight Connected Area" mode, the status bar shows useful information making it harder to forget what the mode does --- .../swing/plugins/config/ConfigPlugin.java | 4 ++-- .../swing/plugins/statusbar/StatusBar.java | 21 ++++++++++++++++--- diylc/diylc-swing/update.xml | 6 +++++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/config/ConfigPlugin.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/config/ConfigPlugin.java index 29d5b40f..55dc3b1c 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/config/ConfigPlugin.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/config/ConfigPlugin.java @@ -85,8 +85,8 @@ public class ConfigPlugin implements IPlugIn { ActionFactory.getInstance().createConfigAction(plugInPort, "Hi-Quality Rendering", IPlugInPort.HI_QUALITY_RENDER_KEY, false), CONFIG_MENU); swingUI.injectMenuAction( - ActionFactory.getInstance().createConfigAction(plugInPort, "Highlight Connected Areas", - IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false, IPlugInPort.HIGHLIGHT_CONTINUITY_AREA), CONFIG_MENU); + ActionFactory.getInstance().createConfigAction(plugInPort, "Highlight Connected Areas", IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, + false), CONFIG_MENU); swingUI.injectMenuAction( ActionFactory.getInstance().createConfigAction(plugInPort, "Mouse Wheel Zoom", IPlugInPort.WHEEL_ZOOM_KEY, false), CONFIG_MENU); diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/statusbar/StatusBar.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/statusbar/StatusBar.java index d017a70f..25515b3d 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/statusbar/StatusBar.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/statusbar/StatusBar.java @@ -82,7 +82,8 @@ public class StatusBar extends JPanel implements IPlugIn { private static final Logger LOG = Logger.getLogger(StatusBar.class); - public static String UPDATE_URL = "http://www.diy-fever.com/update.xml"; + public static String UPDATE_URL = "http://www.diy-fever.com/update.xml"; + private static String HIGHLIGHT_CONNECTED_TIP = "Click on a component to highlight area directly or indirectly connected to the area below the cursor. To continue editing, this mode needs to be switched OFF"; private static final Format sizeFormat = new DecimalFormat("0.##"); private JComboBox zoomBox; @@ -92,7 +93,7 @@ public class StatusBar extends JPanel implements IPlugIn { private MemoryBar memoryPanel; private JLabel statusLabel; private JLabel positionLabel; - private JLabel sizeLabel; + private JLabel sizeLabel; private IPlugInPort plugInPort; private ISwingUI swingUI; @@ -169,6 +170,14 @@ public class StatusBar extends JPanel implements IPlugIn { public void valueChanged(String key, Object value) { refreshPosition((Boolean)value); } + }); + + ConfigurationManager.getInstance().addConfigListener(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, new IConfigListener() { + + @Override + public void valueChanged(String key, Object value) { + refreshStatusText(); + } }); } @@ -463,6 +472,7 @@ public class StatusBar extends JPanel implements IPlugIn { break; case STATUS_MESSAGE_CHANGED: statusMessage = (String) params[0]; + refreshStatusText(); break; case MOUSE_MOVED: mousePositionIn = (Point2D) params[1]; @@ -487,7 +497,7 @@ public class StatusBar extends JPanel implements IPlugIn { getPositionLabel().setText(String.format("x:%.2f%s y:%.2f%s", mousePosition.getX(), unit, mousePosition.getY(), unit)); } - private void refreshStatusText() { + private void refreshStatusText() { String statusText = this.statusMessage; if (componentSlot == null) { if (componentNamesUnderCursor != null && !componentNamesUnderCursor.isEmpty()) { @@ -534,6 +544,11 @@ public class StatusBar extends JPanel implements IPlugIn { break; } } + + // override any other status with this when in highlight mode, as we cannot do anything else + Boolean highlightConnectedAreasMode = ConfigurationManager.getInstance().readBoolean(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false); + if (highlightConnectedAreasMode) + statusText = HIGHLIGHT_CONNECTED_TIP; final String finalStatus = statusText; SwingUtilities.invokeLater(new Runnable() { diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 29a62f28..7ffec6b6 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2581,7 +2581,11 @@ NEW_FEATURE Ability to tag components and building blocks as favorites - + + + IMPROVEMENT + When in "Highlight Connected Area" mode, the status bar shows useful information making it harder to forget what the mode does + BUG_FIX "Highlight Connected Areas" doesn't follow multiple chained wires and jumpers