1 19 20 package org.netbeans.modules.editor.options; 21 22 import java.beans.beancontext.BeanContextChild ; 23 import java.beans.beancontext.BeanContext ; 24 import java.beans.beancontext.BeanContextMembershipListener ; 25 import java.beans.beancontext.BeanContextMembershipEvent ; 26 import java.util.Iterator ; 27 import java.util.Arrays ; 28 import org.netbeans.editor.Settings; 29 import org.openide.options.ContextSystemOption; 30 import org.openide.options.SystemOption; 31 32 40 class ContextOptionsListener implements BeanContextMembershipListener { 41 42 43 private static final boolean debug 44 = Boolean.getBoolean("netbeans.debug.editor.options"); 46 49 private static final ContextOptionsListener sharedListener 50 = new ContextOptionsListener(); 51 52 55 static void processExistingAndListen(ContextSystemOption cso) { 56 BeanContextChild bcc = cso.getBeanContextProxy(); 57 58 if (bcc instanceof BeanContext ) { 60 ((BeanContext )bcc).addBeanContextMembershipListener(sharedListener); 61 } 62 63 SystemOption[] sos = cso.getOptions(); 65 if (sos != null) { 66 sharedListener.processInitializers(Arrays.asList(sos).iterator(), false); 67 } 68 } 69 70 private ContextOptionsListener() { 71 } 72 73 public void childrenAdded(BeanContextMembershipEvent bcme) { 74 processInitializers(bcme.iterator(), false); 75 } 76 77 public void childrenRemoved(BeanContextMembershipEvent bcme) { 78 processInitializers(bcme.iterator(), true); 79 } 80 81 private void processInitializers(Iterator it, boolean remove) { 82 while (it.hasNext()) { 83 Object o = it.next(); 84 if (o instanceof OptionSupport) { 85 OptionSupport os = (OptionSupport)o; 86 Settings.Initializer si = os.getSettingsInitializer(); 87 Settings.removeInitializer(si.getName()); 89 if (!remove) { Settings.addInitializer(si, Settings.OPTION_LEVEL); 91 } 92 93 if (debug) { 94 System.err.println((remove ? "Removed" : "Refreshed") + " initializer=" + si.getName()); } 97 } 98 } 99 100 103 Settings.reset(); 104 } 105 106 } 107 | Popular Tags |