1 19 20 package org.netbeans.modules.editor.options; 21 22 import java.beans.IntrospectionException ; 23 import java.util.ArrayList ; 24 import org.netbeans.modules.editor.NbEditorSettingsInitializer; 25 import org.openide.filesystems.FileChangeAdapter; 26 import org.openide.filesystems.FileChangeListener; 27 import org.openide.filesystems.FileEvent; 28 import org.openide.filesystems.FileObject; 29 import org.openide.filesystems.FileUtil; 30 import org.openide.filesystems.Repository; 31 import org.openide.nodes.BeanNode; 32 import org.openide.nodes.FilterNode; 33 import org.openide.nodes.Node; 34 import org.openide.util.HelpCtx; 35 import org.openide.util.NbBundle; 36 37 42 public class AllOptionsNode extends FilterNode { 43 44 private static final String HELP_ID = "editing.global"; 46 47 public AllOptionsNode() throws IntrospectionException { 48 super(new BeanNode(AllOptionsFolder.getDefault()), new EditorSubnodes()); 49 NbEditorSettingsInitializer.init(); 50 } 51 52 53 public String getDisplayName(){ 54 return NbBundle.getMessage(AllOptionsNode.class, "OPTIONS_all"); } 56 57 public String getShortDescription(){ 58 return null; 59 } 60 61 public boolean canDestroy() { 63 return false; 64 } 65 66 public HelpCtx getHelpCtx () { 67 return new HelpCtx (HELP_ID); 68 } 69 70 71 private static class EditorSubnodes extends Children.Keys { 72 73 74 private FileChangeListener moduleRegListener; 75 76 77 EditorSubnodes() { 78 super(); 79 } 80 81 private void mySetKeys() { 82 setKeys(AllOptionsFolder.getDefault().getInstalledOptions()); 83 } 84 85 89 protected void removeNotify () { 90 setKeys(new ArrayList ()); 91 } 92 93 95 protected void addNotify() { 96 mySetKeys(); 97 98 if(moduleRegListener == null) { 100 moduleRegListener = new FileChangeAdapter() { 101 public void fileChanged(FileEvent fe){ 102 mySetKeys(); 103 } 104 }; 105 106 FileObject moduleRegistry = Repository.getDefault().getDefaultFileSystem().findResource("Modules"); 108 if (moduleRegistry !=null){ moduleRegistry.addFileChangeListener( 110 FileUtil.weakFileChangeListener(moduleRegListener, moduleRegistry)); 111 } 112 } 113 } 114 115 116 121 protected Node[] createNodes(Object key) { 122 if(key == null) 123 return null; 124 125 if(!(key instanceof Class )) 126 return null; 127 128 BaseOptions baseOptions 129 = (BaseOptions)BaseOptions.findObject((Class )key, true); 130 131 if (baseOptions == null) return null; 132 133 return new Node[] {baseOptions.getMimeNode().cloneNode()}; 134 } 135 136 } 137 138 } 139 | Popular Tags |