Lines 21-27
Link Here
|
21 |
|
21 |
|
22 |
import java.beans.PropertyChangeEvent; |
22 |
import java.beans.PropertyChangeEvent; |
23 |
import java.beans.PropertyChangeListener; |
23 |
import java.beans.PropertyChangeListener; |
24 |
import java.io.IOException; |
|
|
25 |
import java.util.ArrayList; |
24 |
import java.util.ArrayList; |
26 |
import java.util.Collection; |
25 |
import java.util.Collection; |
27 |
import java.util.Collections; |
26 |
import java.util.Collections; |
Lines 45-60
Link Here
|
45 |
import org.netbeans.spi.editor.errorstripe.UpToDateStatusProvider; |
44 |
import org.netbeans.spi.editor.errorstripe.UpToDateStatusProvider; |
46 |
import org.netbeans.spi.editor.errorstripe.UpToDateStatusProviderFactory; |
45 |
import org.netbeans.spi.editor.errorstripe.UpToDateStatusProviderFactory; |
47 |
import org.openide.ErrorManager; |
46 |
import org.openide.ErrorManager; |
48 |
import org.openide.filesystems.FileObject; |
|
|
49 |
import org.openide.filesystems.Repository; |
50 |
import org.openide.loaders.DataFolder; |
51 |
import org.openide.loaders.DataObject; |
52 |
import org.openide.loaders.FolderLookup; |
53 |
import org.openide.util.Lookup; |
47 |
import org.openide.util.Lookup; |
54 |
import org.openide.util.Lookup.Result; |
48 |
import org.openide.util.Lookup.Result; |
55 |
import org.openide.util.Lookup.Template; |
49 |
import org.openide.util.Lookup.Template; |
56 |
import org.openide.util.lookup.ProxyLookup; |
50 |
import org.openide.util.lookup.ProxyLookup; |
57 |
import org.netbeans.modules.editor.errorstripe.apimodule.SPIAccessor; |
51 |
import org.netbeans.modules.editor.errorstripe.apimodule.SPIAccessor; |
|
|
52 |
import org.openide.util.lookup.Lookups; |
58 |
|
53 |
|
59 |
/** |
54 |
/** |
60 |
* |
55 |
* |
Lines 107-183
Link Here
|
107 |
|
102 |
|
108 |
private void gatherProviders(JTextComponent pane) { |
103 |
private void gatherProviders(JTextComponent pane) { |
109 |
long start = System.currentTimeMillis(); |
104 |
long start = System.currentTimeMillis(); |
110 |
try { |
105 |
BaseKit kit = Utilities.getKit(pane); |
111 |
BaseKit kit = Utilities.getKit(pane); |
106 |
|
112 |
|
107 |
if (kit == null) |
113 |
if (kit == null) |
108 |
return ; |
114 |
return ; |
109 |
|
115 |
|
110 |
String content = kit.getContentType(); |
116 |
String content = kit.getContentType(); |
111 |
BaseDocument document = (BaseDocument) pane.getDocument(); |
117 |
BaseDocument document = (BaseDocument) pane.getDocument(); |
112 |
String baseFolder = "Editors/text/base/UpToDateStatusProvider"; // NOI18N |
118 |
FileObject baseFolder = Repository.getDefault().getDefaultFileSystem().findResource("Editors/text/base/UpToDateStatusProvider"); // NOI18N |
113 |
String contentFolder = "Editors/" + content + "/UpToDateStatusProvider"; // NOI18N |
119 |
FileObject contentFolder = Repository.getDefault().getDefaultFileSystem().findResource("Editors/" + content + "/UpToDateStatusProvider"); // NOI18N |
114 |
|
120 |
|
115 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
121 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
116 |
ERR.log(ErrorManager.INFORMATIONAL, "baseFolder = " + baseFolder ); |
122 |
ERR.log(ErrorManager.INFORMATIONAL, "baseFolder = " + baseFolder ); |
117 |
} |
123 |
} |
118 |
|
124 |
|
119 |
|
125 |
DataObject baseDO = baseFolder != null ? DataObject.find(baseFolder) : null; |
120 |
Lookup baseLookup = Lookups.forPath(baseFolder); |
126 |
|
121 |
|
|
|
122 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
123 |
ERR.log(ErrorManager.INFORMATIONAL, "contentFolder = " + contentFolder ); |
124 |
} |
125 |
|
126 |
Lookup contentLookup = Lookups.forPath(contentFolder); |
127 |
|
128 |
Lookup lookup = new ProxyLookup(new Lookup[] {baseLookup, contentLookup}); |
129 |
|
130 |
Result creators = lookup.lookup(new Template(MarkProviderCreator.class)); |
131 |
|
132 |
List markProviders = new ArrayList(); |
133 |
|
134 |
for (Iterator i = creators.allInstances().iterator(); i.hasNext(); ) { |
135 |
MarkProviderCreator creator = (MarkProviderCreator) i.next(); |
136 |
|
127 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
137 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
128 |
ERR.log(ErrorManager.INFORMATIONAL, "baseDO = " + baseDO ); |
138 |
ERR.log(ErrorManager.INFORMATIONAL, "creator = " + creator ); |
129 |
} |
139 |
} |
130 |
|
140 |
|
131 |
Lookup baseLookup = baseFolder != null ? new FolderLookup((DataFolder) baseDO).getLookup() : Lookup.EMPTY; |
141 |
MarkProvider provider = creator.createMarkProvider(pane); |
132 |
|
142 |
|
|
|
143 |
if (provider != null) |
144 |
markProviders.add(provider); |
145 |
} |
146 |
|
147 |
this.providers = markProviders; |
148 |
|
149 |
Result updsCreators = lookup.lookup(new Template(UpToDateStatusProviderFactory.class)); |
150 |
List updsProviders = new ArrayList(); |
151 |
|
152 |
for (Iterator i = updsCreators.allInstances().iterator(); i.hasNext(); ) { |
153 |
UpToDateStatusProviderFactory creator = (UpToDateStatusProviderFactory) i.next(); |
154 |
|
133 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
155 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
134 |
ERR.log(ErrorManager.INFORMATIONAL, "contentFolder = " + contentFolder ); |
156 |
ERR.log(ErrorManager.INFORMATIONAL, "creator = " + creator ); |
135 |
} |
|
|
136 |
|
137 |
DataObject contentDO = contentFolder != null ? DataObject.find(contentFolder) : null; |
138 |
Lookup contentLookup = contentFolder != null ? new FolderLookup((DataFolder) contentDO).getLookup() : Lookup.EMPTY; |
139 |
|
140 |
Lookup lookup = new ProxyLookup(new Lookup[] {baseLookup, contentLookup}); |
141 |
|
142 |
Result creators = lookup.lookup(new Template(MarkProviderCreator.class)); |
143 |
|
144 |
List markProviders = new ArrayList(); |
145 |
|
146 |
for (Iterator i = creators.allInstances().iterator(); i.hasNext(); ) { |
147 |
MarkProviderCreator creator = (MarkProviderCreator) i.next(); |
148 |
|
149 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
150 |
ERR.log(ErrorManager.INFORMATIONAL, "creator = " + creator ); |
151 |
} |
152 |
|
153 |
MarkProvider provider = creator.createMarkProvider(pane); |
154 |
|
155 |
if (provider != null) |
156 |
markProviders.add(provider); |
157 |
} |
158 |
|
159 |
this.providers = markProviders; |
160 |
|
161 |
Result updsCreators = lookup.lookup(new Template(UpToDateStatusProviderFactory.class)); |
162 |
List updsProviders = new ArrayList(); |
163 |
|
164 |
for (Iterator i = updsCreators.allInstances().iterator(); i.hasNext(); ) { |
165 |
UpToDateStatusProviderFactory creator = (UpToDateStatusProviderFactory) i.next(); |
166 |
|
167 |
if (ERR.isLoggable(ErrorManager.INFORMATIONAL)) { |
168 |
ERR.log(ErrorManager.INFORMATIONAL, "creator = " + creator ); |
169 |
} |
170 |
|
171 |
UpToDateStatusProvider provider = creator.createUpToDateStatusProvider(pane.getDocument()); |
172 |
|
173 |
if (provider != null) |
174 |
updsProviders.add(provider); |
175 |
} |
157 |
} |
176 |
|
158 |
|
177 |
this.upToDateStatusProviders = updsProviders; |
159 |
UpToDateStatusProvider provider = creator.createUpToDateStatusProvider(pane.getDocument()); |
178 |
} catch (IOException e) { |
160 |
|
179 |
ErrorManager.getDefault().notify(e); |
161 |
if (provider != null) |
|
|
162 |
updsProviders.add(provider); |
180 |
} |
163 |
} |
|
|
164 |
|
165 |
this.upToDateStatusProviders = updsProviders; |
181 |
|
166 |
|
182 |
long end = System.currentTimeMillis(); |
167 |
long end = System.currentTimeMillis(); |
183 |
|
168 |
|