Skip to content

Commit

Permalink
JBPM-8903 : Stunner - Properties panel is not opened after clicking o…
Browse files Browse the repository at this point in the history
…n "Minimize panel" button
  • Loading branch information
inodeman committed Feb 4, 2020
1 parent 1cd5be6 commit b6f683f
Show file tree
Hide file tree
Showing 7 changed files with 198 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ public void checkDestructionReleasesResources() {

@Test
public void checkOnScreenMaximisedDiagramEditor() {
final ScreenMaximizedEvent event = new ScreenMaximizedEvent(true);
final ScreenMaximizedEvent event = new ScreenMaximizedEvent(true );
palette.onScreenMaximized(event);

verify(view).showEmptyView(false);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright 2020 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.kie.workbench.common.stunner.core.client.event.screen;

public class ScreenPreMaximizedStateEvent extends ScreenResizeEvent {

private final boolean isExplorerScreen;

public ScreenPreMaximizedStateEvent(final boolean isExplorerScreen ) {
super(true);
this.isExplorerScreen = isExplorerScreen;
}

public boolean isExplorerScreen() {
return isExplorerScreen;
}

@Override
public int hashCode() {
return super.hashCode();
}

@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.kie.workbench.common.stunner.client.widgets.presenters.session.SessionDiagramPreview;
import org.kie.workbench.common.stunner.client.widgets.presenters.session.SessionViewer;
import org.kie.workbench.common.stunner.core.client.api.SessionManager;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenPreMaximizedStateEvent;
import org.kie.workbench.common.stunner.core.client.service.ClientRuntimeError;
import org.kie.workbench.common.stunner.core.client.session.ClientSession;
import org.kie.workbench.common.stunner.core.client.session.event.SessionDestroyedEvent;
Expand All @@ -44,6 +45,7 @@
import org.uberfire.client.annotations.WorkbenchPartView;
import org.uberfire.client.annotations.WorkbenchScreen;
import org.uberfire.client.workbench.events.ChangeTitleWidgetEvent;
import org.uberfire.client.workbench.events.PlaceMaximizedEvent;
import org.uberfire.client.workbench.widgets.common.ErrorPopupPresenter;
import org.uberfire.lifecycle.OnClose;
import org.uberfire.lifecycle.OnOpen;
Expand Down Expand Up @@ -73,6 +75,7 @@ public class DiagramEditorExplorerScreen {
private final ManagedInstance<SessionDiagramPreview<AbstractSession>> sessionPreviews;
private final Event<ChangeTitleWidgetEvent> changeTitleNotificationEvent;
private final ErrorPopupPresenter errorPopupPresenter;
private final Event<ScreenPreMaximizedStateEvent> screenStateEvent;
private final View view;

private PlaceRequest placeRequest;
Expand All @@ -86,6 +89,7 @@ protected DiagramEditorExplorerScreen() {
null,
null,
null,
null,
null);
}

Expand All @@ -95,13 +99,15 @@ public DiagramEditorExplorerScreen(final SessionManager clientSessionManager,
final Event<ChangeTitleWidgetEvent> changeTitleNotificationEvent,
final @Any @Default ManagedInstance<SessionDiagramPreview<AbstractSession>> sessionPreviews,
final ErrorPopupPresenter errorPopupPresenter,
final View view) {
final View view,
final Event<ScreenPreMaximizedStateEvent> screenStateEvent) {
this.clientSessionManager = clientSessionManager;
this.treeExplorers = treeExplorers;
this.changeTitleNotificationEvent = changeTitleNotificationEvent;
this.sessionPreviews = sessionPreviews;
this.errorPopupPresenter = errorPopupPresenter;
this.view = view;
this.screenStateEvent = screenStateEvent;
}

@OnStartup
Expand Down Expand Up @@ -196,6 +202,10 @@ private void showExplorer(final ClientSession session) {
view.setExplorerWidget(explorerWidget);
}

protected void onPlaceMaximizedEvent(@Observes PlaceMaximizedEvent event) {
screenStateEvent.fire(new ScreenPreMaximizedStateEvent(true));
}

private void showPreview(final ClientSession session) {
if (null != session && session instanceof AbstractSession) {
if (null != previewWidget) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.google.gwt.user.client.ui.IsWidget;
import org.jboss.errai.common.client.ui.ElementWrapperWidget;
import org.kie.workbench.common.stunner.core.client.api.SessionManager;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenPreMaximizedStateEvent;
import org.kie.workbench.common.stunner.core.client.session.ClientSession;
import org.kie.workbench.common.stunner.core.client.session.event.SessionDiagramOpenedEvent;
import org.kie.workbench.common.stunner.forms.client.event.FormPropertiesOpened;
Expand All @@ -38,6 +39,7 @@
import org.uberfire.client.annotations.WorkbenchPartView;
import org.uberfire.client.annotations.WorkbenchScreen;
import org.uberfire.client.workbench.events.ChangeTitleWidgetEvent;
import org.uberfire.client.workbench.events.PlaceMaximizedEvent;
import org.uberfire.lifecycle.OnClose;
import org.uberfire.lifecycle.OnOpen;
import org.uberfire.lifecycle.OnStartup;
Expand All @@ -59,6 +61,7 @@ public class DiagramEditorPropertiesScreen {
private final SessionManager clientSessionManager;
private final Event<ChangeTitleWidgetEvent> changeTitleNotificationEvent;
private final DiagramEditorScreenView view;
private final Event<ScreenPreMaximizedStateEvent> screenStateEvent;

private PlaceRequest placeRequest;
private ClientSession session;
Expand All @@ -67,6 +70,7 @@ public class DiagramEditorPropertiesScreen {

protected DiagramEditorPropertiesScreen() {
this(null,
null,
null,
null,
null);
Expand All @@ -76,11 +80,13 @@ protected DiagramEditorPropertiesScreen() {
public DiagramEditorPropertiesScreen(final FormPropertiesWidget formPropertiesWidget,
final SessionManager clientSessionManager,
final Event<ChangeTitleWidgetEvent> changeTitleNotification,
final DiagramEditorScreenView view) {
final DiagramEditorScreenView view,
final Event<ScreenPreMaximizedStateEvent> screenStateEvent) {
this.formPropertiesWidget = formPropertiesWidget;
this.clientSessionManager = clientSessionManager;
this.changeTitleNotificationEvent = changeTitleNotification;
this.view = view;
this.screenStateEvent = screenStateEvent;
}

@PostConstruct
Expand Down Expand Up @@ -110,6 +116,10 @@ public void onClose() {
destroy();
}

protected void onPlaceMaximizedEvent(@Observes PlaceMaximizedEvent event) {
screenStateEvent.fire(new ScreenPreMaximizedStateEvent(false));
}

@SuppressWarnings("unchecked")
private void handleSession(final ClientSession session) {
boolean done = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.kie.workbench.common.stunner.core.client.ManagedInstanceStub;
import org.kie.workbench.common.stunner.core.client.api.SessionManager;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenPreMaximizedStateEvent;
import org.kie.workbench.common.stunner.core.client.session.impl.AbstractSession;
import org.kie.workbench.common.stunner.core.diagram.Diagram;
import org.kie.workbench.common.stunner.core.diagram.Metadata;
Expand Down Expand Up @@ -62,6 +63,9 @@ public class DiagramEditorExplorerScreenTest {
@Mock
private EventSourceMock<ChangeTitleWidgetEvent> changeTitleNotificationEvent;

@Mock
private EventSourceMock<ScreenPreMaximizedStateEvent> screenStateEvent;

@Mock
private Widget treeExplorerWidget;

Expand Down Expand Up @@ -106,7 +110,8 @@ public void setup() throws Exception {
changeTitleNotificationEvent,
sessionPreviews,
errorPopupPresenter,
view);
view,
screenStateEvent);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import javax.enterprise.context.Dependent;
import javax.enterprise.event.Event;
import javax.enterprise.event.Observes;
import javax.inject.Inject;

import com.google.gwt.user.client.ui.IsWidget;
Expand All @@ -32,13 +33,17 @@
import org.kie.workbench.common.stunner.client.widgets.presenters.session.impl.SessionViewerPresenter;
import org.kie.workbench.common.stunner.core.client.annotation.DiagramEditor;
import org.kie.workbench.common.stunner.core.client.error.DiagramClientErrorHandler;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenMaximizedEvent;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenMinimizedEvent;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenPreMaximizedStateEvent;
import org.kie.workbench.common.stunner.core.client.i18n.ClientTranslationService;
import org.kie.workbench.common.stunner.core.client.service.ClientRuntimeError;
import org.kie.workbench.common.stunner.core.client.session.impl.EditorSession;
import org.kie.workbench.common.stunner.core.client.session.impl.ViewerSession;
import org.kie.workbench.common.stunner.core.documentation.DocumentationView;
import org.kie.workbench.common.stunner.kogito.client.editor.event.OnDiagramFocusEvent;
import org.kie.workbench.common.stunner.kogito.client.editor.event.OnDiagramLoseFocusEvent;
import org.kie.workbench.common.stunner.kogito.client.screens.DiagramEditorExplorerScreen;
import org.kie.workbench.common.stunner.kogito.client.screens.DiagramEditorPropertiesScreen;
import org.kie.workbench.common.stunner.project.client.docks.StunnerDocksHandler;
import org.kie.workbench.common.stunner.project.client.editor.AbstractProjectDiagramEditor;
Expand Down Expand Up @@ -77,6 +82,8 @@ public class BPMNDiagramEditor extends AbstractProjectDiagramEditor<BPMNDiagramR

private Consumer<Boolean> saveCallback;
private boolean isMigrating = false;
private boolean isPropertiesOpenedBeforeMaximize = false;
private boolean isExplorerOpenedBeforeMaximize = false;

@Inject
public BPMNDiagramEditor(final View view,
Expand Down Expand Up @@ -131,12 +138,53 @@ public String getEditorIdentifier() {

@OnOpen
public void onOpen() {
openPropertiesDocks();
super.doOpen();
}

private void performDockOperation(final String id, final Consumer<? super UberfireDock> action) {
String currentPerspectiveIdentifier = perspectiveManager.getCurrentPerspective().getIdentifier();
Collection<UberfireDock> stunnerDocks = stunnerDocksHandler.provideDocks(currentPerspectiveIdentifier);

stunnerDocks.stream()
.filter(dock -> dock.getPlaceRequest().getIdentifier().compareTo(DiagramEditorPropertiesScreen.SCREEN_ID) == 0)
.forEach(uberfireDocks::open);
super.doOpen();
.filter(dock -> dock.getPlaceRequest().getIdentifier().compareTo(id) == 0)
.forEach(action);

}

public void openPropertiesDocks() {
performDockOperation(DiagramEditorPropertiesScreen.SCREEN_ID, uberfireDocks::open);
}

public void closePropertiesDocks() {
performDockOperation(DiagramEditorPropertiesScreen.SCREEN_ID, uberfireDocks::close);
}

public void openExplorerDocks() {
performDockOperation(DiagramEditorExplorerScreen.SCREEN_ID, uberfireDocks::open);
}

public void closeExplorerDocks() {
performDockOperation(DiagramEditorExplorerScreen.SCREEN_ID, uberfireDocks::close);
}

public void onScreenMaximizedEvent(@Observes ScreenMaximizedEvent event) {
isPropertiesOpenedBeforeMaximize = false;
isExplorerOpenedBeforeMaximize = false;
}

public void onScreenPreMaximizedStateEvent(final @Observes ScreenPreMaximizedStateEvent event) {
// If Event Fired, it means the properties panel is active, hence it was open before maximized
isPropertiesOpenedBeforeMaximize = !event.isExplorerScreen();
isExplorerOpenedBeforeMaximize = event.isExplorerScreen();
}

public void onScreenMinimizedEvent(@Observes ScreenMinimizedEvent event) {
if (isPropertiesOpenedBeforeMaximize) {
openPropertiesDocks();
} else if (isExplorerOpenedBeforeMaximize) {
openExplorerDocks();
}
}

@OnClose
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
import org.kie.workbench.common.stunner.client.widgets.presenters.session.impl.SessionViewerPresenter;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.error.DiagramClientErrorHandler;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenMaximizedEvent;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenMinimizedEvent;
import org.kie.workbench.common.stunner.core.client.event.screen.ScreenPreMaximizedStateEvent;
import org.kie.workbench.common.stunner.core.client.i18n.ClientTranslationService;
import org.kie.workbench.common.stunner.core.client.session.impl.EditorSession;
import org.kie.workbench.common.stunner.core.client.session.impl.ViewerSession;
Expand Down Expand Up @@ -98,6 +101,15 @@ public class BPMNDiagramEditorTest extends AbstractProjectDiagramEditorTest {
@Mock
private PerspectiveActivity currentPerspective;

@Mock
private ScreenMaximizedEvent maximizedEvent;

@Mock
private ScreenMinimizedEvent minimizedEvent;

@Mock
private ScreenPreMaximizedStateEvent preMaximizedStateEvent;

private BPMNDiagramEditor diagramEditor;

@Before
Expand Down Expand Up @@ -237,4 +249,69 @@ public void testAddDocumentationPage() {
assertEquals(documentationPage.getDocumentationView(), documentationView);
assertEquals(documentationPage.getLabel(), DOC_LABEL);
}

@Test
public void testMaximizedState() {
Collection<UberfireDock> stunnerDocks = new ArrayList<>();
stunnerDocks.add(propertiesDock);
stunnerDocks.add(explorerDock);

String perspectiveIdentifier = "Test Perspective ID";

when(perspectiveManagerMock.getCurrentPerspective()).thenReturn(currentPerspective);
when(currentPerspective.getIdentifier()).thenReturn(perspectiveIdentifier);

when(stunnerDocksHandler.provideDocks(perspectiveIdentifier)).thenReturn(stunnerDocks);

when(propertiesDock.getPlaceRequest()).thenReturn(propertiesPlace);
when(propertiesPlace.getIdentifier()).thenReturn(DiagramEditorPropertiesScreen.SCREEN_ID);

when(explorerDock.getPlaceRequest()).thenReturn(explorerPlace);
when(explorerPlace.getIdentifier()).thenReturn(DiagramEditorExplorerScreen.SCREEN_ID);

diagramEditor.onOpen();
verify(uberfireDocks, times(1)).open(propertiesDock);

diagramEditor.closePropertiesDocks();
verify(uberfireDocks, times(1)).close(propertiesDock);

diagramEditor.onScreenMaximizedEvent(maximizedEvent);
diagramEditor.onScreenMinimizedEvent(minimizedEvent);

// properties should not be opened since it was closed before maximized
verify(uberfireDocks, times(1)).open(propertiesDock);

diagramEditor.openPropertiesDocks();
verify(uberfireDocks, times(2)).open(propertiesDock);

diagramEditor.onScreenMaximizedEvent(maximizedEvent);
diagramEditor.onScreenPreMaximizedStateEvent(preMaximizedStateEvent);
diagramEditor.onScreenMinimizedEvent(minimizedEvent);

// properties should be opened since it was opened before maximized
verify(uberfireDocks, times(3)).open(propertiesDock);

diagramEditor.onOpen();
verify(uberfireDocks, times(4)).open(propertiesDock);

diagramEditor.closeExplorerDocks();
verify(uberfireDocks, times(1)).close(explorerDock);

diagramEditor.onScreenMaximizedEvent(maximizedEvent);
diagramEditor.onScreenMinimizedEvent(minimizedEvent);

// explore should not be opened since it was closed before maximized
verify(uberfireDocks, times(0)).open(explorerDock);

diagramEditor.openExplorerDocks();
verify(uberfireDocks, times(1)).open(explorerDock);

diagramEditor.onScreenMaximizedEvent(maximizedEvent);
when(preMaximizedStateEvent.isExplorerScreen()).thenReturn(true);
diagramEditor.onScreenPreMaximizedStateEvent(preMaximizedStateEvent);
diagramEditor.onScreenMinimizedEvent(minimizedEvent);

// explore should be opened since it was opened before maximized
verify(uberfireDocks, times(2)).open(explorerDock);
}
}

0 comments on commit b6f683f

Please sign in to comment.