blob: e10eb1ecca6455a4ac03ec90f68e3c8f8d74419b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 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.ui.tests.navigator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.part.ISetSelectionTarget;
import org.eclipse.ui.tests.harness.util.ActionUtil;
import org.eclipse.ui.tests.harness.util.FileUtil;
import org.eclipse.ui.tests.harness.util.UITestCase;
import org.eclipse.ui.views.navigator.ResourceNavigator;
public class ResourceNavigatorTest extends UITestCase {
private IWorkbenchPage activePage;
private IWorkbenchWindow workbenchWindow;
private IViewPart view;
private IProject p1;
private IProject p2;
private IFile f1;
private IFile f2;
/**
* Constructor for ResourceNavigatorTest.
* @param testName
*/
public ResourceNavigatorTest(String testName) {
super(testName);
}
protected void doSetUp() throws Exception {
super.doSetUp();
workbenchWindow = openTestWindow();
activePage = workbenchWindow.getActivePage();
}
private void setupView() throws Throwable {
view = activePage.showView("org.eclipse.ui.views.ResourceNavigator");
}
private void setupResources() throws Throwable {
if (p1 == null) {
p1 = FileUtil.createProject("TP1");
f1 = null;
}
if (p2 == null) {
p2 = FileUtil.createProject("TP2");
f2 = null;
}
if (f1 == null)
f1 = FileUtil.createFile("f1.txt", p1);
if (f2 == null)
f2 = FileUtil.createFile("f2.txt", p2);
}
public void fixTestGlobalBookmarkAction() throws Throwable {
setupView();
setupResources();
// Select a file
IStructuredSelection sel = new StructuredSelection(f1);
((ResourceNavigator) view).selectReveal(sel);
// Remember the previous marker count on the file
int oldCount = (f1.findMarkers(IMarker.BOOKMARK, true,
IResource.DEPTH_INFINITE)).length;
// Now try the bookmark action
ActionUtil.runActionUsingPath(this, workbenchWindow,
IWorkbenchActionConstants.M_EDIT + '/'
+ IWorkbenchActionConstants.BOOKMARK);
// Make sure the resource was bookmarked
int newCount = (f1.findMarkers(IMarker.BOOKMARK, true,
IResource.DEPTH_INFINITE)).length;
assertTrue(
"Selected file was not bookmarked via Edit->Bookmark action.",
oldCount + 1 == newCount);
}
/*
* This test should be moved to an interactive test suite as this
* test causes a dialog to popup when the resource is deleted by
* the delete action
*
public void testGlobalDeleteAction() throws Throwable {
setupView();
setupResources();
// Select a file
IStructuredSelection sel = new StructuredSelection(f1);
((ResourceNavigator) view).selectReveal(sel);
// Now try the delete action
ActionUtil.runActionUsingPath(this, workbenchWindow, IWorkbenchActionConstants.M_EDIT + '/' + IWorkbenchActionConstants.DELETE);
// Make sure the resource was deleted
assertTrue("Selected file was not deleted via Edit->Delete action.", p1.findMember(f1.getName()) == null);
f1 = null;
}
*/
public void testSelectReveal() throws Throwable {
setupView();
setupResources();
ISetSelectionTarget part = (ISetSelectionTarget) view;
TreeViewer tree = ((ResourceNavigator) view).getViewer();
// Set the selection in the navigator
IStructuredSelection sel1 = new StructuredSelection(f1);
part.selectReveal(sel1);
// Get the selection the tree has
IStructuredSelection treeSel1 = (IStructuredSelection) tree
.getSelection();
assertTrue("First selection wrong size, should be only one.", treeSel1
.size() == 1);
IResource resource1 = (IResource) treeSel1.getFirstElement();
assertTrue("First selection contains wrong file resource.", resource1
.equals(f1));
// Set the selection in the navigator
IStructuredSelection sel2 = new StructuredSelection(p2);
part.selectReveal(sel2);
// Get the selection the tree has
IStructuredSelection treeSel2 = (IStructuredSelection) tree
.getSelection();
assertTrue("Second selection wrong size, should be only one.", treeSel2
.size() == 1);
IResource resource2 = (IResource) treeSel2.getFirstElement();
assertTrue("Second selection contains wrong project resource.",
resource2.equals(p2));
}
public void testWorkingSet() throws Throwable {
setupView();
setupResources();
ResourceNavigator navigator = ((ResourceNavigator) view);
IWorkingSetManager workingSetManager = fWorkbench
.getWorkingSetManager();
IWorkingSet workingSet = workingSetManager.createWorkingSet("ws1",
new IAdaptable[] { f1 });
assertNull(navigator.getWorkingSet());
navigator.setWorkingSet(workingSet);
assertEquals(workingSet, navigator.getWorkingSet());
navigator.setWorkingSet(null);
assertNull(navigator.getWorkingSet());
FileUtil.createFile("f11.txt", p1);
navigator.setWorkingSet(workingSet);
TreeViewer viewer = navigator.getTreeViewer();
viewer.expandAll();
TreeItem[] items = viewer.getTree().getItems();
assertEquals(p1, items[0].getData());
items = items[0].getItems();
assertEquals(f1, items[0].getData());
}
}