diff options
| author | Brian de Alwis | 2016-05-11 15:20:14 +0000 |
|---|---|---|
| committer | Brian de Alwis | 2016-05-17 17:17:36 +0000 |
| commit | 78b6ea727ada099e2d46d30ae9ff34f6528f8a19 (patch) | |
| tree | e5033ba13fa8e77f4b39e8730c58d058b69a3066 | |
| parent | 5aa64a0dece73a7a3176d924dbaac209604c40cb (diff) | |
| download | eclipse.platform.ui-78b6ea727ada099e2d46d30ae9ff34f6528f8a19.tar.gz eclipse.platform.ui-78b6ea727ada099e2d46d30ae9ff34f6528f8a19.tar.xz eclipse.platform.ui-78b6ea727ada099e2d46d30ae9ff34f6528f8a19.zip | |
Bug 493335 - [WorkingSets] Setting window working set affects all windows
Change-Id: Iebdc295eac74a2e014baa69c1863f69145e3d793
3 files changed, 54 insertions, 17 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java index 68f46322912..2c9a500f020 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java @@ -4674,14 +4674,10 @@ public class WorkbenchPage implements IWorkbenchPage { .getWorkingSetManager(); if (aggregateWorkingSetId == null) { - aggregateWorkingSet = findAggregateWorkingSet(workingSetManager); - aggregateWorkingSetId = aggregateWorkingSet == null ? getDefaultAggregateWorkingSetId() - : aggregateWorkingSet.getName(); + aggregateWorkingSetId = generateAggregateWorkingSetId(); } else { - aggregateWorkingSet = (AggregateWorkingSet) workingSetManager - .getWorkingSet(aggregateWorkingSetId); + aggregateWorkingSet = (AggregateWorkingSet) workingSetManager.getWorkingSet(aggregateWorkingSetId); } - if (aggregateWorkingSet == null) { aggregateWorkingSet = (AggregateWorkingSet) workingSetManager .createAggregateWorkingSet(aggregateWorkingSetId, @@ -4693,19 +4689,10 @@ public class WorkbenchPage implements IWorkbenchPage { return aggregateWorkingSet; } - private String getDefaultAggregateWorkingSetId() { + private String generateAggregateWorkingSetId() { return "Aggregate for window " + System.currentTimeMillis(); //$NON-NLS-1$ } - private AggregateWorkingSet findAggregateWorkingSet(IWorkingSetManager workingSetManager) { - for (IWorkingSet workingSet : workingSetManager.getAllWorkingSets()) { - if (workingSet instanceof AggregateWorkingSet) { - return (AggregateWorkingSet) workingSet; - } - } - return null; - } - @Override public void showEditor(IEditorReference ref) { // FIXME compat showEditor diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java index 2967910d947..a1db8fe1376 100644 --- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java +++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/ApiTestSuite.java @@ -68,7 +68,7 @@ import org.junit.runners.Suite; //IWorkbenchPartTestableTests.class, ArbitraryPropertyTest.class, LifecycleViewTest.class, - Bug407422Test.class + Bug407422Test.class, MultipleWindowsTest.class }) public class ApiTestSuite { diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/MultipleWindowsTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/MultipleWindowsTest.java new file mode 100644 index 00000000000..66d757728e8 --- /dev/null +++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/api/MultipleWindowsTest.java @@ -0,0 +1,50 @@ +package org.eclipse.ui.tests.api; + +import static org.junit.Assert.assertNotSame; + +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.WorkbenchException; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * A set of tests for multiple monitor situations that ensures interactions are + * isolated to the respective window. + */ +public class MultipleWindowsTest { + IWorkbench wb; + IWorkbenchWindow win1; + IWorkbenchWindow win2; + + @Before + public void setUp() throws WorkbenchException { + IWorkbench wb = PlatformUI.getWorkbench(); + win1 = wb.openWorkbenchWindow(null); + win2 = wb.openWorkbenchWindow(null); + assertNotSame(win1, win2); + } + + @After + public void tearDown() { + if (win1 != null) { + win1.close(); + win1 = null; + } + if (win2 != null) { + win2.close(); + win2 = null; + } + } + + /** + * {@link http://eclip.se/493335 Bug 493335 - [WorkingSets] Setting window + * working set affects all windows} + */ + @Test + public void testIndependentWorkingSets() { + assertNotSame(win1.getActivePage().getAggregateWorkingSet(), win2.getActivePage().getAggregateWorkingSet()); + } +} |
