From 720acb75a8ad46782192c48d7404b6a3ff6bf72e Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 3 Apr 2020 14:18:30 +0200 Subject: [PATCH] Added "Ruler Inch Subdivision" config option that allows inch rulers to be subdivided either using base of 2 (1/4", 1/8, 1/16) or base of 10 (1/10) --- .../src/org/diylc/common/IPlugInPort.java | 5 +++++ .../src/org/diylc/presenter/update.xml | 16 +++++++++++++ diylc/diylc-swing/lib/swing-framework.jar | Bin 162255 -> 161962 bytes .../src/org/diylc/images/IconLoader.java | 2 +- .../src/org/diylc/images/tape_measure1.png | Bin 0 -> 890 bytes .../src/org/diylc/swing/ActionFactory.java | 2 +- .../swing/plugins/canvas/CanvasPlugin.java | 21 +++++++++++++----- .../swing/plugins/config/ConfigPlugin.java | 21 ++++++++++++++---- 8 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 diylc/diylc-swing/src/org/diylc/images/tape_measure1.png diff --git a/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java b/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java index 83736bc2..b139a3d4 100644 --- a/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java +++ b/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java @@ -78,6 +78,11 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP public static final String EXTRA_SPACE_KEY = "extraSpace"; public static final String FAVORITES_KEY = "favorites"; public static final String RENUMBER_ON_PASTE_KEY = "renumberOnPaste"; + public static final String RULER_IN_SUBDIVISION_KEY = "rulerInSubdivision"; + + public static final String RULER_IN_SUBDIVISION_2 = "base of 2"; + public static final String RULER_IN_SUBDIVISION_10 = "base of 10"; + public static final String RULER_IN_SUBDIVISION_DEFAULT = RULER_IN_SUBDIVISION_10; public static final String SNAP_TO_NONE = "None"; public static final String SNAP_TO_GRID = "Grid"; diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index ec5826e0..23937eed 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -2836,6 +2836,22 @@ https://github.com/bancika/diy-layout-creator/releases + + + + 4 + 2 + 0 + + 2020-04-03 00:00:00.000 CET + + + + NEW_FEATURE + Added "Ruler Inch Subdivision" config option that allows inch rulers to be subdivided either using base of 2 (1/4", 1/8, 1/16) or base of 10 (1/10) + + + https://github.com/bancika/diy-layout-creator/releases diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar index bac60e4b8c06c0782aef5b86bb0f1a18fb990396..47db16b0633e9f5aa84fea9b18bd76490e4c535f 100644 GIT binary patch delta 25067 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 QSQ6p?8tCIC%5lf?KNVN7R{#J2 delta 25303 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 QLD@lhiPqw-B`7%Me~xJT+W-In diff --git a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java index 6dee2a23..fdb10d80 100644 --- a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java +++ b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java @@ -64,7 +64,7 @@ public enum IconLoader { "documents_gear.png"), SplashResistor("splash_resistor.png"), SplashCeramic("splash_ceramic.png"), SplashElectrolytic( "splash_electrolytic.png"), SplashFilm("splash_film.png"), Splash("splash.png"), Help("help2.png"), ScrollInformation("scroll_information.png"), Node("node.png"), Web("web.png"), Guitar("guitar.png"), Scientist("scientist.png"), StarGrey("star_grey.png"), StarBlue("star_blue.png"), - JarBeanInto("jar_bean_into.png"), GraphEdgeDirected("graph_edge_directed.png"), LaserPointer("laserpointer.png"); + JarBeanInto("jar_bean_into.png"), GraphEdgeDirected("graph_edge_directed.png"), LaserPointer("laserpointer.png"), TapeMeasure("tape_measure1.png"); protected String name; diff --git a/diylc/diylc-swing/src/org/diylc/images/tape_measure1.png b/diylc/diylc-swing/src/org/diylc/images/tape_measure1.png new file mode 100644 index 0000000000000000000000000000000000000000..2253d93603c3b9eaea43731766535ed1ce864dc3 GIT binary patch literal 890 zcmV-=1BLvFP)WdKBJAUPmSa(W;#FfcSAGBP?cF*-CkAS*C2Ffh;yY9Rms00(qQO+^RR z1s4r7Ij$?quK)l532;bRa{vGf5dZ)S5dnW>Uy%R+00d`2O+f$vv5yPUl-74r(gf3KExfF_s zxKQu|MWteGRjd>>Auau;>CdK3nlx$2WRm97%y?g#lveuS%;(KL=e~RH9S#Rp;6B7S zgxgwh7YikvC}cS(9G@w@>beC6yFDx4MmIrELkE$|09i zq0<3+JrLUvF|%kGxY?h&Md9m&BI9Xm0$0!R&mEoZy=BgXM*A_6=AffwqNqX;RM>4L zCR5KtM=;XFGLlmK!oT~_=WPW@rUO;C@o@y<@>Cl62mAXA{7TyGtmoSzT-q+JhZ^WH&Rdmi5=WV{Ww z&%XH@__DB>p(-&-_)b_Pu{7nts`u@%micgof(y`_Wj894|FOH{YNR@ QEC2ui07*qoM6N<$f~3oYB>(^b literal 0 HcmV?d00001 diff --git a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java index 533bd6d2..04da622e 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java +++ b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java @@ -78,7 +78,7 @@ import org.diylc.swingframework.ButtonDialog; import org.diylc.swingframework.CheckBoxListDialog; import org.diylc.swingframework.IDrawingProvider; import org.diylc.swingframework.export.DrawingExporter; -import org.diylc.swingframework.text.TextDialog; +import org.diylc.swingframework.TextDialog; import org.diylc.utils.BomEntry; import com.thoughtworks.xstream.XStream; 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 efc7c07b..5964d71c 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 @@ -63,12 +63,12 @@ import org.diylc.core.Template; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; import org.diylc.images.IconLoader; -import org.diylc.presenter.Presenter; import org.diylc.swing.ActionFactory; import org.diylc.swing.ISwingUI; import org.diylc.swing.plugins.edit.ComponentTransferable; import org.diylc.swing.plugins.file.ProjectDrawingProvider; import org.diylc.swingframework.ruler.IRulerListener; +import org.diylc.swingframework.ruler.Ruler.InchSubdivision; import org.diylc.swingframework.ruler.RulerScrollPane; public class CanvasPlugin implements IPlugIn, ClipboardOwner { @@ -209,6 +209,15 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { updateZeroLocation(); } }); + + ConfigurationManager.getInstance().addConfigListener(IPlugInPort.RULER_IN_SUBDIVISION_KEY, + new IConfigListener() { + + @Override + public void valueChanged(String key, Object value) { + getScrollPane().setInSubdivision(IPlugInPort.RULER_IN_SUBDIVISION_10.equalsIgnoreCase(value == null ? null : value.toString()) ? InchSubdivision.BASE_10 : InchSubdivision.BASE_2); + } + }); getScrollPane().getViewport().setVisible(false); } @@ -311,16 +320,18 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { private RulerScrollPane getScrollPane() { if (scrollPane == null) { + String subdivision = ConfigurationManager.getInstance().readString(IPlugInPort.RULER_IN_SUBDIVISION_KEY, IPlugInPort.RULER_IN_SUBDIVISION_DEFAULT); + scrollPane = new RulerScrollPane(getCanvasPanel(), new ProjectDrawingProvider(plugInPort, true, false, true), - new Size(1d, SizeUnit.cm).convertToPixels(), new Size(1d, SizeUnit.in).convertToPixels()); - boolean metric = ConfigurationManager.getInstance().readBoolean(Presenter.METRIC_KEY, true); + new Size(1d, SizeUnit.cm).convertToPixels(), new Size(1d, SizeUnit.in).convertToPixels(), + IPlugInPort.RULER_IN_SUBDIVISION_10.equalsIgnoreCase(subdivision) ? InchSubdivision.BASE_10 : InchSubdivision.BASE_2); + boolean metric = ConfigurationManager.getInstance().readBoolean(IPlugInPort.METRIC_KEY, true); boolean useHardwareAcceleration = ConfigurationManager.getInstance().readBoolean(IPlugInPort.HARDWARE_ACCELERATION, false); scrollPane.setUseHardwareAcceleration(useHardwareAcceleration); - - scrollPane.setMetric(metric); + scrollPane.setMetric(metric); scrollPane.setWheelScrollingEnabled(true); scrollPane.addUnitListener(new IRulerListener() { 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 32933e8b..afc35558 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 @@ -46,6 +46,7 @@ public class ConfigPlugin implements IPlugIn { private static final String CONFIG_MENU = "Config"; private static final String THEME_MENU = "Theme"; + private static final String RULER_MENU = "Ruler Inch Subdivision..."; private static final String SNAP_MENU = "Snap To..."; private static final String COMPONENT_BROWSER_MENU = "Toolbox"; public static final String COMPONENT_BROWSER = "componentBrowser"; @@ -97,13 +98,20 @@ public class ConfigPlugin implements IPlugIn { swingUI.injectMenuAction( ActionFactory.getInstance().createConfigAction(plugInPort, "Renumber On Paste", IPlugInPort.RENUMBER_ON_PASTE_KEY, true), CONFIG_MENU); + + swingUI.injectSubmenu(RULER_MENU, IconLoader.TapeMeasure.getIcon(), CONFIG_MENU); + swingUI.injectMenuAction( + ActionFactory.getInstance().createToggleAction(IPlugInPort.RULER_IN_SUBDIVISION_10, IPlugInPort.RULER_IN_SUBDIVISION_KEY, RULER_MENU, IPlugInPort.RULER_IN_SUBDIVISION_DEFAULT), + RULER_MENU); + swingUI.injectMenuAction( + ActionFactory.getInstance().createToggleAction(IPlugInPort.RULER_IN_SUBDIVISION_2, IPlugInPort.RULER_IN_SUBDIVISION_KEY, RULER_MENU, IPlugInPort.RULER_IN_SUBDIVISION_DEFAULT), + RULER_MENU); + swingUI.injectMenuAction( ActionFactory.getInstance().createConfigAction(plugInPort, "Show Rulers", IPlugInPort.SHOW_RULERS_KEY, true), CONFIG_MENU); - swingUI.injectSubmenu(SNAP_MENU, IconLoader.GraphEdgeDirected.getIcon(), CONFIG_MENU); - swingUI.injectMenuAction( - ActionFactory.getInstance().createConfigAction(plugInPort, "Show Grid", IPlugInPort.SHOW_GRID_KEY, true), - CONFIG_MENU); + + swingUI.injectSubmenu(SNAP_MENU, IconLoader.GraphEdgeDirected.getIcon(), CONFIG_MENU); swingUI.injectMenuAction( ActionFactory.getInstance().createToggleAction(IPlugInPort.SNAP_TO_NONE, IPlugInPort.SNAP_TO_KEY, SNAP_MENU, IPlugInPort.SNAP_TO_DEFAULT), SNAP_MENU); @@ -113,6 +121,11 @@ public class ConfigPlugin implements IPlugIn { swingUI.injectMenuAction( ActionFactory.getInstance().createToggleAction(IPlugInPort.SNAP_TO_COMPONENTS, IPlugInPort.SNAP_TO_KEY, SNAP_MENU, IPlugInPort.SNAP_TO_DEFAULT), SNAP_MENU); + + swingUI.injectMenuAction( + ActionFactory.getInstance().createConfigAction(plugInPort, "Show Grid", IPlugInPort.SHOW_GRID_KEY, true), + CONFIG_MENU); + swingUI.injectMenuAction( ActionFactory.getInstance() .createConfigAction(plugInPort, "Sticky Points", IPlugInPort.STICKY_POINTS_KEY, true), CONFIG_MENU);