|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.beaninfo;
import java.awt.Component;
import java.beans.*;
import javax.swing.*;
import org.openide.ErrorManager;
import org.openide.awt.Actions;
import org.openide.cookies.InstanceCookie;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.propertysheet.editors.EnhancedCustomPropertyEditor;
import org.openide.nodes.Node;
import org.openide.util.*;
import org.openide.util.actions.SystemAction;
import org.netbeans.core.ActionsPoolNode;
/** Custom editor for data loader actions list.
*
* @author Jesse Glick
*/
public class LoaderActionsPanel extends javax.swing.JPanel implements EnhancedCustomPropertyEditor, ListCellRenderer {
private DefaultListModel model;
private ExplorerManager mgr;
/** Creates new form LoaderActionsPanel */
public LoaderActionsPanel (PropertyEditor pe) {
initComponents ();
model = new DefaultListModel ();
SystemAction[] actions = (SystemAction[]) pe.getValue ();
if (actions == null) actions = new SystemAction[] { };
for (int i = 0; i < actions.length; i++)
model.addElement (actions[i]);
list.setModel (model);
mgr = explorerPanel.getExplorerManager ();
mgr.setRootContext (new ActionsPoolNode ());
mgr.addPropertyChangeListener (new PropertyChangeListener () {
public void propertyChange (PropertyChangeEvent ev) {
if (ExplorerManager.PROP_SELECTED_NODES.equals (ev.getPropertyName ())) {
SystemAction action = findAction (mgr.getSelectedNodes ());
addButton.setEnabled (action != null);
}
}
});
// bugfix #39369: remove help button in Action dialog property editor
//HelpCtx.setHelpIDString (this, LoaderActionsPanel.class.getName ());
// Form Editor does not permit you to set this, because
// it has both int and double params:
splitPane.setDividerLocation (300);
java.util.ResourceBundle bundle = NbBundle.getBundle(LoaderActionsPanel.class);
addButton.setMnemonic(bundle.getString("LoaderActionsPanel.jButton1.mnemonic").charAt(0));
separatorButton.setMnemonic(bundle.getString("LoaderActionsPanel.jButton2.mnemonic").charAt(0));
removeButton.setMnemonic(bundle.getString("LoaderActionsPanel.jButton3.mnemonic").charAt(0));
upButton.setMnemonic(bundle.getString("LoaderActionsPanel.jButton4.mnemonic").charAt(0));
downButton.setMnemonic(bundle.getString("LoaderActionsPanel.jButton5.mnemonic").charAt(0));
beanTreeView2.getAccessibleContext().setAccessibleName(bundle.getString("ACS_LoaderActionsPanel.beanTreeView"));
beanTreeView2.getAccessibleContext().setAccessibleDescription(bundle.getString("ACSD_LoaderActionsPanel.beanTreeView"));
list.getAccessibleContext().setAccessibleName(bundle.getString("ACS_LoaderActionsPanel.list"));
list.getAccessibleContext().setAccessibleDescription(bundle.getString("ACSD_LoaderActionsPanel.list"));
getAccessibleContext().setAccessibleDescription(bundle.getString("ACSD_LoaderActionsPanel"));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the FormEditor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
java.awt.GridBagConstraints gridBagConstraints;
splitPane = new javax.swing.JSplitPane();
explorerPanel = new org.openide.explorer.ExplorerPanel();
beanTreeView2 = new org.openide.explorer.view.BeanTreeView();
jScrollPane1 = new javax.swing.JScrollPane();
list = new javax.swing.JList();
jPanel2 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
addButton = new javax.swing.JButton();
separatorButton = new javax.swing.JButton();
removeButton = new javax.swing.JButton();
upButton = new javax.swing.JButton();
downButton = new javax.swing.JButton();
setLayout(new java.awt.BorderLayout(11, 0));
setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(12, 12, 0, 11)));
setPreferredSize(new java.awt.Dimension(600, 500));
splitPane.setLastDividerLocation(300);
beanTreeView2.setDefaultActionAllowed(false);
beanTreeView2.setPopupAllowed(false);
explorerPanel.add(beanTreeView2, java.awt.BorderLayout.CENTER);
splitPane.setLeftComponent(explorerPanel);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(this);
list.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
listFocusGained(evt);
}
});
list.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
listValueChanged(evt);
}
});
jScrollPane1.setViewportView(list);
splitPane.setRightComponent(jScrollPane1);
add(splitPane, java.awt.BorderLayout.CENTER);
jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 0));
jPanel1.setLayout(new java.awt.GridBagLayout());
addButton.setToolTipText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton1.toolTipText"));
addButton.setText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton1.text"));
addButton.setEnabled(false);
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
jPanel1.add(addButton, gridBagConstraints);
separatorButton.setToolTipText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton2.toolTipText"));
separatorButton.setText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton2.text"));
separatorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
separatorButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
jPanel1.add(separatorButton, gridBagConstraints);
removeButton.setToolTipText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton3.toolTipText"));
removeButton.setText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton3.text"));
removeButton.setEnabled(false);
removeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
jPanel1.add(removeButton, gridBagConstraints);
upButton.setToolTipText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton4.toolTipText"));
upButton.setText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton4.text"));
upButton.setEnabled(false);
upButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
upButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
jPanel1.add(upButton, gridBagConstraints);
downButton.setToolTipText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton5.toolTipText"));
downButton.setText(java.util.ResourceBundle.getBundle("org/netbeans/beaninfo/Bundle").getString("LoaderActionsPanel.jButton5.text"));
downButton.setEnabled(false);
downButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
downButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
jPanel1.add(downButton, gridBagConstraints);
jPanel2.add(jPanel1);
add(jPanel2, java.awt.BorderLayout.EAST);
}//GEN-END:initComponents
private void listFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_listFocusGained
// Add your handling code here:
if (list.getSelectedIndex() == -1 && list.getModel().getSize() > 0) {
list.setSelectedIndex(0);
}
}//GEN-LAST:event_listFocusGained
private void listValueChanged (javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_listValueChanged
int index = list.getSelectedIndex ();
if (index == -1) {
downButton.setEnabled (false);
upButton.setEnabled (false);
removeButton.setEnabled (false);
} else {
// [PENDING] remove button enabled after removing last action
// but it is harmless to press it
removeButton.setEnabled (true);
downButton.setEnabled (index != model.getSize () - 1);
upButton.setEnabled (index != 0);
}
}//GEN-LAST:event_listValueChanged
private void downButtonActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downButtonActionPerformed
int index = list.getSelectedIndex ();
if (index == -1 || index == model.getSize () - 1) return;
Object temp = model.elementAt (index);
model.setElementAt (model.elementAt (index + 1), index);
model.setElementAt (temp, index + 1);
list.setSelectedIndex (index + 1);
}//GEN-LAST:event_downButtonActionPerformed
private void upButtonActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upButtonActionPerformed
int index = list.getSelectedIndex ();
if (index == -1 || index == 0) return;
Object temp = model.elementAt (index);
model.setElementAt (model.elementAt (index - 1), index);
model.setElementAt (temp, index - 1);
list.setSelectedIndex (index - 1);
}//GEN-LAST:event_upButtonActionPerformed
private void removeButtonActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed
int index = list.getSelectedIndex ();
if (index == -1) return;
model.remove (index);
if (model.getSize () == 0)
list.setSelectedIndices (new int[] { });
else
list.setSelectedIndex (Math.min (index, model.getSize () - 1));
}//GEN-LAST:event_removeButtonActionPerformed
private void separatorButtonActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_separatorButtonActionPerformed
model.addElement (null);
list.setSelectedIndex (model.getSize () - 1);
}//GEN-LAST:event_separatorButtonActionPerformed
private void addButtonActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed
Node[] nodes = mgr.getSelectedNodes ();
SystemAction action = findAction (nodes);
if (action != null) model.addElement (action);
list.setSelectedIndex (model.getSize () - 1);
}//GEN-LAST:event_addButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton addButton;
private org.openide.explorer.view.BeanTreeView beanTreeView2;
private javax.swing.JButton downButton;
private org.openide.explorer.ExplorerPanel explorerPanel;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JList list;
private javax.swing.JButton removeButton;
private javax.swing.JButton separatorButton;
private javax.swing.JSplitPane splitPane;
private javax.swing.JButton upButton;
// End of variables declaration//GEN-END:variables
/** Try to find a system action instance among a set of nodes. */
private static SystemAction findAction (Node[] nodes) {
if (nodes == null || nodes.length == 0 || nodes.length > 1) return null;
InstanceCookie inst = (InstanceCookie) nodes[0].getCookie (InstanceCookie.class);
if (inst == null) return null;
try {
Class clazz = inst.instanceClass ();
if (! SystemAction.class.isAssignableFrom (clazz)) return null;
return (SystemAction) inst.instanceCreate ();
} catch (Exception e) {
org.openide.ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
return null;
}
}
/** Get the customized property value.
* @return the property value
* @exception InvalidStateException when the custom property editor does not contain a valid property value
* (and thus it should not be set)
*/
public Object getPropertyValue() throws IllegalStateException {
SystemAction[] actions = new SystemAction[model.getSize ()];
model.copyInto (actions);
return actions;
}
/** Return a component that has been configured to display the specified
* value. That component's
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.