From 3730cf32fe4ca79a01f7723f1253a2046d5e54b1 Mon Sep 17 00:00:00 2001 From: Remy Suen Date: Fri, 29 Jan 2010 17:35:54 +0000 Subject: Bug 295003 [UI] Design and implement a EPartService API --- .../e4/workbench/ui/internal/PartServiceImpl.java | 7 ++- .../e4/ui/tests/application/EPartServiceTest.java | 62 ++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java index 8625f2c5aca..f5fbb8fbaec 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java @@ -315,13 +315,18 @@ public class PartServiceImpl implements EPartService { rootContainer.getChildren().add(stack); } + MPart activePart = getActivePart(); + if (activePart == null) { + activate(part); + return part; + } + // 3) make it visible / active / re-layout switch (partState) { case ACTIVATE: activate(part); return part; case VISIBLE: - MPart activePart = getActivePart(); if (activePart.getParent() != part.getParent()) { bringToTop(part); } diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java index 65162903552..3f9abd2e564 100644 --- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java +++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java @@ -969,6 +969,37 @@ public class EPartServiceTest extends TestCase { partService.isPartVisible(partB)); } + public void testShowPart_CREATE4() { + MApplication application = MApplicationFactory.eINSTANCE + .createApplication(); + MWindow window = MApplicationFactory.eINSTANCE.createWindow(); + application.getChildren().add(window); + MPartStack stack = MApplicationFactory.eINSTANCE.createPartStack(); + stack.setId("stackId"); + window.getChildren().add(stack); + + MPartDescriptor partDescriptor = MApplicationFactory.eINSTANCE + .createPartDescriptor(); + partDescriptor.setId("part"); + partDescriptor.setCategory("stackId"); + application.getDescriptors().add(partDescriptor); + + application.setActiveChild(window); + + initialize(applicationContext, application); + + getEngine().createGui(window); + + EPartService partService = (EPartService) window.getContext().get( + EPartService.class.getName()); + MPart part = partService + .showPart("part", EPartService.PartState.CREATE); + + assertEquals(1, stack.getChildren().size()); + assertEquals(part, stack.getChildren().get(0)); + assertEquals(part, partService.getActivePart()); + } + public void testShowPart_VISIBLE() { MApplication application = MApplicationFactory.eINSTANCE .createApplication(); @@ -1117,6 +1148,37 @@ public class EPartServiceTest extends TestCase { partService.isPartVisible(partB)); } + public void testShowPart_VISIBLE4() { + MApplication application = MApplicationFactory.eINSTANCE + .createApplication(); + MWindow window = MApplicationFactory.eINSTANCE.createWindow(); + application.getChildren().add(window); + MPartStack stack = MApplicationFactory.eINSTANCE.createPartStack(); + stack.setId("stackId"); + window.getChildren().add(stack); + + MPartDescriptor partDescriptor = MApplicationFactory.eINSTANCE + .createPartDescriptor(); + partDescriptor.setId("part"); + partDescriptor.setCategory("stackId"); + application.getDescriptors().add(partDescriptor); + + application.setActiveChild(window); + + initialize(applicationContext, application); + + getEngine().createGui(window); + + EPartService partService = (EPartService) window.getContext().get( + EPartService.class.getName()); + MPart part = partService.showPart("part", + EPartService.PartState.VISIBLE); + + assertEquals(1, stack.getChildren().size()); + assertEquals(part, stack.getChildren().get(0)); + assertEquals(part, partService.getActivePart()); + } + public void testGetSaveableParts() { MApplication application = createApplication(1, new String[1][0]); MWindow window = application.getChildren().get(0); -- cgit v1.2.3