blob: f38b90806c333de7f10f500f97998c633465e9a1 [file] [log] [blame]
package org.eclipse.team.internal.ccvs.ui;
/*
* (c) Copyright IBM Corp. 2000, 2002.
* All Rights Reserved.
*/
import org.eclipse.compare.structuremergeviewer.ICompareInput;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.core.sync.IRemoteResource;
import org.eclipse.team.core.sync.IRemoteSyncElement;
import org.eclipse.team.internal.ccvs.core.CVSTag;
import org.eclipse.team.internal.ccvs.core.resources.CVSRemoteSyncElement;
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
import org.eclipse.team.internal.ccvs.core.util.Assert;
import org.eclipse.team.internal.ccvs.ui.sync.CVSSyncCompareInput;
import org.eclipse.team.internal.ui.sync.SyncView;
public class CVSLocalCompareEditorInput extends CVSSyncCompareInput {
CVSTag[] tags;
public CVSLocalCompareEditorInput(IResource[] resources, CVSTag[] tags) {
super(resources);
Assert.isTrue(resources.length == tags.length);
this.tags = tags;
}
public CVSLocalCompareEditorInput(IResource[] resources, CVSTag tag) {
super(resources);
Assert.isTrue(tag != null);
this.tags = new CVSTag[] {tag};
}
public Viewer createDiffViewer(Composite parent) {
Viewer viewer = super.createDiffViewer(parent);
getViewer().syncModeChanged(SyncView.SYNC_COMPARE);
return viewer;
}
protected IRemoteSyncElement[] createSyncElements(IProgressMonitor monitor) throws TeamException {
IResource[] resources = getResources();
IRemoteSyncElement[] trees = new IRemoteSyncElement[resources.length];
int work = 100 * resources.length;
monitor.beginTask(null, work);
try {
for (int i = 0; i < trees.length; i++) {
IResource resource = resources[i];
CVSTag tag;
if(tags.length != resources.length) {
tag = tags[0];
} else {
tag = tags[i];
}
IRemoteResource remote = CVSWorkspaceRoot.getRemoteTree(resource, tag, Policy.subMonitorFor(monitor, 50));
trees[i] = new CVSRemoteSyncElement(false /* two-way */, resource, null, remote);
}
} finally {
monitor.done();
}
//getViewer().resetFilters();
return trees;
}
public String getTitle() {
return Policy.bind("CVSLocalCompareEditorInput.title", tags[0].getName()); //$NON-NLS-1$
}
public boolean isSaveNeeded() {
return false;
}
protected void contentsChanged(ICompareInput source) {
}
}