1 8 9 package com.nightlabs.rcp.action; 10 11 import java.util.ArrayList ; 12 import java.util.Iterator ; 13 import java.util.List ; 14 import java.util.regex.Pattern ; 15 16 import org.eclipse.core.runtime.IConfigurationElement; 17 18 import com.nightlabs.rcp.extensionpoint.AbstractEPProcessor; 19 import com.nightlabs.rcp.extensionpoint.EPProcessorException; 20 21 public class EditorFileFilterRegistry 22 extends AbstractEPProcessor 23 { 24 public static final String EXTENSION_POINT_ID = "com.nightlabs.base.editorfilefilter"; 25 26 private List patterns = new ArrayList (); 27 28 public String getExtensionPointID() { 29 return EXTENSION_POINT_ID; 30 } 31 32 public void processElement(IConfigurationElement element) throws EPProcessorException { 33 if (element.getName().equalsIgnoreCase("editorFileFilter")) { 34 String pattern = element.getAttribute("pattern"); 35 if (pattern == null || "".equals(pattern)) 36 throw new EPProcessorException("Element editorFileFilter has to define attribute pattern."); 37 patterns.add(pattern); 38 } 39 } 40 41 private String globalPattern; 42 43 public String getGlobalPattern() 44 { 45 checkProcessing(); 46 47 if (globalPattern == null){ 48 StringBuffer globalPatternSB = new StringBuffer ("^"); 49 for (Iterator it = patterns.iterator(); it.hasNext(); ) { 50 globalPatternSB.append('('); 51 globalPatternSB.append(it.next()); 52 globalPatternSB.append(')'); 53 if (it.hasNext()) 54 globalPatternSB.append('|'); 55 } 56 globalPatternSB.append('$'); 57 globalPattern = globalPatternSB.toString(); 58 } 59 return globalPattern; 60 } 61 62 public boolean doesMatchEditorID(String id) 63 { 64 checkProcessing(); 65 if (patterns.size() == 0) 66 return true; 67 return Pattern.matches(getGlobalPattern(), id); 68 } 69 70 public List getPatterns() 71 { 72 checkProcessing(); 73 return patterns; 74 } 75 76 private static EditorFileFilterRegistry sharedInstance; 77 78 public static EditorFileFilterRegistry getSharedInstance() { 79 if (sharedInstance == null) 80 sharedInstance = new EditorFileFilterRegistry(); 81 return sharedInstance; 82 } 83 } 84 | Popular Tags |