arcgissamples\editing\EventsPane.java
/* Copyright 2010 ESRI * * All rights reserved under the copyright laws of the United States * and applicable international laws, treaties, and conventions. * * You may freely redistribute and use this sample code, with or * without modification, provided you include the original copyright * notice and use restrictions. * * See the use restrictions. * */ package arcgissamples.editing; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Comparator; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextPane; import com.esri.arcgis.controls.EngineEditor; import com.esri.arcgis.controls.IEngineEditEvents; public class EventsPane extends JTabbedPane implements ActionListener { private EngineEditor editor; public EventsPane() { super(); initializeUI(); try{ editor = new EngineEditor(); //Register the sample's event listener final EditEventsListener listener = new EditEventsListener(this); editor.addIEngineEditEventsListener(listener); //Add checkboxes for each Editing event Method[] events = IEngineEditEvents.class.getMethods(); //Sort the array based on event names Arrays.sort(events, new Comparator<Method>(){ public int compare(Method o1, Method o2) { return o1.getName().compareTo(o2.getName()); } }); //For each event, add a checkbox to the UI for (final Method event : events) { final JCheckBox chkBox = new JCheckBox(event.getName()); getPanelInput().add(chkBox); //Update the event listener whenever the user selects or clears the checkbox chkBox.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) { listener.update(event.getName(),chkBox.isSelected()); } }); } }catch(Exception ex){ ex.printStackTrace(); } } //respond to user actions public void actionPerformed(ActionEvent e) { if(e.getSource()==btnClearOutput){ //Clear the output getTextOutput().setText(""); }else if(e.getSource()==btnClearAll){ //Clear the output getTextOutput().setText(""); //Clear all event checkboxes for(int i=0;i<getPanelInput().getComponentCount();i++){ Component comp = getPanelInput().getComponent(i); if(comp instanceof JCheckBox){ ((JCheckBox)comp).setSelected(false); } } }else if(e.getSource()==btnSelectAll){ //Select all event checkboxes for(int i=0;i<getPanelInput().getComponentCount();i++){ Component comp = getPanelInput().getComponent(i); if(comp instanceof JCheckBox){ ((JCheckBox)comp).setSelected(true); } } } } private void initializeUI() { this.setSize(300, 200); this.addTab("Output", null, getScrollOutput(), null); this.addTab("Select Events", null, getScrollInput(), null); } private JScrollPane getScrollOutput() { if (scrollOutput == null) { scrollOutput = new JScrollPane(); scrollOutput.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollOutput.setViewportView(getPanelOutput()); } return scrollOutput; } private JScrollPane getScrollInput() { if (scrollInput == null) { scrollInput = new JScrollPane(); scrollInput.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollInput.setViewportView(getPanelInput()); } return scrollInput; } public JTextPane getTextOutput() { if (textOutput == null) { textOutput = new JTextPane(); textOutput.setEditable(false); } return textOutput; } private JPanel getPanelInput() { if (panelInput == null) { GridLayout gridLayout = new GridLayout(); gridLayout.setRows(23); gridLayout.setColumns(1); panelInput = new JPanel(); panelInput.setLayout(gridLayout); panelInput.add(getPanelInputButtons(), null); /* JPanel buttonPanel = new JPanel(); gridLayout.setRows(1); gridLayout.setColumns(2); buttonPanel.setLayout(gridLayout); */ } return panelInput; } /** * This method initializes panelInputButtons * * @return javax.swing.JPanel */ private JPanel getPanelInputButtons() { if (panelInputButtons == null) { GridLayout gridLayout1 = new GridLayout(); gridLayout1.setRows(1); gridLayout1.setHgap(2); gridLayout1.setColumns(2); panelInputButtons = new JPanel(); panelInputButtons.setLayout(gridLayout1); panelInputButtons.add(getBtnSelectAll(), null); panelInputButtons.add(getBtnClearAll(), null); } return panelInputButtons; } /** * This method initializes btnSelectAll * * @return javax.swing.JButton */ private JButton getBtnSelectAll() { if (btnSelectAll == null) { btnSelectAll = new JButton(); btnSelectAll.setText("Select All"); btnSelectAll.addActionListener(this); } return btnSelectAll; } /** * This method initializes btnClearAll * * @return javax.swing.JButton */ private JButton getBtnClearAll() { if (btnClearAll == null) { btnClearAll = new JButton(); btnClearAll.setText("Clear All"); btnClearAll.addActionListener(this); } return btnClearAll; } /** * This method initializes panelOutput * * @return javax.swing.JPanel */ private JPanel getPanelOutput() { if (panelOutput == null) { GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.fill = GridBagConstraints.BOTH; gridBagConstraints1.gridy = 1; gridBagConstraints1.ipadx = 58; gridBagConstraints1.ipady = 4; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.weighty = 1.0; gridBagConstraints1.gridx = 0; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridheight = 1; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.gridy = 0; panelOutput = new JPanel(); panelOutput.setLayout(new GridBagLayout()); panelOutput.add(getBtnClearOutput(), gridBagConstraints); panelOutput.add(getTextOutput(), gridBagConstraints1); } return panelOutput; } /** * This method initializes btnClear * * @return javax.swing.JButton */ private JButton getBtnClearOutput() { if (btnClearOutput == null) { btnClearOutput = new JButton(); btnClearOutput.setText("Clear Output"); btnClearOutput.addActionListener(this); } return btnClearOutput; } private static final long serialVersionUID = 1L; private JScrollPane scrollOutput = null; private JScrollPane scrollInput = null; private JTextPane textOutput = null; private JPanel panelInput = null; private JPanel panelInputButtons = null; private JButton btnSelectAll = null; private JButton btnClearAll = null; private JPanel panelOutput = null; private JButton btnClearOutput = null; }