|
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-2004 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.spi.java.project.support.ui; import java.awt.Component; import java.awt.Image; import java.awt.Panel; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.ArrayList; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; import org.netbeans.api.project.SourceGroup; import org.netbeans.spi.project.ui.support.CommonProjectActions; import org.openide.ErrorManager; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.loaders.DataFolder; import org.openide.loaders.DataObject; import org.openide.nodes.AbstractNode; import org.openide.nodes.Node; import org.openide.nodes.NodeNotFoundException; import org.openide.nodes.NodeOp; import org.openide.util.Lookup; import org.openide.util.Utilities; import org.openide.util.datatransfer.ExTransferable; import org.openide.util.datatransfer.MultiTransferObject; import org.openide.util.lookup.AbstractLookup; import org.openide.util.lookup.InstanceContent; import org.openide.util.lookup.Lookups; import org.openide.util.lookup.ProxyLookup; import org.openidex.search.SearchInfo; import org.openidex.search.SearchInfoFactory; /** Node displaying a packages in given SourceGroup * @author Petr Hrebejk */ final class PackageRootNode extends AbstractNode { private static Image PACKAGE_BADGE = Utilities.loadImage( "org/netbeans/spi/java/project/support/ui/packageBadge.gif" ); // NOI18N private static Action actions[]; private SourceGroup group; PackageRootNode( SourceGroup group ) { this( group, new InstanceContent() ); } private PackageRootNode( SourceGroup group, InstanceContent ic ) { super( new PackageViewChildren( group.getRootFolder() ), new ProxyLookup( new Lookup[] { createLookup ( group ), new AbstractLookup( ic )} ) ); ic.add(alwaysSearchableSearchInfo(SearchInfoFactory.createSearchInfoBySubnodes(this))); this.group = group; setName( group.getName() ); setDisplayName( group.getDisplayName() ); // setIconBase("org/netbeans/modules/java/j2seproject/ui/resources/packageRoot"); } public Image getIcon( int type ) { return computeIcon( false, type ); } public Image getOpenedIcon( int type ) { return computeIcon( true, type ); } public Action[] getActions( boolean context ) { if ( actions == null ) { actions = new Action[] { CommonProjectActions.newFileAction(), null, org.openide.util.actions.SystemAction.get( org.openide.actions.FindAction.class ), null, org.openide.util.actions.SystemAction.get( org.openide.actions.PasteAction.class ), null, org.openide.util.actions.SystemAction.get( org.openide.actions.ToolsAction.class ), }; } return actions; } // Show properties of the DataFolder public PropertySet[] getPropertySets() { return getDataFolderNodeDelegate().getPropertySets(); } // XXX Paste types - probably not very nice public void createPasteTypes( Transferable t, List list ) { if (t.isDataFlavorSupported(ExTransferable.multiFlavor)) { try { MultiTransferObject mto = (MultiTransferObject) t.getTransferData (ExTransferable.multiFlavor); List l = new ArrayList (); boolean isPackageFlavor = false; boolean hasTheSameRoot = false; int op = -1; for (int i=0; i < mto.getCount(); i++) { Transferable pt = mto.getTransferableAt(i); DataFlavor[] flavors = mto.getTransferDataFlavors(i); for (int j=0; j< flavors.length; j++) { if (PackageViewChildren.SUBTYPE.equals(flavors[j].getSubType ()) && PackageViewChildren.PRIMARY_TYPE.equals(flavors[j].getPrimaryType ())) { if (op == -1) { op = Integer.valueOf (flavors[j].getParameter (PackageViewChildren.MASK)).intValue (); } PackageViewChildren.PackageNode pkgNode = (PackageViewChildren.PackageNode) pt.getTransferData(flavors[j]); if ( !((PackageViewChildren)getChildren()).getRoot().equals( pkgNode.getRoot() ) ) { l.add(pkgNode); } else { hasTheSameRoot = true; } isPackageFlavor = true; } } } if (isPackageFlavor && !hasTheSameRoot) { list.add (new PackageViewChildren.PackagePasteType (this.group.getRootFolder(), (PackageViewChildren.PackageNode[]) l.toArray(new PackageViewChildren.PackageNode[l.size()]), op)); } else if (!isPackageFlavor) { list.addAll( Arrays.asList( getDataFolderNodeDelegate().getPasteTypes( t ) ) ); } } catch (UnsupportedFlavorException e) { ErrorManager.getDefault().notify(e); } catch (IOException e) { ErrorManager.getDefault().notify(e); } } else { DataFlavor[] flavors = t.getTransferDataFlavors(); FileObject root = this.group.getRootFolder(); boolean isPackageFlavor = false; if (root!= null && root.canWrite()) { 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.