📄 cardleveltagsdesigner.java
字号:
package wapide;import java.awt.*;import javax.swing.border.*;import javax.swing.text.*;import javax.swing.text.html.*;import javax.swing.tree.*;import java.awt.event.*;import javax.swing.event.*;import java.util.*;import javax.swing.*;/** * This class creates a dialog for graphically creating and editing the tags * that precede the "p" tag in a wml card tag. It provides methods for * setting up the dialog as well as retrieving data from the dialog. * * Copyright: Copyright (c) 2003 * @author Mark Busman * @version 1.0 * * For License and contact information see WAPIDE.java */public class CardLevelTagsDesigner extends JDialog { private Border border1; private TitledBorder titledBorder1; private ImageIcon image1; private ImageIcon image2; private ImageIcon image3; private ImageIcon image4; private BorderLayout borderLayout1 = new BorderLayout(); private JPopupMenu TreePopupMenu = new JPopupMenu(); private JMenuItem jMenuCut = new JMenuItem(); private JMenuItem jMenuCopy = new JMenuItem(); private JMenuItem jMenuPaste = new JMenuItem(); private JMenuItem jMenuDelete = new JMenuItem(); private JMenuItem jMenuProperties = new JMenuItem(); private JButton downButton = new JButton(); private JPanel jPanel1 = new JPanel(); private JScrollPane jScrollPane2 = new JScrollPane(); private JButton upButton = new JButton(); private GridBagLayout gridBagLayout2 = new GridBagLayout(); private BorderLayout borderLayout4 = new BorderLayout(); private JButton NodePropertiesButton = new JButton(); private BorderLayout borderLayout2 = new BorderLayout(); private FlowLayout flowLayout1 = new FlowLayout(); private JTree TagTree = new JTree(); private JPanel jPanel6 = new JPanel(); private JPanel jPanel5 = new JPanel(); private JPanel jPanel4 = new JPanel(); private JPanel jPanel2 = new JPanel(); private JPanel jPanel3 = new JPanel(); private JButton rightButton = new JButton(); private JButton leftButton = new JButton(); // User variables /** * The path to the selected tree node. */ private TreePath path; /** * The current tree model. */ private DefaultTreeModel tm = null; /** * A tree node of type EnhancedTreeNode, the default node type for the tree. */ private EnhancedTreeNode TempNode; // Constants protected static int LEFT_MOUSE_BUTTON = 16; protected static int RIGHT_MOUSE_BUTTON = 4; /** * Empty constructor, does nothing. */ public CardLevelTagsDesigner() { } /** * Constructs a CardLevelTagsDesigner using the data passed in. Has the * ability to be displayed or just parse the passed in data if show is false. * @param String data - the card level tags that precede the "p" or "pre" tags * @param boolean show - if true displays the dialog, if false jsut parses the data. */ public CardLevelTagsDesigner(String data, boolean show) { try { tm = new DefaultTreeModel(Build_Tree(data)); TagTree = new JTree(tm); TagTree.setCellRenderer(new CardLevelTagsCellRenderer()); TagTree.setRootVisible(false); jbInit(); pack(); setSize(500, 350); if (show) show(); } catch(Exception e) { e.printStackTrace(); } } /** * Constructs a CardLevelTagsDesigner dialog and parses the data that is passed in. * After parsing the data it displays the dialog to allow the user to modify the data. * @param String data - the card level tags that precede the "p" and "pre" tags. */ public CardLevelTagsDesigner(String data) { try { tm = new DefaultTreeModel(Build_Tree(data)); TagTree = new JTree(tm); TagTree.setCellRenderer(new CardLevelTagsCellRenderer()); TagTree.setRootVisible(false); jbInit(); pack(); setSize(500, 350); show(); } catch(Exception e) { e.printStackTrace(); } } //public static void main(String[] args) { //String d = ""; //CardLevelTagsDesigner cardLevelTagsDesigner1 = new CardLevelTagsDesigner(d); //} /** * constructs and initializes the dialog. */ private void jbInit() throws Exception { border1 = BorderFactory.createEmptyBorder(); titledBorder1 = new TitledBorder(BorderFactory.createEmptyBorder(),"Preview"); image1 = new ImageIcon(wapide.IDEFrame.class.getResource("rarrow.gif")); image2 = new ImageIcon(wapide.IDEFrame.class.getResource("larrow.gif")); image3 = new ImageIcon(wapide.IDEFrame.class.getResource("darrow.gif")); image4 = new ImageIcon(wapide.IDEFrame.class.getResource("uarrow.gif")); tm.addTreeModelListener(new javax.swing.event.TreeModelListener() { public void treeNodesChanged(TreeModelEvent e) { tm_treeNodesChanged(e); } public void treeNodesInserted(TreeModelEvent e) { } public void treeNodesRemoved(TreeModelEvent e) { } public void treeStructureChanged(TreeModelEvent e) { } }); jMenuCut.setText("Cut"); jMenuCut.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { Popup_actionPerformed(e); } }); jMenuCopy.setText("Copy"); jMenuCopy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { Popup_actionPerformed(e); } }); jMenuPaste.setText("Paste"); jMenuPaste.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { Popup_actionPerformed(e); } }); jMenuDelete.setText("Delete"); jMenuDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { Popup_actionPerformed(e); } }); jMenuProperties.setText("Properties"); jMenuProperties.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { Popup_actionPerformed(e); } }); this.getContentPane().setLayout(borderLayout1); this.setTitle("Card Level Tag Editor"); downButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { moveItems_actionPerformed(e); } }); downButton.setActionCommand("down"); downButton.setIcon(image3); downButton.setNextFocusableComponent(TagTree); downButton.setPreferredSize(new Dimension(27, 27)); downButton.setToolTipText("Move item down"); jPanel1.setLayout(borderLayout2); upButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { moveItems_actionPerformed(e); } }); upButton.setActionCommand("up"); upButton.setIcon(image4); upButton.setNextFocusableComponent(downButton); upButton.setPreferredSize(new Dimension(27, 27)); upButton.setToolTipText("Move item up"); NodePropertiesButton.setNextFocusableComponent(leftButton); NodePropertiesButton.setPreferredSize(new Dimension(27, 27)); NodePropertiesButton.setToolTipText("Display item properties"); NodePropertiesButton.setText("..."); NodePropertiesButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { NodePropertiesButton_actionPerformed(e); } }); TagTree.setMaximumSize(new Dimension(83, 37)); TagTree.setNextFocusableComponent(NodePropertiesButton); TagTree.setPreferredSize(new Dimension(300, 37)); TagTree.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { TagTree_mouseClicked(e); } }); TagTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { TagTree_valueChanged(e); } }); jPanel5.setLayout(gridBagLayout2); jPanel5.setMinimumSize(new Dimension(78, 37)); jPanel5.setPreferredSize(new Dimension(30, 37)); jPanel5.setRequestFocusEnabled(false); jPanel4.setLayout(borderLayout4); jPanel2.setLayout(flowLayout1); jPanel2.setMinimumSize(new Dimension(105, 133)); jPanel2.setRequestFocusEnabled(false); jScrollPane2.setPreferredSize(new Dimension(86, 200)); jScrollPane2.setRequestFocusEnabled(false); rightButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { moveItems_actionPerformed(e); } }); rightButton.setActionCommand("right"); rightButton.setIcon(image1); rightButton.setNextFocusableComponent(upButton); rightButton.setPreferredSize(new Dimension(27, 27)); rightButton.setToolTipText("Move item to the right"); leftButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { moveItems_actionPerformed(e); } }); leftButton.setActionCommand("left"); leftButton.setIcon(image2); leftButton.setNextFocusableComponent(rightButton); leftButton.setPreferredSize(new Dimension(27, 27)); leftButton.setToolTipText("Move item to the left"); jPanel1.setRequestFocusEnabled(false); jPanel6.setRequestFocusEnabled(false); jPanel4.setRequestFocusEnabled(false); jPanel3.setRequestFocusEnabled(false); TreePopupMenu.add(jMenuCut); TreePopupMenu.add(jMenuCopy); TreePopupMenu.add(jMenuPaste); TreePopupMenu.addSeparator(); TreePopupMenu.add(jMenuDelete); TreePopupMenu.addSeparator(); TreePopupMenu.add(jMenuProperties); this.getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.add(jPanel5, BorderLayout.EAST); jPanel5.add(jPanel6, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0 ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), -39, 32)); jPanel6.add(upButton, null); jPanel6.add(downButton, null); jPanel1.add(jPanel4, BorderLayout.SOUTH); jPanel4.add(jPanel2, BorderLayout.EAST); jPanel2.add(NodePropertiesButton, null); jPanel4.add(jPanel3, BorderLayout.CENTER); jPanel3.add(leftButton, null); jPanel3.add(rightButton, null); jPanel1.add(jScrollPane2, BorderLayout.CENTER); jScrollPane2.getViewport().add(TagTree, null); } // Additional support classes /** * This class encapsulates a doNode. It takes care of its own data * and provides mehtods for accessing and updating the data. */ private class doNode extends EnhancedTreeNode { private String type, label, name, opt, extra; /** * Constructs a new Node of type "do." */ public doNode() { super("", "do"); setUserObject(""); setAllowsChildren(true); // go, noop, prev, refresh type = "unknown"; label = ""; name = ""; opt = "N/A"; extra = ""; updateNode(); } /** * Sets the data for the Node from a Vector. * @param Vector v - the data to be set. */ public void setData(Vector v) { type = (String) v.get(0); label = (String) v.get(1); name = (String) v.get(2); opt = (String) v.get(3); extra = (String) v.get(4); } /** *Gets the data of the Node and returns it as a Vector. * @return Vector v - the data in the following format:<br> * type<br> * label<br> * name<br> * opt<br> * extra */ public Vector getData() { Vector v = new Vector(); v.add(type); v.add(label); v.add(name); v.add(opt); v.add(extra); return v; } public String getType() { return type; } public String getLabel() { return label; } public String getName() { return name; } public String getOpt() { return opt; } public String getExtra() { return extra; } /** * Updates the Node's data and visual component. */ public void updateNode() { String s = "<do"; if (!type.equals("N/A")) s = s + " type=\"" + type + "\""; if (!label.equals("")) s = s + " label=\"" + label + "\""; if (!name.equals("")) s = s + " name=\"" + name + "\""; if (!opt.equals("N/A")) s = s + " optional=\"" + opt + "\""; if (extra.length() > 0) s = s + " " + extra.trim(); s = s + ">"; setUserObject(s); } /** * Updates a node data from a String. * @param String s - the data to update the node with. */ public void updateNode(String s) { type = "N/A"; label = ""; name = ""; opt = "N/A"; extra = ""; int start = s.indexOf("type"); if (start > -1) { start = s.indexOf("=" , start + 1); if (start > -1) { start = s.indexOf("\"" , start + 1); if (start > -1) { int end = s.indexOf("\"" , start + 1); if (end < 0) end = s.length(); type = s.substring(start + 1, end); } } } start = s.indexOf("label"); if (start > -1) { start = s.indexOf("=" , start + 1); if (start > -1) { start = s.indexOf("\"" , start + 1); if (start > -1) { int end = s.indexOf("\"" , start + 1); if (end < 0) end = s.length(); label = s.substring(start + 1, end); } } } start = s.indexOf("name"); if (start > -1) { start = s.indexOf("=" , start + 1); if (start > -1) { start = s.indexOf("\"" , start + 1); if (start > -1) { int end = s.indexOf("\"" , start + 1); if (end < 0) end = s.length(); name = s.substring(start + 1, end); } } } start = s.indexOf("optional"); if (start > -1) { start = s.indexOf("=" , start + 1); if (start > -1) { start = s.indexOf("\"" , start + 1); if (start > -1) { int end = s.indexOf("\"" , start + 1); if (end < 0) end = s.length(); opt = s.substring(start + 1, end); } } } start = s.indexOf("id=\""); if (start > -1) { start = start + 4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -