@Override public PlaceStatus getStatus(final PlaceRequest place) { PerspectiveActivity currentPerspective = perspectiveManager.getCurrentPerspective(); if (currentPerspective != null && currentPerspective.getPlace().equals(place)) { return PlaceStatus.OPEN; } return resolveExistingParts(place) != null ? PlaceStatus.OPEN : PlaceStatus.CLOSE; }
@Override public void execute() { if ( currentPerspective != null ) { final PlaceRequest pr = new ForcedPlaceRequest( currentPerspective.getIdentifier(), currentPerspective.getPlace().getParameters() ); placeManager.goTo( pr ); } } } );
private void launchPerspectiveActivity(final PlaceRequest place, final Command doWhenFinished, final PerspectiveActivity activity) { final Command launchPerspectiveCommand = () -> { placeHistoryHandler.flush(); launchPerspectiveActivity(place, activity, doWhenFinished); }; final PerspectiveActivity currentPerspective = perspectiveManager.getCurrentPerspective(); final boolean thereIsAnOpenedPerspective = currentPerspective != null; final boolean isDifferentPerspective = thereIsAnOpenedPerspective && !place.equals(currentPerspective.getPlace()); final boolean isForcedPlaceRequest = place instanceof ForcedPlaceRequest; // Before launching the perspective, checks if there is some close chain to be executed for the current perspective if (thereIsAnOpenedPerspective && (isDifferentPerspective || isForcedPlaceRequest)) { final BiParameterizedCommand<Command, PlaceRequest> closeChain = this.perspectiveCloseChain.get(currentPerspective.getIdentifier()); if (closeChain != null) { closeChain.execute(launchPerspectiveCommand, currentPerspective.getPlace()); } else { launchPerspectiveCommand.execute(); } } else { launchPerspectiveCommand.execute(); } }
@Test public void testAddPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest("anyId"); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(presenter, never()).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest("anyId"); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(view, never()).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddCurrentPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(view).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddCurrentPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(presenter).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest("anyId"); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(presenter, never()).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest("anyId"); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(view, never()).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddCurrentPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(presenter).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testAddCurrentPerspective() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveManager.getCurrentPerspective()).thenReturn(perspectiveActivity); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); verify(view).selectMenuItem(PERSPECTIVE_ID); }
private void switchToPerspective(final PlaceRequest place, final PerspectiveActivity newPerspectiveActivity, final ParameterizedCommand<PerspectiveDefinition> closeOldPerspectiveOpenPartsAndExecuteChainedCallback) { if (closeAllCurrentPanels()) { closeAllSplashScreens(); addSplashScreenFor(place); perspectiveManager.switchToPerspective(place, newPerspectiveActivity, closeOldPerspectiveOpenPartsAndExecuteChainedCallback); } else { // some panels didn't want to close, so not going to launch new perspective. clean up its activity. try { newPerspectiveActivity.onClose(); } catch (Exception ex) { lifecycleErrorHandler.handle(newPerspectiveActivity, LifecyclePhase.OPEN, ex); } existingWorkbenchActivities.remove(newPerspectiveActivity.getPlace()); activityManager.destroyActivity(newPerspectiveActivity); } }
@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(); }
@Test public void testPerspectiveChangeEvent() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); final PerspectiveChange perspectiveChange = new PerspectiveChange(placeRequest, null, null, PERSPECTIVE_ID); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); presenter.onPerspectiveChange(perspectiveChange); verify(view).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testPerspectiveChangeEvent() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); final PerspectiveChange perspectiveChange = new PerspectiveChange(placeRequest, null, null, PERSPECTIVE_ID); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); presenter.onPerspectiveChange(perspectiveChange); verify(presenter).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testPerspectiveChangeEvent() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); final PerspectiveChange perspectiveChange = new PerspectiveChange(placeRequest, null, null, PERSPECTIVE_ID); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); presenter.onPerspectiveChange(perspectiveChange); verify(view).selectMenuItem(PERSPECTIVE_ID); }
@Test public void testPerspectiveChangeEvent() { final Menus menus = MenuFactory.newSimpleItem(NAME).perspective(PERSPECTIVE_ID).endMenu().build(); final PlaceRequest placeRequest = new DefaultPlaceRequest(PERSPECTIVE_ID); final PerspectiveActivity perspectiveActivity = mock(PerspectiveActivity.class); final PerspectiveChange perspectiveChange = new PerspectiveChange(placeRequest, null, null, PERSPECTIVE_ID); when(perspectiveActivity.getPlace()).thenReturn(placeRequest); when(perspectiveActivity.isType(ActivityResourceType.PERSPECTIVE.name())).thenReturn(true); when(authzManager.authorize(any(Resource.class), eq(identity))).thenReturn(true); presenter.addMenus(menus); presenter.onPerspectiveChange(perspectiveChange); verify(presenter).selectMenuItem(PERSPECTIVE_ID); }
@Override public void visit(final MenuItemPerspective menuItemPerspective) { final String id = menuItemPerspective.getPlaceRequest().getIdentifier(); view.addMenuItem(id, menuItemPerspective.getCaption(), parentId, new Command() { @Override public void execute() { placeManager.goTo(menuItemPerspective.getPlaceRequest()); } }, menuItemPerspective.getPosition()); setupEnableDisableMenuItem(menuItemPerspective); setupSetVisibleMenuItem(menuItemPerspective); final PlaceRequest placeRequest = menuItemPerspective.getPlaceRequest(); if (perspectiveManager.getCurrentPerspective() != null && placeRequest.equals(perspectiveManager.getCurrentPerspective().getPlace())) { view.selectMenuItem(id); } }
@Override public void visit(final MenuItemPerspective menuItemPerspective) { final String id = menuItemPerspective.getPlaceRequest().getIdentifier(); presenter.addMenuItem(id, menuItemPerspective.getCaption(), parentId, () -> placeManager.goTo(menuItemPerspective.getPlaceRequest()), menuItemPerspective.getPosition()); setupEnableDisableMenuItem(menuItemPerspective); presenter.setupSetVisibleMenuItem(menuItemPerspective); final PlaceRequest placeRequest = menuItemPerspective.getPlaceRequest(); if (perspectiveManager.getCurrentPerspective() != null && placeRequest.equals(perspectiveManager.getCurrentPerspective().getPlace())) { presenter.selectMenuItem(id); } }