private static boolean canRevert(Node[] nodes) { if (nodes == null) { return false; } boolean can = false; for (Node node : nodes) { FileObject fo = node.getLookup().lookup(FileObject.class); if (fo != null && fo.canRevert()) { can = true; } else { return false; } } return can; }
/** Test if the file physically exists on disk and thus was created by user and can be renamed. */ private static boolean isUserFile(FileObject fo) { // A layer-defined folder with a user-added file (or subfolder) should not be renamable: for (FileObject child : fo.getChildren()) { if (!isUserFile(child)) { return false; } } return fo.canRevert(); }
@Override public void propertyChange (java.beans.PropertyChangeEvent evt) { if (ExplorerManager.PROP_SELECTED_NODES.equals (evt.getPropertyName ())) { Node [] nodes = (Node []) evt.getNewValue (); boolean res = nodes != null && nodes.length > 0; int i = 0; while (res && i < nodes.length) { Node n = nodes [i]; EditCookie ec = n.getLookup().lookup(EditCookie.class); OpenCookie oc = n.getLookup().lookup(OpenCookie.class); res = ec != null || oc != null; // 65037: Template Manager should not offer to Open in Editor an empty pseudotemplate if (res) { DataObject dobj = n.getLookup().lookup(DataObject.class); assert dobj != null : "DataObject for node " + n; FileObject fo = dobj.getPrimaryFile (); res = fo.canRevert() || fo.getSize () > 0; } i++; } b.setEnabled (res); } } }
private static boolean isDuplicateEnabled(Node[] nodes) { // It has not much sense to duplicate non-editable templates. // Thus using the same condition: if (nodes != null && nodes.length == 1 && nodes [0].isLeaf ()) { Node n = nodes[0]; DataObject dobj = n.getLookup().lookup(DataObject.class); assert dobj != null : "DataObject for node " + n; FileObject fo = dobj.getPrimaryFile (); return fo.canRevert() || fo.getSize () > 0; } else { return false; } }