From b33b6b6495638ef6cd536f9ab63cdbd0af599bab Mon Sep 17 00:00:00 2001 From: bancika Date: Mon, 24 Jan 2011 18:17:13 +0000 Subject: [PATCH] show selection size on demand removed scroll buttons in toolbox --- .../DIYLC/config.xml | 8 +- .../DIYLC/src/org/diylc/common/EventType.java | 4 - .../src/org/diylc/common/IPlugInPort.java | 11 ++- .../src/org/diylc/images/IconLoader.java | 2 +- .../DIYLC/src/org/diylc/images/size.png | Bin 0 -> 550 bytes .../src/org/diylc/presenter/Presenter.java | 19 +---- .../swing/plugins/statusbar/StatusBar.java | 55 ++++++------ .../plugins/toolbox/ComponentTabbedPane.java | 78 +++++++++--------- 8 files changed, 83 insertions(+), 94 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/size.png diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index 59d99305..567e6f8a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,15 +1,15 @@ - metric - true + lastPath + C:\Documents and Settings\Branislav Stojkovic\Desktop\oldFiles zoom 1.0 - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop + metric + true default.org.diylc.components.misc.Label:Color diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java index 5820402f..8f59f63c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java @@ -48,10 +48,6 @@ public enum EventType { * object containing selection size (x = width, y = height). Size is * expressed in the default measure (cm for metric, inches for imperial). */ - SELECTION_SIZE_CHANGED, - /** - * Called when display needs to be repainted. No parameters are passed. - */ REPAINT, /** * Called when new component slot has been changed. The only parameter is diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java index cc07172c..5e7b99dc 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java @@ -4,6 +4,7 @@ import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.geom.Point2D; import java.util.List; import java.util.Map; import java.util.Set; @@ -28,7 +29,7 @@ import com.diyfever.gui.update.VersionNumber; * @see EventType */ public interface IPlugInPort { - + public static final String CHECK_BOX_MENU_ITEM = "org.diylc.checkBoxMenuItem"; /** @@ -302,6 +303,12 @@ public interface IPlugInPort { * Ungroups all selected components. */ void ungroupSelectedComponents(); - + void setLayerLocked(int layerZOrder, boolean locked); + + /** + * @return selection size expressed in either inches or centimeters, based + * on the user preference. + */ + Point2D calculateSelectionDimension(); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java index e5d3c061..ed05ce2a 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java @@ -30,7 +30,7 @@ public enum IconLoader { "faq.png"), Component("component.png"), Plugin("plugin.png"), Manual("manual.png"), Donate( "donate.png"), Bug("bug.png"), IconLarge("icon_large.png"), IconMedium( "icon_medium.png"), IconSmall("icon_small.png"), DocumentEdit("document_edit.png"), EditComponent( - "edit_component.png"); + "edit_component.png"), Size("size.png"); protected String name; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/size.png b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/size.png new file mode 100644 index 0000000000000000000000000000000000000000..16fd65eb02e6016b489112d88288a107858afab2 GIT binary patch literal 550 zcmV+>0@?kEP)WdKBPATl=~MrC3kGB7YRATTjHGBP?eHy|r8F)%Q>R%1H=000McNliru z)&&<0G6QiuBU}Ig010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00DkU zL_t(|+MQE9OT$nUy(t~+4`>_(DYys@!Oah-zrevoaCUSnZY~`}a4ecX;9@}#SG%Z7 zZ3nS~9du|*(H4qiRDwWctt1CH4uCi9wxZl7aFM|lXif&-0+$T-Jdr{{f=wQDuZ4TIY}G;KRN`>w@xzPA5gWlpLw@ha=6+(;jpaFv;03YZ5LbZkQv$Vt_V oY*0q#fIFZiR<+;#&PlF(0zM6i>C5+TF#rGn07*qoM6N<$f=-;>j{pDw literal 0 HcmV?d00001 diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index 51ed477e..3b9b68e4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -729,8 +729,6 @@ public class Presenter implements IPlugInPort { if (repaint) { messageDispatcher.dispatchMessage(EventType.REPAINT); } - messageDispatcher.dispatchMessage(EventType.SELECTION_SIZE_CHANGED, - calculateSelectionDimension()); return true; } @@ -841,8 +839,6 @@ public class Presenter implements IPlugInPort { @Override public void setMetric(boolean isMetric) { ConfigurationManager.getInstance().writeValue(Presenter.METRIC_KEY, isMetric); - messageDispatcher.dispatchMessage(EventType.SELECTION_SIZE_CHANGED, - calculateSelectionDimension()); } @Override @@ -909,12 +905,6 @@ public class Presenter implements IPlugInPort { includeStuckComponents(controlPointMap); messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, selectedComponents, controlPointMap.keySet()); - fireSelectionSizeChanged(); - } - - private void fireSelectionSizeChanged() { - messageDispatcher.dispatchMessage(EventType.SELECTION_SIZE_CHANGED, - calculateSelectionDimension()); } /** @@ -956,11 +946,8 @@ public class Presenter implements IPlugInPort { return components; } - /** - * @return selection size expressed in either inches or centimeters, based - * on the user preference. - */ - private Point2D calculateSelectionDimension() { + @Override + public Point2D calculateSelectionDimension() { if (selectedComponents.isEmpty()) { return null; } @@ -1041,8 +1028,6 @@ public class Presenter implements IPlugInPort { projectFileManager.notifyFileChange(); } messageDispatcher.dispatchMessage(EventType.REPAINT); - messageDispatcher.dispatchMessage(EventType.SELECTION_SIZE_CHANGED, - calculateSelectionDimension()); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java index 03c0273f..8f226e03 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/statusbar/StatusBar.java @@ -6,6 +6,8 @@ import java.awt.GridBagLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.text.DecimalFormat; import java.text.Format; @@ -20,9 +22,9 @@ import java.util.Map; import javax.swing.BorderFactory; import javax.swing.JComboBox; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingUtilities; -import javax.swing.UIManager; import org.apache.log4j.Logger; import org.diylc.common.BadPositionException; @@ -32,9 +34,9 @@ import org.diylc.common.EventType; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.core.IDIYComponent; +import org.diylc.images.IconLoader; import org.diylc.presenter.Presenter; import org.diylc.swing.ISwingUI; -import org.diylc.swing.gui.MainFrame; import com.diyfever.gui.MemoryBar; import com.diyfever.gui.miscutils.ConfigurationManager; @@ -45,7 +47,7 @@ import com.diyfever.gui.update.UpdateLabel; public class StatusBar extends JPanel implements IPlugIn { private static final long serialVersionUID = 1L; - + private static final Logger LOG = Logger.getLogger(StatusBar.class); public static String UPDATE_URL = "http://www.diy-fever.com/update.xml"; @@ -70,7 +72,7 @@ public class StatusBar extends JPanel implements IPlugIn { super(); setLayout(new GridBagLayout()); - + try { swingUI.injectGUIComponent(this, SwingUtilities.BOTTOM); } catch (BadPositionException e) { @@ -123,11 +125,27 @@ public class StatusBar extends JPanel implements IPlugIn { public JLabel getSizeLabel() { if (sizeLabel == null) { - sizeLabel = new JLabel("N/A"); - sizeLabel.setToolTipText("Selection Size"); - sizeLabel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder( - 0, 1, 0, 1, UIManager.getColor("Separator.shadow")), BorderFactory - .createEmptyBorder(0, 4, 0, 4))); + sizeLabel = new JLabel(IconLoader.Size.getIcon()); + sizeLabel.setFocusable(true); + sizeLabel.setToolTipText("Click to calculate selection size"); + sizeLabel.addMouseListener(new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent e) { + Point2D size = plugInPort.calculateSelectionDimension(); + boolean metric = ConfigurationManager.getInstance().readBoolean( + Presenter.METRIC_KEY, true); + String text; + if (size == null) { + text = "Selection is empty."; + } else { + text = "Selection size: " + sizeFormat.format(size.getX()) + " x " + + sizeFormat.format(size.getY()) + (metric ? " cm" : " in"); + } + JOptionPane.showMessageDialog(SwingUtilities.getRootPane(StatusBar.this), text, + "Information", JOptionPane.INFORMATION_MESSAGE); + } + }); } return sizeLabel; } @@ -151,10 +169,10 @@ public class StatusBar extends JPanel implements IPlugIn { gbc.gridx = 1; gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 0; - add(getSizeLabel(), gbc); + add(zoomPanel, gbc); gbc.gridx = 2; - add(zoomPanel, gbc); + add(getSizeLabel(), gbc); gbc.gridx = 3; add(getUpdateLabel(), gbc); @@ -179,8 +197,7 @@ public class StatusBar extends JPanel implements IPlugIn { @Override public EnumSet getSubscribedEventTypes() { return EnumSet.of(EventType.ZOOM_CHANGED, EventType.SLOT_CHANGED, - EventType.AVAILABLE_CTRL_POINTS_CHANGED, EventType.SELECTION_SIZE_CHANGED, - EventType.SELECTION_CHANGED); + EventType.AVAILABLE_CTRL_POINTS_CHANGED, EventType.SELECTION_CHANGED); } @SuppressWarnings("unchecked") @@ -217,18 +234,6 @@ public class StatusBar extends JPanel implements IPlugIn { Collections.sort(this.stuckComponentNames); refreshStatusText(); break; - case SELECTION_SIZE_CHANGED: - Point2D size = (Point2D) params[0]; - boolean metric = ConfigurationManager.getInstance().readBoolean(Presenter.METRIC_KEY, - true); - if (size == null) { - getSizeLabel().setText("N/A"); - } else { - getSizeLabel().setText( - sizeFormat.format(size.getX()) + " x " + sizeFormat.format(size.getY()) - + (metric ? " cm" : " in")); - } - break; case SLOT_CHANGED: componentSlot = (ComponentType) params[0]; controlPointSlot = (Point) params[1]; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/toolbox/ComponentTabbedPane.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/toolbox/ComponentTabbedPane.java index 8a22a23c..ea19bd86 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/toolbox/ComponentTabbedPane.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/toolbox/ComponentTabbedPane.java @@ -3,13 +3,6 @@ package org.diylc.swing.plugins.toolbox; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; -import java.awt.Dimension; -import java.awt.Insets; -import java.awt.Rectangle; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -49,45 +42,48 @@ class ComponentTabbedPane extends JTabbedPane { JPanel panel = createTab((componentTypes.get(category))); addTab(category, panel); } - setPreferredSize(new Dimension(-1, Presenter.ICON_SIZE + ComponentButton.MARGIN * 2 + 38)); } private JPanel createTab(List componentTypes) { JPanel panel = new JPanel(new BorderLayout()); - final JScrollPane scrollPane = createComponentScrollBar(componentTypes); + // final JScrollPane scrollPane = + // createComponentScrollBar(componentTypes); panel.setOpaque(false); - JButton leftButton = new JButton("<"); - leftButton.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Rectangle rect = scrollPane.getVisibleRect(); - if (rect.x > SCROLL_STEP) { - rect.translate(-SCROLL_STEP, 0); - } else { - rect.translate(-rect.x, 0); - } - } - }); - leftButton.setMargin(new Insets(0, 2, 0, 2)); - JButton rightButton = new JButton(">"); - rightButton.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Rectangle rect = scrollPane.getVisibleRect(); - if (rect.x + rect.width < scrollPane.getViewport().getSize().width - SCROLL_STEP) { - rect.translate(SCROLL_STEP, 0); - } else { - rect.translate(scrollPane.getViewport().getSize().width - rect.x - rect.width, - 0); - } - } - }); - rightButton.setMargin(new Insets(0, 2, 0, 2)); - panel.add(leftButton, BorderLayout.WEST); - panel.add(scrollPane); - panel.add(rightButton, BorderLayout.EAST); + panel.add(createComponentPanel(componentTypes), BorderLayout.CENTER); + // JButton leftButton = new JButton("<"); + // leftButton.addActionListener(new ActionListener() { + // + // @Override + // public void actionPerformed(ActionEvent e) { + // Rectangle rect = scrollPane.getVisibleRect(); + // if (rect.x > SCROLL_STEP) { + // rect.translate(-SCROLL_STEP, 0); + // } else { + // rect.translate(-rect.x, 0); + // } + // } + // }); + // leftButton.setMargin(new Insets(0, 2, 0, 2)); + // JButton rightButton = new JButton(">"); + // rightButton.addActionListener(new ActionListener() { + // + // @Override + // public void actionPerformed(ActionEvent e) { + // Rectangle rect = scrollPane.getVisibleRect(); + // if (rect.x + rect.width < scrollPane.getViewport().getSize().width - + // SCROLL_STEP) { + // rect.translate(SCROLL_STEP, 0); + // } else { + // rect.translate(scrollPane.getViewport().getSize().width - rect.x - + // rect.width, + // 0); + // } + // } + // }); + // rightButton.setMargin(new Insets(0, 2, 0, 2)); + // panel.add(leftButton, BorderLayout.WEST); + // panel.add(scrollPane); + // panel.add(rightButton, BorderLayout.EAST); return panel; }