⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basicstrokeeditormenu.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/BasicStrokeEditorMenu.java,v $// $RCSfile: BasicStrokeEditorMenu.java,v $// $Revision: 1.2.2.4 $// $Date: 2005/08/10 22:45:13 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics;/*  Java Core  */import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.beans.PropertyChangeSupport;import java.util.Enumeration;import java.util.Vector;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JMenu;import javax.swing.JPopupMenu;import javax.swing.JRadioButtonMenuItem;import com.bbn.openmap.Environment;import com.bbn.openmap.I18n;import com.bbn.openmap.util.PropUtils;/**  */public class BasicStrokeEditorMenu extends JPopupMenu {    protected BasicStroke basicStroke = null;    protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);    protected float width; // must be >= 0f    protected int endCaps; //CAP_ROUND, CAP_BUTT, CAP_SQUARE    protected int lineJoins; //JOIN_BEVEL, JOIN_MITER, JOIN_ROUND    protected float miterLimit; // 10f default, must be >= 1f    protected float[] dash;    protected float dashPhase;    private I18n i18n = Environment.getI18n();        protected JButton launchButton;    public BasicStrokeEditorMenu() {        this(new BasicStroke(1f));    }    public BasicStrokeEditorMenu(BasicStroke bs) {        if (bs != null) {            basicStroke = bs;        } else {            basicStroke = new BasicStroke(1f);        }                setBasicStroke(basicStroke);    }    public void setLaunchButton(JButton lb) {        launchButton = lb;    }    public JButton getLaunchButton() {        if (launchButton == null) {            float buttonHeight = 20;            ImageIcon icon = createIcon(getBasicStroke(),                    50,                    (int) buttonHeight,                    true);            launchButton = new JButton(icon);            launchButton.setToolTipText(i18n.get(BasicStrokeEditorMenu.class, "Modify_Line_Parameters", "Modify Line Parameters"));            launchButton.addActionListener(new ActionListener() {                public void actionPerformed(ActionEvent ae) {                    JButton button = getLaunchButton();                    JPopupMenu popup = new JPopupMenu();                    setGUI(popup);                    popup.show(button, button.getWidth(), 0);                }            });        }        return launchButton;    }    public void resetStroke() {        BasicStroke oldStroke = basicStroke;        setMiterLimit(miterLimit);        basicStroke = new BasicStroke(width, endCaps, lineJoins, miterLimit, dash, dashPhase);        if (launchButton != null) {            launchButton.setIcon(createIcon(basicStroke, 50, 20, true));        }        pcs.firePropertyChange("line", oldStroke, basicStroke);    }    public void show(java.awt.Component invoker, int x, int y) {        this.removeAll();        setGUI(this);        super.show(invoker, x, y);    }    public JPopupMenu setGUI(JPopupMenu popup) {        //////// Line Cap        JMenu capMenu = new JMenu(i18n.get(BasicStrokeEditorMenu.class, "Cap_Decoration", "Cap Decoration"));        ActionListener listener = new ActionListener() {            public void actionPerformed(ActionEvent ae) {                String command = ae.getActionCommand();                try {                    setEndCaps(Integer.parseInt(command));                    resetStroke();                } catch (NumberFormatException e) {                }            }        };        ButtonGroup group = new ButtonGroup();        JRadioButtonMenuItem button = new JRadioButtonMenuItem(i18n.get(BasicStrokeEditorMenu.class, "Butt", "Butt"), endCaps == BasicStroke.CAP_BUTT);        button.setActionCommand(String.valueOf(BasicStroke.CAP_BUTT));        group.add(button);        button.addActionListener(listener);        capMenu.add(button);        button = new JRadioButtonMenuItem(i18n.get(BasicStrokeEditorMenu.class, "Round", "Round"), endCaps == BasicStroke.CAP_ROUND);        button.setActionCommand(String.valueOf(BasicStroke.CAP_ROUND));        group.add(button);        button.addActionListener(listener);        capMenu.add(button);        button = new JRadioButtonMenuItem(i18n.get(BasicStrokeEditorMenu.class, "Square", "Square"), endCaps == BasicStroke.CAP_SQUARE);        button.setActionCommand(String.valueOf(BasicStroke.CAP_SQUARE));        group.add(button);        button.addActionListener(listener);        capMenu.add(button);        //////// Line Joins        JMenu joinMenu = new JMenu(i18n.get(BasicStrokeEditorMenu.class, "Joint_Decoration", "Joint Decoration"));        listener = new ActionListener() {            public void actionPerformed(ActionEvent ae) {                String command = ae.getActionCommand();                try {                    setLineJoins(Integer.parseInt(command));                    resetStroke();                } catch (NumberFormatException e) {                }            }        };        group = new ButtonGroup();        button = new JRadioButtonMenuItem(i18n.get(BasicStrokeEditorMenu.class, "Miter", "Miter"), lineJoins == BasicStroke.JOIN_MITER);        button.setActionCommand(String.valueOf(BasicStroke.JOIN_MITER));        group.add(button);        button.addActionListener(listener);        joinMenu.add(button);        button = new JRadioButtonMenuItem(i18n.get(BasicStrokeEditorMenu.class, "Round", "Round"), lineJoins == BasicStroke.JOIN_ROUND);        button.setActionCommand(String.valueOf(BasicStroke.JOIN_ROUND));        group.add(button);        button.addActionListener(listener);        joinMenu.add(button);        button = new JRadioButtonMenuItem(i18n.get(BasicStrokeEditorMenu.class, "Bevel", "Bevel"), lineJoins == BasicStroke.JOIN_BEVEL);        button.setActionCommand(String.valueOf(BasicStroke.JOIN_BEVEL));        group.add(button);        button.addActionListener(listener);        joinMenu.add(button);        //////// Line Width        JMenu widthMenu = new JMenu(i18n.get(BasicStrokeEditorMenu.class, "Line_Width", "Line_Width"));        listener = new ActionListener() {            public void actionPerformed(ActionEvent ae) {                String command = ae.getActionCommand();                try {                    setStrokeWidth((float) Integer.parseInt(command));                    resetStroke();                } catch (NumberFormatException e) {                }            }        };        group = new ButtonGroup();        ImageIcon ii;        int i;        for (i = 1; i < 13; i++) {            ii = createIcon(new BasicStroke(i), 50, 20, true);            button = new JRadioButtonMenuItem(" ", ii, (int) width == i);//without the space as a parameter these instances look strange with some Look&Feel            button.setActionCommand(String.valueOf(i));            group.add(button);            button.addActionListener(listener);            button.setMargin( new java.awt.Insets(0,10,0,10));            button.setPreferredSize(new java.awt.Dimension(70,20));            widthMenu.add(button);        }        //////// Dash Pattern        JMenu dashMenu = new JMenu(i18n.get(BasicStrokeEditorMenu.class, "Dash_Pattern", "Dash Pattern"));        listener = new ActionListener() {            public void actionPerformed(ActionEvent ae) {                String command = ae.getActionCommand();                try {                    setDash(stringToDashArray(command));                    resetStroke();                } catch (NumberFormatException e) {                }            }        };        group = new ButtonGroup();        String[] patterns = new String[] { null, "1 3", "3 3", "12 10",                "12 10 6 10", "20 10", "20 10 6 10", "20 10 6 10 6 10" };        String currentDash = dashArrayToString(getDash());        for (i = 0; i < patterns.length; i++) {            BasicStroke dashStroke = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, stringToDashArray(patterns[i]), 0.0f);            ii = createIcon(dashStroke, 90, 10, true);            button = new JRadioButtonMenuItem(" ", ii, currentDash.equals(patterns[i]));            button.setActionCommand(patterns[i]);            group.add(button);            button.addActionListener(listener);            button.setMargin( new java.awt.Insets(0,10,0,10));            button.setPreferredSize(new java.awt.Dimension(110,20));            dashMenu.add(button);        }        popup.add(widthMenu);        popup.add(dashMenu);        popup.add(capMenu);        popup.add(joinMenu);        return popup;    }    public final static String NONE = "No Dash Pattern";    public static String dashArrayToString(float[] da) {        if (da == null) {            return NONE;        }        StringBuffer sb = new StringBuffer();        for (int i = 0; i < da.length; i++) {            sb.append(Float.toString(da[i]) + " ");        }        return sb.toString();    }    public static float[] stringToDashArray(String das) {        if (das == null || das.equals(NONE) || das.equals("")) {            return null;        }        Vector floats = PropUtils.parseSpacedMarkers(das);        float[] ret = new float[floats.size()];        int index = 0;        Enumeration thing = floats.elements();        while (thing.hasMoreElements()) {            String f = (String) thing.nextElement();            try {                ret[index++] = (new Float(f)).floatValue();            } catch (NumberFormatException nfe) {                return null;            }        }        return ret;    }    public BasicStroke getBasicStroke() {        return basicStroke;    }    public void setBasicStroke(BasicStroke bs) {        basicStroke = bs;        setStrokeWidth(basicStroke.getLineWidth());        setMiterLimit(basicStroke.getMiterLimit());        setDash(basicStroke.getDashArray());        setDashPhase(basicStroke.getDashPhase());        setLineJoins(basicStroke.getLineJoin());        setEndCaps(basicStroke.getEndCap());    }    public void setPropertyChangeSupport(                                         PropertyChangeSupport propertyChangeSupport) {        pcs = propertyChangeSupport;    }    public PropertyChangeSupport getPropertyChangeSupport() {        return pcs;    }    /**     * Given a BasicStroke, create an ImageIcon that shows it.     *      * @param stroke the BasicStroke to draw on the Icon.     * @param width the width of the icon.     * @param height the height of the icon.     * @param horizontalOrientation if true, draw line on the icon     *        horizontally, else draw it vertically.     */    public static ImageIcon createIcon(BasicStroke stroke, int width,                                       int height, boolean horizontalOrientation) {        BufferedImage bigImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);        Graphics2D g = (Graphics2D) bigImage.getGraphics();        g.setBackground(OMColor.clear);        g.setPaint(OMColor.clear);        g.fillRect(0, 0, width, height);        g.setPaint(Color.black);        g.setStroke(stroke);        if (horizontalOrientation) {            g.drawLine(0, height / 2, width, height / 2);        } else {            g.drawLine(width / 2, 0, width / 2, height);        }        return new ImageIcon(bigImage);    }    public void setStrokeWidth(float w) {        if (w < 1)            w = 1;        width = w;    }    public float getStrokeWidth() {        return width;    }    public void setMiterLimit(float ml) {        if (ml < 1f)            miterLimit = 10f;        else            miterLimit = ml;    }    public float getMiterLimit() {        return miterLimit;    }    public void setDash(float[] da) {        dash = da;    }    public float[] getDash() {        return dash;    }    public void setDashPhase(float dp) {        dashPhase = dp;    }    public float getDashPhase() {        return dashPhase;    }    public void setEndCaps(int ec) {        endCaps = ec;    }    public int getEndCaps() {        return endCaps;    }    public void setLineJoins(int lj) {        lineJoins = lj;    }    public int getLineJoins() {        return lineJoins;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -