Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TaglibFileTracker.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TaglibFileTracker.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TaglibFileTracker.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TaglibFileTracker.java
new file mode 100644
index 000000000..7d0c59325
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/TaglibFileTracker.java
@@ -0,0 +1,105 @@
+package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent;
+import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.EventType;
+
+class TaglibFileTracker extends TaglibResourceTracker
+{
+ private final IFile _file;
+ private String _uri;
+ private final AtomicLong _lastModifiedStamp = new AtomicLong();
+ private TaglibResourceManager _manager;
+ private final ILibraryChangeHandler _handler;
+
+ public TaglibFileTracker(final IFile file, final TaglibResourceManager manager,
+ final ILibraryChangeHandler handler)
+ {
+ _manager = manager;
+ _manager.addListener(this);
+ _file = file;
+ _lastModifiedStamp.set(file.getModificationStamp());
+ _handler = handler;
+ }
+
+ public String getUri()
+ {
+ return _uri;
+ }
+
+ public final void setUri(final String uri)
+ {
+ _uri = uri;
+ }
+
+ @Override
+ public void dispose()
+ {
+ _manager.removeListener(this);
+ _manager = null;
+ }
+
+ @Override
+ public EventResult acceptEvent(final ResourceLifecycleEvent event)
+ {
+ if (!_file.equals(event.getAffectedResource()))
+ {
+ return EventResult.getDefaultEventResult();
+ }
+
+ final EventType eventType = event.getEventType();
+
+ switch (eventType)
+ {
+ case RESOURCE_ADDED:
+ // added resources kick an add event.
+ _handler.added(_file);
+ break;
+ case RESOURCE_CHANGED:
+ // changed resources kick a change event
+ _handler.changed(_uri, _file);
+ break;
+ case RESOURCE_INACCESSIBLE:
+ // removed resources kick a remove event
+ _handler.removed(_uri, _file);
+ break;
+ }
+
+ return EventResult.getDefaultEventResult();
+ }
+
+// private final static class HandleFileAddJob implements IWorkspaceRunnable
+// {
+// private final IResourceChangeEvent _event;
+// private List<IFile> _files;
+// private ILibraryChangeHandler _handler;
+//
+// private HandleFileAddJob(final IResourceChangeEvent event, final List<IFile> files,
+// final ILibraryChangeHandler handler)
+// {
+// _event = event;
+// _files = files;
+// _handler = handler;
+// }
+//
+// public void run(final IProgressMonitor monitor)
+// throws CoreException
+// {
+// for (final IFile file : _files)
+// {
+// final IResourceDelta delta = _event.getDelta()
+// .findMember(file.getFullPath());
+//
+// if (delta != null)
+// {
+// if (delta.getKind() == IResourceDelta.ADDED)
+// {
+// _handler.added(file);
+// }
+// }
+// }
+// }
+// }
+} \ No newline at end of file

Back to the top