Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/tagregistry/ProjectTracker.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/tagregistry/ProjectTracker.java208
1 files changed, 0 insertions, 208 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/tagregistry/ProjectTracker.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/tagregistry/ProjectTracker.java
deleted file mode 100644
index 870fc8da7..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/tagregistry/ProjectTracker.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2008 Oracle Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Oracle Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.ui.internal.tagregistry;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.jst.jsf.common.internal.resource.IResourceLifecycleListener;
-import org.eclipse.jst.jsf.common.internal.resource.LifecycleListener;
-import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent;
-import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.EventType;
-import org.eclipse.jst.jsf.common.internal.resource.ResourceLifecycleEvent.ReasonType;
-import org.eclipse.jst.jsf.ui.internal.tagregistry.ProjectTracker.ProjectTrackingListener.Reason;
-
-/**
- * Tracks the active JSF projects in the workspace, maintaining a list of valid
- * projects and firing events when it changes
- *
- * @author cbateman
- *
- */
-class ProjectTracker
-{
- private final IWorkspaceRoot _root;
- private final LifecycleListener _lifecycleListener;
- private final CopyOnWriteArrayList<ProjectTrackingListener> _myListeners;
- private Set<IProject> _validProjects;
- private final ResourceChangeListener _resourceChangeListener;
- private ProjectAdvisor _projectAdvisor;
-
- public ProjectTracker(final IWorkspaceRoot root, final ProjectAdvisor projectAdvisor)
- {
- _root = root;
- _lifecycleListener = new LifecycleListener(ResourcesPlugin.getWorkspace());
- _resourceChangeListener = new ResourceChangeListener();
- _myListeners = new CopyOnWriteArrayList<ProjectTrackingListener>();
- if (projectAdvisor != null)
- {
- _projectAdvisor = projectAdvisor;
- }
- else
- {
- _projectAdvisor = DEFAULT_ADVISOR;
- }
- }
-
- public void startTracking()
- {
- _lifecycleListener.addResource(_root);
-
- _validProjects = new HashSet<IProject>();
-
- for (final IProject project : _root.getProjects())
- {
- if (_projectAdvisor.shouldTrack(project))
- {
- _validProjects.add(project);
- _lifecycleListener.addResource(project);
- }
- }
- // do this last, to ensure that any "simulataneous" events are handled
- // by our listener only after everything is initialized.
- _lifecycleListener.addListener(_resourceChangeListener);
- }
-
- public Set<IProject> getProjects()
- {
- final Set<IProject> projects = new HashSet<IProject>();
- synchronized (this)
- {
- projects.addAll(_validProjects);
- }
- return projects;
- }
-
- private synchronized void addProject(final IProject project)
- {
- if (_projectAdvisor.shouldTrack(project))
- {
- synchronized (this)
- {
- _validProjects.add(project);
- _lifecycleListener.addResource(project);
- }
- fireChangeEvent(project, Reason.ADDED);
- }
- }
-
- private void removeProject(final IProject project)
- {
- synchronized (this)
- {
- _validProjects.remove(project);
- _lifecycleListener.removeResource(project);
- }
- fireChangeEvent(project, Reason.REMOVED);
- }
-
- public void addListener(ProjectTrackingListener listener)
- {
- _myListeners.addIfAbsent(listener);
- }
-
- public void removeListener(ProjectTrackingListener listener)
- {
- _myListeners.remove(listener);
- }
-
- private void fireChangeEvent(final IProject project,
- ProjectTrackingListener.Reason reason)
- {
- for (final ProjectTrackingListener listener : _myListeners)
- {
- listener.projectsChanged(project, reason);
- }
- }
-
- public void dispose()
- {
- _lifecycleListener.dispose();
- _validProjects.clear();
- _myListeners.clear();
- }
-
- private class ResourceChangeListener implements IResourceLifecycleListener
- {
- public EventResult acceptEvent(final ResourceLifecycleEvent event)
- {
- final IResource res = event.getAffectedResource();
-
- // only interested if is affecting one of my resources
-
- // if the root is the source, check if a projected has been added
- // or opened
- // EventType eventType = event.getEventType();
- if (event.getEventType() == EventType.RESOURCE_ADDED
- && event.getReasonType() == ReasonType.PROJECT_OPENED
- && res instanceof IProject)
- {
- handleNewProject((IProject) res);
- }
- else if (_validProjects.contains(res)
- && event.getEventType() == EventType.RESOURCE_INACCESSIBLE)
- {
- handleProjectClosed((IProject) res);
- }
- return EventResult.getDefaultEventResult();
- }
-
- private void handleNewProject(final IProject project)
- {
- addProject(project);
- }
-
- private void handleProjectClosed(final IProject project)
- {
- removeProject(project);
- }
- }
-
- public static class ProjectTrackingListener
- {
- public enum Reason
- {
- /**
- * Reason for change is a project added
- */
- ADDED,
- /**
- * Reason for change is a project removed
- */
- REMOVED
- }
-
- protected void projectsChanged(final IProject project, Reason reason)
- {
- // do nothing by default
- }
- }
-
- private static final ProjectAdvisor DEFAULT_ADVISOR = new ProjectAdvisor()
- {
- @Override
- public boolean shouldTrack(
- IProject project)
- {
- return true;
- }
- };
-
- public abstract static class ProjectAdvisor
- {
- public abstract boolean shouldTrack(final IProject project);
- }
-}

Back to the top