Revision: 6056 http://sourceforge.net/p/jump-pilot/code/6056 Author: edso Date: 2018-12-29 19:09:24 +0000 (Sat, 29 Dec 2018) Log Message: ----------- speedup init by delaying gui init took 1.40s now 0.01s
Modified Paths: -------------- plug-ins/Color_chooser/trunk/src/org/openjump/core/ui/plugin/colorchooser/FeatureColorChooserPlugIn.java plug-ins/Color_chooser/trunk/src/readme.txt Modified: plug-ins/Color_chooser/trunk/src/org/openjump/core/ui/plugin/colorchooser/FeatureColorChooserPlugIn.java =================================================================== --- plug-ins/Color_chooser/trunk/src/org/openjump/core/ui/plugin/colorchooser/FeatureColorChooserPlugIn.java 2018-12-29 17:35:03 UTC (rev 6055) +++ plug-ins/Color_chooser/trunk/src/org/openjump/core/ui/plugin/colorchooser/FeatureColorChooserPlugIn.java 2018-12-29 19:09:24 UTC (rev 6056) @@ -1,7 +1,5 @@ package org.openjump.core.ui.plugin.colorchooser; -import images.ColorChooserIconLoader; - import java.awt.Color; import java.awt.Component; import java.awt.Graphics; @@ -20,6 +18,7 @@ import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; import language.I18NPlug; @@ -47,6 +46,8 @@ import com.vividsolutions.jump.workbench.ui.renderer.style.BasicStyle; import com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager; +import images.ColorChooserIconLoader; + public class FeatureColorChooserPlugIn extends AbstractPlugIn { private static int buttonWidth = 25; @@ -53,7 +54,7 @@ private PlugInContext context; public ComboButton colorChooserButton; public static ComboButton colorSetbutton; - private JPopupMenu colorPickerPopup = new JPopupMenu(); + private JPopupMenu colorPickerPopup = null; public static JMenuItem mi; public static final String COLOR = "COLOR"; @@ -63,216 +64,173 @@ @Override public void initialize(final PlugInContext context) throws Exception { - this.context = context; - colorSetbutton = new ComboButton(1) { - private static final long serialVersionUID = 1L; + this.context = context; + colorSetbutton = new ComboButton(1) { + private static final long serialVersionUID = 1L; + + @Override + public void setBounds(int x, int y, int width, int height) { + super.setBounds(x, y, buttonWidth, height); + } + }; + colorChooserButton = new ComboButton(0) { + private static final long serialVersionUID = 1L; + + @Override + public void setBounds(int x, int y, int width, int height) { + super.setBounds(colorSetbutton.getX() + buttonWidth, y, buttonWidth, height); + } + }; + + colorSetbutton.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + setFeatureColor(colorSetbutton.getColor()); + } + }); + + // init popup takes a long time, defer it after workbench is shown + SwingUtilities.invokeLater(new Runnable() { + public void run() { + colorPickerPopup = initPopupLazily(); + } + }); - @Override - public void setBounds(int x, int y, int width, int height) { - super.setBounds(x, y, buttonWidth, height); - } - }; - colorChooserButton = new ComboButton(0) { - private static final long serialVersionUID = 1L; + colorChooserButton.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + final int x = colorSetbutton.getLocation().x; + final int y = colorSetbutton.getLocation().y + colorSetbutton.getHeight(); + if (colorPickerPopup == null) { + colorPickerPopup = initPopupLazily(); + } + colorPickerPopup.show(colorSetbutton.getParent(), x, y); + } + }); + + colorSetbutton.setToolTipText(I18NPlug.getI18N("set-color-Tool")); + colorChooserButton.setToolTipText(I18NPlug.getI18N("pick-color-tools")); + + context.getWorkbenchContext().getWorkbench().getFrame().getToolBar().addSeparator(); + context.getWorkbenchContext().getWorkbench().getFrame().getToolBar().add(colorSetbutton); + context.getWorkbenchContext().getWorkbench().getFrame().getToolBar().add(colorChooserButton); + context.getWorkbenchContext().getWorkbench().getFrame().getToolBar().addSeparator(); + } - @Override - public void setBounds(int x, int y, int width, int height) { - super.setBounds(colorSetbutton.getX() + buttonWidth, y, - buttonWidth, height); - } - }; + private JPopupMenu initPopupLazily() { + final JPopupMenu popup = new JPopupMenu(); + popup.setLayout(new GridLayout(0, 1)); + mi = new JMenuItem(I18NPlug.getI18N("use-layer-style-color"), + new ColorIcon(null)); - colorSetbutton.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - setFeatureColor(colorSetbutton.getColor()); - } - }); + final JMenu recent = new JMenu(I18NPlug.getI18N("recent-color") + "..."); - /* colorSetbutton.addMouseListener(new MouseListener() { - @Override - public void mouseClicked(MouseEvent e) { - setFeatureColor(colorSetbutton.getColor()); - } + mi.addActionListener(new ColorPickerActionListener(null)); + popup.add(mi); + final ColorMenu cm = new ColorMenu(I18NPlug.getI18N("choose-color")); + cm.setIcon(getColorIcon()); - @Override - public void mousePressed(MouseEvent e) { - } + cm.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + final Color color = cm.getColor(); + if (color != null) { + colorSetbutton.setColor(color); + setFeatureColor(color); + cm.addActionListener(new ColorPickerActionListener(color)); - @Override - public void mouseReleased(MouseEvent e) { - } + colorSetbutton.setColor(color); + setFeatureColor(color); + final String hex = ColorUtils.colorRGBToHex(color); + final String acad = ColorUtils.getColorIndexRegistry(hex); + final String msg = "Index color: " + acad; - @Override - public void mouseExited(MouseEvent e) { - } + final String text = "Hex: " + hex + " RGB: " + + color.getRed() + "," + color.getGreen() + "," + + color.getBlue(); + final JMenuItem mis = new JMenuItem(text, + new FeatureColorChooserPlugIn.ColorIcon(color)); + mis.setToolTipText(msg); + mis.addActionListener(new FeatureColorChooserPlugIn.ColorPickerActionListener( + color)); + recent.add(mis); + colorPickerPopup.insert(recent, customIndex++); + popup.revalidate(); + popup.repaint(); + } + } + }); - @Override - public void mouseEntered(MouseEvent e) { - } - }); + popup.add(cm); - colorChooserButton.addMouseListener(new MouseListener() { - @Override - public void mousePressed(MouseEvent e) { - final int x = colorSetbutton.getLocation().x; - final int y = colorSetbutton.getLocation().y - + colorSetbutton.getHeight(); - colorPickerPopup.show(colorSetbutton.getParent(), x, y); - } + mi = new JMenuItem(I18NPlug.getI18N("other-color"), getColorIcon_2()); + mi.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent paramAnonymousActionEvent) { + new JColorChooser(); + final Color color = JColorChooser.showDialog(context + .getWorkbenchContext().getWorkbench().getFrame(), + I18NPlug.getI18N("choose-color"), new Color(0, 0, 0)); + if (color != null) { + colorSetbutton.setColor(color); + setFeatureColor(color); + colorSetbutton.setColor(color); + setFeatureColor(color); + final String hex = ColorUtils.colorRGBToHex(color); + final String acad = ColorUtils.getColorIndexRegistry(hex); - @Override - public void mouseClicked(MouseEvent e) { - } + final String msg = "Index color: " + acad; - @Override - public void mouseReleased(MouseEvent e) { - } + final String text = "Hex: " + hex + " RGB: " + + color.getRed() + "," + color.getGreen() + "," + + color.getBlue(); + final JMenuItem mis = new JMenuItem(text, + new FeatureColorChooserPlugIn.ColorIcon(color)); + mis.setToolTipText(msg); + mis.addActionListener(new FeatureColorChooserPlugIn.ColorPickerActionListener( + color)); + recent.add(mis); + colorPickerPopup.insert(recent, customIndex++); + popup.revalidate(); + popup.repaint(); + } + } + }); + popup.add(mi); - @Override - public void mouseExited(MouseEvent e) { - } + // popup.addSeparator(); + mi = new JMenuItem(I18NPlug.getI18N("picker-color"), getPickColorIcon()); + final PickPlugIn pick = new PickPlugIn(); + mi.setToolTipText(I18NPlug.getI18N("msg2")); + final ActionListener listener = AbstractPlugIn.toActionListener(pick, + context.getWorkbenchContext(), taskMonitorManager); + mi.addActionListener(new ActionListener() { - @Override - public void mouseEntered(MouseEvent e) { - } - });*/ + @Override + public void actionPerformed(ActionEvent e) { + listener.actionPerformed(e); + } + }); + popup.add(mi); - colorChooserButton.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - final int x = colorSetbutton.getLocation().x; - final int y = colorSetbutton.getLocation().y - + colorSetbutton.getHeight(); - colorPickerPopup.show(colorSetbutton.getParent(), x, y); - } - }); - - final JPopupMenu popup = new JPopupMenu(); - popup.setLayout(new GridLayout(0, 1)); - mi = new JMenuItem(I18NPlug.getI18N("use-layer-style-color"), - new ColorIcon(null)); - - final JMenu recent = new JMenu(I18NPlug.getI18N("recent-color") + "..."); - - mi.addActionListener(new ColorPickerActionListener(null)); - popup.add(mi); - final ColorMenu cm = new ColorMenu(I18NPlug.getI18N("choose-color")); - cm.setIcon(getColorIcon()); - - cm.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - final Color color = cm.getColor(); - if (color != null) { - colorSetbutton.setColor(color); - setFeatureColor(color); - cm.addActionListener(new ColorPickerActionListener(color)); - - colorSetbutton.setColor(color); - setFeatureColor(color); - final String hex = ColorUtils.colorRGBToHex(color); - final String acad = ColorUtils.getColorIndexRegistry(hex); - final String msg = "Index color: " + acad; - - final String text = "Hex: " + hex + " RGB: " - + color.getRed() + "," + color.getGreen() + "," - + color.getBlue(); - final JMenuItem mis = new JMenuItem(text, - new FeatureColorChooserPlugIn.ColorIcon(color)); - mis.setToolTipText(msg); - mis.addActionListener(new FeatureColorChooserPlugIn.ColorPickerActionListener( - color)); - recent.add(mis); - colorPickerPopup.insert(recent, customIndex++); - popup.revalidate(); - popup.repaint(); - } - } - }); - - popup.add(cm); - - mi = new JMenuItem(I18NPlug.getI18N("other-color"), getColorIcon_2()); - mi.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent paramAnonymousActionEvent) { - new JColorChooser(); - final Color color = JColorChooser.showDialog(context - .getWorkbenchContext().getWorkbench().getFrame(), - I18NPlug.getI18N("choose-color"), new Color(0, 0, 0)); - if (color != null) { - colorSetbutton.setColor(color); - setFeatureColor(color); - colorSetbutton.setColor(color); - setFeatureColor(color); - final String hex = ColorUtils.colorRGBToHex(color); - final String acad = ColorUtils.getColorIndexRegistry(hex); - - final String msg = "Index color: " + acad; - - final String text = "Hex: " + hex + " RGB: " - + color.getRed() + "," + color.getGreen() + "," - + color.getBlue(); - final JMenuItem mis = new JMenuItem(text, - new FeatureColorChooserPlugIn.ColorIcon(color)); - mis.setToolTipText(msg); - mis.addActionListener(new FeatureColorChooserPlugIn.ColorPickerActionListener( - color)); - recent.add(mis); - colorPickerPopup.insert(recent, customIndex++); - popup.revalidate(); - popup.repaint(); - } - } - }); - popup.add(mi); - - // popup.addSeparator(); - mi = new JMenuItem(I18NPlug.getI18N("picker-color"), getPickColorIcon()); - final PickPlugIn pick = new PickPlugIn(); - mi.setToolTipText(I18NPlug.getI18N("msg2")); - final ActionListener listener = AbstractPlugIn.toActionListener(pick, - context.getWorkbenchContext(), taskMonitorManager); - mi.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - listener.actionPerformed(e); - } - }); - popup.add(mi); - - // - popup.add(recent); - - colorPickerPopup = popup; - colorSetbutton.setToolTipText(I18NPlug.getI18N("set-color-Tool")); - colorChooserButton.setToolTipText(I18NPlug.getI18N("pick-color-tools")); - context.getWorkbenchContext().getWorkbench().getFrame().getToolBar() - .addSeparator(); - context.getWorkbenchContext().getWorkbench().getFrame().getToolBar() - .add(colorSetbutton); - context.getWorkbenchContext().getWorkbench().getFrame().getToolBar() - .add(colorChooserButton); - context.getWorkbenchContext().getWorkbench().getFrame().getToolBar() - .addSeparator(); - + popup.add(recent); + + return popup; } public Icon getColorIcon() { - final ImageIcon icon = ColorChooserIconLoader.icon("color-swatch.png"); - return GUIUtil.toSmallIcon(icon); + final ImageIcon icon = ColorChooserIconLoader.icon("color-swatch.png"); + return GUIUtil.toSmallIcon(icon); } - + public Icon getColorIcon_2() { - final ImageIcon icon = IconLoader.icon("color_wheel.png"); - return GUIUtil.toSmallIcon(icon); + final ImageIcon icon = IconLoader.icon("color_wheel.png"); + return GUIUtil.toSmallIcon(icon); } - + public Icon getPickColorIcon() { - final ImageIcon icon2 = ColorChooserIconLoader.icon("pipette.png"); - return GUIUtil.toSmallIcon(icon2); + final ImageIcon icon2 = ColorChooserIconLoader.icon("pipette.png"); + return GUIUtil.toSmallIcon(icon2); } private void setFeatureColor(Color color) { Modified: plug-ins/Color_chooser/trunk/src/readme.txt =================================================================== --- plug-ins/Color_chooser/trunk/src/readme.txt 2018-12-29 17:35:03 UTC (rev 6055) +++ plug-ins/Color_chooser/trunk/src/readme.txt 2018-12-29 19:09:24 UTC (rev 6056) @@ -1,3 +1,8 @@ +Color Chooser Plugin 1.3 (29.12.2018) +-------------------------------------- +speedup init by delaying popup creation +from 1.40s to 0.01s + Color Chooser Plugin 1.2 (Dicember 2017) -------------------------------------- correct bug on repository @@ -33,21 +38,23 @@ Color Chooser Plugin 0.4 (June 2012) ------------------------------------- Complete Translation of Color Chooser in German, English, Spanish, French and Italian. -Thanks to OpenJUMP Developers and Users Comunity members +Thanks to OpenJUMP Developers and Users Community members Color Chooser Plugin 0.3 (June 2011) -------------------------------------- -Color Chooser plugin for OpenJUMp allows to change color of features in a CAD style way. +Color Chooser plugin for OpenJUMP allows to change color of features in a CAD style way. This means that users have not to set attributes for features and define a style according to them. This version of Color Chooser Plugin derives from SkyJUMP (https://sourceforge.net/projects/skyjump/) and was internationalized -Currenty only Italian and English are full internationalized. German, Frenche and Spanish are only partially translated. +Currently only Italian and English are full internationalized. German, French and Spanish are only partially translated. NOTES & COPYRIGHT -------------------------------------- Note that this plugin is developed only to test new features for OpenJUMP. -It is NOT recomanded to use it for work or other productive activities as it is still at the first developing stage. -All copyright are reserved to (https://sourceforge.net/projects/skyjump/) under the terms of GNU General Public License -Sourcecode of ColorChooser PlugIn is embedded into the JAR file +It is NOT recommended to use it for work or other productive activities as it is still at the first developing stage. +All copyright are reserved to (https://sourceforge.net/projects/skyjump/) under the terms of GNU General Public License 2. +Source Code of ColorChooser PlugIn is embedded into the JAR file or available on +https://sourceforge.net/p/jump-pilot/code/HEAD/tree/plug-ins/Color_chooser/ +. OpenJUMP User Mailing List: http://groups.google.com/group/openjump-users OpenJUMP Development Mailing List: https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel