|
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.modules.vcs.advanced.profilesSettings; import java.beans.IntrospectionException; import org.netbeans.modules.vcs.advanced.*; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import java.util.Collection; import java.util.Enumeration; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import org.openide.actions.CopyAction; import org.openide.actions.DeleteAction; import org.openide.nodes.Children; import org.openide.nodes.*; import org.openide.cookies.FilterCookie; import org.openide.filesystems.*; import org.openide.loaders.DataFolder; import org.openide.loaders.DataFilter; import org.openide.util.WeakListener; import org.openide.util.actions.SystemAction; /** Implements children for basic source code patterns * * @author Richard Gregor */ public class VcsSettingsChildren extends Children.Keys implements PropertyChangeListener { private ProfilesFactory factory; private static final String ICON_BASE = "org/netbeans/modules/vcs/advanced/profilesSettings/vcsSettings"; // NOI18N private Comparator profileComparator = new ProfileComparator(); /** Create pattern children. The children are initilay unfiltered. * @param elemrent the atteached class. For this class we recognize the patterns */ public VcsSettingsChildren() { super(); debug("VcsSettingsChildren Init"); factory = ProfilesFactory.getDefault(); // Add factory listener factory.addPropertyChangeListener(WeakListener.propertyChange(this, factory)); } /** Called when the preparation of nodes is needed */ protected void addNotify() { setKeys (getVcsProfiles()); } /** Called when all children are garbage collected */ protected void removeNotify() { setKeys( java.util.Collections.EMPTY_SET ); } /** Creates nodes for given key. */ protected Node[] createNodes( final Object key ) { debug("create nodes"); try { String profileName = (String)key; Profile profile = factory.getProfile(profileName); BeanNode node = new ProfileBeanNode(profile); node.setName(factory.getProfileDisplayName(profileName)); //node.setIconBase(ICON_BASE); return new Node[] { node }; } catch ( IntrospectionException e ) { // No node will be created } return new Node[0]; } private String[] getVcsProfiles() { debug("getVcsProfiles"); String profileNames[] = factory.getProfilesNames(); Arrays.sort(profileNames, profileComparator); return profileNames; } void refreshAll( ) { setKeys ( getVcsProfiles() ); } /** This method gets called when a bound property is changed. * @param evt A PropertyChangeEvent object describing the event source * and the property that has changed. * */ public void propertyChange(PropertyChangeEvent evt) { if(evt.getPropertyName().equals(ProfilesFactory.PROP_PROFILE_ADDED)) setKeys(getVcsProfiles()); else if(evt.getPropertyName().equals(ProfilesFactory.PROP_PROFILE_REMOVED)) setKeys(getVcsProfiles()); } private boolean debug = false; private void debug(String msg){ if(debug) System.err.println("VcsSettingsChildren: "+msg); } private static class ProfileBeanNode extends BeanNode { private Profile profile; public ProfileBeanNode(Profile profile) throws IntrospectionException { super(profile); this.profile = profile; } protected SystemAction[] createActions () { return new SystemAction[] { SystemAction.get(CopyAction.class), null, SystemAction.get(DeleteAction.class) }; } public void destroy() throws java.io.IOException { ProfilesFactory.getDefault().removeProfile(profile.getName()); super.destroy(); } } /** * Compare the profiles according to their display names (if any). */ private static final class ProfileComparator extends Object implements Comparator { public int compare(Object o1, Object o2) { String name1 = (String) o1; String name2 = (String) o2; String displayName1 = ProfilesFactory.getDefault().getProfileDisplayName(name1); String displayName2 = ProfilesFactory.getDefault().getProfileDisplayName(name2); if (displayName1 != null && displayName2 != null) { return displayName1.compareTo(displayName2); } else { return name1.compareTo(name2); } } } } |
... 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.