private void launchWorkbenchActivityAtPosition(final PlaceRequest place, final WorkbenchActivity activity, final Position position, final PanelDefinition _panel) { if (visibleWorkbenchParts.containsKey(place)) { selectWorkbenchPartEvent.fire(new SelectPlaceEvent(place)); return; } final PartDefinition part = new PartDefinitionImpl(place); final PanelDefinition panel; if (_panel != null) { panel = _panel; } else { panel = panelManager.addWorkbenchPanel(panelManager.getRoot(), position, activity.preferredHeight(), activity.preferredWidth(), null, null); } launchWorkbenchActivityInPanel(place, activity, part, panel); }
@Test public void testLaunchExistingActivityInCustomPanelInsideHTMLElement() throws Exception { HTMLElement customContainer = mock(HTMLElement.class); when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(kansas, customContainer); verify(panelManager, never()) .addCustomPanel(customContainer, StaticWorkbenchPanelPresenter.class.getName()); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); }
@Test public void testLaunchExistingActivityInCustomPanel() throws Exception { HasWidgets customContainer = mock(HasWidgets.class); when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(kansas, customContainer); verify(panelManager, never()) .addCustomPanel(customContainer, StaticWorkbenchPanelPresenter.class.getName()); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); }
@Test public void testLaunchExistingActivityInCustomPanel() throws Exception { HasWidgets customContainer = mock(HasWidgets.class); when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(kansas, customContainer); verify(panelManager, never()) .addCustomPanel(customContainer, StaticWorkbenchPanelPresenter.class.getName()); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); }
@Test public void testLaunchExistingActivityInCustomPanelInsideHTMLElement() throws Exception { HTMLElement customContainer = mock(HTMLElement.class); when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(kansas, customContainer); verify(panelManager, never()) .addCustomPanel(customContainer, StaticWorkbenchPanelPresenter.class.getName()); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); }
@Test public void testGoToPlaceWeAreAlreadyAt() throws Exception { when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(kansas, (PanelDefinition) null); // note "refEq" tests equality field by field using reflection. don't read it as "reference equals!" :) verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); }
@Test public void testGoToPlaceWeAreAlreadyAt() throws Exception { when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(kansas, (PanelDefinition) null); // note "refEq" tests equality field by field using reflection. don't read it as "reference equals!" :) verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); }
@Test public void testGoToPartWeAreAlreadyAt() throws Exception { when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(new PartDefinitionImpl(kansas), null); // note "refEq" tests equality field by field using reflection. don't read it as "reference equals!" :) verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); }
@Test public void testGoToPartWeAreAlreadyAt() throws Exception { when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); placeManager.goTo(new PartDefinitionImpl(kansas), null); // note "refEq" tests equality field by field using reflection. don't read it as "reference equals!" :) verify(selectWorkbenchPartEvent).fire(refEq(new SelectPlaceEvent(kansas))); verifyNoActivityLaunchSideEffects(kansas, kansasActivity); }
selectPlaceEvent.fire(new SelectPlaceEvent(place));
never()).fire(refEq(new SelectPlaceEvent(partPlace)));
never()).fire(refEq(new SelectPlaceEvent(partPlace)));
final PanelDefinition panel) { if (visibleWorkbenchParts.containsKey(place)) { selectWorkbenchPartEvent.fire(new SelectPlaceEvent(place)); return;
@Test public void addPartToRootPanelShouldWork() throws Exception { PlaceRequest rootPartPlace = new DefaultPlaceRequest("rootPartPlace"); PartDefinition rootPart = new PartDefinitionImpl(rootPartPlace); Menus rootPartMenus = MenuFactory.newContributedMenu("RootPartMenu").endMenu().build(); UIPart rootUiPart = new UIPart("RootUiPart", null, mock(IsWidget.class)); panelManager.addWorkbenchPart(rootPartPlace, rootPart, panelManager.getRoot(), rootPartMenus, rootUiPart, "rootContextId", 100, 200); // the presenter should have been created and configured for the rootPart verify(partPresenter).setWrappedWidget(rootUiPart.getWidget()); verify(partPresenter).setContextId("rootContextId"); // the panel manager should be aware of the place/part mapping for the added part assertEquals(rootPart, panelManager.getPartForPlace(rootPartPlace)); // the panel manager should select the place, firing a general notification verify(selectPlaceEvent).fire(refEq(new SelectPlaceEvent(rootPartPlace))); // the panel manager should have modified the panel or part definitions (this is the responsibility of the parent panel) assertEquals(null, rootPart.getParentPanel()); assertFalse(panelManager.getRoot().getParts().contains(rootPart)); }
@Test public void onSelectPlaceEventFocusesCorrectPresenter() throws Exception { PanelDefinition p1 = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PartDefinition pd1 = new PartDefinitionImpl(new DefaultPlaceRequest()); p1.addPart(pd1); testPerspectiveDef.getRoot().appendChild(CompassPosition.WEST, p1); panelManager.addWorkbenchPanel(panelManager.getRoot(), p1, CompassPosition.WEST); PanelDefinition p2 = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PartDefinition pd2 = new PartDefinitionImpl(new PathPlaceRequest()); p2.addPart(pd2); testPerspectiveDef.getRoot().appendChild(CompassPosition.EAST, p2); panelManager.addWorkbenchPanel(panelManager.getRoot(), p2, CompassPosition.EAST); SelectPlaceEvent event = new SelectPlaceEvent(new PathPlaceRequest()); panelManager.onSelectPlaceEvent(event); final WorkbenchPanelPresenter partPresenter = panelManager.mapPanelDefinitionToPresenter.get(p2); verify(partPresenter, times(2)).setFocus(true); }
@Test public void onSelectPlaceEventFocusesCorrectPresenter() throws Exception { PanelDefinition p1 = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PartDefinition pd1 = new PartDefinitionImpl(new DefaultPlaceRequest()); p1.addPart(pd1); testPerspectiveDef.getRoot().appendChild(CompassPosition.WEST, p1); panelManager.addWorkbenchPanel(panelManager.getRoot(), p1, CompassPosition.WEST); PanelDefinition p2 = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PartDefinition pd2 = new PartDefinitionImpl(new PathPlaceRequest()); p2.addPart(pd2); testPerspectiveDef.getRoot().appendChild(CompassPosition.EAST, p2); panelManager.addWorkbenchPanel(panelManager.getRoot(), p2, CompassPosition.EAST); SelectPlaceEvent event = new SelectPlaceEvent(new PathPlaceRequest()); panelManager.onSelectPlaceEvent(event); final WorkbenchPanelPresenter partPresenter = panelManager.mapPanelDefinitionToPresenter.get(p2); verify(partPresenter, times(2)).setFocus(true); }
@Test public void addPartToRootPanelShouldWork() throws Exception { PlaceRequest rootPartPlace = new DefaultPlaceRequest("rootPartPlace"); PartDefinition rootPart = new PartDefinitionImpl(rootPartPlace); Menus rootPartMenus = MenuFactory.newContributedMenu("RootPartMenu").endMenu().build(); UIPart rootUiPart = new UIPart("RootUiPart", null, mock(IsWidget.class)); panelManager.addWorkbenchPart(rootPartPlace, rootPart, panelManager.getRoot(), rootPartMenus, rootUiPart, "rootContextId", 100, 200); // the presenter should have been created and configured for the rootPart verify(partPresenter).setWrappedWidget(rootUiPart.getWidget()); verify(partPresenter).setContextId("rootContextId"); // the panel manager should be aware of the place/part mapping for the added part assertEquals(rootPart, panelManager.getPartForPlace(rootPartPlace)); // the panel manager should select the place, firing a general notification verify(selectPlaceEvent).fire(refEq(new SelectPlaceEvent(rootPartPlace))); // the panel manager should have modified the panel or part definitions (this is the responsibility of the parent panel) assertEquals(null, rootPart.getParentPanel()); assertFalse(panelManager.getRoot().getParts().contains(rootPart)); }