Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Michel-Lemieux2003-07-02 19:35:47 +0000
committerJean Michel-Lemieux2003-07-02 19:35:47 +0000
commite3fc6e0540b35d889bb549aaa0724b3069ba73a0 (patch)
tree50c002f100dfa1eb6c0ffb82c5f56ba72a162842 /bundles/org.eclipse.team.cvs.ui/src
parent378a91075bd06e91122b1d5bbd6f942f4adf67ca (diff)
downloadeclipse.platform.team-e3fc6e0540b35d889bb549aaa0724b3069ba73a0.tar.gz
eclipse.platform.team-e3fc6e0540b35d889bb549aaa0724b3069ba73a0.tar.xz
eclipse.platform.team-e3fc6e0540b35d889bb549aaa0724b3069ba73a0.zip
Refresh in background work
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src')
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/DeferredWorkbenchContentProvider.java248
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/IDeferredWorkbenchAdapter.java65
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BatchSimilarSchedulingRule.java (renamed from bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/BatchSimilarSchedulingRule.java)2
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java9
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java46
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java6
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java205
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java110
8 files changed, 222 insertions, 469 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/DeferredWorkbenchContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/DeferredWorkbenchContentProvider.java
deleted file mode 100644
index 1dfd86c51..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/DeferredWorkbenchContentProvider.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.jobs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.progress.IElementCollector;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.ui.model.PendingUpdateAdapter;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.progress.UIJob;
-
-/**
- * Provides lazy contents retrieval for objects that have the IDeferredWorkbenchAdapter
- * adapter registered.
- *
- * @see IDeferredWorkbenchAdapter
- */
-public class DeferredWorkbenchContentProvider extends WorkbenchContentProvider {
-
- /**
- * The wrapper is required to ensure that we cancel fetching children jobs for
- * the same parent instance that were created from this content provider and not
- * those created by others.
- */
- private class FamilyWrapper {
- Object o;
- FamilyWrapper(Object o) {
- this.o = o;
- }
- }
-
- /**
- * This job is used to add elements to a viewer.
- */
- private class AddElementsToViewJob extends UIJob {
- Object[] newElements;
- Object parent;
- private boolean working;
-
- AddElementsToViewJob(Object parentElement) {
- super(viewer.getControl().getDisplay());
- parent = parentElement;
- addJobChangeListener(new JobChangeAdapter() {
- public void done(Job job, IStatus result) {
- setWorking(false);
- }
- });
- }
- synchronized boolean isWorking() {
- return working;
- }
- public IStatus runInUIThread(IProgressMonitor monitor) {
- if (monitor.isCanceled()) {
- return Status.CANCEL_STATUS;
- }
- if (viewer instanceof AbstractTreeViewer) {
- ((AbstractTreeViewer) viewer).add(parent, newElements);
- }
- return Status.OK_STATUS;
- }
- void runBatch(Object[] elements) {
- working = true;
- this.newElements = elements;
- schedule();
- }
- synchronized void setWorking(boolean working) {
- this.working = working;
- }
- }
-
- /**
- * This collector is responsible for updating the viewer when deferred children are fetched by
- * a deferred adapter. Elements added to the viewer are batched so that the viewer doesn't
- * do too much work in the UI thread.
- *
- * TODO: this currently doesn't batch calls to add(Object).
- */
- abstract private class DeferredElementCollector implements IElementCollector {
-
- // The number of elements to add to the view at a time. While these elements are
- // added the UI thread is locked.
- private int BATCH_SIZE = 5;
-
- // The viewer in which to add new elements.
- private Viewer viewer;
-
- private boolean DEBUG = true;
- private long FAKE_LATENCY = 100; // milliseconds
-
- private PendingUpdateAdapter placeholder;
-
- public DeferredElementCollector(Viewer viewer, PendingUpdateAdapter placeholder) {
- this.viewer = viewer;
- this.placeholder = placeholder;
- }
-
- public void addChildren(final Object parent, final Object[] children, IProgressMonitor monitor) {
- monitor = Policy.monitorFor(monitor);
- if (viewer instanceof AbstractTreeViewer) {
- final AbstractTreeViewer treeViewer = (AbstractTreeViewer) viewer;
-
- if (placeholder != null) {
- UIJob removalJob = new UIJob() {
- public IStatus runInUIThread(IProgressMonitor monitor) {
- treeViewer.remove(placeholder);
- placeholder = null;
- return Status.OK_STATUS;
- }
- };
- removalJob.schedule();
-
- }
- AddElementsToViewJob addElementsJob = new AddElementsToViewJob(parent);
- if (children.length == 0) {
- addElementsJob.runBatch(children);
- return;
- }
-
- int batchStart = 0;
- int batchEnd = children.length > BATCH_SIZE ? BATCH_SIZE : children.length;
- //process children until all children have been sent to the UI
- while (batchStart < children.length) {
- if (monitor.isCanceled()) {
- addElementsJob.cancel();
- return;
- }
-
- if (DEBUG)
- slowDown(FAKE_LATENCY);
-
- //only send a new batch when the last batch is finished
- if (!addElementsJob.isWorking()) {
- int batchLength = batchEnd - batchStart;
- Object[] batch = new Object[batchLength];
- System.arraycopy(children, batchStart, batch, 0, batchLength);
-
- addElementsJob.runBatch(batch);
-
- batchStart += batchLength;
- batchEnd = (batchStart + BATCH_SIZE);
- if (batchEnd >= children.length) {
- batchEnd = children.length;
- }
- }
- }
- } else {
- viewer.refresh();
- }
- }
-
- private void slowDown(long time) {
- try {
- Thread.sleep(time);
- } catch (InterruptedException e) {
- }
- }
- }
-
- /**
- * Provides an optimized lookup for determining if an element has children. This is
- * required because elements that are populated lazilly can't answer <code>getChildren</code>
- * just to determine the potential for children.
- */
- public boolean hasChildren(Object o) {
- if (o == null) {
- return false;
- }
- IWorkbenchAdapter adapter = getAdapter(o);
- if (adapter instanceof IDeferredWorkbenchAdapter) {
- IDeferredWorkbenchAdapter element = (IDeferredWorkbenchAdapter) adapter;
- return element.isContainer();
- }
- return super.hasChildren(o);
- }
-
- /**
- * Returns the child elements of the given element, or in the case of a deferred element, returns
- * a placeholder. If a deferred element used a job is created to fetch the children in the background.
- */
- public Object[] getChildren(final Object parent) {
- IWorkbenchAdapter adapter = getAdapter(parent);
- if (adapter instanceof IDeferredWorkbenchAdapter &&
- CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.BACKGROUND_REPOVIEW)) {
- IDeferredWorkbenchAdapter element = (IDeferredWorkbenchAdapter) adapter;
- return startFetchingDeferredChildren(parent, element);
- }
- return super.getChildren(parent);
- }
-
- /**
- * Starts a job and creates a collector for fetching the children of this deferred adapter. If children
- * are waiting to be retrieve for this parent already, that job is cancelled and another is started.
- */
- private Object[] startFetchingDeferredChildren(final Object parent, final IDeferredWorkbenchAdapter adapter) {
-
- PendingUpdateAdapter pendingPlaceHolder = new PendingUpdateAdapter();
- final DeferredElementCollector collector = new DeferredElementCollector(viewer, pendingPlaceHolder) {
- public void add(Object element, IProgressMonitor monitor) {
- add(new Object[] { element }, monitor);
- }
- public void add(Object[] elements, IProgressMonitor monitor) {
- addChildren(parent, elements, monitor);
- }
- };
-
- // Cancel any jobs currently fetching children for the same parent instance.
- Platform.getJobManager().cancel(new FamilyWrapper(parent));
- Job job = new Job() {
- public IStatus run(IProgressMonitor monitor) {
- try {
- adapter.fetchDeferredChildren(parent, collector, monitor);
- } catch (OperationCanceledException e) {
- return Status.CANCEL_STATUS;
- }
- return Status.OK_STATUS;
- }
- public boolean belongsTo(Object family) {
- if (family instanceof FamilyWrapper) {
- return ((FamilyWrapper) family).o == parent;
- }
- return false;
- }
- };
-
- job.setRule(adapter.getRule());
- job.schedule();
- return new Object[] {pendingPlaceHolder};
- }
-} \ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/IDeferredWorkbenchAdapter.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/IDeferredWorkbenchAdapter.java
deleted file mode 100644
index 63d1395c2..000000000
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/IDeferredWorkbenchAdapter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.jobs;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jface.progress.IElementCollector;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-/**
- * This adapter interface provides support for lazy initialization of UI workbench elements
- * that are displayed visually. This adapter is used with an associated deferred content provider.
- *
- * @see DeferredWorkbenchContentProvider
- * @see BatchSimilarSchedulingRule
- */
-public interface IDeferredWorkbenchAdapter extends IWorkbenchAdapter {
-
- /**
- * Called by a job run in a separate thread to fetch the children of this adapter.
- * The adapter should return notify of new children via the collector.
- * <p>
- * It is good practice to check the passed in monitor for cancellation. This will
- * provide good responsiveness for cancellation requests made by the user.
- * </p>
- *
- * @param o the object to fetch the children for
- * @param collector the collector to notify about new children
- * @param monitor a progress monitor that will never be <code>null<code> to
- * support reporting and cancellation.
- */
- public void fetchDeferredChildren(Object o, IElementCollector collector, IProgressMonitor monitor);
-
- /**
- * Returns whether this adapter may have children. This is an optimized method
- * used by content providers to allow showing the [+] expand icon without having
- * yet fetched the children for the element.
- * <p>
- * If <code>false</code> is returned, then the content provider is free to assume
- * that this adapter has no children. If <code>true</code> is returned,
- * then the job manager is free to assume that this adapter may have children.
- * <p>
- *
- * @param rule the rule to check for conflicts
- * @return <code>true</code> if the rule is conflicting, and <code>false</code>
- * otherwise.
- */
- public boolean isContainer();
-
- /**
- * Returns the rule used to schedule the deferred fetching of children for this adapter. The job manager
- * guarantees that no two jobs with conflicting scheduling rules will run concurrently.
- *
- * @return ISchedulingRule the scheduling rule
- */
- public ISchedulingRule getRule();
-} \ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/BatchSimilarSchedulingRule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BatchSimilarSchedulingRule.java
index ddd5f4277..4840f451c 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/jobs/BatchSimilarSchedulingRule.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BatchSimilarSchedulingRule.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.team.internal.ccvs.ui.jobs;
+package org.eclipse.team.internal.ccvs.ui.model;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
index 5c82d7518..324a754a8 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
@@ -16,14 +16,11 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.jface.progress.IElementCollector;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
+import org.eclipse.team.internal.ccvs.core.*;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.jobs.IDeferredWorkbenchAdapter;
-import org.eclipse.team.internal.ccvs.ui.jobs.BatchSimilarSchedulingRule;
import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
public class CVSTagElement extends CVSModelElement implements IAdaptable, IDeferredWorkbenchAdapter {
CVSTag tag;
@@ -38,6 +35,8 @@ public class CVSTagElement extends CVSModelElement implements IAdaptable, IDefer
}
public Object getAdapter(Class adapter) {
if (adapter == IWorkbenchAdapter.class)
+ return this;
+ if (adapter == IDeferredWorkbenchAdapter.class)
return this;
return null;
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
index 997b5b482..759a104a3 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
@@ -10,12 +10,16 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.ui.model;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSResource;
+import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.team.internal.ccvs.core.*;
import org.eclipse.team.internal.ccvs.core.resources.RemoteResource;
-import org.eclipse.team.internal.ccvs.ui.jobs.*;
import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+import org.eclipse.ui.progress.DeferredTreeContentManager;
+
+/**
+
/**
* Extension to the generic workbench content provider mechanism
@@ -23,9 +27,23 @@ import org.eclipse.ui.IWorkingSet;
* children for an element aren't fetched until the user clicks
* on the tree expansion box.
*/
-public class RemoteContentProvider extends DeferredWorkbenchContentProvider {
+public class RemoteContentProvider extends WorkbenchContentProvider {
IWorkingSet workingSet;
+ DeferredTreeContentManager manager;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (viewer instanceof AbstractTreeViewer) {
+ manager =
+ new DeferredTreeContentManager(
+ this,
+ (AbstractTreeViewer) viewer);
+ }
+ super.inputChanged(viewer, oldInput, newInput);
+ }
public boolean hasChildren(Object element) {
// the + box will always appear, but then disappear
@@ -51,6 +69,11 @@ public class RemoteContentProvider extends DeferredWorkbenchContentProvider {
} else if (element instanceof RemoteModule) {
return true;
}
+ if (manager != null) {
+ if (manager.isDeferredAdapter(element))
+ return manager.mayHaveChildren(element);
+ }
+
return super.hasChildren(element);
}
@@ -69,4 +92,17 @@ public class RemoteContentProvider extends DeferredWorkbenchContentProvider {
public IWorkingSet getWorkingSet() {
return workingSet;
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.model.WorkbenchContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object element) {
+ if (manager != null) {
+ Object[] children = manager.getChildren(element);
+ if (children != null)
+ return children;
+ }
+ return super.getChildren(element);
+ }
+
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
index f709525a2..17b95abce 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
@@ -20,12 +20,12 @@ import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.jobs.BatchSimilarSchedulingRule;
-import org.eclipse.team.internal.ccvs.ui.jobs.IDeferredWorkbenchAdapter;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
+
+public class RemoteFolderElement extends RemoteResourceElement implements IDeferredWorkbenchAdapter{
-public class RemoteFolderElement extends RemoteResourceElement implements IDeferredWorkbenchAdapter {
/**
* Overridden to append the version name to remote folders which
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
index 34a10e3b1..e381d2cf1 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
@@ -16,128 +16,137 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.jface.progress.IElementCollector;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
+import org.eclipse.team.internal.ccvs.core.*;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
-import org.eclipse.team.internal.ccvs.ui.jobs.BatchSimilarSchedulingRule;
-import org.eclipse.team.internal.ccvs.ui.jobs.IDeferredWorkbenchAdapter;
import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
/**
* This class represents an IProject resource in a repository. The
* children of a RemoteModule are its versions. A RemoteModule is
* a child of the VersionsCategory.
*/
-public class RemoteModule extends CVSModelElement implements IAdaptable, IDeferredWorkbenchAdapter {
- ICVSRemoteFolder folder;
- VersionCategory parent;
+public class RemoteModule
+ extends CVSModelElement
+ implements IAdaptable, IDeferredWorkbenchAdapter {
+ ICVSRemoteFolder folder;
+ VersionCategory parent;
- /**
- * RemoteProject constructor.
- */
- public RemoteModule(ICVSRemoteFolder folder, VersionCategory parent) {
- this.folder = folder;
- this.parent = parent;
- }
+ /**
+ * RemoteProject constructor.
+ */
+ public RemoteModule(ICVSRemoteFolder folder, VersionCategory parent) {
+ this.folder = folder;
+ this.parent = parent;
+ }
- /**
- * Returns an object which is an instance of the given class
- * associated with this object. Returns <code>null</code> if
- * no such object can be found.
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class)
- return this;
- return null;
- }
+ /**
+ * Returns an object which is an instance of the given class
+ * associated with this object. Returns <code>null</code> if
+ * no such object can be found.
+ */
+ public Object getAdapter(Class adapter) {
+ if (adapter == IWorkbenchAdapter.class)
+ return this;
+ if (adapter == IDeferredWorkbenchAdapter.class)
+ return this;
+ return null;
+ }
- /**
- * Returns an image to be used for displaying an object in the desktop.
- * @param object The object to get an image for.
- * @param owner The viewer that the image will be used in. The image will
- * be disposed when this viewer is closed. If the owner is null, a new
- * image is returned, and the caller is responsible for disposing it.
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
- }
+ /**
+ * Returns an image to be used for displaying an object in the desktop.
+ * @param object The object to get an image for.
+ * @param owner The viewer that the image will be used in. The image will
+ * be disposed when this viewer is closed. If the owner is null, a new
+ * image is returned, and the caller is responsible for disposing it.
+ */
+ public ImageDescriptor getImageDescriptor(Object object) {
+ return CVSUIPlugin.getPlugin().getImageDescriptor(
+ ICVSUIConstants.IMG_PROJECT_VERSION);
+ }
- /**
- * Returns the name of this element. This will typically
- * be used to assign a label to this object when displayed
- * in the UI.
- */
- public String getLabel(Object o) {
- return folder.getName();
- }
+ /**
+ * Returns the name of this element. This will typically
+ * be used to assign a label to this object when displayed
+ * in the UI.
+ */
+ public String getLabel(Object o) {
+ return folder.getName();
+ }
- /**
- * Returns the logical parent of the given object in its tree.
- */
- public Object getParent(Object o) {
- return parent;
- }
+ /**
+ * Returns the logical parent of the given object in its tree.
+ */
+ public Object getParent(Object o) {
+ return parent;
+ }
- /**
- * Return the repository the given element belongs to.
- */
- public ICVSRepositoryLocation getRepository(Object o) {
- return folder.getRepository();
- }
+ /**
+ * Return the repository the given element belongs to.
+ */
+ public ICVSRepositoryLocation getRepository(Object o) {
+ return folder.getRepository();
+ }
- /** (Non-javadoc)
- * For debugging purposes only.
- */
- public String toString() {
- return "RemoteModule(" + folder.getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
- }
+ /** (Non-javadoc)
+ * For debugging purposes only.
+ */
+ public String toString() {
+ return "RemoteModule(" + folder.getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
- public ICVSRemoteResource getCVSResource() {
- return folder;
- }
+ public ICVSRemoteResource getCVSResource() {
+ return folder;
+ }
- /**
- * Returns the children of this object. When this object
- * is displayed in a tree, the returned objects will be this
- * element's children. Returns an empty enumeration if this
- * object has no children. The children of the RemoteModule
- * are the versions for that module.
- *
- * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#internalGetChildren(java.lang.Object, org.eclipse.core.runtime.IProgressMonitor)
- */
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
- try {
- manager.refreshDefinedTags(folder, false /* replace */
- , false, monitor);
- } catch (TeamException e) {
- // continue
- }
- CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownTags(folder, CVSTag.VERSION);
- Object[] versions = new Object[tags.length];
- for (int i = 0; i < versions.length; i++) {
- versions[i] = folder.forTag(tags[i]);
- }
- return versions;
- }
+ /**
+ * Returns the children of this object. When this object
+ * is displayed in a tree, the returned objects will be this
+ * element's children. Returns an empty enumeration if this
+ * object has no children. The children of the RemoteModule
+ * are the versions for that module.
+ *
+ * @see org.eclipse.team.internal.ccvs.ui.model.CVSModelElement#internalGetChildren(java.lang.Object, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public Object[] fetchChildren(Object o, IProgressMonitor monitor)
+ throws TeamException {
+ RepositoryManager manager =
+ CVSUIPlugin.getPlugin().getRepositoryManager();
+ try {
+ manager.refreshDefinedTags(folder, false /* replace */
+ , false, monitor);
+ } catch (TeamException e) {
+ // continue
+ }
+ CVSTag[] tags =
+ CVSUIPlugin.getPlugin().getRepositoryManager().getKnownTags(
+ folder,
+ CVSTag.VERSION);
+ Object[] versions = new Object[tags.length];
+ for (int i = 0; i < versions.length; i++) {
+ versions[i] = folder.forTag(tags[i]);
+ }
+ return versions;
+ }
- public void fetchDeferredChildren(Object o, IElementCollector collector, IProgressMonitor monitor) {
+ public void fetchDeferredChildren(
+ Object o,
+ IElementCollector collector,
+ IProgressMonitor monitor) {
try {
collector.add(fetchChildren(o, monitor), monitor);
} catch (TeamException e) {
CVSUIPlugin.log(e);
- }
- }
+ }
+ }
- public boolean isContainer() {
- return true;
- }
+ public boolean isContainer() {
+ return true;
+ }
- public ISchedulingRule getRule() {
- return new BatchSimilarSchedulingRule("org.eclipse.team.ui.cvs.remotemodule"); //$NON-NLS-1$
- }
+ public ISchedulingRule getRule() {
+ return new BatchSimilarSchedulingRule("org.eclipse.team.ui.cvs.remotemodule"); //$NON-NLS-1$
+ }
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
index 662c91b1c..5a947514f 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.ui.model;
-
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
@@ -18,21 +17,17 @@ import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.progress.IElementCollector;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.team.core.TeamException;
-import org.eclipse.team.internal.ccvs.core.CVSException;
-import org.eclipse.team.internal.ccvs.core.CVSTag;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
-import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
-import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
-import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
-import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
+import org.eclipse.team.internal.ccvs.core.*;
+import org.eclipse.team.internal.ccvs.ui.*;
import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ccvs.ui.jobs.BatchSimilarSchedulingRule;
-import org.eclipse.team.internal.ccvs.ui.jobs.IDeferredWorkbenchAdapter;
import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
-public class VersionCategory extends CVSModelElement implements IAdaptable, IDeferredWorkbenchAdapter {
+public class VersionCategory
+ extends CVSModelElement
+ implements IAdaptable, IDeferredWorkbenchAdapter {
private ICVSRepositoryLocation repository;
-
+
/**
* ProjectVersionsCategory constructor.
*/
@@ -40,61 +35,84 @@ public class VersionCategory extends CVSModelElement implements IAdaptable, IDef
super();
this.repository = repo;
}
-
+
/**
* Returns an object which is an instance of the given class
* associated with this object. Returns <code>null</code> if
* no such object can be found.
*/
public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class) return this;
+ if (adapter == IWorkbenchAdapter.class)
+ return this;
+ if (adapter == IDeferredWorkbenchAdapter.class)
+ return this;
return null;
}
-
+
/**
* Returns the children of this object. When this object
* is displayed in a tree, the returned objects will be this
* element's children. Returns an empty enumeration if this
* object has no children.
*/
- public Object[] fetchChildren(Object o, IProgressMonitor monitor) throws TeamException {
- if (CVSUIPlugin.getPlugin().getRepositoryManager().isDisplayingProjectVersions(repository)) {
+ public Object[] fetchChildren(Object o, IProgressMonitor monitor)
+ throws TeamException {
+ if (CVSUIPlugin
+ .getPlugin()
+ .getRepositoryManager()
+ .isDisplayingProjectVersions(repository)) {
return getProjectVersionChildren(o, monitor);
} else {
return getVersionTagChildren(o, monitor);
}
}
-
+
/*
* Return the children as a list of versions whose children are projects
*/
- private Object[] getVersionTagChildren(Object o, IProgressMonitor monitor) throws CVSException {
- CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().getKnownTags(repository, getWorkingSet(), CVSTag.VERSION, monitor);
+ private Object[] getVersionTagChildren(Object o, IProgressMonitor monitor)
+ throws CVSException {
+ CVSTag[] tags =
+ CVSUIPlugin.getPlugin().getRepositoryManager().getKnownTags(
+ repository,
+ getWorkingSet(),
+ CVSTag.VERSION,
+ monitor);
CVSTagElement[] versionElements = new CVSTagElement[tags.length];
for (int i = 0; i < tags.length; i++) {
versionElements[i] = new CVSTagElement(tags[i], repository);
}
return versionElements;
}
-
+
/*
* Return the children as a list of projects whose children ar project versions
*/
- private Object[] getProjectVersionChildren(Object o, IProgressMonitor monitor) throws TeamException {
+ private Object[] getProjectVersionChildren(
+ Object o,
+ IProgressMonitor monitor)
+ throws TeamException {
IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
- ICVSRemoteResource[] resources = CVSUIPlugin.getPlugin().getRepositoryManager().getFoldersForTag(
- repository,
- CVSTag.DEFAULT,
- monitor);
+ ICVSRemoteResource[] resources =
+ CVSUIPlugin.getPlugin().getRepositoryManager().getFoldersForTag(
+ repository,
+ CVSTag.DEFAULT,
+ monitor);
if (getWorkingSet() != null)
- resources = CVSUIPlugin.getPlugin().getRepositoryManager().filterResources(getWorkingSet(), resources);
+ resources =
+ CVSUIPlugin.getPlugin().getRepositoryManager().filterResources(
+ getWorkingSet(),
+ resources);
Object[] modules = new Object[resources.length];
for (int i = 0; i < resources.length; i++) {
- modules[i] = new RemoteModule((ICVSRemoteFolder)resources[i], VersionCategory.this);
+ modules[i] =
+ new RemoteModule(
+ (ICVSRemoteFolder) resources[i],
+ VersionCategory.this);
}
return modules;
}
-
+
/**
* Returns an image descriptor to be used for displaying an object in the workbench.
* Returns null if there is no appropriate image.
@@ -102,7 +120,8 @@ public class VersionCategory extends CVSModelElement implements IAdaptable, IDef
* @param object The object to get an image descriptor for.
*/
public ImageDescriptor getImageDescriptor(Object object) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_VERSIONS_CATEGORY);
+ return CVSUIPlugin.getPlugin().getImageDescriptor(
+ ICVSUIConstants.IMG_VERSIONS_CATEGORY);
}
/**
@@ -127,7 +146,7 @@ public class VersionCategory extends CVSModelElement implements IAdaptable, IDef
public Object getParent(Object o) {
return repository;
}
-
+
/**
* Return the repository the given element belongs to.
*/
@@ -135,19 +154,22 @@ public class VersionCategory extends CVSModelElement implements IAdaptable, IDef
return repository;
}
- public void fetchDeferredChildren(Object o, IElementCollector collector, IProgressMonitor monitor) {
- try {
- collector.add(fetchChildren(o, monitor), monitor);
- } catch (TeamException e) {
- CVSUIPlugin.log(e);
- }
- }
+ public void fetchDeferredChildren(
+ Object o,
+ IElementCollector collector,
+ IProgressMonitor monitor) {
+ try {
+ collector.add(fetchChildren(o, monitor), monitor);
+ } catch (TeamException e) {
+ CVSUIPlugin.log(e);
+ }
+ }
- public boolean isContainer() {
- return true;
- }
+ public boolean isContainer() {
+ return true;
+ }
- public ISchedulingRule getRule() {
- return new BatchSimilarSchedulingRule("org.eclipse.team.cvs.ui.versioncategory"); //$NON-NLS-1$
- }
+ public ISchedulingRule getRule() {
+ return new BatchSimilarSchedulingRule("org.eclipse.team.cvs.ui.versioncategory"); //$NON-NLS-1$
+ }
}

Back to the top