### Eclipse Workspace Patch 1.0 #P org.eclipse.team.tests.cvs.core Index: src/org/eclipse/team/tests/ccvs/ui/PatchTreeTest.java =================================================================== RCS file: src/org/eclipse/team/tests/ccvs/ui/PatchTreeTest.java diff -N src/org/eclipse/team/tests/ccvs/ui/PatchTreeTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/team/tests/ccvs/ui/PatchTreeTest.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,152 @@ +/******************************************************************************* + * Copyright (c) 2011 IBM 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.team.tests.ccvs.ui; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerSorter; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Item; +import org.eclipse.swt.widgets.Widget; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.core.synchronize.SyncInfoSet; +import org.eclipse.team.internal.ccvs.core.mapping.CVSActiveChangeSet; +import org.eclipse.team.internal.ui.synchronize.ChangeSetCapability; +import org.eclipse.team.internal.ui.synchronize.ChangeSetDiffNode; +import org.eclipse.team.internal.ui.synchronize.ChangeSetModelProvider; +import org.eclipse.team.internal.ui.synchronize.ChangeSetModelSorter; +import org.eclipse.team.internal.ui.synchronize.SynchronizeModelElementSorter; +import org.eclipse.team.internal.ui.synchronize.SynchronizePageConfiguration; +import org.eclipse.team.internal.ui.synchronize.TreeViewerAdvisor; +import org.eclipse.team.internal.ui.synchronize.UnchangedResourceModelElement; +import org.eclipse.team.tests.ccvs.core.EclipseTest; +import org.eclipse.team.ui.synchronize.ISynchronizePage; +import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; +import org.eclipse.team.ui.synchronize.ISynchronizePageSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; + +public class PatchTreeTest extends EclipseTest { + + private SynchronizePageConfiguration getMyConfiguration(final Viewer viewer){ + SynchronizePageConfiguration conf = new SynchronizePageConfiguration(null); + conf.setPage(new ISynchronizePage() { + + public void init(ISynchronizePageSite site) throws PartInitException {} + + public Viewer getViewer() { + return viewer; + } + + public boolean aboutToChangeProperty( + ISynchronizePageConfiguration configuration, String key, + Object newValue) {return false;} + }); + return conf; + } + + private class MyModelProvider extends ChangeSetModelProvider implements IPropertyChangeListener{ + + public ChangeSetCapability getChangeSetCapability() { + return new ChangeSetCapability() { + }; + } + + public MyModelProvider(final Viewer viewer) { + super(getMyConfiguration(viewer), new SyncInfoSet(), "sampleProviderId"); + addPropertyChangeListener(this); + } + + public void propertyChange(PropertyChangeEvent event) { + // nothing to do + } + + } + + private class MyTreeViewer extends TreeViewerAdvisor.NavigableCheckboxTreeViewer { + + public MyTreeViewer(Composite parent, int style) { + super(parent, style); + } + + public void testInternalAdd(Object[] childElements){ + internalAdd(this.getTree(), null, childElements); + } + + public Item[] testGetChildren(Widget widget){ + return this.getChildren(widget); + } + + public void init(){ + ChangeSetModelProvider provider = new MyModelProvider(this); + provider.setViewerSorter(new SynchronizeModelElementSorter()); + ChangeSetModelSorter sorter = new ChangeSetModelSorter(provider, 0); + + + setSorter(sorter); + } + } + + public void testChangeSetModelSorter() throws CoreException{ + MyTreeViewer tree = new MyTreeViewer(new Composite(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), 0) + , SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); + tree.init(); + ViewerSorter sorter = tree.getSorter(); + + UnchangedResourceModelElement element = new UnchangedResourceModelElement(null, getUniqueTestProject("z")); + ChangeSetDiffNode nodeA = new ChangeSetDiffNode(null, new CVSActiveChangeSet(null, "a")); + ChangeSetDiffNode nodeB = new ChangeSetDiffNode(null, new CVSActiveChangeSet(null, "b")); + ChangeSetDiffNode nodeC = new ChangeSetDiffNode(null, new CVSActiveChangeSet(null, "c")); + Object[] elements = {nodeB, nodeC, element, nodeA}; + + sorter.sort(tree, elements); + + Object firstElement = elements[0]; + for(int i=0; i