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

📄 menueditpane.java

📁 自动生成JAVA-Struts网站的程序
💻 JAVA
字号:
package com.sutternow.swingkar.gui;import com.sutternow.swingkar.ConfigManager;import com.sutternow.misc.Utils;import net.sf.easylayouts.RowLayout;import net.sf.easylayouts.RowConstraints;import org.dom4j.Element;import org.dom4j.Node;import javax.swing.*;import javax.swing.table.AbstractTableModel;import java.awt.*;import java.awt.event.*;import java.util.*;import java.util.List;/** * Created by IntelliJ IDEA. * User: Matthew Payne * Date: Jan 18, 2003 * Time: 1:01:50 AM * To change this template use Options | File Templates. */public class MenuEditPane implements SimpleForm,  ActionListener, ItemListener, MouseListener {    public String Title = "Menu";    public MenuEditPane(ConfigManager _cm) {        cm = _cm;        refPanel = this.createPanel();        actionList = new ArrayList();    }     public String getTitle() {        return Title;    }     public JPanel getEditForm() {        return refPanel;    }     private JPanel createPanel() {         final JPanel panel = new JPanel();         final JPanel bottomPanel = new JPanel();         RowLayout rowLayout = new RowLayout(panel, 1, 10);         rowLayout.add(new JLabel("Title:"), 0);         title = new JTextField(25);         rowLayout.add(title, 0);         rowLayout.addEmptyRow(5);         rowLayout.add(new JLabel("Sub Menu:"), 2);         actionPath = new JComboBox();         actionPath.addItemListener(this);         //rowLayout.add(actionPath, 1);         rowLayout.addStrut(220, 2);         rowLayout.add(new JLabel("Allowed Role(s):"), 2);         itemTable = new JTable();         itemTable.addMouseListener(this);         JScrollPane jsp = new JScrollPane(itemTable);         jsp.setMinimumSize(new Dimension(90, 80));         jsp.setMaximumSize(new Dimension(320, 200));         jsp.setPreferredSize(new Dimension(320, 200));         rowLayout.add(jsp, 3);         roleModel = new javax.swing.DefaultListModel();         roleList.setModel(roleModel);           JScrollPane rsp = new JScrollPane(roleList);            roleList.setCellRenderer(new CheckListRenderer());            roleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);            roleList.addMouseListener(new MouseAdapter() {            public void mouseClicked(MouseEvent e) {                int index = roleList.locationToIndex(e.getPoint());                CheckableItem item = (CheckableItem) roleList.getModel().getElementAt(index);                item.setSelected(!item.isSelected());                Rectangle rect = roleList.getCellBounds(index, index);                roleList.repaint(rect);            }        });         rowLayout.add(rsp, 3);        // popup menu         popmenu = new JPopupMenu();         editEntry = new JMenuItem("Edit");         editEntry.addActionListener(this);         popmenu.add(editEntry);         delEntry = new JMenuItem("Delete");         delEntry.addActionListener(this);         popmenu.add(delEntry);         cmdSave = new JButton("Save");         cmdCancel = new JButton("Cancel");         cmdSave.addActionListener(this);         cmdCancel.addActionListener(this);         bottomPanel.add(cmdSave);         bottomPanel.add(cmdCancel);         rowLayout.add(bottomPanel, 5);         return panel;     }    public void setValues(Element node) {        this.clearForm();        menuElement =  node;        String relPath = node.getUniquePath();       title.setText(Utils.parseNull(node.valueOf(relPath + "/title")));        actionPath.removeAllItems();        Iterator itr = node.selectNodes("//bean/name").iterator();        while (itr.hasNext()) {            Element el = (Element)itr.next();            actionPath.addItem(el.getText());        }        actionPath.setSelectedItem(node.valueOf(relPath + "/bean-name"));        this.fillActions();        actionPath.setEditable(true);        menuModel = new MenuTableModel(menuElement);        itemTable.setModel(menuModel);        itemTable.getColumn("Path").setCellEditor(new DefaultCellEditor(actionPath));        roleModel.clear();        List choices = menuElement.selectNodes("//security/security-role");              int n = choices.size();              CheckableItem[] items = new CheckableItem[n];              for (int i = 0; i < n; i++) {                  Element element = (Element) choices.get(i);                  items[i] = new CheckableItem(element.getText());                  if (menuElement.matches(relPath + "[role='" + element.getText() + "']")) {                      items[i].setSelected(true);                      System.out.println("item matches");                  }                  roleModel.add(i, items[i]);              }    }    private void makeResponse() {        //e.clearContent();        menuElement.element("title").setText(title.getText());   // clear role(s) and add selected items        menuElement.elements("role").clear();        javax.swing.DefaultListModel model = (javax.swing.DefaultListModel) roleList.getModel();        int size = model.getSize();        for (int i = 1; i <= size; i++) {            CheckableItem item = (CheckableItem) model.get(i - 1);            if (item.isSelected()) {                System.out.println(item.toString());                menuElement.addElement("role").setText(item.toString());            }        }         // clear menu items          Collection emptys =  menuElement.selectNodes("//menu-item[title='']");           Iterator itr = emptys.iterator();            while (itr.hasNext()) {                ((Element)itr.next()).detach();            }    }    public void itemStateChanged( ItemEvent event ) {		if (event.getSource() == actionPath && event.getStateChange() == ItemEvent.SELECTED ) {			    System.out.println( "Change:" + actionPath.getSelectedItem());            String name = (String)actionPath.getSelectedItem();            fillQuery(name);		}	}    public void actionPerformed(ActionEvent ae) {        Object src = ae.getSource();        if (src == delEntry) {            deleteRow();        } else if (src == cmdSave) {           doSave();        } else if (src == cmdCancel) {            clearForm();        }    }    private void fillActions() {        actionList.clear();        actionPath.removeAllItems();        Iterator itr = menuElement.selectNodes("//bean/name").iterator();        while (itr.hasNext())  {            Element el = (Element)itr.next();            String beanName = el.getText();            actionPath.addItem(beanName + "/add.do");            actionPath.addItem(beanName + "/list.do");            actionPath.addItem("query/" + beanName+ "/SearchByPK.do");            // do query items            Iterator subItr = menuElement.selectNodes("//bean[name='"+ beanName +"']/query/name").iterator();            while (subItr.hasNext())  {                Element queryEl = (Element)subItr.next();                actionPath.addItem("query/" + beanName + "/" + queryEl.getText() +".do");            }            // do process items                   Iterator subItr2 = menuElement.selectNodes("//bean[name='"+ beanName +"']/process/name").iterator();                   while (subItr2.hasNext())  {                       Element processEl = (Element)subItr2.next();                       actionPath.addItem("process/" + beanName + "/" + processEl.getText() +".do");                   }        }    }    private void fillQuery(String name) {//         queryName.removeAllItems();//         queryName.addItem("SearchByPK");////        Iterator itr = menuElement.selectNodes("//bean[name='" + name + "']/query/name").iterator();////        while (itr.hasNext()) {//            Element el = (Element)itr.next();//            queryName.addItem(el.getText());//        }    }    //{{{ deleteRow() method    private void deleteRow() {        // Deletes a row from the Table:        int targetRow;        String keyCol;        if (itemTable.getSelectedRowCount() > 0) {            targetRow = itemTable.getSelectedRow();            keyCol = (String) itemTable.getValueAt(targetRow, 0);            menuModel.requestRefresh();        }    } //}}}    private void clearForm() {        title.setText("");        actionPath.setSelectedIndex(-1);    }    public  void doSave() {        this.makeResponse();        cm.saveChanges();        System.out.println(this.Title + " Saved");    }    //{{{ Mouse Listener Interface Implementation    private void handleMouseEvent(MouseEvent evt) {        if (evt.isPopupTrigger()) {            if (popmenu.isVisible()) {                popmenu.setVisible(false);            } else {                popmenu.show((Component) evt.getSource(), evt.getX(), evt.getY());            }        }    }    public void mousePressed(MouseEvent evt) {        handleMouseEvent(evt);    }    public void mouseReleased(MouseEvent evt) {        handleMouseEvent(evt);    }    public void mouseClicked(MouseEvent e) {    }    public void mouseEntered(MouseEvent e) {    }    public void mouseExited(MouseEvent e) {    }    private JPanel refPanel;    private JTextField title;    private JComboBox actionPath;    private JTable itemTable;    private MenuTableModel menuModel;    final JList roleList = new JList();    DefaultListModel roleModel;    List actionList;    JPopupMenu popmenu;    JMenuItem delEntry;    JMenuItem editEntry;    private JButton cmdSave;    private JButton cmdCancel;    private ConfigManager cm;    private Element menuElement;}class MenuTableModel extends AbstractTableModel {    /**     * Constructs an AppList table model.     * @param _menus the Element the Represents a menu Object     */    public MenuTableModel(Element _menus) {        menu = _menus;        relPath = menu.getUniquePath();        if (getRowCount() < 1)            addMenuItem("", "");  //Add empty item for Data entry    }    public int getRowCount() {        return menu.selectNodes(relPath + "/menu-item").size();    }    public boolean isCellEditable(int rowIndex, int columnIndex) {        return true;    }    public void requestRefresh() {        /* Used to refresh the table */        super.fireTableDataChanged();    }    public int getColumnCount() {        return 2;    }    public void addMenuItem(String newTitle, String newPath) {        Element item = menu.addElement("menu-item");            item.addElement("title").setText(newTitle);            item.addElement("path").setText(newPath);    }    public Object getValueAt(int r, int c) {        Element el =  (Element)menu.selectNodes(relPath + "/menu-item").get(r);        switch (c) {            case 0:                return el.elementText("title");            case 1:                return el.elementText("path");        }        return el.getText();    }    public void setValueAt(Object aValue, int r, int c) {        List list =  menu.selectNodes(relPath + "/menu-item");        if (((String)aValue).length() == 0 && r != list.size() - 1) {                Element e = (Element)list.get(r);                e.detach();				fireTableRowsDeleted(r,r);		}        Element el =  (Element)list.get(r);        switch (c) {                case 0:                    el.element("title").setText((String)aValue);                    break;                case 1:                    el.element("path").setText((String)aValue);                    break;            }       // el.setText((String)aValue);         if (r == list.size() - 1) {					 this.addMenuItem("", "");                  	 fireTableRowsInserted(r + 1, r + 1);		}    }    public String getColumnName(int c) {        switch (c) {            case 0:                return "Title";            case 1:                return "Path";        }        return "no value dude";    }    private Element menu;    String relPath = "";}

⌨️ 快捷键说明

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