From 52d71e2404b2a201fd4d2b5222bc92574dcdfc55 Mon Sep 17 00:00:00 2001 From: bancika Date: Sat, 4 Apr 2020 16:48:58 +0200 Subject: [PATCH] Exposed the most commonly used configuration items in the top-right toolbar for faster access --- .../src/org/diylc/presenter/update.xml | 6 +- .../src/org/diylc/images/IconLoader.java | 3 +- .../src/org/diylc/images/elements1.png | Bin 0 -> 616 bytes .../src/org/diylc/images/graph_nodes.png | Bin 0 -> 516 bytes .../src/org/diylc/swing/ActionFactory.java | 8 ++ .../swing/gui/actionbar/ActionBarPlugin.java | 85 ++++++++++++----- .../{MiniToolbar.java => ActionToolbar.java} | 4 +- .../swing/gui/actionbar/ConfigToolbar.java | 88 ++++++++++++++++++ 8 files changed, 168 insertions(+), 26 deletions(-) create mode 100644 diylc/diylc-swing/src/org/diylc/images/elements1.png create mode 100644 diylc/diylc-swing/src/org/diylc/images/graph_nodes.png rename diylc/diylc-swing/src/org/diylc/swing/gui/actionbar/{MiniToolbar.java => ActionToolbar.java} (93%) create mode 100644 diylc/diylc-swing/src/org/diylc/swing/gui/actionbar/ConfigToolbar.java diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 4cc1a631..6347997d 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -2845,7 +2845,11 @@ 2020-04-03 00:00:00.000 CET - + + + NEW_FEATURE + Exposed the most commonly used configuration items in the top-right toolbar for faster access + 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) diff --git a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java index fdb10d80..4f700320 100644 --- a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java +++ b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java @@ -64,7 +64,8 @@ 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"), TapeMeasure("tape_measure1.png"); + JarBeanInto("jar_bean_into.png"), GraphEdgeDirected("graph_edge_directed.png"), LaserPointer("laserpointer.png"), TapeMeasure("tape_measure1.png"), + Elements("elements1.png"), GraphNodes("graph_nodes.png"); protected String name; diff --git a/diylc/diylc-swing/src/org/diylc/images/elements1.png b/diylc/diylc-swing/src/org/diylc/images/elements1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7f0cd520e07f248798942ce4ba79f770839e0e GIT binary patch literal 616 zcmV-u0+;=XP)WdKueATl!`MrC3kGB7YRATcpIGdMaiH6SZ6F)%QqnH)+0000McNliru z)&&<0G6A15LT~^8010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00F>B zL_t(|+QpL3OB+!T$G>m4yK#*{iC}4qUJRlU@zP`Q(o1`4OQC;`SC75-;>DxrQNfEI z1VIqNABYud6>ZukgoJFeZ(rUUXOkC+pdunT><1qEX1?>?odKRZ#3S#LpgWUZ&V1h< z%=YB#u|cc}Mg!Uqgabsy@_u!9_6w(#82REhfzgqH$q(dH*Y6ix!G(6!)}0}PI$wu*N!R>O+ZPNq~w_1-m8Vd4Z zWFVV_h4rFO8zm4+s)oe7&(n~O4=_gSq{OogMN42Jm!16fX)4&eXyB}>QHTT@!iSUT zLt%9Ts;3uG+J{JIxWv8jxh;WOsBl_t^Q%Irv99JDM+wAXgL3DG(bn=#lUx_3@biRA zl$`=40-_l!lw$|~n2^6Wc08z-P*a>*mK(fk#5`cxr65-7AZtt z3L?|rv78hyF=vdi#ifn_ogbX;7cUmat91$Dx%0!K2ITPd$fXVXgRL{0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGe@Bjb`@Bu=sG?)MY0hvieK~y+TrIXD| z0#Ovj?}QL3rCC`?Uz=J6E`*RIB3eZ2cI_sJXcI)M>JMn!rgqgT+L{IuA?8LwLPV*E zM9fGmvoZWa?R8#RXd_~E;Kw}X-gDpF``!qQF{+dx2<26^e&&6tsr>x28Y*zGOq%ji zrur?c+$l-Aw{>b&#>7i1!h#l&+*^J`GVpyG`LmKLEe4L(Y-zUbWo*@s;QZ-jlR#tG zLx-pmG}mw8jrx1LloWa*l8SJ&Y4q5_gi`H@7C7<(6Mh9P1$IabSdFE_%fK_6A|rB1;7nfXQbdx~<~$(CnbToAzAE?0|34NK?zI4RX1p`QL(fao0#h^|Lpnh{_C0000. + +*/ +package org.diylc.swing.gui.actionbar; + +import java.awt.Component; +import java.awt.Cursor; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSeparator; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.appframework.miscutils.IConfigListener; + +public class ConfigToolbar extends JPanel { + + private static final long serialVersionUID = 1L; + + private final String CHECK = "\u2611"; + private final String UNCHECK = "\u2610"; + + public ConfigToolbar() { + setOpaque(false); + setBorder(BorderFactory.createEmptyBorder()); + } + + public void add(String title, String configKey, Icon icon, boolean defaultValue) { + final JLabel label = new JLabel(); + boolean checked = ConfigurationManager.getInstance().readBoolean(configKey, defaultValue); + label.setText(checked ? CHECK : UNCHECK); + label.setIcon(icon); + label.setToolTipText(title); + label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + label.addMouseListener(new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent e) { + boolean checked = ConfigurationManager.getInstance().readBoolean(configKey, defaultValue); + checked = !checked; + ConfigurationManager.getInstance().writeValue(configKey, checked); + } + }); + add(label); + + ConfigurationManager.getInstance().addConfigListener(configKey, new IConfigListener() { + + @Override + public void valueChanged(String key, Object value) { + boolean checked = (boolean) value; + label.setText(checked ? CHECK : UNCHECK); + } + }); + } + + @Override + public void setEnabled(boolean enabled) { + for (Component c : getComponents()) + c.setEnabled(enabled); + } + + public void addSpacer() { + JSeparator l = new JSeparator(); + add(l); + } +}