From f6e5078028cdf308b50fbc809b20fc13995bffd4 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sun, 30 Oct 2016 09:11:20 +0100 Subject: [PATCH] move some code to framework lib --- diylc/diylc-swing/lib/swing-framework.jar | Bin 106785 -> 138717 bytes .../plugins/cloud/view/UploadDialog.java | 1 + .../toolbox/ComponentButtonFactory.java | 2 +- .../toolbox/openide/DropDownButton.java | 374 ------- .../openide/DropDownButtonFactory.java | 13 - .../toolbox/openide/IconWithArrow.java | 56 -- .../toolbox/openide/ImageUtilities.java | 210 ---- .../plugins/toolbox/openide/Parameters.java | 35 - .../plugins/toolbox/openide/Utilities.java | 943 ------------------ 9 files changed, 2 insertions(+), 1632 deletions(-) delete mode 100644 diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButton.java delete mode 100644 diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButtonFactory.java delete mode 100644 diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/IconWithArrow.java delete mode 100644 diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/ImageUtilities.java delete mode 100644 diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Parameters.java delete mode 100644 diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Utilities.java diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar index 50067b76c9f2a4a0cdbb352c35e271118730c967..51160e311a0fe60f1a75b82148d3ef7beec06403 100644 GIT binary patch delta 36633 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 ev(vMxA!kur2s#Ui~>dRD9U<% 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 diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java index b4050bee..f2a3ae42 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/cloud/view/UploadDialog.java @@ -238,6 +238,7 @@ public class UploadDialog extends ButtonDialog { private JTextField getKeywordsField() { if (keywordsField == null) { keywordsField = new JTextField(); + keywordsField.setColumns(32); keywordsField.setText(KeywordExtractor.getInstance().extractKeywords(plugInPort.getCurrentProject())); } return keywordsField; diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/ComponentButtonFactory.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/ComponentButtonFactory.java index c32ef48a..5d7f5600 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/ComponentButtonFactory.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/ComponentButtonFactory.java @@ -25,7 +25,7 @@ import org.diylc.common.IPlugInPort; import org.diylc.core.IDIYComponent; import org.diylc.core.Template; import org.diylc.images.IconLoader; -import org.diylc.swing.plugins.toolbox.openide.DropDownButtonFactory; +import org.diylc.swingframework.openide.DropDownButtonFactory; /** * Factory that creates {@link JButton}s which display component type icons and instantiates the diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButton.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButton.java deleted file mode 100644 index 8daaee78..00000000 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButton.java +++ /dev/null @@ -1,374 +0,0 @@ -package org.diylc.swing.plugins.toolbox.openide; - -import java.awt.Point; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseMotionAdapter; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.DefaultButtonModel; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JPopupMenu; -import javax.swing.event.PopupMenuEvent; -import javax.swing.event.PopupMenuListener; - -class DropDownButton extends JButton { - - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unused") - private boolean mouseInButton = false; - private boolean mouseInArrowArea = false; - private Map regIcons = new HashMap(5); - private Map arrowIcons = new HashMap(5); - private static final String ICON_NORMAL = "normal"; - private static final String ICON_PRESSED = "pressed"; - private static final String ICON_ROLLOVER = "rollover"; - private static final String ICON_ROLLOVER_SELECTED = "rolloverSelected"; - private static final String ICON_SELECTED = "selected"; - private static final String ICON_DISABLED = "disabled"; - private static final String ICON_DISABLED_SELECTED = "disabledSelected"; - private static final String ICON_ROLLOVER_LINE = "rolloverLine"; - private static final String ICON_ROLLOVER_SELECTED_LINE = "rolloverSelectedLine"; - private PopupMenuListener menuListener; - - public DropDownButton(Icon icon, JPopupMenu popup) { - Parameters.notNull((CharSequence) "icon", (Object) icon); - assert (null != icon); - this.putClientProperty("dropDownMenu", popup); - this.setIcon(icon); - this.setDisabledIcon(ImageUtilities.createDisabledIcon((Icon) icon)); - this.resetIcons(); - this.addPropertyChangeListener("dropDownMenu", new PropertyChangeListener() { - - @Override - public void propertyChange(PropertyChangeEvent e) { - DropDownButton.this.resetIcons(); - } - }); - this.addMouseMotionListener(new MouseMotionAdapter() { - - @Override - public void mouseMoved(MouseEvent e) { - if (null != DropDownButton.this.getPopupMenu()) { - DropDownButton.this.mouseInArrowArea = DropDownButton.this.isInArrowArea(e.getPoint()); - DropDownButton.this.updateRollover(DropDownButton.this._getRolloverIcon(), - DropDownButton.this._getRolloverSelectedIcon()); - } - } - }); - this.addMouseListener(new MouseAdapter() { - private boolean popupMenuOperation; - - @Override - public void mousePressed(MouseEvent e) { - this.popupMenuOperation = false; - JPopupMenu menu = DropDownButton.this.getPopupMenu(); - if (menu != null && DropDownButton.this.getModel() instanceof Model) { - Model model = (Model) DropDownButton.this.getModel(); - if (!model._isPressed()) { - if (DropDownButton.this.isInArrowArea(e.getPoint()) && menu.getComponentCount() > 0) { - model._press(); - menu.addPopupMenuListener(DropDownButton.this.getMenuListener()); - menu.show(DropDownButton.this, 0, DropDownButton.this.getHeight()); - this.popupMenuOperation = true; - } - } else { - model._release(); - menu.removePopupMenuListener(DropDownButton.this.getMenuListener()); - this.popupMenuOperation = true; - } - } - } - - @Override - public void mouseReleased(MouseEvent e) { - if (this.popupMenuOperation) { - this.popupMenuOperation = false; - e.consume(); - } - } - - @Override - public void mouseEntered(MouseEvent e) { - DropDownButton.this.mouseInButton = true; - if (DropDownButton.this.hasPopupMenu()) { - DropDownButton.this.mouseInArrowArea = DropDownButton.this.isInArrowArea(e.getPoint()); - DropDownButton.this.updateRollover(DropDownButton.this._getRolloverIcon(), - DropDownButton.this._getRolloverSelectedIcon()); - } - } - - @Override - public void mouseExited(MouseEvent e) { - DropDownButton.this.mouseInButton = false; - DropDownButton.this.mouseInArrowArea = false; - if (DropDownButton.this.hasPopupMenu()) { - DropDownButton.this.updateRollover(DropDownButton.this._getRolloverIcon(), - DropDownButton.this._getRolloverSelectedIcon()); - } - } - }); - this.setModel(new Model()); - } - - private PopupMenuListener getMenuListener() { - if (null == this.menuListener) { - this.menuListener = new PopupMenuListener() { - - @Override - public void popupMenuWillBecomeVisible(PopupMenuEvent e) {} - - @Override - public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { - JPopupMenu menu; - if (DropDownButton.this.getModel() instanceof Model) { - ((Model) DropDownButton.this.getModel())._release(); - } - if (null != (menu = DropDownButton.this.getPopupMenu())) { - menu.removePopupMenuListener(this); - } - } - - @Override - public void popupMenuCanceled(PopupMenuEvent e) {} - }; - } - return this.menuListener; - } - - private void updateRollover(Icon rollover, Icon rolloverSelected) { - super.setRolloverIcon(rollover); - super.setRolloverSelectedIcon(rolloverSelected); - } - - private void resetIcons() { - Icon icon = this.regIcons.get(ICON_NORMAL); - if (null != icon) { - this.setIcon(icon); - } - if (null != (icon = this.regIcons.get(ICON_PRESSED))) { - this.setPressedIcon(icon); - } - if (null != (icon = this.regIcons.get(ICON_ROLLOVER))) { - this.setRolloverIcon(icon); - } - if (null != (icon = this.regIcons.get(ICON_ROLLOVER_SELECTED))) { - this.setRolloverSelectedIcon(icon); - } - if (null != (icon = this.regIcons.get(ICON_SELECTED))) { - this.setSelectedIcon(icon); - } - if (null != (icon = this.regIcons.get(ICON_DISABLED))) { - this.setDisabledIcon(icon); - } - if (null != (icon = this.regIcons.get(ICON_DISABLED_SELECTED))) { - this.setDisabledSelectedIcon(icon); - } - } - - private Icon _getRolloverIcon() { - Icon icon = null; - icon = this.arrowIcons.get(this.mouseInArrowArea ? ICON_ROLLOVER : ICON_ROLLOVER_LINE); - if (null == icon) { - Icon orig = this.regIcons.get(ICON_ROLLOVER); - if (null == orig) { - orig = this.regIcons.get(ICON_NORMAL); - } - icon = new IconWithArrow(orig, !this.mouseInArrowArea); - this.arrowIcons.put(this.mouseInArrowArea ? ICON_ROLLOVER : ICON_ROLLOVER_LINE, icon); - } - return icon; - } - - private Icon _getRolloverSelectedIcon() { - Icon icon = null; - icon = this.arrowIcons.get(this.mouseInArrowArea ? ICON_ROLLOVER_SELECTED : ICON_ROLLOVER_SELECTED_LINE); - if (null == icon) { - Icon orig = this.regIcons.get(ICON_ROLLOVER_SELECTED); - if (null == orig) { - orig = this.regIcons.get(ICON_ROLLOVER); - } - if (null == orig) { - orig = this.regIcons.get(ICON_NORMAL); - } - icon = new IconWithArrow(orig, !this.mouseInArrowArea); - this.arrowIcons.put(this.mouseInArrowArea ? ICON_ROLLOVER_SELECTED : ICON_ROLLOVER_SELECTED_LINE, icon); - } - return icon; - } - - JPopupMenu getPopupMenu() { - Object menu = this.getClientProperty("dropDownMenu"); - if (menu instanceof JPopupMenu) { - return (JPopupMenu) menu; - } - return null; - } - - boolean hasPopupMenu() { - return null != this.getPopupMenu(); - } - - private boolean isInArrowArea(Point p) { - return p.getLocation().x >= this.getWidth() - IconWithArrow.getArrowAreaWidth() - this.getInsets().right; - } - - @Override - public void setIcon(Icon icon) { - assert (null != icon); - Icon arrow = this.updateIcons(icon, ICON_NORMAL); - this.arrowIcons.remove(ICON_ROLLOVER_LINE); - this.arrowIcons.remove(ICON_ROLLOVER_SELECTED_LINE); - this.arrowIcons.remove(ICON_ROLLOVER); - this.arrowIcons.remove(ICON_ROLLOVER_SELECTED); - super.setIcon(this.hasPopupMenu() ? arrow : icon); - } - - private Icon updateIcons(Icon orig, String iconType) { - ImageIcon arrow = null; - if (null == orig) { - this.regIcons.remove(iconType); - this.arrowIcons.remove(iconType); - } else { - this.regIcons.put(iconType, orig); - arrow = new ImageIcon(ImageUtilities.icon2Image((Icon) new IconWithArrow(orig, false))); - this.arrowIcons.put(iconType, arrow); - } - return arrow; - } - - @Override - public void setPressedIcon(Icon icon) { - Icon arrow = this.updateIcons(icon, ICON_PRESSED); - super.setPressedIcon(this.hasPopupMenu() ? arrow : icon); - } - - @Override - public void setSelectedIcon(Icon icon) { - Icon arrow = this.updateIcons(icon, ICON_SELECTED); - super.setSelectedIcon(this.hasPopupMenu() ? arrow : icon); - } - - @Override - public void setRolloverIcon(Icon icon) { - Icon arrow = this.updateIcons(icon, ICON_ROLLOVER); - this.arrowIcons.remove(ICON_ROLLOVER_LINE); - this.arrowIcons.remove(ICON_ROLLOVER_SELECTED_LINE); - super.setRolloverIcon(this.hasPopupMenu() ? arrow : icon); - } - - @Override - public void setRolloverSelectedIcon(Icon icon) { - Icon arrow = this.updateIcons(icon, ICON_ROLLOVER_SELECTED); - this.arrowIcons.remove(ICON_ROLLOVER_SELECTED_LINE); - super.setRolloverSelectedIcon(this.hasPopupMenu() ? arrow : icon); - } - - @Override - public void setDisabledIcon(Icon icon) { - Icon arrow = this.updateIcons(icon, ICON_DISABLED); - super.setDisabledIcon(this.hasPopupMenu() ? arrow : icon); - } - - @Override - public void setDisabledSelectedIcon(Icon icon) { - Icon arrow = this.updateIcons(icon, ICON_DISABLED_SELECTED); - super.setDisabledSelectedIcon(this.hasPopupMenu() ? arrow : icon); - } - - @Override - public void setText(String text) {} - - @Override - public String getText() { - return null; - } - - private class Model extends DefaultButtonModel { - - private static final long serialVersionUID = 1L; - - private boolean _pressed; - - private Model() { - this._pressed = false; - } - - @Override - public void setPressed(boolean b) { - if (DropDownButton.this.mouseInArrowArea || this._pressed) { - return; - } - super.setPressed(b); - } - - public void _press() { - if (this.isPressed() || !this.isEnabled()) { - return; - } - this.stateMask |= 5; - this.fireStateChanged(); - this._pressed = true; - } - - public void _release() { - this._pressed = false; - DropDownButton.this.mouseInArrowArea = false; - this.setArmed(false); - this.setPressed(false); - this.setRollover(false); - this.setSelected(false); - } - - public boolean _isPressed() { - return this._pressed; - } - - @Override - protected void fireStateChanged() { - if (this._pressed) { - return; - } - super.fireStateChanged(); - } - - @Override - public void setArmed(boolean b) { - if (this._pressed) { - return; - } - super.setArmed(b); - } - - @Override - public void setEnabled(boolean b) { - if (this._pressed) { - return; - } - super.setEnabled(b); - } - - @Override - public void setSelected(boolean b) { - if (this._pressed) { - return; - } - super.setSelected(b); - } - - @Override - public void setRollover(boolean b) { - if (this._pressed) { - return; - } - super.setRollover(b); - } - } - -} diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButtonFactory.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButtonFactory.java deleted file mode 100644 index db0a0295..00000000 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/DropDownButtonFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.diylc.swing.plugins.toolbox.openide; - -import javax.swing.Icon; -import javax.swing.JButton; -import javax.swing.JPopupMenu; - -public final class DropDownButtonFactory { - public static final String PROP_DROP_DOWN_MENU = "dropDownMenu"; - - public static JButton createDropDownButton(Icon icon, JPopupMenu dropDownMenu) { - return new DropDownButton(icon, dropDownMenu); - } -} diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/IconWithArrow.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/IconWithArrow.java deleted file mode 100644 index 6fb0398d..00000000 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/IconWithArrow.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.diylc.swing.plugins.toolbox.openide; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Graphics; - -import javax.swing.Icon; -import javax.swing.UIManager; - -import org.diylc.images.IconLoader; - -class IconWithArrow implements Icon { - private Icon orig; - private Icon arrow = IconLoader.Arrow.getIcon(); - private boolean paintRollOver; - - public IconWithArrow(Icon orig, boolean paintRollOver) { - Parameters.notNull("original icon", orig); - this.orig = orig; - this.paintRollOver = paintRollOver; - } - - public void paintIcon(Component c, Graphics g, int x, int y) { - int height = getIconHeight(); - this.orig.paintIcon(c, g, x, y + (height - this.orig.getIconHeight()) / 2); - - this.arrow.paintIcon(c, g, x + 6 + this.orig.getIconWidth(), y + (height - this.arrow.getIconHeight()) / 2); - if (this.paintRollOver) { - Color brighter = UIManager.getColor("controlHighlight"); - Color darker = UIManager.getColor("controlShadow"); - if ((null == brighter) || (null == darker)) { - brighter = c.getBackground().brighter(); - darker = c.getBackground().darker(); - } - if ((null != brighter) && (null != darker)) { - g.setColor(brighter); - g.drawLine(x + this.orig.getIconWidth() + 1, y, x + this.orig.getIconWidth() + 1, y + getIconHeight()); - - g.setColor(darker); - g.drawLine(x + this.orig.getIconWidth() + 2, y, x + this.orig.getIconWidth() + 2, y + getIconHeight()); - } - } - } - - public int getIconWidth() { - return this.orig.getIconWidth() + 6 + this.arrow.getIconWidth(); - } - - public int getIconHeight() { - return Math.max(this.orig.getIconHeight(), this.arrow.getIconHeight()); - } - - public static int getArrowAreaWidth() { - return 8; - } -} diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/ImageUtilities.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/ImageUtilities.java deleted file mode 100644 index e0181480..00000000 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/ImageUtilities.java +++ /dev/null @@ -1,210 +0,0 @@ -package org.diylc.swing.plugins.toolbox.openide; - -import java.awt.Component; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.GraphicsEnvironment; -import java.awt.HeadlessException; -import java.awt.Image; -import java.awt.Toolkit; -import java.awt.image.BufferedImage; -import java.awt.image.ColorModel; -import java.awt.image.FilteredImageSource; -import java.awt.image.ImageObserver; -import java.awt.image.RGBImageFilter; -import java.awt.image.WritableRaster; -import java.net.URL; -import java.util.Hashtable; - -import javax.imageio.ImageIO; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JLabel; - -public final class ImageUtilities { - static final String TOOLTIP_SEPAR = "
"; - - private ImageUtilities() {} - - public static final Icon image2Icon(Image image) { - if (image instanceof ToolTipImage) { - return ((ToolTipImage) image).getIcon(); - } - return new ImageIcon(image); - } - - public static final Image icon2Image(Icon icon) { - if (icon instanceof ImageIcon) { - return ((ImageIcon) icon).getImage(); - } - ToolTipImage image = new ToolTipImage("", icon.getIconWidth(), icon.getIconHeight(), 2); - Graphics g = image.getGraphics(); - icon.paintIcon(new JLabel(), g, 0, 0); - g.dispose(); - return image; - } - - public static final String getImageToolTip(Image image) { - if (image instanceof ToolTipImage) { - return ((ToolTipImage) image).toolTipText; - } - return ""; - } - - public static Icon createDisabledIcon(Icon icon) { - Parameters.notNull("icon", icon); - return new LazyDisabledIcon(ImageUtilities.icon2Image(icon)); - } - - public static Image createDisabledImage(Image image) { - Parameters.notNull("image", image); - return LazyDisabledIcon.createDisabledImage(image); - } - - static final Image toBufferedImage(Image img) { - new ImageIcon(img, ""); - if (img.getHeight(null) * img.getWidth(null) > 576) { - return img; - } - BufferedImage rep = ImageUtilities.createBufferedImage(img.getWidth(null), img.getHeight(null)); - Graphics2D g = rep.createGraphics(); - g.drawImage(img, 0, 0, null); - g.dispose(); - img.flush(); - return rep; - } - - static final BufferedImage createBufferedImage(int width, int height) { - if (Utilities.isMac()) { - return new BufferedImage(width, height, 3); - } - ColorModel model = ImageUtilities.colorModel(3); - BufferedImage buffImage = - new BufferedImage(model, model.createCompatibleWritableRaster(width, height), model.isAlphaPremultiplied(), - null); - return buffImage; - } - - private static ColorModel colorModel(int transparency) { - ColorModel model; - try { - model = - GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration() - .getColorModel(transparency); - } catch (HeadlessException he) { - model = ColorModel.getRGBdefault(); - } - return model; - } - - static { - ImageIO.setUseCache(false); - } - - private static class DisabledButtonFilter extends RGBImageFilter { - DisabledButtonFilter() { - this.canFilterIndexColorModel = true; - } - - @Override - public int filterRGB(int x, int y, int rgb) { - return (rgb & -16777216) + 8947848 + ((rgb >> 16 & 255) >> 2 << 16) + ((rgb >> 8 & 255) >> 2 << 8) - + ((rgb & 255) >> 2); - } - - public void setProperties(Hashtable props) { - props = (Hashtable) props.clone(); - this.consumer.setProperties(props); - } - } - - private static class LazyDisabledIcon implements Icon { - private static final RGBImageFilter DISABLED_BUTTON_FILTER = new DisabledButtonFilter(); - private Image img; - private Icon disabledIcon; - - public LazyDisabledIcon(Image img) { - assert (null != img); - this.img = img; - } - - @Override - public void paintIcon(Component c, Graphics g, int x, int y) { - this.getDisabledIcon().paintIcon(c, g, x, y); - } - - @Override - public int getIconWidth() { - return this.getDisabledIcon().getIconWidth(); - } - - @Override - public int getIconHeight() { - return this.getDisabledIcon().getIconHeight(); - } - - private synchronized Icon getDisabledIcon() { - if (null == this.disabledIcon) { - this.disabledIcon = new ImageIcon(LazyDisabledIcon.createDisabledImage(this.img)); - } - return this.disabledIcon; - } - - static Image createDisabledImage(Image img) { - FilteredImageSource prod = new FilteredImageSource(img.getSource(), DISABLED_BUTTON_FILTER); - return Toolkit.getDefaultToolkit().createImage(prod); - } - } - - private static class ToolTipImage extends BufferedImage implements Icon { - final String toolTipText; - ImageIcon imageIcon; - final URL url; - - public ToolTipImage(String toolTipText, ColorModel cm, WritableRaster raster, boolean isRasterPremultiplied, - Hashtable properties, URL url) { - super(cm, raster, isRasterPremultiplied, properties); - this.toolTipText = toolTipText; - this.url = url; - } - - public ToolTipImage(String toolTipText, int width, int height, int imageType) { - super(width, height, imageType); - this.toolTipText = toolTipText; - this.url = null; - } - - synchronized ImageIcon getIcon() { - if (this.imageIcon == null) { - this.imageIcon = new ImageIcon(this); - } - return this.imageIcon; - } - - @Override - public int getIconHeight() { - return super.getHeight(); - } - - @Override - public int getIconWidth() { - return super.getWidth(); - } - - @Override - public void paintIcon(Component c, Graphics g, int x, int y) { - g.drawImage(this, x, y, null); - } - - @Override - public Object getProperty(String name, ImageObserver observer) { - if ("url".equals(name)) { - if (this.url != null) { - return this.url; - } - return this.imageIcon.getImage().getProperty("url", observer); - } - return super.getProperty(name, observer); - } - } -} diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Parameters.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Parameters.java deleted file mode 100644 index ac612cc3..00000000 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Parameters.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.diylc.swing.plugins.toolbox.openide; - -public class Parameters { - public static void notNull(CharSequence name, Object value) { - if (value == null) { - throw new NullPointerException("The " + name + " parameter cannot be null"); - } - } - - public static void notEmpty(CharSequence name, CharSequence value) { - notNull(name, value); - if (value.length() == 0) { - throw new IllegalArgumentException("The " + name + " parameter cannot be an empty character sequence"); - } - } - - public static void notWhitespace(CharSequence name, CharSequence value) { - notNull(name, value); - if (value.toString().trim().length() == 0) { - throw new IllegalArgumentException("The " + name - + " parameter must contain at least one non-whitespace character"); - } - } - - public static void javaIdentifier(CharSequence name, CharSequence value) { - notNull(name, value); - javaIdentifierOrNull(name, value); - } - - public static void javaIdentifierOrNull(CharSequence name, CharSequence value) { - if ((value != null) && (!Utilities.isJavaIdentifier(value.toString()))) { - throw new IllegalArgumentException("The " + name + " parameter ('" + value + "') is not a valid Java identifier"); - } - } -} diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Utilities.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Utilities.java deleted file mode 100644 index 542a810b..00000000 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/toolbox/openide/Utilities.java +++ /dev/null @@ -1,943 +0,0 @@ -package org.diylc.swing.plugins.toolbox.openide; - -import java.awt.Component; -import java.awt.Container; -import java.awt.Cursor; -import java.awt.Dimension; -import java.awt.GraphicsConfiguration; -import java.awt.GraphicsEnvironment; -import java.awt.Insets; -import java.awt.KeyboardFocusManager; -import java.awt.Rectangle; -import java.awt.Toolkit; -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; -import java.beans.BeanInfo; -import java.beans.IntrospectionException; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.io.File; -import java.lang.ref.Reference; -import java.lang.ref.SoftReference; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.StringTokenizer; -import java.util.Vector; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.lang.model.SourceVersion; -import javax.swing.KeyStroke; -import javax.swing.SwingUtilities; -import javax.swing.Timer; - -public final class Utilities { - private static final Logger LOG = Logger.getLogger(Utilities.class.getName()); - public static final int OS_WINNT = 1; - public static final int OS_WIN95 = 2; - public static final int OS_WIN98 = 4; - public static final int OS_SOLARIS = 8; - public static final int OS_LINUX = 16; - public static final int OS_HP = 32; - public static final int OS_AIX = 64; - public static final int OS_IRIX = 128; - public static final int OS_SUNOS = 256; - public static final int OS_TRU64 = 512; - public static final int OS_OS2 = 2048; - public static final int OS_MAC = 4096; - public static final int OS_WIN2000 = 8192; - public static final int OS_VMS = 16384; - public static final int OS_WIN_OTHER = 32768; - public static final int OS_OTHER = 65536; - public static final int OS_FREEBSD = 131072; - public static final int OS_WINVISTA = 262144; - public static final int OS_UNIX_OTHER = 524288; - public static final int OS_OPENBSD = 1048576; - public static final int TYPICAL_WINDOWS_TASKBAR_HEIGHT = 27; - private static int operatingSystem = -1; - private static Timer clearIntrospector; - private static ActionListener doClear; - private static Reference namesAndValues; - private static Method fileToPath; - private static Method pathToUri; - private static Method pathsGet; - private static Method pathToFile; - - public static int getOperatingSystem() { - if (operatingSystem == -1) { - String osName = System.getProperty("os.name"); - if ("Windows NT".equals(osName)) { - operatingSystem = 1; - } else if ("Windows 95".equals(osName)) { - operatingSystem = 2; - } else if ("Windows 98".equals(osName)) { - operatingSystem = 4; - } else if ("Windows 2000".equals(osName)) { - operatingSystem = 8192; - } else if ("Windows Vista".equals(osName)) { - operatingSystem = 262144; - } else if (osName.startsWith("Windows ")) { - operatingSystem = 32768; - } else if ("Solaris".equals(osName)) { - operatingSystem = 8; - } else if (osName.startsWith("SunOS")) { - operatingSystem = 8; - } else if (osName.endsWith("Linux")) { - operatingSystem = 16; - } else if ("HP-UX".equals(osName)) { - operatingSystem = 32; - } else if ("AIX".equals(osName)) { - operatingSystem = 64; - } else if ("Irix".equals(osName)) { - operatingSystem = 128; - } else if ("SunOS".equals(osName)) { - operatingSystem = 256; - } else if ("Digital UNIX".equals(osName)) { - operatingSystem = 512; - } else if ("OS/2".equals(osName)) { - operatingSystem = 2048; - } else if ("OpenVMS".equals(osName)) { - operatingSystem = 16384; - } else if (osName.equals("Mac OS X")) { - operatingSystem = 4096; - } else if (osName.startsWith("Darwin")) { - operatingSystem = 4096; - } else if (osName.toLowerCase(Locale.US).startsWith("freebsd")) { - operatingSystem = 131072; - } else if ("OpenBSD".equals(osName)) { - operatingSystem = 1048576; - } else if (File.pathSeparatorChar == ':') { - operatingSystem = 524288; - } else { - operatingSystem = 65536; - } - } - return operatingSystem; - } - - public static boolean isWindows() { - return (getOperatingSystem() & 0x4A007) != 0; - } - - public static boolean isMac() { - return (getOperatingSystem() & 0x1000) != 0; - } - - public static boolean isUnix() { - return (getOperatingSystem() & 0x1A13F8) != 0; - } - - static void resetOperatingSystem() { - operatingSystem = -1; - } - - public static boolean isJavaIdentifier(String id) { - if (id == null) { - return false; - } - return (SourceVersion.isIdentifier(id)) && (!SourceVersion.isKeyword(id)); - } - - public static BeanInfo getBeanInfo(Class clazz) throws IntrospectionException { - BeanInfo bi; - try { - bi = Introspector.getBeanInfo(clazz); - } catch (IntrospectionException ie) { - throw ie; - } catch (Error e) { - throw e; - } - if (Component.class.isAssignableFrom(clazz)) { - PropertyDescriptor[] pds = bi.getPropertyDescriptors(); - for (int i = 0; i < pds.length; i++) { - if (pds[i].getName().equals("cursor")) { - try { - Method getter = Component.class.getDeclaredMethod("getCursor", new Class[0]); - Method setter = Component.class.getDeclaredMethod("setCursor", new Class[] {Cursor.class}); - pds[i] = new PropertyDescriptor("cursor", getter, setter); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - } - } - } - if (bi != null) { - if (clearIntrospector == null) { - doClear = new ActionListener() { - public void actionPerformed(ActionEvent ev) {} - }; - clearIntrospector = new Timer(15000, doClear); - clearIntrospector.setRepeats(false); - } - clearIntrospector.restart(); - } - return bi; - } - - public static BeanInfo getBeanInfo(Class clazz, Class stopClass) throws IntrospectionException { - return Introspector.getBeanInfo(clazz, stopClass); - } - - public static String pureClassName(String fullName) { - int index = fullName.indexOf('$'); - if ((index >= 0) && (index < fullName.length())) { - return fullName.substring(index + 1, fullName.length()); - } - return fullName; - } - - @Deprecated - public static boolean isLargeFrameIcons() { - return (getOperatingSystem() == 8) || (getOperatingSystem() == 32); - } - - @Deprecated - public static int arrayHashCode(Object[] arr) { - int c = 0; - int len = arr.length; - for (int i = 0; i < len; i++) { - Object o = arr[i]; - int v = o == null ? 1 : o.hashCode(); - c += (v ^ i); - } - return c; - } - - public static boolean compareObjects(Object o1, Object o2) { - return compareObjectsImpl(o1, o2, 1); - } - - public static boolean compareObjectsImpl(Object o1, Object o2, int checkArraysDepth) { - if (o1 == null) { - return o2 == null; - } - if (o2 == null) { - return false; - } - if (checkArraysDepth > 0) { - if (((o1 instanceof Object[])) && ((o2 instanceof Object[]))) { - Object[] o1a = (Object[]) o1; - Object[] o2a = (Object[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (!compareObjectsImpl(o1a[i], o2a[i], checkArraysDepth - 1)) { - return false; - } - } - return true; - } - if (((o1 instanceof byte[])) && ((o2 instanceof byte[]))) { - byte[] o1a = (byte[]) o1; - byte[] o2a = (byte[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof short[])) && ((o2 instanceof short[]))) { - short[] o1a = (short[]) o1; - short[] o2a = (short[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof int[])) && ((o2 instanceof int[]))) { - int[] o1a = (int[]) o1; - int[] o2a = (int[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof long[])) && ((o2 instanceof long[]))) { - long[] o1a = (long[]) o1; - long[] o2a = (long[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof float[])) && ((o2 instanceof float[]))) { - float[] o1a = (float[]) o1; - float[] o2a = (float[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof double[])) && ((o2 instanceof double[]))) { - double[] o1a = (double[]) o1; - double[] o2a = (double[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof char[])) && ((o2 instanceof char[]))) { - char[] o1a = (char[]) o1; - char[] o2a = (char[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - if (((o1 instanceof boolean[])) && ((o2 instanceof boolean[]))) { - boolean[] o1a = (boolean[]) o1; - boolean[] o2a = (boolean[]) o2; - int l1 = o1a.length; - int l2 = o2a.length; - if (l1 != l2) { - return false; - } - for (int i = 0; i < l1; i++) { - if (o1a[i] != o2a[i]) { - return false; - } - } - return true; - } - } - return o1.equals(o2); - } - - public static String getClassName(Class clazz) { - if (clazz.isArray()) { - return getClassName(clazz.getComponentType()) + "[]"; - } - return clazz.getName(); - } - - public static String getShortClassName(Class clazz) { - if (clazz.isArray()) { - return getShortClassName(clazz.getComponentType()) + "[]"; - } - String name = clazz.getName().replace('$', '.'); - - return name.substring(name.lastIndexOf('.') + 1, name.length()); - } - - public static Object[] toObjectArray(Object array) { - if ((array instanceof Object[])) { - return (Object[]) array; - } - if ((array instanceof int[])) { - int k = ((int[]) array).length; - Integer[] r = new Integer[k]; - for (int i = 0; i < k; i++) { - r[i] = Integer.valueOf(((int[]) (int[]) array)[i]); - } - return r; - } - if ((array instanceof boolean[])) { - int k = ((boolean[]) array).length; - Boolean[] r = new Boolean[k]; - for (int i = 0; i < k; i++) { - r[i] = Boolean.valueOf(((boolean[]) (boolean[]) array)[i]); - } - return r; - } - if ((array instanceof byte[])) { - int k = ((byte[]) array).length; - Byte[] r = new Byte[k]; - for (int i = 0; i < k; i++) { - r[i] = Byte.valueOf(((byte[]) (byte[]) array)[i]); - } - return r; - } - if ((array instanceof char[])) { - int k = ((char[]) array).length; - Character[] r = new Character[k]; - for (int i = 0; i < k; i++) { - r[i] = Character.valueOf(((char[]) (char[]) array)[i]); - } - return r; - } - if ((array instanceof double[])) { - int k = ((double[]) array).length; - Double[] r = new Double[k]; - for (int i = 0; i < k; i++) { - r[i] = Double.valueOf(((double[]) (double[]) array)[i]); - } - return r; - } - if ((array instanceof float[])) { - int k = ((float[]) array).length; - Float[] r = new Float[k]; - for (int i = 0; i < k; i++) { - r[i] = Float.valueOf(((float[]) (float[]) array)[i]); - } - return r; - } - if ((array instanceof long[])) { - int k = ((long[]) array).length; - Long[] r = new Long[k]; - for (int i = 0; i < k; i++) { - r[i] = Long.valueOf(((long[]) (long[]) array)[i]); - } - return r; - } - if ((array instanceof short[])) { - int k = ((short[]) array).length; - Short[] r = new Short[k]; - for (int i = 0; i < k; i++) { - r[i] = Short.valueOf(((short[]) (short[]) array)[i]); - } - return r; - } - throw new IllegalArgumentException(); - } - - public static Class getObjectType(Class c) { - if (!c.isPrimitive()) { - return c; - } - if (c == Integer.TYPE) { - return Integer.class; - } - if (c == Boolean.TYPE) { - return Boolean.class; - } - if (c == Byte.TYPE) { - return Byte.class; - } - if (c == Character.TYPE) { - return Character.class; - } - if (c == Double.TYPE) { - return Double.class; - } - if (c == Float.TYPE) { - return Float.class; - } - if (c == Long.TYPE) { - return Long.class; - } - if (c == Short.TYPE) { - return Short.class; - } - throw new IllegalArgumentException(); - } - - public static Class getPrimitiveType(Class c) { - if (!c.isPrimitive()) { - return c; - } - if (c == Integer.class) { - return Integer.TYPE; - } - if (c == Boolean.class) { - return Boolean.TYPE; - } - if (c == Byte.class) { - return Byte.TYPE; - } - if (c == Character.class) { - return Character.TYPE; - } - if (c == Double.class) { - return Double.TYPE; - } - if (c == Float.class) { - return Float.TYPE; - } - if (c == Long.class) { - return Long.TYPE; - } - if (c == Short.class) { - return Short.TYPE; - } - throw new IllegalArgumentException(); - } - - public static Component getFocusTraversableComponent(Component c) { - if (c.isFocusable()) { - return c; - } - if (!(c instanceof Container)) { - return null; - } - int k = ((Container) c).getComponentCount(); - for (int i = 0; i < k; i++) { - Component v = ((Container) c).getComponent(i); - if (v != null) { - return v; - } - } - return null; - } - - public static String[] parseParameters(String s) { - int NULL = 0; - int INPARAM = 1; - int INPARAMPENDING = 2; - int STICK = 4; - int STICKPENDING = 8; - Vector params = new Vector(5, 5); - - int state = NULL; - StringBuilder buff = new StringBuilder(20); - int slength = s.length(); - for (int i = 0; i < slength; i++) { - char c = s.charAt(i); - if (Character.isWhitespace(c)) { - if (state == NULL) { - if (buff.length() > 0) { - params.addElement(buff.toString()); - buff.setLength(0); - } - } else if (state == STICK) { - params.addElement(buff.toString()); - buff.setLength(0); - state = NULL; - } else if (state == STICKPENDING) { - buff.append('\\'); - params.addElement(buff.toString()); - buff.setLength(0); - state = NULL; - } else if (state == INPARAMPENDING) { - state = INPARAM; - buff.append('\\'); - buff.append(c); - } else { - buff.append(c); - } - } else if (c == '\\') { - if (state == NULL) { - i++; - if (i < slength) { - char cc = s.charAt(i); - if ((cc == '"') || (cc == '\\')) { - buff.append(cc); - } else if (Character.isWhitespace(cc)) { - buff.append(c); - i--; - } else { - buff.append(c); - buff.append(cc); - } - } else { - buff.append('\\'); - - break; - } - } else if (state == INPARAM) { - state = INPARAMPENDING; - } else if (state == INPARAMPENDING) { - buff.append('\\'); - state = INPARAM; - } else if (state == STICK) { - state = STICKPENDING; - } else if (state == STICKPENDING) { - buff.append('\\'); - state = STICK; - } - } else if (c == '"') { - if (state == NULL) { - state = INPARAM; - } else if (state == INPARAM) { - state = STICK; - } else if (state == STICK) { - state = INPARAM; - } else if (state == STICKPENDING) { - buff.append('"'); - state = STICK; - } else { - buff.append('"'); - state = INPARAM; - } - } else { - if (state == INPARAMPENDING) { - buff.append('\\'); - state = INPARAM; - } else if (state == STICKPENDING) { - buff.append('\\'); - state = STICK; - } - buff.append(c); - } - } - if (state == INPARAM) { - params.addElement(buff.toString()); - } else if ((state & (INPARAMPENDING | STICKPENDING)) != 0) { - buff.append('\\'); - params.addElement(buff.toString()); - } else if (buff.length() != 0) { - params.addElement(buff.toString()); - } - String[] ret = new String[params.size()]; - params.copyInto(ret); - - return ret; - } - - public static String escapeParameters(String[] params) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < params.length; i++) { - escapeString(params[i], sb); - sb.append(' '); - } - int len = sb.length(); - if (len > 0) { - sb.setLength(len - 1); - } - return sb.toString().trim(); - } - - private static void escapeString(String s, StringBuffer sb) { - if (s.length() == 0) { - sb.append("\"\""); - - return; - } - boolean hasSpace = false; - int sz = sb.length(); - int slen = s.length(); - for (int i = 0; i < slen; i++) { - char c = s.charAt(i); - if (Character.isWhitespace(c)) { - hasSpace = true; - sb.append(c); - } else if (c == '\\') { - sb.append('\\').append('\\'); - } else if (c == '"') { - sb.append('\\').append('"'); - } else { - sb.append(c); - } - } - if (hasSpace) { - sb.insert(sz, '"'); - sb.append('"'); - } - } - - private static final class NamesAndValues { - final Map keyToString; - @SuppressWarnings("unused") - final Map stringToKey; - - NamesAndValues(Map keyToString, Map stringToKey) { - this.keyToString = keyToString; - this.stringToKey = stringToKey; - } - } - - private static synchronized NamesAndValues initNameAndValues() { - if (namesAndValues != null) { - NamesAndValues nav = (NamesAndValues) namesAndValues.get(); - if (nav != null) { - return nav; - } - } - Field[] fields = KeyEvent.class.getDeclaredFields(); - - Map names = new HashMap(fields.length * 4 / 3 + 5, 0.75F); - Map values = new HashMap(fields.length * 4 / 3 + 5, 0.75F); - for (Field f : fields) { - if (Modifier.isStatic(f.getModifiers())) { - String name = f.getName(); - if (name.startsWith("VK_")) { - name = name.substring(3); - try { - int numb = f.getInt(null); - names.put(name, Integer.valueOf(numb)); - values.put(Integer.valueOf(numb), name); - } catch (IllegalArgumentException ex) { - } catch (IllegalAccessException ex) { - } - } - } - } - if (names.get("CONTEXT_MENU") == null) { - names.put("CONTEXT_MENU", Integer.valueOf(524)); - values.put(Integer.valueOf(524), "CONTEXT_MENU"); - names.put("WINDOWS", Integer.valueOf(525)); - values.put(Integer.valueOf(525), "WINDOWS"); - } - names.put("MOUSE_WHEEL_UP", Integer.valueOf(656)); - names.put("MOUSE_WHEEL_DOWN", Integer.valueOf(657)); - values.put(Integer.valueOf(656), "MOUSE_WHEEL_UP"); - values.put(Integer.valueOf(657), "MOUSE_WHEEL_DOWN"); - - NamesAndValues nav = new NamesAndValues(values, names); - namesAndValues = new SoftReference(nav); - return nav; - } - - public static String keyToString(KeyStroke stroke) { - StringBuilder sb = new StringBuilder(); - if (addModifiers(sb, stroke.getModifiers())) { - sb.append('-'); - } - appendRest(sb, stroke); - return sb.toString(); - } - - private static void appendRest(StringBuilder sb, KeyStroke stroke) { - String c = (String) initNameAndValues().keyToString.get(Integer.valueOf(stroke.getKeyCode())); - if (c == null) { - sb.append(stroke.getKeyChar()); - } else { - sb.append(c); - } - } - - public static String keyToString(KeyStroke stroke, boolean portable) { - if (portable) { - StringBuilder sb = new StringBuilder(); - if (addModifiersPortable(sb, stroke.getModifiers())) { - sb.append('-'); - } - appendRest(sb, stroke); - return sb.toString(); - } - return keyToString(stroke); - } - - private static boolean addModifiers(StringBuilder buf, int modif) { - boolean b = false; - if ((modif & 0x2) != 0) { - buf.append("C"); - b = true; - } - if ((modif & 0x8) != 0) { - buf.append("A"); - b = true; - } - if ((modif & 0x1) != 0) { - buf.append("S"); - b = true; - } - if ((modif & 0x4) != 0) { - buf.append("M"); - b = true; - } - if ((modif & 0x8000) != 0) { - buf.append("D"); - b = true; - } - if ((modif & 0x10000) != 0) { - buf.append("O"); - b = true; - } - return b; - } - - private static boolean addModifiersPortable(StringBuilder buf, int modifiers) { - boolean b = false; - if ((modifiers & 0x1) != 0) { - buf.append('S'); - b = true; - } - if (((isMac()) && ((modifiers & 0x4) != 0)) || ((!isMac()) && ((modifiers & 0x2) != 0))) { - buf.append('D'); - b = true; - } - if (((isMac()) && ((modifiers & 0x2) != 0)) || ((!isMac()) && ((modifiers & 0x8) != 0))) { - buf.append('O'); - b = true; - } - if ((isMac()) && ((modifiers & 0x8) != 0)) { - buf.append('A'); - b = true; - } - return b; - } - - private static GraphicsConfiguration getCurrentGraphicsConfiguration() { - Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); - if (focusOwner != null) { - Window w = SwingUtilities.getWindowAncestor(focusOwner); - if (w != null) { - return w.getGraphicsConfiguration(); - } - } - return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); - } - - public static Rectangle getUsableScreenBounds() { - return getUsableScreenBounds(getCurrentGraphicsConfiguration()); - } - - public static Rectangle getUsableScreenBounds(GraphicsConfiguration gconf) { - if (gconf == null) { - gconf = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); - } - Rectangle bounds = new Rectangle(gconf.getBounds()); - - String str = System.getProperty("netbeans.screen.insets"); - if (str != null) { - StringTokenizer st = new StringTokenizer(str, ", "); - if (st.countTokens() == 4) { - try { - bounds.y = Integer.parseInt(st.nextToken()); - bounds.x = Integer.parseInt(st.nextToken()); - bounds.height -= bounds.y + Integer.parseInt(st.nextToken()); - bounds.width -= bounds.x + Integer.parseInt(st.nextToken()); - } catch (NumberFormatException ex) { - LOG.log(Level.WARNING, null, ex); - } - } - return bounds; - } - str = System.getProperty("netbeans.taskbar.height"); - if (str != null) { - bounds.height -= Integer.getInteger(str, 0).intValue(); - - return bounds; - } - try { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Insets insets = toolkit.getScreenInsets(gconf); - bounds.y += insets.top; - bounds.x += insets.left; - bounds.height -= insets.top + insets.bottom; - bounds.width -= insets.left + insets.right; - } catch (Exception ex) { - LOG.log(Level.WARNING, null, ex); - } - return bounds; - } - - public static Rectangle findCenterBounds(Dimension componentSize) { - return findCenterBounds(getCurrentGraphicsConfiguration(), componentSize); - } - - private static Rectangle findCenterBounds(GraphicsConfiguration gconf, Dimension componentSize) { - if (gconf == null) { - gconf = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); - } - Rectangle bounds = gconf.getBounds(); - - return new Rectangle(bounds.x + (bounds.width - componentSize.width) / 2, bounds.y - + (bounds.height - componentSize.height) / 2, componentSize.width, componentSize.height); - } - - static { - try { - fileToPath = File.class.getMethod("toPath", new Class[0]); - } catch (NoSuchMethodException x) { - } - if (fileToPath != null) { - try { - Class path = Class.forName("java.nio.file.Path"); - pathToUri = path.getMethod("toUri", new Class[0]); - pathsGet = Class.forName("java.nio.file.Paths").getMethod("get", new Class[] {URI.class}); - pathToFile = path.getMethod("toFile", new Class[0]); - } catch (Exception x) { - throw new ExceptionInInitializerError(x); - } - } - } - - public static URI toURI(File f) { - if (fileToPath != null) { - try { - URI u = (URI) pathToUri.invoke(fileToPath.invoke(f, new Object[0]), new Object[0]); - if (u.toString().startsWith("file:///")) { - } - return new URI(u.getScheme(), u.getUserInfo(), u.getHost(), u.getPort(), u.getPath(), u.getQuery(), - u.getFragment()); - } catch (Exception x) { - LOG.log(Level.FINE, "could not convert " + f + " to URI", x); - } - } - String path = f.getAbsolutePath(); - if (path.startsWith("\\\\")) { - if ((!path.endsWith("\\")) && (f.isDirectory())) { - path = path + "\\"; - } - try { - return new URI("file", null, path.replace('\\', '/'), null); - } catch (URISyntaxException x) { - LOG.log(Level.FINE, "could not convert " + f + " to URI", x); - } - } - return f.toURI(); - } - - public static File toFile(URI u) throws IllegalArgumentException { - if (pathsGet != null) { - try { - return (File) pathToFile.invoke(pathsGet.invoke(null, new Object[] {u}), new Object[0]); - } catch (Exception x) { - LOG.log(Level.FINE, "could not convert " + u + " to File", x); - } - } - String host = u.getHost(); - if ((host != null) && (!host.isEmpty()) && ("file".equals(u.getScheme()))) { - return new File("\\\\" + host + u.getPath().replace('/', '\\')); - } - return new File(u); - } - - static abstract interface RE { - public abstract void init(String[] paramArrayOfString1, String[] paramArrayOfString2); - - public abstract String convert(String paramString); - - public abstract String[] readPair(String paramString); - } -}