@Override default String getName() { return getDefaultPerspectiveLayout().getName(); }
public List<PerspectiveActivity> getPerspectiveActivities() { final Set<PerspectiveActivity> activities = activityManager.getActivities(PerspectiveActivity.class); List<PerspectiveActivity> sortedActivitiesForDisplay = new ArrayList<>(activities); Collections.sort(sortedActivitiesForDisplay, (o1, o2) -> o1.getDefaultPerspectiveLayout().getName().compareTo(o2.getDefaultPerspectiveLayout().getName())); return sortedActivitiesForDisplay; }
@SuppressWarnings({"rawtypes", "unchecked"}) @Override public Void answer(InvocationOnMock invocation) throws Throwable { ParameterizedCommand callback = (ParameterizedCommand) invocation.getArguments()[2]; PerspectiveActivity perspectiveActivity = (PerspectiveActivity) invocation.getArguments()[1]; callback.execute(perspectiveActivity.getDefaultPerspectiveLayout()); return null; } }).when(perspectiveManager).switchToPerspective(any(PlaceRequest.class),
@SuppressWarnings({"rawtypes", "unchecked"}) @Override public Void answer(InvocationOnMock invocation) throws Throwable { ParameterizedCommand callback = (ParameterizedCommand) invocation.getArguments()[2]; PerspectiveActivity perspectiveActivity = (PerspectiveActivity) invocation.getArguments()[1]; callback.execute(perspectiveActivity.getDefaultPerspectiveLayout()); return null; } }).when(perspectiveManager).switchToPerspective(any(PlaceRequest.class),
@Override public void execute(final PerspectiveDefinition response) { if (isAValidDefinition(response)) { doAfterFetch.execute(response); } else { doAfterFetch.execute(perspective.getDefaultPerspectiveLayout()); } } });
public List<MenuItem> getPerspectivesMenuItems() { final List<MenuItem> perspectives = new ArrayList<>(); for (final PerspectiveActivity perspective : getPerspectiveActivities()) { final String name = perspective.getDefaultPerspectiveLayout().getName(); final MenuItem item = newSimpleItem(name).perspective(perspective.getIdentifier()).endMenu().build().getItems().get(0); perspectives.add(item); } return perspectives; }
@Test public void shouldSaveNonTransientPerspectives() throws Exception { PerspectiveDefinition kansasDefinition = new PerspectiveDefinitionImpl(MultiListWorkbenchPanelPresenter.class.getName()); PerspectiveActivity kansas = mock(PerspectiveActivity.class); when(kansas.getDefaultPerspectiveLayout()).thenReturn(kansasDefinition); when(kansas.getIdentifier()).thenReturn("kansas_perspective"); when(kansas.isTransient()).thenReturn(false); perspectiveManager.switchToPerspective(pr, kansas, doWhenFinished); perspectiveManager.savePerspectiveState(doWhenFinishedSave); verify(wbServices).save(eq("kansas_perspective"), eq(kansasDefinition), eq(doWhenFinishedSave)); }
@Test public void shouldNotSaveTransientPerspectives() throws Exception { PerspectiveDefinition kansasDefinition = new PerspectiveDefinitionImpl(MultiListWorkbenchPanelPresenter.class.getName()); PerspectiveActivity kansas = mock(PerspectiveActivity.class); when(kansas.getDefaultPerspectiveLayout()).thenReturn(kansasDefinition); when(kansas.getIdentifier()).thenReturn("kansas_perspective"); when(kansas.isTransient()).thenReturn(true); perspectiveManager.switchToPerspective(pr, kansas, doWhenFinished); perspectiveManager.savePerspectiveState(doWhenFinishedSave); verify(wbServices, never()).save(any(String.class), eq(kansasDefinition), any(Command.class)); }
@Test public void shouldSaveNonTransientPerspectives() throws Exception { PerspectiveDefinition kansasDefinition = new PerspectiveDefinitionImpl(MultiListWorkbenchPanelPresenter.class.getName()); PerspectiveActivity kansas = mock(PerspectiveActivity.class); when(kansas.getDefaultPerspectiveLayout()).thenReturn(kansasDefinition); when(kansas.getIdentifier()).thenReturn("kansas_perspective"); when(kansas.isTransient()).thenReturn(false); perspectiveManager.switchToPerspective(pr, kansas, doWhenFinished); perspectiveManager.savePerspectiveState(doWhenFinishedSave); verify(wbServices).save(eq("kansas_perspective"), eq(kansasDefinition), eq(doWhenFinishedSave)); }
@Test public void shouldNotSaveTransientPerspectives() throws Exception { PerspectiveDefinition kansasDefinition = new PerspectiveDefinitionImpl(MultiListWorkbenchPanelPresenter.class.getName()); PerspectiveActivity kansas = mock(PerspectiveActivity.class); when(kansas.getDefaultPerspectiveLayout()).thenReturn(kansasDefinition); when(kansas.getIdentifier()).thenReturn("kansas_perspective"); when(kansas.isTransient()).thenReturn(true); perspectiveManager.switchToPerspective(pr, kansas, doWhenFinished); perspectiveManager.savePerspectiveState(doWhenFinishedSave); verify(wbServices, never()).save(any(String.class), eq(kansasDefinition), any(Command.class)); }
@Override public void execute() { currentPerspectivePlaceRequest = placeRequest; currentPerspective = perspective; if (perspective.isTransient()) { //Transient Perspectives are not saved and hence cannot be loaded doAfterFetch.execute(perspective.getDefaultPerspectiveLayout()); } else { wbServices.loadPerspective(perspective.getIdentifier(), new ParameterizedCommand<PerspectiveDefinition>() { @Override public void execute(final PerspectiveDefinition response) { if (isAValidDefinition(response)) { doAfterFetch.execute(response); } else { doAfterFetch.execute(perspective.getDefaultPerspectiveLayout()); } } }); } }
@Test public void testSwitchingFromPerspectiveToSelf() throws Exception { PerspectiveActivity ozPerspectiveActivity = mock(PerspectiveActivity.class); PlaceRequest ozPerspectivePlace = new DefaultPlaceRequest("oz_perspective"); PerspectiveDefinition ozPerspectiveDef = new PerspectiveDefinitionImpl(); when(activityManager.getActivities(ozPerspectivePlace)) .thenReturn(singleton((Activity) ozPerspectiveActivity)); when(ozPerspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(ozPerspectiveDef); when(ozPerspectiveActivity.getPlace()).thenReturn(ozPerspectivePlace); when(ozPerspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(ozPerspectiveActivity.getIdentifier()).thenReturn("oz_perspective"); // we'll pretend we started in oz when(perspectiveManager.getCurrentPerspective()).thenReturn(ozPerspectiveActivity); final BiParameterizedCommand<Command, PlaceRequest> closeChain = mock(BiParameterizedCommand.class); placeManager.registerPerspectiveCloseChain("oz_perspective", closeChain); placeManager.goTo(ozPerspectivePlace); verify(closeChain, never()).execute(any(), any()); // verify no side effects (should stay put) verify(ozPerspectiveActivity, never()).onOpen(); verify(perspectiveManager, never()).savePerspectiveState(any(Command.class)); verify(perspectiveManager, never()) .switchToPerspective(any(PlaceRequest.class), any(PerspectiveActivity.class), any(ParameterizedCommand.class)); }
@Test public void testSwitchingFromPerspectiveToSelf() throws Exception { PerspectiveActivity ozPerspectiveActivity = mock(PerspectiveActivity.class); PlaceRequest ozPerspectivePlace = new DefaultPlaceRequest("oz_perspective"); PerspectiveDefinition ozPerspectiveDef = new PerspectiveDefinitionImpl(); when(activityManager.getActivities(ozPerspectivePlace)) .thenReturn(singleton((Activity) ozPerspectiveActivity)); when(ozPerspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(ozPerspectiveDef); when(ozPerspectiveActivity.getPlace()).thenReturn(ozPerspectivePlace); when(ozPerspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(ozPerspectiveActivity.getIdentifier()).thenReturn("oz_perspective"); // we'll pretend we started in oz when(perspectiveManager.getCurrentPerspective()).thenReturn(ozPerspectiveActivity); final BiParameterizedCommand<Command, PlaceRequest> closeChain = mock(BiParameterizedCommand.class); placeManager.registerPerspectiveCloseChain("oz_perspective", closeChain); placeManager.goTo(ozPerspectivePlace); verify(closeChain, never()).execute(any(), any()); // verify no side effects (should stay put) verify(ozPerspectiveActivity, never()).onOpen(); verify(perspectiveManager, never()).savePerspectiveState(any(Command.class)); verify(perspectiveManager, never()) .switchToPerspective(any(PlaceRequest.class), any(PerspectiveActivity.class), any(ParameterizedCommand.class)); }
@Test public void testSwitchingPerspectives() throws Exception { PerspectiveActivity ozPerspectiveActivity = mock(PerspectiveActivity.class); PlaceRequest ozPerspectivePlace = new DefaultPlaceRequest("oz_perspective"); PerspectiveDefinition ozPerspectiveDef = new PerspectiveDefinitionImpl(); when(activityManager.getActivities(ozPerspectivePlace)) .thenReturn(singleton((Activity) ozPerspectiveActivity)); when(ozPerspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(ozPerspectiveDef); when(ozPerspectiveActivity.getPlace()).thenReturn(ozPerspectivePlace); when(ozPerspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); // we'll pretend we started in kansas PerspectiveActivity kansasPerspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveManager.getCurrentPerspective()).thenReturn(kansasPerspectiveActivity); placeManager.goTo(ozPerspectivePlace); // verify proper shutdown of kansasPerspective and its contents InOrder inOrder = inOrder(activityManager, kansasPerspectiveActivity, kansasActivity, workbenchLayout); // shut down the screens first inOrder.verify(kansasActivity).onClose(); inOrder.verify(activityManager).destroyActivity(kansasActivity); // then the perspective inOrder.verify(kansasPerspectiveActivity).onClose(); inOrder.verify(activityManager).destroyActivity(kansasPerspectiveActivity); inOrder.verify(workbenchLayout).onResize(); }
@Test public void testSwitchingPerspectives() throws Exception { PerspectiveActivity ozPerspectiveActivity = mock(PerspectiveActivity.class); PlaceRequest ozPerspectivePlace = new DefaultPlaceRequest("oz_perspective"); PerspectiveDefinition ozPerspectiveDef = new PerspectiveDefinitionImpl(); when(activityManager.getActivities(ozPerspectivePlace)) .thenReturn(singleton((Activity) ozPerspectiveActivity)); when(ozPerspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(ozPerspectiveDef); when(ozPerspectiveActivity.getPlace()).thenReturn(ozPerspectivePlace); when(ozPerspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(kansasActivity.isType(ActivityResourceType.SCREEN.name())).thenReturn(true); // we'll pretend we started in kansas PerspectiveActivity kansasPerspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveManager.getCurrentPerspective()).thenReturn(kansasPerspectiveActivity); placeManager.goTo(ozPerspectivePlace); // verify proper shutdown of kansasPerspective and its contents InOrder inOrder = inOrder(activityManager, kansasPerspectiveActivity, kansasActivity, workbenchLayout); // shut down the screens first inOrder.verify(kansasActivity).onClose(); inOrder.verify(activityManager).destroyActivity(kansasActivity); // then the perspective inOrder.verify(kansasPerspectiveActivity).onClose(); inOrder.verify(activityManager).destroyActivity(kansasPerspectiveActivity); inOrder.verify(workbenchLayout).onResize(); }
final PerspectiveDefinition perspectiveDef = new PerspectiveDefinitionImpl( SimpleWorkbenchPanelPresenter.class.getName()); when(perspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(perspectiveDef); when(activityManager.getActivities(perspectivePlace)) .thenReturn(singleton((Activity) perspectiveActivity));
/** * Tests the basics of launching a perspective. We call it "empty" because this perspective doesn't have any panels * or parts in its definition. */ @Test public void testLaunchingEmptyPerspective() throws Exception { PerspectiveActivity ozPerspectiveActivity = mock(PerspectiveActivity.class); PlaceRequest ozPerspectivePlace = new DefaultPlaceRequest("oz_perspective"); PerspectiveDefinition ozPerspectiveDef = new PerspectiveDefinitionImpl(); when(activityManager.getActivities(ozPerspectivePlace)) .thenReturn(singleton((Activity) ozPerspectiveActivity)); when(ozPerspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(ozPerspectiveDef); when(ozPerspectiveActivity.getPlace()).thenReturn(ozPerspectivePlace); when(ozPerspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); placeManager.goTo(ozPerspectivePlace); // verify perspective changed to oz verify(perspectiveManager).savePerspectiveState(any(Command.class)); verify(perspectiveManager).switchToPerspective(any(PlaceRequest.class), eq(ozPerspectiveActivity), any(ParameterizedCommand.class)); verify(ozPerspectiveActivity).onOpen(); assertEquals(PlaceStatus.OPEN, placeManager.getStatus(ozPerspectivePlace)); assertTrue(placeManager.getActivePlaceRequests().contains(ozPerspectivePlace)); assertEquals(ozPerspectiveActivity, placeManager.getActivity(ozPerspectivePlace)); verify(workbenchLayout).onResize(); }
/** * Tests the basics of launching a perspective. We call it "empty" because this perspective doesn't have any panels * or parts in its definition. */ @Test public void testLaunchingEmptyPerspective() throws Exception { PerspectiveActivity ozPerspectiveActivity = mock(PerspectiveActivity.class); PlaceRequest ozPerspectivePlace = new DefaultPlaceRequest("oz_perspective"); PerspectiveDefinition ozPerspectiveDef = new PerspectiveDefinitionImpl(); when(activityManager.getActivities(ozPerspectivePlace)) .thenReturn(singleton((Activity) ozPerspectiveActivity)); when(ozPerspectiveActivity.getDefaultPerspectiveLayout()).thenReturn(ozPerspectiveDef); when(ozPerspectiveActivity.getPlace()).thenReturn(ozPerspectivePlace); when(ozPerspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); placeManager.goTo(ozPerspectivePlace); // verify perspective changed to oz verify(perspectiveManager).savePerspectiveState(any(Command.class)); verify(perspectiveManager).switchToPerspective(any(PlaceRequest.class), eq(ozPerspectiveActivity), any(ParameterizedCommand.class)); verify(ozPerspectiveActivity).onOpen(); assertEquals(PlaceStatus.OPEN, placeManager.getStatus(ozPerspectivePlace)); assertTrue(placeManager.getActivePlaceRequests().contains(ozPerspectivePlace)); assertEquals(ozPerspectiveActivity, placeManager.getActivity(ozPerspectivePlace)); verify(workbenchLayout).onResize(); }
@Test public void shouldDestroyAllOldPanelsWhenSwitchingRoot() throws Exception { PerspectiveDefinition fooPerspectiveDef = new PerspectiveDefinitionImpl(MultiListWorkbenchPanelPresenter.class.getName()); PanelDefinition rootPanel = fooPerspectiveDef.getRoot(); PanelDefinition fooPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PanelDefinition fooChildPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PanelDefinition barPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PanelDefinition bazPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); rootPanel.appendChild(fooPanel); rootPanel.appendChild(barPanel); rootPanel.appendChild(bazPanel); fooPanel.appendChild(fooChildPanel); PerspectiveActivity fooPerspective = mock(PerspectiveActivity.class); when(fooPerspective.getDefaultPerspectiveLayout()).thenReturn(fooPerspectiveDef); when(fooPerspective.isTransient()).thenReturn(true); perspectiveManager.switchToPerspective(pr, fooPerspective, doWhenFinished); perspectiveManager.switchToPerspective(pr, oz, doWhenFinished); verify(panelManager).removeWorkbenchPanel(fooPanel); verify(panelManager).removeWorkbenchPanel(fooChildPanel); verify(panelManager).removeWorkbenchPanel(barPanel); verify(panelManager).removeWorkbenchPanel(bazPanel); verify(panelManager, never()).removeWorkbenchPanel(rootPanel); }
@Test public void shouldDestroyAllOldPanelsWhenSwitchingRoot() throws Exception { PerspectiveDefinition fooPerspectiveDef = new PerspectiveDefinitionImpl(MultiListWorkbenchPanelPresenter.class.getName()); PanelDefinition rootPanel = fooPerspectiveDef.getRoot(); PanelDefinition fooPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PanelDefinition fooChildPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PanelDefinition barPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); PanelDefinition bazPanel = new PanelDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); rootPanel.appendChild(fooPanel); rootPanel.appendChild(barPanel); rootPanel.appendChild(bazPanel); fooPanel.appendChild(fooChildPanel); PerspectiveActivity fooPerspective = mock(PerspectiveActivity.class); when(fooPerspective.getDefaultPerspectiveLayout()).thenReturn(fooPerspectiveDef); when(fooPerspective.isTransient()).thenReturn(true); perspectiveManager.switchToPerspective(pr, fooPerspective, doWhenFinished); perspectiveManager.switchToPerspective(pr, oz, doWhenFinished); verify(panelManager).removeWorkbenchPanel(fooPanel); verify(panelManager).removeWorkbenchPanel(fooChildPanel); verify(panelManager).removeWorkbenchPanel(barPanel); verify(panelManager).removeWorkbenchPanel(bazPanel); verify(panelManager, never()).removeWorkbenchPanel(rootPanel); }