1 19 20 package org.netbeans.modules.editor.fold; 21 22 import java.lang.reflect.Constructor ; 23 import java.util.Collections ; 24 import java.util.List ; 25 import org.netbeans.api.editor.fold.FoldHierarchy; 26 import org.openide.ErrorManager; 27 28 43 44 public abstract class FoldManagerFactoryProvider { 45 46 private static FoldManagerFactoryProvider defaultProvider; 47 48 private static FoldManagerFactoryProvider emptyProvider; 49 50 private static boolean forceCustom; 51 52 58 public static synchronized FoldManagerFactoryProvider getDefault() { 59 if (defaultProvider == null) { 60 defaultProvider = findDefault(); 61 } 62 63 return defaultProvider; 64 } 65 66 72 public static FoldManagerFactoryProvider getEmpty() { 73 if (emptyProvider == null) { 74 emptyProvider = new EmptyProvider(); 77 } 78 return emptyProvider; 79 } 80 81 90 public static synchronized void setForceCustomProvider(boolean forceCustomProvider) { 91 if (!forceCustom) { 92 defaultProvider = null; 93 } 94 forceCustom = forceCustomProvider; 95 } 96 97 private static FoldManagerFactoryProvider findDefault() { 98 FoldManagerFactoryProvider provider = null; 99 100 if (!forceCustom) { 105 try { 106 org.openide.filesystems.Repository repository 107 = org.openide.filesystems.Repository.getDefault(); 108 if (repository != null && repository.getDefaultFileSystem() != null) { 109 provider = new LayerProvider(); 110 } 111 } catch (Throwable t) { 112 } 114 } 115 116 if (provider == null) { 117 provider = new CustomProvider(); 118 } 119 120 return provider; 121 } 122 123 138 public abstract List getFactoryList(FoldHierarchy hierarchy); 139 140 141 144 private static final class EmptyProvider extends FoldManagerFactoryProvider { 145 146 public List getFactoryList(FoldHierarchy hierarchy) { 147 return java.util.Collections.EMPTY_LIST; 148 } 149 150 } 151 152 } 153 | Popular Tags |