KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > rcp > action > EditorFileFilterRegistry


1 /**
2  * <p> Project: com.nightlabs.base </p>
3  * <p> Copyright: Copyright (c) 2005 </p>
4  * <p> Company: NightLabs GmbH (Germany) </p>
5  * <p> Creation Date: 01.07.2005 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8
9 package com.nightlabs.rcp.action;
10
11 import java.util.ArrayList JavaDoc;
12 import java.util.Iterator JavaDoc;
13 import java.util.List JavaDoc;
14 import java.util.regex.Pattern JavaDoc;
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 JavaDoc EXTENSION_POINT_ID = "com.nightlabs.base.editorfilefilter";
25
26     private List JavaDoc patterns = new ArrayList JavaDoc();
27     
28     public String JavaDoc getExtensionPointID() {
29         return EXTENSION_POINT_ID;
30     }
31
32     public void processElement(IConfigurationElement element) throws EPProcessorException {
33         if (element.getName().equalsIgnoreCase("editorFileFilter")) {
34             String JavaDoc 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 JavaDoc globalPattern;
42     
43     public String JavaDoc getGlobalPattern()
44     {
45         checkProcessing();
46         
47         if (globalPattern == null){
48             StringBuffer JavaDoc globalPatternSB = new StringBuffer JavaDoc("^");
49             for (Iterator JavaDoc 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 JavaDoc id)
63     {
64         checkProcessing();
65         if (patterns.size() == 0)
66             return true;
67         return Pattern.matches(getGlobalPattern(), id);
68     }
69
70     public List JavaDoc 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