Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java')
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java164
1 files changed, 67 insertions, 97 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java
index 26cea8ed0..ae1924d85 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java
@@ -12,12 +12,12 @@ package org.eclipse.team.internal.ccvs.ui.subscriber;
import java.util.*;
+import org.eclipse.compare.structuremergeviewer.IDiffContainer;
import org.eclipse.compare.structuremergeviewer.IDiffElement;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.*;
import org.eclipse.team.core.synchronize.*;
import org.eclipse.team.internal.ccvs.core.*;
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
@@ -25,7 +25,6 @@ import org.eclipse.team.internal.ccvs.core.resources.RemoteFile;
import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.ui.synchronize.viewers.*;
-import org.eclipse.ui.model.IWorkbenchAdapter;
import org.eclipse.ui.progress.UIJob;
/**
@@ -40,10 +39,9 @@ import org.eclipse.ui.progress.UIJob;
*
* {date/time, comment, user} -> {*files}
*/
-public class ChangeLogModelProvider extends HierarchicalModelProvider {
+public class ChangeLogModelProvider extends SynchronizeModelProvider {
private Map commentRoots = new HashMap();
- private PendingUpdateAdapter pendingItem;
private boolean shutdown = false;
private FetchLogEntriesJob fetchLogEntriesJob;
@@ -85,54 +83,12 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
}
}
- /**
- * The PendingUpdateAdapter is a convenience object that can be used
- * by a BaseWorkbenchContentProvider that wants to show a pending update.
- */
- public static class PendingUpdateAdapter implements IWorkbenchAdapter, IAdaptable {
-
- /**
- * Create a new instance of the receiver.
- */
- public PendingUpdateAdapter() {
- //No initial behavior
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IWorkbenchAdapter.class)
- return this;
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object o) {
- return new Object[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object)
- */
- public ImageDescriptor getImageDescriptor(Object object) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object)
- */
- public String getLabel(Object o) {
- return "Fetching logs from server. Please wait...";
+ public static class FullPathSyncInfoElement extends SyncInfoModelElement {
+ public FullPathSyncInfoElement(IDiffContainer parent, SyncInfo info) {
+ super(parent, info);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object)
- */
- public Object getParent(Object o) {
- return null;
+ public String getName() {
+ return getResource().getFullPath().toString();
}
}
@@ -146,17 +102,11 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
}
public IStatus run(IProgressMonitor monitor) {
if (set != null && !shutdown) {
- final SyncInfoModelElement[] nodes = calculateRoots(getSyncInfoTree(), monitor);
+ final SynchronizeModelElement[] nodes = calculateRoots(getSyncInfoSet(), monitor);
UIJob updateUI = new UIJob("updating change log viewers") {
public IStatus runInUIThread(IProgressMonitor monitor) {
- AbstractTreeViewer tree = getTreeViewer();
- if(pendingItem != null && tree != null && !tree.getControl().isDisposed()) {
- tree.remove(pendingItem);
- }
- for (int i = 0; i < nodes.length; i++) {
- addToViewer(nodes[i]);
- buildModelObjects(nodes[i]);
- }
+ StructuredViewer tree = getViewer();
+ tree.refresh();
return Status.OK_STATUS;
}
};
@@ -167,7 +117,7 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
}
};
- public ChangeLogModelProvider(SyncInfoTree set) {
+ public ChangeLogModelProvider(SyncInfoSet set) {
super(set);
}
@@ -176,25 +126,7 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
* @see org.eclipse.team.ui.synchronize.viewers.HierarchicalModelProvider#buildModelObjects(org.eclipse.compare.structuremergeviewer.DiffNode)
*/
protected IDiffElement[] buildModelObjects(SynchronizeModelElement node) {
- /*if(node == this) {
- UIJob job = new UIJob("") {
- public IStatus runInUIThread(IProgressMonitor monitor) {
- AbstractTreeViewer tree = getTreeViewer();
- if (tree != null && !tree.getControl().isDisposed()) {
- if(pendingItem == null) {
- pendingItem = new PendingUpdateAdapter();
- }
- IDiffElement[] elements = getChildren();
- for (int i = 0; i < elements.length; i++) {
- tree.remove(elements[i]);
- }
- tree.add(ChangeLogViewerInput.this, pendingItem);
- }
- return Status.OK_STATUS;
- }
- };
- job.schedule();
-
+ if(node == getModelRoot()) {
if(fetchLogEntriesJob == null) {
fetchLogEntriesJob = new FetchLogEntriesJob();
}
@@ -205,17 +137,15 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
} catch (InterruptedException e) {
}
}
- fetchLogEntriesJob.setSyncInfoSet(getSyncInfoTree());
+ fetchLogEntriesJob.setSyncInfoSet(getSyncInfoSet());
fetchLogEntriesJob.schedule();
- } else {
- return super.buildModelObjects(node);
- }*/
+ }
return new IDiffElement[0];
}
- private SyncInfoModelElement[] calculateRoots(SyncInfoSet set, IProgressMonitor monitor) {
+ private SynchronizeModelElement[] calculateRoots(SyncInfoSet set, IProgressMonitor monitor) {
commentRoots.clear();
- /*SyncInfo[] infos = set.getSyncInfos();
+ SyncInfo[] infos = set.getSyncInfos();
monitor.beginTask("fetching from server", set.size() * 100);
for (int i = 0; i < infos.length; i++) {
if(monitor.isCanceled()) {
@@ -226,13 +156,15 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
DateComment dateComment = new DateComment(logEntry.getDate(), logEntry.getComment(), logEntry.getAuthor());
ChangeLogDiffNode changeRoot = (ChangeLogDiffNode) commentRoots.get(dateComment);
if (changeRoot == null) {
- changeRoot = new ChangeLogDiffNode(this, logEntry);
+ changeRoot = new ChangeLogDiffNode(getModelRoot(), logEntry);
commentRoots.put(dateComment, changeRoot);
}
- changeRoot.add(infos[i]);
+ SynchronizeModelElement element = new FullPathSyncInfoElement(changeRoot, infos[i]);
+ associateDiffNode(element);
+ changeRoot.add(element);
}
monitor.worked(100);
- }*/
+ }
return (ChangeLogDiffNode[]) commentRoots.values().toArray(new ChangeLogDiffNode[commentRoots.size()]);
}
@@ -253,6 +185,7 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
String baseRevision = getRevisionString(base);
String remoteRevision = getRevisionString(remote);
String localRevision = getRevisionString(local);
+
// TODO: handle new files where there is no local or remote
boolean useRemote = true;
if(local != null && remote != null) {
@@ -280,13 +213,6 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
}
/* (non-Javadoc)
- * @see org.eclipse.team.ui.synchronize.views.HierarchicalModelProvider#syncSetChanged(org.eclipse.team.core.subscribers.ISyncInfoSetChangeEvent)
- */
- protected void syncSetChanged(ISyncInfoSetChangeEvent event) {
- reset();
- }
-
- /* (non-Javadoc)
* @see org.eclipse.team.ui.synchronize.views.HierarchicalModelProvider#dispose()
*/
public void dispose() {
@@ -296,4 +222,48 @@ public class ChangeLogModelProvider extends HierarchicalModelProvider {
}
super.dispose();
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#getViewerSorter()
+ */
+ public ViewerSorter getViewerSorter() {
+ return new SynchronizeModelElementSorter();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#doAdd(org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement, org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement)
+ */
+ protected void doAdd(SynchronizeModelElement parent, SynchronizeModelElement element) {
+ AbstractTreeViewer viewer = (AbstractTreeViewer)getViewer();
+ viewer.add(parent, element);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#doRemove(org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement)
+ */
+ protected void doRemove(SynchronizeModelElement element) {
+ AbstractTreeViewer viewer = (AbstractTreeViewer)getViewer();
+ viewer.remove(element);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#handleResourceAdditions(org.eclipse.team.core.synchronize.ISyncInfoTreeChangeEvent)
+ */
+ protected void handleResourceAdditions(ISyncInfoTreeChangeEvent event) {
+ reset();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#handleResourceChanges(org.eclipse.team.core.synchronize.ISyncInfoTreeChangeEvent)
+ */
+ protected void handleResourceChanges(ISyncInfoTreeChangeEvent event) {
+ reset();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#handleResourceRemovals(org.eclipse.team.core.synchronize.ISyncInfoTreeChangeEvent)
+ */
+ protected void handleResourceRemovals(ISyncInfoTreeChangeEvent event) {
+ reset();
+ }
}

Back to the top