?? processeditpane.java
字號:
package com.sutternow.swingkar.gui;import javax.swing.*;import javax.swing.event.ListSelectionListener;import javax.swing.event.ListSelectionEvent;import javax.swing.table.AbstractTableModel;import javax.swing.table.DefaultTableModel;import java.awt.event.*;import java.awt.*;import java.util.*;import java.util.List;import java.io.StringWriter;import org.dom4j.Element;import org.dom4j.DocumentHelper;import org.dom4j.DocumentException;import com.javanovic.karapansapi.xml.*;import com.javanovic.karapansapi.xml.Process;import net.sf.easylayouts.*;import com.gargoylesoftware.base.gui.TableLayout;import com.gargoylesoftware.base.gui.TableLayoutConstraints;import com.sutternow.swingkar.ConfigManager;/** * Created by IntelliJ IDEA. * User: Matthew Payne * Date: May 18, 2003 * Time: 1:01:50 AM * */// todo delete "page"public class ProcessEditPane implements SimpleForm, ActionListener, MouseListener { public String Title = "Proces Properties"; public ProcessEditPane(ConfigManager _cm) { cm = _cm; props = new LinkedHashMap(); beanPanel = this.createPanel(); process = new Process(); } public String getTitle() { return Title; } public JPanel getEditForm() { return beanPanel; } private JPanel createPanel() { final JPanel panel = new JPanel(); RowLayout rowLayout = new RowLayout(panel, 1, 25); final TableLayout layout = new TableLayout(); JPanel topPanel = new JPanel(layout); layout.setMinimumColumnWidth(1,90); topPanel.add(new JLabel("Process Name:"), "1,1"); processName = new JTextField(10); topPanel.add(processName, "1,2"); topPanel.add(new JLabel("Success Path:"), "2,1"); successPath = new JTextField(10); topPanel.add(successPath, "2,2"); topPanel.add(new JLabel("Cancel Path:"), "3,1"); cancelPath = new JTextField(10); topPanel.add(cancelPath, "3,2"); layout.setMinimumColumnWidth(1, 100); rowLayout.add(topPanel, 1); // page title/field, additional forwards--> forward/path pageTitle = new JTextField(20); cmdAddPage = new JButton("Add Page"); cmdAddPage.addActionListener(this); rowLayout.add(new JLabel("Pages:"), 4); rowLayout.add(cmdAddPage, 4); pageList = new JList(); JScrollPane psp = new JScrollPane(pageList); pageList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); psp.setMinimumSize(new Dimension(40, 50)); psp.setMaximumSize(new Dimension(190, 260)); psp.setPreferredSize(new Dimension(190, 260)); rowLayout.add(psp, 5); pagePopup = new JPopupMenu(); delPage = new JMenuItem("Delete Page"); pageList.add(pagePopup); pagePopup.add(delPage); delPage.addActionListener(this); TableLayout detailLayout = new TableLayout(); JPanel pageDetailPanel = new JPanel(detailLayout); cmdAddField = new JButton("Add Field"); cmdAddField.addActionListener(this); tableFieldPicker = new JComboBox(); cboField = new JComboBox(); pageDetailPanel.setBorder(BorderFactory.createTitledBorder("Page Details")); pageDetailPanel.add(cboField, "1,1"); pageDetailPanel.add(cmdAddField, "1,2"); pageDetailPanel.add(new JLabel("Forwards:"), "1,3"); fieldsTable = new JTable(); fieldsTable.addMouseListener(this); fieldPopup = new JPopupMenu(); delField = new JMenuItem("Delete"); delField.addActionListener(this); fieldPopup.add(delField); pageList.addMouseListener(new MouseAdapter() { public void handleMouseEvent(MouseEvent evt) { if (evt.isPopupTrigger()) { if (pagePopup.isVisible()) { pagePopup.setVisible(false); } else { pagePopup.show((Component) evt.getSource(), evt.getX(), evt.getY()); } } } public void mouseReleased(MouseEvent evt) { handleMouseEvent(evt); } }); pageList.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if (pageList.getSelectedIndex() >= 0) { Page page = process.getPage(pageList.getSelectedIndex()); fieldsTable.setModel(new FieldTableModel(page)); fieldsTable.getColumn("Fields").setCellEditor(new DefaultCellEditor(tableFieldPicker)); forwardsTable.setModel(new ForwardTableModel(page)); } } }); JScrollPane fsp = new JScrollPane(fieldsTable); fieldsTable.add(fieldPopup); fsp.setMinimumSize(new Dimension(90, 80)); fsp.setMaximumSize(new Dimension(190, 230)); fsp.setPreferredSize(new Dimension(190, 220)); pageDetailPanel.add(fsp, "2,1+2"); forwardsTable = new JTable(); JScrollPane fwdScrollPane = new JScrollPane(forwardsTable); fwdScrollPane.setMinimumSize(new Dimension(90, 80)); fwdScrollPane.setMaximumSize(new Dimension(220, 230)); fwdScrollPane.setPreferredSize(new Dimension(220, 220)); TableLayoutConstraints constraints = new TableLayoutConstraints(2,3); constraints.setVerticalAlignment(TableLayout.TOP); pageDetailPanel.add(fwdScrollPane, constraints); rowLayout.add(pageDetailPanel, 5); /* cmdSave = new JButton("Save"); cmdCancel = new JButton("Cancel"); cmdSave.addActionListener(this); cmdCancel.addActionListener(this); rowLayout.add(cmdSave, 7); rowLayout.add(cmdCancel, 7);*/ return panel; } public void setValues(Element beanCfg) { System.out.println("Setting bean values"); this.clearForm(); try { process = Process.unmarshal(new java.io.StringReader(beanCfg.asXML())); } catch (org.exolab.castor.xml.MarshalException e) { e.printStackTrace(); //To change body of catch statement use Options | File Templates. } catch (org.exolab.castor.xml.ValidationException e) { e.printStackTrace(); //To change body of catch statement use Options | File Templates. } String relPath = beanCfg.getUniquePath(); processProps = beanCfg; processName.setText(process.getName()); successPath.setText(process.getSuccessPath()); cancelPath.setText(process.getCancelPath()); this.fillPages(process); tableFieldPicker.removeAllItems(); cboField.removeAllItems(); List choices = beanCfg.selectNodes(relPath + "/../*[name()='primary-key' or name()='attribute']/column"); for (Iterator iter = choices.listIterator(); iter.hasNext();) { Element element = (Element) iter.next(); tableFieldPicker.addItem(element.elementText("name")); cboField.addItem(element.elementText("name")); } } private void fillPages(Process _process) { javax.swing.DefaultListModel model = new javax.swing.DefaultListModel(); pageList.setModel(model); int n = _process.getPageCount(); Page[] pages = _process.getPage(); for (int i = 0; i < n; i++) { Page page = pages[i]; model.add(i, page.getTitle()); } if (_process.getPageCount() > 0) { fieldsTable.setModel(new FieldTableModel(_process.getPage(0))); } } public void actionPerformed(ActionEvent ae) { Object src = ae.getSource(); if (src == cmdAddPage) { String title = JOptionPane.showInputDialog("Title of Page to Add"); if (title != null) { Page page = new Page(); page.setTitle(title); process.addPage(page); //pageTitle.setText(""); this.fillPages(process); } else System.out.println("Page title cannot be empty"); } else if (src == delField) { ftm = (FieldTableModel) fieldsTable.getModel(); String fieldName = (String) ftm.getValueAt(fieldsTable.getSelectedRow(), 0); ftm.deleteField(fieldName); ftm.requestRefresh(); } else if (src == delPage) { int pageIdx= pageList.getSelectedIndex(); Page page = process.getPage(pageIdx); process.removePage(page); this.fillPages(process); } else if (src == cmdAddField) { String fieldName = (String)cboField.getSelectedItem(); ftm = (FieldTableModel) fieldsTable.getModel(); ftm.addField(fieldName); ftm.requestRefresh(); } } private void clearForm() { /* Set values to defaults */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -