|
Added
Link Here
|
| 1 |
/******************************************************************************* |
| 2 |
* Copyright (c) 2008 Oakland Software Incorporated and others. |
| 3 |
* All rights reserved. This program and the accompanying materials |
| 4 |
* are made available under the terms of the Eclipse Public License v1.0 |
| 5 |
* which accompanies this distribution, and is available at |
| 6 |
* http://www.eclipse.org/legal/epl-v10.html |
| 7 |
* |
| 8 |
* Contributors: |
| 9 |
* Oakland Software Incorporated - initial API and implementation |
| 10 |
*******************************************************************************/ |
| 11 |
package org.eclipse.ui.tests.navigator; |
| 12 |
|
| 13 |
import java.io.ByteArrayInputStream; |
| 14 |
|
| 15 |
import org.eclipse.core.resources.IFile; |
| 16 |
import org.eclipse.core.resources.IProject; |
| 17 |
import org.eclipse.core.resources.ResourcesPlugin; |
| 18 |
import org.eclipse.core.runtime.IAdaptable; |
| 19 |
import org.eclipse.jface.util.IPropertyChangeListener; |
| 20 |
import org.eclipse.jface.util.PropertyChangeEvent; |
| 21 |
import org.eclipse.swt.widgets.Display; |
| 22 |
import org.eclipse.swt.widgets.TreeItem; |
| 23 |
import org.eclipse.ui.IWorkingSet; |
| 24 |
import org.eclipse.ui.PlatformUI; |
| 25 |
import org.eclipse.ui.actions.WorkingSetFilterActionGroup; |
| 26 |
import org.eclipse.ui.internal.AggregateWorkingSet; |
| 27 |
import org.eclipse.ui.internal.WorkingSet; |
| 28 |
import org.eclipse.ui.internal.navigator.resources.actions.WorkingSetActionProvider; |
| 29 |
import org.eclipse.ui.internal.navigator.workingsets.WorkingSetsContentProvider; |
| 30 |
import org.eclipse.ui.navigator.IExtensionStateModel; |
| 31 |
import org.eclipse.ui.navigator.resources.ProjectExplorer; |
| 32 |
import org.eclipse.ui.tests.navigator.util.TestWorkspace; |
| 33 |
|
| 34 |
public class WorkingSetTest extends NavigatorTestBase { |
| 35 |
|
| 36 |
public WorkingSetTest() { |
| 37 |
_navigatorInstanceId = ProjectExplorer.VIEW_ID; |
| 38 |
_initTestData = false; |
| 39 |
} |
| 40 |
|
| 41 |
// Bug 157877 when using empty window working set, it should show all |
| 42 |
public void testEmptyWindowWorkingSet() throws Exception { |
| 43 |
TestWorkspace.init(); |
| 44 |
|
| 45 |
WorkingSetActionProvider provider = (WorkingSetActionProvider) TestAccessHelper |
| 46 |
.getActionProvider(contentService, _actionService, |
| 47 |
WorkingSetActionProvider.class); |
| 48 |
|
| 49 |
IWorkingSet workingSet = PlatformUI.getWorkbench() |
| 50 |
.getActiveWorkbenchWindow().getActivePage() |
| 51 |
.getAggregateWorkingSet(); |
| 52 |
|
| 53 |
// Set the filter to window working set (which should be empty) |
| 54 |
IPropertyChangeListener l = provider.getFilterChangeListener(); |
| 55 |
PropertyChangeEvent event = new PropertyChangeEvent(this, |
| 56 |
WorkingSetFilterActionGroup.CHANGE_WORKING_SET, null, |
| 57 |
workingSet); |
| 58 |
l.propertyChange(event); |
| 59 |
|
| 60 |
TreeItem[] items = viewer.getTree().getItems(); |
| 61 |
assertTrue("There should be some items.", items.length > 0); |
| 62 |
} |
| 63 |
|
| 64 |
// Bug 212389 projects are not shown when they are not in the working set, |
| 65 |
// but their children are |
| 66 |
public void testMissingProjectsInWorkingSet() throws Exception { |
| 67 |
|
| 68 |
IProject p1 = ResourcesPlugin.getWorkspace().getRoot().getProject("p1"); |
| 69 |
p1.create(null); |
| 70 |
p1.open(null); |
| 71 |
IFile f1 = p1.getFile("f1"); |
| 72 |
f1.create(new ByteArrayInputStream(new byte[] {}), true, null); |
| 73 |
|
| 74 |
WorkingSetActionProvider provider = (WorkingSetActionProvider) TestAccessHelper |
| 75 |
.getActionProvider(contentService, _actionService, |
| 76 |
WorkingSetActionProvider.class); |
| 77 |
|
| 78 |
IWorkingSet workingSet = new WorkingSet("ws1", "ws1", |
| 79 |
new IAdaptable[] { f1 }); |
| 80 |
|
| 81 |
AggregateWorkingSet agWorkingSet = new AggregateWorkingSet("AgWs", |
| 82 |
"Ag Working Set", new IWorkingSet[] { workingSet }); |
| 83 |
|
| 84 |
IPropertyChangeListener l = provider.getFilterChangeListener(); |
| 85 |
PropertyChangeEvent event = new PropertyChangeEvent(this, |
| 86 |
WorkingSetFilterActionGroup.CHANGE_WORKING_SET, null, |
| 87 |
agWorkingSet); |
| 88 |
l.propertyChange(event); |
| 89 |
|
| 90 |
DisplayHelper.runEventLoop(Display.getCurrent(), 100); |
| 91 |
|
| 92 |
// DisplayHelper.sleep(Display.getCurrent(), 10000000); |
| 93 |
|
| 94 |
TreeItem[] items = viewer.getTree().getItems(); |
| 95 |
// The bug is here where the first item is a IFile, not the enclosing |
| 96 |
// project |
| 97 |
assertTrue("First item needs to be project", items[0].getData().equals( |
| 98 |
p1)); |
| 99 |
} |
| 100 |
|
| 101 |
// bug 220090 test that working sets are shown when selected locally (not |
| 102 |
// using the window working set) |
| 103 |
public void testTopLevelWorkingSet() throws Exception { |
| 104 |
|
| 105 |
IProject p1 = ResourcesPlugin.getWorkspace().getRoot().getProject("p1"); |
| 106 |
p1.create(null); |
| 107 |
p1.open(null); |
| 108 |
IFile f1 = p1.getFile("f1"); |
| 109 |
f1.create(new ByteArrayInputStream(new byte[] {}), true, null); |
| 110 |
|
| 111 |
WorkingSetActionProvider provider = (WorkingSetActionProvider) TestAccessHelper |
| 112 |
.getActionProvider(contentService, _actionService, |
| 113 |
WorkingSetActionProvider.class); |
| 114 |
|
| 115 |
IExtensionStateModel extensionStateModel = contentService |
| 116 |
.findStateModel(WorkingSetsContentProvider.EXTENSION_ID); |
| 117 |
|
| 118 |
extensionStateModel.setBooleanProperty( |
| 119 |
WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS, true); |
| 120 |
|
| 121 |
IWorkingSet workingSet = new WorkingSet("ws1", "ws1", |
| 122 |
new IAdaptable[] { p1 }); |
| 123 |
|
| 124 |
IPropertyChangeListener l = provider.getFilterChangeListener(); |
| 125 |
PropertyChangeEvent event = new PropertyChangeEvent(this, |
| 126 |
WorkingSetFilterActionGroup.CHANGE_WORKING_SET, null, |
| 127 |
workingSet); |
| 128 |
l.propertyChange(event); |
| 129 |
|
| 130 |
//DisplayHelper.sleep(Display.getCurrent(), 10000000); |
| 131 |
|
| 132 |
TreeItem[] items = viewer.getTree().getItems(); |
| 133 |
// The bug is here where the first item is a IFile, not the enclosing |
| 134 |
// project |
| 135 |
assertTrue("First item needs to be working set", items[0].getData().equals( |
| 136 |
workingSet)); |
| 137 |
} |
| 138 |
|
| 139 |
} |