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

📄 symbolchooser.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            }        }        if (command == NAMEFIELD_CMD) {            handleManualNameFieldUpdate(getCode());        }        if (command == DimensionQueryPanel.WIDTH_CMD                || command == DimensionQueryPanel.HEIGHT_CMD) {            setDesiredIconDimension(dqp.getDimension());        }    }    /**     * Update the GUI to react to code typed into the string window.     *      * @param text     */    protected void handleManualNameFieldUpdate(String text) {        if (text == null)            return;        if (text.length() > 15) {            text = text.substring(0, 15);        }        text = text.toUpperCase().replace('*', '-');        for (Iterator it = trees.iterator(); it.hasNext();) {            SymbolTreeHolder sth = (SymbolTreeHolder) it.next();            if (sth != null) {                DefaultMutableTreeNode node = sth.getNodeForCode(text);                if (node != null) {                    if (Debug.debugging("symbology")) {                        Debug.output("SymbolChooser: Found node for " + text);                    }                    sth.getTree()                            .setSelectionPath(new TreePath(node.getPath()));                    sth.updateOptionsForCode(text);                    setSelectedTreeHolder(sth);                }            }        }    }    /**     * Initialization method to create the SymbolTreeHolders from the     * SymbolReferenceLibrary.     *      * @param srl     * @return List of nodes of the symbol part tree.     * @throws FormatException     */    protected List createNodes(SymbolReferenceLibrary srl)            throws FormatException {        List treeList = new LinkedList();        List subs = srl.getHead().getSubs();        int count = 1;        if (subs != null) {            for (Iterator it = subs.iterator(); it.hasNext();) {                SymbolPart schemeSymbolPart = (SymbolPart) it.next();                CodeOptions options = ((CodeScheme) srl.positionTree.getFromChoices(count++)).getCodeOptions(null);                treeList.add(new SymbolTreeHolder(schemeSymbolPart, options));            }        }        return treeList;    }    /**     * Get the current symbol code listed in the GUI.     *      * @return code for current symbol.     */    public String getCode() {        if (nameField != null)            return nameField.getText();        return EMPTY_CODE;    }    /**     * Set the symbol code in the GUI.     */    public void setCode(String code) {        if (nameField == null) {            // If we do this here, the default jtree presented            // will be able to put it's default symbol code in the            // text field widget. Has to be done before that            // default JTree is made.            nameField = new JTextField(code);        } else {            nameField.setText(code);        }    }    /**     * Get the icon displayed in the GUI.     *      * @return ImageIcon being displayed.     */    public ImageIcon getImageIcon() {        return symbolImage;    }    /**     * Set the current icon in the display.     *      * @param ii     */    public void setImageIcon(ImageIcon ii) {        symbolImage = ii;        if (symbolImageLabel == null) {            symbolImageLabel = new JLabel(symbolImage);        } else {            symbolImageLabel.setIcon(symbolImage);        }    }    /**     * Set the dimension o the icon to be created.     *      * @param d     */    public void setDesiredIconDimension(Dimension d) {        iconDimension = d;        dqp.setDimension(getDesiredIconDimension());    }    /**     * @return the dimension of the icon to be created.     */    public Dimension getDesiredIconDimension() {        if (iconDimension == null) {            iconDimension = new Dimension(DEFAULT_ICON_DIMENSION, DEFAULT_ICON_DIMENSION);        }        return iconDimension;    }    /**     * @return Returns the allowCreateImage.     */    public boolean isAllowCreateImage() {        return allowCreateImage;    }    /**     * @param allowCreateImage The allowCreateImage to set.     */    public void setAllowCreateImage(boolean allowCreateImage) {        this.allowCreateImage = allowCreateImage;        if (createImageFileButton != null) {            createImageFileButton.setVisible(allowCreateImage);        }    }    public static ImageIcon showDialog(Component component, String title,                                       SymbolReferenceLibrary srl,                                       String defaultSymbolCode)            throws HeadlessException {        final SymbolChooser pane = new SymbolChooser(srl);        SymbolTracker ok = new SymbolTracker(pane);        JDialog dialog = createDialog(component, title, true, pane, ok, null);        dialog.addWindowListener(new SymbolChooserDialog.Closer());        dialog.addComponentListener(new SymbolChooserDialog.DisposeOnClose());        pane.setCode(defaultSymbolCode);        pane.handleManualNameFieldUpdate(defaultSymbolCode);        dialog.show(); // blocks until user brings dialog down...        return ok.getImageIcon();    }    /**     * Creates JDialog window displaying a SymbolChooser.     */    public static JDialog createDialog(Component c, String title,                                       boolean modal,                                       SymbolChooser chooserPane,                                       ActionListener okListener,                                       ActionListener cancelListener)            throws HeadlessException {        return new SymbolChooserDialog(c, title, modal, chooserPane, okListener, cancelListener);    }    public static void main(String[] args) {        Debug.init();        ArgParser ap = new ArgParser("SymbolChooser");        ap.add("type",                "Type of symbol image set being used (PNG, GIF or SVG, PNG is default)",                1);        ap.add("path",                "Path to root directory of symbol image set if not in classpath",                1);        ap.add("default", "15 character code for default icon", 1);        ap.add("verbose", "Print messages");        if (!ap.parse(args)) {            ap.printUsage();            System.exit(0);        }        String arg[];        arg = ap.getArgValues("type");        String symbolImageMakerClass = "com.bbn.openmap.tools.symbology.milStd2525.PNGSymbolImageMaker";        if (arg != null) {            if (arg[0].equalsIgnoreCase("SVG")) {                symbolImageMakerClass = "com.bbn.openmap.tools.symbology.milStd2525.SVGSymbolImageMaker";            } else if (arg[0].equalsIgnoreCase("GIF")) {                symbolImageMakerClass = "com.bbn.openmap.tools.symbology.milStd2525.GIFSymbolImageMaker";            }        }        String defaultSymbolCode = "SFPPV-----*****";        arg = ap.getArgValues("default");        if (arg != null) {            defaultSymbolCode = arg[0];        }        arg = ap.getArgValues("verbose");        if (arg != null) {            Debug.put("symbology");        }        SymbolReferenceLibrary srl = new SymbolReferenceLibrary();        if (srl.setSymbolImageMaker(symbolImageMakerClass) != null) {            arg = ap.getArgValues("path");            if (arg != null) {                srl.getSymbolImageMaker().setDataPath(arg[0]);            }            SymbolChooser.showDialog(null,                    "MIL-STD-2525B Symbol Chooser",                    srl,                    defaultSymbolCode);        } else {            Debug.output("Couldn't create SymbolImageMaker");        }        System.exit(0);    }    public class SymbolTreeHolder extends ListenerSupport implements            TreeSelectionListener {        //Optionally play with line styles. Possible values are        //"Angled", "Horizontal", and "None" (the default).        protected boolean playWithTreeLineStyle = false;        protected String treeLineStyle = "Angled";        protected JTree tree;        protected JPanel optionPanel;        protected CodeOptions options;        protected Character[] optionChars = new Character[15];        protected Hashtable optionMenuHashtable;        public SymbolTreeHolder(SymbolPart schemeSymbolPart, CodeOptions opts) {            super(schemeSymbolPart);            DefaultMutableTreeNode top = new DefaultMutableTreeNode(schemeSymbolPart);            addNodes(top, schemeSymbolPart);            tree = new JTree(top);            tree.getSelectionModel()                    .setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);            tree.setVisibleRowCount(10);            tree.addTreeSelectionListener(this);            tree.setSelectionPath(new TreePath(top));            if (playWithTreeLineStyle) {                tree.putClientProperty("JTree.lineStyle", treeLineStyle);            }            options = opts;            optionPanel = getOptionPanel();        }        public JTree getTree() {            return tree;        }        protected void addNodes(DefaultMutableTreeNode node, SymbolPart sp) {            DefaultMutableTreeNode newNode = null;            List subs = sp.getSubs();            if (subs != null) {                for (Iterator it = subs.iterator(); it.hasNext();) {                    sp = (SymbolPart) it.next();                    newNode = new DefaultMutableTreeNode(sp);                    node.add(newNode);                    addNodes(newNode, sp);                }            }        }        public DefaultMutableTreeNode getNodeForCode(String code) {            DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel()                    .getRoot();            SymbolPart sp = (SymbolPart) root.getUserObject();            if (Debug.debugging("symbology.detail")) {                Debug.output("Tree root object has " + sp.getClass().getName()

⌨️ 快捷键说明

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