1 19 20 package org.netbeans.modules.editor.options; 21 22 import java.beans.PropertyChangeListener ; 23 import java.beans.PropertyChangeSupport ; 24 import java.util.HashMap ; 25 import java.util.Hashtable ; 26 import java.util.Map ; 27 28 import org.openide.cookies.InstanceCookie; 29 import org.openide.filesystems.Repository; 30 import org.openide.loaders.DataFolder; 31 import org.openide.loaders.DataObject; 32 import org.openide.util.TaskListener; 33 34 35 53 public class InstalledOptionsFolder extends org.openide.loaders.FolderInstance 54 implements TaskListener{ 55 56 57 public static final String FOLDER = "Editors/Options/Installed"; 59 private static Map globalMPFolder = new HashMap (); 60 61 62 private static InstalledOptionsFolder settingsFolder; 63 64 65 private static Map installedOptions = new Hashtable (); 66 67 private static PropertyChangeSupport propertySupport; 68 69 public static final String INSTALLED_OPTIONS = "installedOptions"; 71 private static Map installedOld = new HashMap (); 72 73 74 private InstalledOptionsFolder(DataFolder fld) { 75 super(fld); 76 propertySupport = new PropertyChangeSupport ( this ); 77 addTaskListener(this); 78 recreate(); 79 } 80 81 82 public static synchronized InstalledOptionsFolder getDefault(){ 83 if (settingsFolder!=null) return settingsFolder; 84 85 org.openide.filesystems.FileObject f = Repository.getDefault().getDefaultFileSystem(). 86 findResource(FOLDER); 87 if (f==null) return null; 88 89 DataFolder df = DataFolder.findFolder(f); 90 if (df != null){ 91 if (settingsFolder == null){ 92 settingsFolder = new InstalledOptionsFolder(df); 93 return settingsFolder; 94 } 95 } 96 return null; 97 } 98 99 102 protected Object createInstance(InstanceCookie[] cookies) 103 throws java.io.IOException , ClassNotFoundException { 104 for (int i = 0; i < cookies.length; i++) { 105 System.out.println("installing:"+cookies[i].instanceName()); if (!installedOptions.containsKey(cookies[i].instanceName())){ 107 Object instance = cookies[i].instanceCreate(); 108 if (!(instance instanceof BaseOptions)){ 109 System.out.println("it is not instance of BO !!!"); continue; 111 } 112 BaseOptions bop = (BaseOptions) instance; 113 System.out.println("installed"); installedOptions.put(bop.getKitClass(), bop); 115 } 116 } 117 return null; 118 } 119 120 121 public void addPropertyChangeListener(PropertyChangeListener listener) { 122 propertySupport.addPropertyChangeListener(listener); 123 } 124 125 126 public void removePropertyChangeListener(PropertyChangeListener listener) { 127 propertySupport.removePropertyChangeListener(listener); 128 } 129 130 131 public void taskFinished(org.openide.util.Task task) { 132 propertySupport.firePropertyChange(INSTALLED_OPTIONS, installedOld, installedOptions); 133 installedOld.putAll(installedOptions); 134 } 135 136 } 137 | Popular Tags |