1 19 20 package org.netbeans.modules.editor.lib2; 21 22 import java.util.Collection ; 23 import java.util.ResourceBundle ; 24 import java.util.logging.Logger ; 25 import javax.swing.Action ; 26 import javax.swing.text.JTextComponent ; 27 import org.netbeans.spi.editor.EditorImplementationProvider; 28 import org.openide.util.Lookup; 29 import org.openide.util.NbBundle; 30 31 43 44 public final class EditorImplementation { 45 46 private static final Logger LOG = Logger.getLogger(EditorImplementation.class.getName()); 47 private static final EditorImplementationProvider DEFAULT = new DefaultImplementationProvider(); 48 49 private static EditorImplementation instance = null; 50 51 private static EditorImplementationProvider externalProvider = null; 52 private Lookup.Result<EditorImplementationProvider> result = null; 53 54 55 public static synchronized EditorImplementation getDefault() { 56 if (instance == null) { 57 instance = new EditorImplementation(); 58 } 59 return instance; 60 } 61 62 67 public void setExternalProvider(EditorImplementationProvider provider) { 68 this.externalProvider = provider; 69 } 70 71 72 public ResourceBundle getResourceBundle(String localizer) { 73 return getProvider().getResourceBundle(localizer); 74 } 75 76 80 public Action [] getGlyphGutterActions(JTextComponent target) { 81 return getProvider().getGlyphGutterActions(target); 82 } 83 84 87 public boolean activateComponent(JTextComponent c) { 88 return getProvider().activateComponent(c); 89 } 90 91 private EditorImplementation() { 92 result = Lookup.getDefault().lookup( 93 new Lookup.Template<EditorImplementationProvider>(EditorImplementationProvider.class)); 94 } 95 96 private EditorImplementationProvider getProvider() { 97 if (externalProvider != null) { 98 return externalProvider; 99 } else { 100 Collection <? extends EditorImplementationProvider> providers = result.allInstances(); 101 if (providers.isEmpty()) { 102 LOG.warning("Can't find any EditorImplementationProvider; using default."); 103 return DEFAULT; 104 } else { 105 return providers.iterator().next(); 106 } 107 } 108 } 109 110 private static final class DefaultImplementationProvider implements EditorImplementationProvider { 111 private static final Action [] NOACTIONS = new Action [0]; 112 113 public ResourceBundle getResourceBundle(String localizer) { 114 return NbBundle.getBundle(localizer); 115 } 116 117 public Action [] getGlyphGutterActions(JTextComponent target) { 118 return NOACTIONS; 119 } 120 121 public boolean activateComponent(JTextComponent c) { 122 return false; 123 } 124 } } 126 | Popular Tags |