📄 securityconstraintpane.java
字号:
package com.sutternow.swingkar.gui;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.awt.event.*;import java.awt.*;import java.util.*;import java.util.List;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.DocumentHelper;import net.sf.easylayouts.*;import com.gargoylesoftware.base.gui.TableLayout;import com.gargoylesoftware.base.gui.TableLayoutConstraints;import com.sutternow.swingkar.ConfigManager;import com.sutternow.misc.Utils;/* @done Load role choices @done Load resource paths @done check correct role choices @done make interface work @todo tweak layout slightly*//** * 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 final class SecurityConstraintPane implements SimpleForm, ActionListener, MouseListener { public String Title = "Web Resource Collection"; public SecurityConstraintPane(ConfigManager _cm) { cm = _cm; props = new HashMap(); secPanel = this.createPanel(); } public String getTitle() { return Title; } private JPanel createPanel() { final TableLayout tableLayout = new TableLayout(); final JPanel parentPanel = new JPanel(); final JPanel bottomPanel = new JPanel(); final JPanel topPanel = new JPanel(tableLayout); RowLayout rowLayout = new RowLayout(parentPanel, 1, 25); rowLayout.add(new JLabel("Web Resource Name:"), 0); webRourceName = new JTextField(25); rowLayout.add(webRourceName, 0); rowLayout.addEmptyRow(10); dm = new DefaultTableModel(); addItem = new JButton("Add"); addItem.addActionListener(this); urlPattern = new JTextField(15); topPanel.add(new JLabel("URL Patten(s):"), "1,1"); JPanel urlPanel = new JPanel(); urlPanel.add(urlPattern); urlPanel.add(addItem); topPanel.add(urlPanel, "2,1"); patternTable = new JTable(dm); patternTable.setShowGrid(false); patternTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); patternTable.addMouseListener(this); popmenu = new JPopupMenu(); delEntry = new JMenuItem("Delete"); delEntry.addActionListener(this); popmenu.add(delEntry); psp = new JScrollPane(patternTable); psp.setMinimumSize(new Dimension(40, 50)); psp.setMaximumSize(new Dimension(230, 220)); psp.setPreferredSize(new Dimension(230, 218)); TableLayoutConstraints constraints = new TableLayoutConstraints(3, 1); constraints.setVerticalAlignment(TableLayout.TOP); topPanel.add(psp, constraints); topPanel.add(new JLabel("Allowed Role(s):"), "2,3"); 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); } }); topPanel.add(rsp, "3,3"); rowLayout.add(topPanel, 2); /* cmdSave = new JButton("Save"); cmdCancel = new JButton("Cancel"); cmdSave.addActionListener(this); cmdCancel.addActionListener(this); bottomPanel.add(cmdSave); bottomPanel.add(cmdCancel);*/ rowLayout.add(bottomPanel, 3); return parentPanel; } public JPanel getEditForm() { return this.secPanel; } public void setValues(Element secCfg) { this.clearForm(); String relPath = secCfg.getUniquePath(); secElement = secCfg; webRourceName.setText(Utils.parseNull(secCfg.valueOf(relPath + "/name"))); javax.swing.DefaultListModel model = new javax.swing.DefaultListModel(); roleList.setModel(model); List choices = secCfg.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 (secCfg.matches(relPath + "[security-role='" + element.getText() + "']")) { items[i].setSelected(true); } model.add(i, items[i]); } List patternChoices = secCfg.selectNodes(relPath + "/url-pattern"); Vector headVec = new Vector(); Vector masterVec = new Vector(); headVec.addElement("Patterns"); dm.setColumnCount(1); n = patternChoices.size(); dm.setRowCount(0); dm.addColumn("Patterns"); for (int i = 0; i < n; i++) { Element element = (Element) patternChoices.get(i); Vector patVec = new Vector(); patVec.addElement(element.getText()); masterVec.addElement(patVec); } dm.setDataVector(masterVec, headVec); patternTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); } public void actionPerformed(ActionEvent ae) { Object src = ae.getSource(); if (src == delEntry) { deleteRow(); } else if (src == addItem) { if (urlPattern.getText().length() > 0 && urlPattern.getText().length() > 0) { Vector vec = new Vector(); vec.addElement(urlPattern.getText().trim()); dm.addRow(vec); urlPattern.setText(""); } } else if (src == editEntry) { /* int i = propertyTable.getSelectedRow(); urlPattern.setText((String)propertyTable.getValueAt(i, 0)); itemValue.setText((String)propertyTable.getValueAt(i, 1)); */ } } //{{{ deleteRow() method private void deleteRow() { // Deletes a row from the Table: int targetRow; if (patternTable.getSelectedRowCount() > 0) { targetRow = patternTable.getSelectedRow(); dm.removeRow(targetRow); } } //}}} private void clearForm() { webRourceName.setText(""); urlPattern.setText(""); props.clear(); } public void doSave() { secElement.element("name").setText(webRourceName.getText()); // clear url-pattern(s) and add items in table secElement.elements("url-pattern").clear(); Vector masterVec = dm.getDataVector(); Iterator itr = masterVec.iterator(); while (itr.hasNext()) { Vector childVec = (Vector) itr.next(); String value = (String) childVec.firstElement(); secElement.addElement("url-pattern").setText(value); } // clear security-role(s) and add selected items secElement.elements("security-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()); secElement.addElement("security-role").setText(item.toString()); } } // 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) { } final JList roleList = new JList(); private JTextField webRourceName; private JTextField urlPattern; private DefaultTableModel dm; private JTable patternTable; private JPanel secPanel; private JScrollPane psp; private Element secElement; private JPopupMenu popmenu; private JMenuItem delEntry; private JMenuItem editEntry; private JButton addItem; private JButton cmdSave; private JButton cmdCancel; private ConfigManager cm; private HashMap props;}class CheckListRenderer extends JCheckBox implements ListCellRenderer { public CheckListRenderer() { setBackground(UIManager.getColor("List.textBackground")); setForeground(UIManager.getColor("List.textForeground")); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) { setEnabled(list.isEnabled()); setSelected(((CheckableItem) value).isSelected()); setFont(list.getFont()); setText(value.toString()); return this; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -