|
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-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.project.libraries.ui; import org.netbeans.modules.project.libraries.LibraryTypeRegistry; import org.netbeans.spi.project.libraries.LibraryImplementation; import org.netbeans.spi.project.libraries.LibraryTypeProvider; import org.openide.DialogDisplayer; import org.openide.DialogDescriptor; import org.openide.ErrorManager; import org.openide.NotifyDescriptor; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import javax.swing.event.*; import javax.swing.*; import java.beans.Customizer; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyVetoException; import java.beans.VetoableChangeListener; import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.ResourceBundle; import java.util.MissingResourceException; import org.openide.explorer.ExplorerManager; import org.openide.explorer.view.BeanTreeView; import org.openide.filesystems.Repository; import org.openide.loaders.DataFolder; import org.openide.nodes.AbstractNode; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.nodes.NodeNotFoundException; import org.openide.nodes.NodeOp; /** * * @author tom */ public final class LibrariesCustomizer extends javax.swing.JPanel implements ExplorerManager.Provider, HelpCtx.Provider { private static final Dimension PREFERRED_SIZE = new Dimension (720,400); private ExplorerManager manager; private LibrariesModel model; private BeanTreeView libraries; /** Creates new form LibrariesCustomizer */ public LibrariesCustomizer () { this.model = new LibrariesModel (); initComponents(); postInitComponents (); } public void setSelectedLibrary (LibraryImplementation library) { if (library == null) return; ExplorerManager manager = this.getExplorerManager(); Node root = manager.getRootContext(); String[] path = new String[2]; path[0]=library.getType(); path[1]=library.getName(); try { Node node = NodeOp.findPath(root, path); if (node != null) { manager.setSelectedNodes(new Node[] {node}); } } catch (NodeNotFoundException e) { //Ignore it } catch (PropertyVetoException e) { //Ignore it } } public HelpCtx getHelpCtx() { return new HelpCtx( LibrariesCustomizer.class ); } public boolean apply () { try { this.model.apply(); return true; } catch (IOException ioe) { ErrorManager.getDefault().notify(ioe); return false; } } public void cancel () { this.model.cancel(); } public void addNotify() { super.addNotify(); expandAllNodes(this.libraries,this.getExplorerManager().getRootContext()); //Select first library if nothing selected if (this.getExplorerManager().getSelectedNodes().length == 0) { Node root = this.getExplorerManager().getRootContext(); Node[] nodes = root.getChildren().getNodes (true); for (int i = 0; i< nodes.length; i++) { Node[] lnodes = nodes[i].getChildren().getNodes(true); if (lnodes.length > 0) { try { this.getExplorerManager().setSelectedNodes(new Node[] {lnodes[0]}); } catch (PropertyVetoException e) { //Ignore it } break; } } } this.libraries.requestFocus(); } public Dimension getPreferredSize () { return PREFERRED_SIZE; } public ExplorerManager getExplorerManager () { if (this.manager == null) { this.manager = new ExplorerManager (); this.manager.addPropertyChangeListener (new PropertyChangeListener() { public void propertyChange (PropertyChangeEvent event) { if (ExplorerManager.PROP_SELECTED_NODES.equals(event.getPropertyName())) { Node[] nodes = (Node[]) event.getNewValue (); selectLibrary(nodes); libraries.requestFocus(); } } }); this.manager.addVetoableChangeListener(new VetoableChangeListener() { public void vetoableChange(PropertyChangeEvent event) throws PropertyVetoException { if (ExplorerManager.PROP_SELECTED_NODES.equals(event.getPropertyName())) { Node[] nodes = (Node[]) event.getNewValue(); if (nodes.length <=1) { return; } else { throw new PropertyVetoException ("Invalid length", event); //NOI18N } } } }); this.manager.setRootContext (buildTree(this.model)); } return this.manager; } private void postInitComponents () { this.libraries = new LibrariesView (); GridBagConstraints c = new GridBagConstraints (); c.gridx = GridBagConstraints.RELATIVE; c.gridy = GridBagConstraints.RELATIVE; c.gridwidth = GridBagConstraints.REMAINDER; c.gridheight = GridBagConstraints.REMAINDER; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.NORTHWEST; c.weightx = 1.0; c.weighty = 1.0; ((GridBagLayout)this.libsPanel.getLayout()).setConstraints(this.libraries,c); this.libsPanel.add(this.libraries); this.libraryName.setColumns(25); this.libraryName.setEnabled(false); this.libraryName.addActionListener( new ActionListener () { public void actionPerformed(ActionEvent e) { nameChanged(); } }); } private void nameChanged () { Node[] nodes = this.getExplorerManager().getSelectedNodes(); if (nodes.length == 1 && (nodes[0] instanceof LibraryNode)) { LibraryNode node = (LibraryNode) nodes[0]; String newName = this.libraryName.getText(); if (newName.length () == 0) { DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message ( NbBundle.getMessage(LibrariesCustomizer.class, "ERR_InvalidName"), NotifyDescriptor.ERROR_MESSAGE)); } else if (isValidName (this.model, newName)) { node.getLibrary().setName(newName); } else { DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message ( MessageFormat.format(NbBundle.getMessage(LibrariesCustomizer.class, "ERR_ExistingName"), new Object[] {newName}), NotifyDescriptor.ERROR_MESSAGE)); } } } private void selectLibrary (Node[] nodes) { int tabCount = this.properties.getTabCount(); for (int i=0; i |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 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.