diff --git a/jbpm-wb-common/jbpm-wb-common-client/src/main/java/org/jbpm/workbench/common/client/menu/PrimaryActionMenuBuilder.java b/jbpm-wb-common/jbpm-wb-common-client/src/main/java/org/jbpm/workbench/common/client/menu/PrimaryActionMenuBuilder.java index 591dee746a..897878f080 100644 --- a/jbpm-wb-common/jbpm-wb-common-client/src/main/java/org/jbpm/workbench/common/client/menu/PrimaryActionMenuBuilder.java +++ b/jbpm-wb-common/jbpm-wb-common-client/src/main/java/org/jbpm/workbench/common/client/menu/PrimaryActionMenuBuilder.java @@ -28,14 +28,41 @@ public class PrimaryActionMenuBuilder implements MenuFactory.CustomMenuBuilder { private Button button; - private String label; - private Command command; + boolean isOn = true; public PrimaryActionMenuBuilder(final String label, final Command command) { - this.label = label; - this.command = command; - setupMenuButton(); + initPrimaryActionButton(label, + "", + ""); + button.setClickHandler(() -> command.execute()); + } + + public PrimaryActionMenuBuilder(final String onLabel, + final String onIcon, + final String onTitle, + final String offLabel, + final String offIcon, + final String offTitle, + final Command command) { + + isOn = true; + initPrimaryActionLink(onLabel, + onIcon, + onTitle); + button.setClickHandler(() -> { + if (isOn) { + setupButton(offLabel, + offIcon, + offTitle); + } else { + setupButton(onLabel, + onIcon, + onTitle); + } + command.execute(); + isOn = !isOn; + }); } @Override @@ -62,16 +89,48 @@ public void setEnabled(boolean enabled) { }; } - private void setupMenuButton() { + private void initPrimaryActionButton(String label, + String icon, + String title) { button = (Button) document.createElement("button"); button.setType(Button.ButtonType.BUTTON); button.setButtonStyleType(Button.ButtonStyleType.PRIMARY); - button.setText(label); - button.setClickHandler(() -> command.execute()); + setupButton(label, + icon, + title); + } + + private void initPrimaryActionLink(String label, + String icon, + String title) { + button = (Button) document.createElement("button"); + button.setButtonStyleType(Button.ButtonStyleType.LINK); + setupButton(label, + icon, + title); + } + + private void setupButton(String label, + String icon, + String title) { + while (button.hasChildNodes()) { + button.removeChild(button.lastChild); + } + + if (label != null && !label.isEmpty()) { + button.setText(label); + } + if (icon != null && !icon.isEmpty()) { + button.addIcon("fa", + icon); + } + if (title != null && !title.isEmpty()) { + button.title = title; + } } public void setVisible(boolean visible) { - if(visible){ + if (visible) { button.show(); } else { button.hide(); diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/AbstractDashboard.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/AbstractDashboard.java index d503c18696..822dbf5195 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/AbstractDashboard.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/AbstractDashboard.java @@ -16,6 +16,10 @@ package org.jbpm.dashboard.renderer.client.panel; +import javax.annotation.PostConstruct; +import javax.enterprise.event.Observes; +import javax.inject.Inject; + import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import org.dashbuilder.dataset.DataSetLookup; @@ -27,13 +31,18 @@ import org.dashbuilder.displayer.client.DisplayerLocator; import org.dashbuilder.renderer.client.metric.MetricDisplayer; import org.dashbuilder.renderer.client.table.TableDisplayer; +import org.jbpm.workbench.common.client.PerspectiveIds; import org.jbpm.workbench.ks.integration.ConsoleDataSetLookup; import org.jbpm.workbench.common.client.menu.ServerTemplateSelectorMenuBuilder; import org.jbpm.dashboard.renderer.client.panel.formatter.DurationFormatter; import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardI18n; import org.jbpm.dashboard.renderer.client.panel.widgets.ProcessBreadCrumb; +import org.uberfire.client.mvp.PerspectiveManager; import org.uberfire.client.mvp.PlaceManager; +import org.uberfire.client.workbench.events.ClosePlaceEvent; +import org.uberfire.ext.widgets.common.client.breadcrumbs.UberfireBreadcrumbs; import org.uberfire.mvp.Command; +import org.uberfire.mvp.Commands; import static org.kie.soup.commons.validation.PortablePreconditions.*; @@ -51,6 +60,19 @@ public abstract class AbstractDashboard { protected ServerTemplateSelectorMenuBuilder serverTemplateSelectorMenuBuilder; + UberfireBreadcrumbs breadcrumbs; + + private PerspectiveManager perspectiveManager; + + private String detailScreenId; + + public String getPerspectiveId() { + return perspectiveManager.getCurrentPerspective().getIdentifier(); + } + + public AbstractDashboard() { + } + public AbstractDashboard(final DataSetClientServices dataSetClientServices, final PlaceManager placeManager, final DashboardI18n i18n, @@ -67,6 +89,64 @@ public AbstractDashboard(final DataSetClientServices dataSetClientServices, this.serverTemplateSelectorMenuBuilder = serverTemplateSelectorMenuBuilder; } + @PostConstruct + public void setBreadcrumbs() { + createListBreadcrumb(); + breadcrumbs.addToolbar(getPerspectiveId(), + serverTemplateSelectorMenuBuilder.getView().getElement()); + } + + @Inject + public void setServerTemplateSelectorMenuBuilder(final ServerTemplateSelectorMenuBuilder serverTemplateSelectorMenuBuilder) { + this.serverTemplateSelectorMenuBuilder = serverTemplateSelectorMenuBuilder; + } + + public abstract void createListBreadcrumb(); + + public abstract void tableRedraw(); + + public void setupListBreadcrumb(String listLabel) { + breadcrumbs.clearBreadcrumbs(getPerspectiveId()); + + breadcrumbs.addBreadCrumb(getPerspectiveId(), + i18n.Home(), + () -> placeManager.goTo(PerspectiveIds.HOME)); + breadcrumbs.addBreadCrumb(getPerspectiveId(), + listLabel, + Commands.DO_NOTHING); + } + + public void setupDetailBreadcrumb(String listLabel, + String detailLabel, + String detailScreenId) { + breadcrumbs.clearBreadcrumbs(getPerspectiveId()); + breadcrumbs.addBreadCrumb(getPerspectiveId(), + i18n.Home(), + () -> placeManager.goTo(PerspectiveIds.HOME)); + breadcrumbs.addBreadCrumb(getPerspectiveId(), + listLabel, + () -> closeDetails(detailScreenId)); + breadcrumbs.addBreadCrumb(getPerspectiveId(), + detailLabel, + Commands.DO_NOTHING); + this.detailScreenId = detailScreenId; + } + + private void closeDetails(String detailScreenId) { + placeManager.closePlace(detailScreenId); + createListBreadcrumb(); + tableRedraw(); + } + + public void onDetailScreenClosed(@Observes ClosePlaceEvent closed) { + if (closed.getPlace() != null + && detailScreenId != null + && detailScreenId.equals(closed.getPlace().getIdentifier())) { + createListBreadcrumb(); + tableRedraw(); + } + } + public MetricDisplayer createMetricDisplayer(DisplayerSettings settings) { checkNotNull("displayerSettings", settings); @@ -173,6 +253,16 @@ public void resetCurrentProcess() { getView().hideBreadCrumb(); } + @Inject + public void setPerspectiveManager(PerspectiveManager perspectiveManager) { + this.perspectiveManager = perspectiveManager; + } + + @Inject + public void setUberfireBreadcrumbs(UberfireBreadcrumbs uberfireBreadcrumbs) { + this.breadcrumbs = uberfireBreadcrumbs; + } + public interface View extends IsWidget { void showBreadCrumb(String processName); @@ -190,5 +280,7 @@ public interface View extends IsWidget { void showInstances(); DashboardI18n getI18nService(); + + boolean isDashboardPanelVisible(); } } diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboard.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboard.java index 11b43dd4e5..6085d9f815 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboard.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboard.java @@ -37,8 +37,8 @@ import org.dashbuilder.displayer.client.DisplayerLocator; import org.dashbuilder.renderer.client.metric.MetricDisplayer; import org.dashbuilder.renderer.client.table.TableDisplayer; -import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardConstants; import org.jbpm.workbench.common.client.PerspectiveIds; +import org.jbpm.workbench.common.client.menu.PrimaryActionMenuBuilder; import org.jbpm.workbench.common.client.menu.ServerTemplateSelectorMenuBuilder; import org.jbpm.workbench.common.events.ServerTemplateSelected; import org.jbpm.workbench.pr.events.ProcessInstanceSelectionEvent; @@ -56,7 +56,6 @@ import static org.jbpm.dashboard.renderer.model.DashboardData.*; import static org.jbpm.workbench.common.client.PerspectiveIds.PROCESS_INSTANCE_DETAILS_SCREEN; - @Dependent @WorkbenchScreen(identifier = PerspectiveIds.PROCESS_DASHBOARD_SCREEN) public class ProcessDashboard extends AbstractDashboard { @@ -152,15 +151,7 @@ public ProcessDashboard(final View view, @WorkbenchPartTitle public String getTitle() { - return DashboardConstants.INSTANCE.processDashboardName(); - } - - @WorkbenchMenu - public Menus getMenus() { - return MenuFactory - .newTopLevelCustomMenu(serverTemplateSelectorMenuBuilder) - .endMenu() - .build(); + return i18n.processDashboardName(); } public void onServerTemplateSelected(@Observes final ServerTemplateSelected serverTemplateSelected) { @@ -280,6 +271,38 @@ public AbstractDashboard.View getView() { return view; } + @WorkbenchMenu + public Menus getMenus() { + return MenuFactory + .newTopLevelCustomMenu(new PrimaryActionMenuBuilder("", + "fa-table", + i18n.viewTable(), + "", + "fa-th", + i18n.viewDashboard(), + () -> { + if (view.isDashboardPanelVisible()) { + showProcessesTable(); + } else { + showDashboard(); + } + } + )) + .endMenu() + .build(); + } + + @Override + public void createListBreadcrumb() { + setupListBreadcrumb(i18n.processDashboardName()); + } + + @Override + public void tableRedraw() { + processesTable.filterReset(); + processesTable.redraw(); + } + public void resetProcessBreadcrumb() { processesByType.filterReset(); processesByRunningTime.filterReset(); @@ -333,6 +356,9 @@ public void tableCellSelected(String columnId, COLUMN_PROCESS_STATUS).toString()).intValue(); openProcessDetailsScreen(); + setupDetailBreadcrumb(i18n.processDashboardName(), + i18n.ProcessInstanceBreadcrumb(processInstanceId), + PROCESS_INSTANCE_DETAILS_SCREEN); instanceSelectionEvent.fire(new ProcessInstanceSelectionEvent( deploymentId, diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.java index 8dec3f6fe5..1feb6141ab 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.java @@ -21,15 +21,12 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style; -import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.Widget; import org.dashbuilder.displayer.client.Displayer; -import org.gwtbootstrap3.client.ui.AnchorButton; import org.gwtbootstrap3.client.ui.Container; import org.gwtbootstrap3.client.ui.Heading; import org.gwtbootstrap3.client.ui.Row; @@ -53,9 +50,6 @@ public class ProcessDashboardView extends Composite implements ProcessDashboard. @UiField Panel instancesPanel; - @UiField - AnchorButton instancesAnchor; - @UiField Row processBreadCrumbRow; @@ -253,25 +247,19 @@ public void hideBreadCrumb() { @Override public void showDashboard() { - instancesAnchor.setText(DashboardConstants.INSTANCE.showInstances()); dashboardPanel.setVisible(true); instancesPanel.setVisible(false); } @Override public void showInstances() { - instancesAnchor.setText(DashboardConstants.INSTANCE.showDashboard()); dashboardPanel.setVisible(false); instancesPanel.setVisible(true); } - @UiHandler("instancesAnchor") - protected void onShowInstances(ClickEvent event) { - if (dashboardPanel.isVisible()) { - presenter.showProcessesTable(); - } else { - presenter.showDashboard(); - } + @Override + public boolean isDashboardPanelVisible() { + return dashboardPanel.isVisible(); } interface Binder extends UiBinder { diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.ui.xml b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.ui.xml index 5e45c78526..d330929d03 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.ui.xml +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/ProcessDashboardView.ui.xml @@ -39,7 +39,6 @@ - diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboard.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboard.java index 0cdcad7cc9..c410ad6696 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboard.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboard.java @@ -40,9 +40,9 @@ import org.jboss.errai.common.client.api.Caller; import org.jbpm.dashboard.renderer.client.panel.formatter.DurationFormatter; -import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardConstants; import org.jbpm.dashboard.renderer.client.panel.widgets.ProcessBreadCrumb; import org.jbpm.workbench.common.client.PerspectiveIds; +import org.jbpm.workbench.common.client.menu.PrimaryActionMenuBuilder; import org.jbpm.workbench.common.client.menu.ServerTemplateSelectorMenuBuilder; import org.jbpm.workbench.common.events.ServerTemplateSelected; import org.jbpm.workbench.ht.model.TaskSummary; @@ -170,17 +170,40 @@ public TaskDashboard(final View view, @WorkbenchPartTitle public String getTitle() { - return DashboardConstants.INSTANCE.taskDashboardName(); + return i18n.taskDashboardName(); } @WorkbenchMenu public Menus getMenus() { return MenuFactory - .newTopLevelCustomMenu(serverTemplateSelectorMenuBuilder) + .newTopLevelCustomMenu(new PrimaryActionMenuBuilder("", + "fa-table", + i18n.viewTable(), + "", + "fa-th", + i18n.viewDashboard(), + () -> { + if (view.isDashboardPanelVisible()) { + showTasksTable(); + } else { + showDashboard(); + } + })) .endMenu() .build(); } + @Override + public void createListBreadcrumb() { + setupListBreadcrumb(i18n.taskDashboardName()); + } + + @Override + public void tableRedraw() { + tasksTable.filterReset(); + tasksTable.redraw(); + } + public void onServerTemplateSelected(@Observes final ServerTemplateSelected serverTemplateSelected) { //Refresh view placeManager.closePlace(PerspectiveIds.TASK_DASHBOARD_SCREEN); @@ -398,6 +421,9 @@ public void tableCellSelected(String columnId, taskDataService.call((TaskSummary taskSummary) -> { openTaskDetailsScreen(); + setupDetailBreadcrumb(i18n.taskDashboardName(), + i18n.TaskBreadcrumb(taskId), + TASK_DETAILS_SCREEN); taskSelectionEvent.fire(new TaskSelectionEvent(serverTemplateId, taskSummary.getDeploymentId(), taskSummary.getId(), diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.java index 18c0a3088c..516b49eea3 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.java @@ -21,15 +21,12 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style; -import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.Widget; import org.dashbuilder.displayer.client.Displayer; -import org.gwtbootstrap3.client.ui.AnchorButton; import org.gwtbootstrap3.client.ui.Container; import org.gwtbootstrap3.client.ui.Heading; import org.gwtbootstrap3.client.ui.Row; @@ -53,9 +50,6 @@ public class TaskDashboardView extends Composite implements TaskDashboard.View { @UiField Panel instancesPanel; - @UiField - AnchorButton instancesAnchor; - @UiField Row processBreadCrumbRow; @@ -259,25 +253,19 @@ public void hideBreadCrumb() { @Override public void showDashboard() { - instancesAnchor.setText(DashboardConstants.INSTANCE.showTasks()); dashboardPanel.setVisible(true); instancesPanel.setVisible(false); } @Override public void showInstances() { - instancesAnchor.setText(DashboardConstants.INSTANCE.showDashboard()); dashboardPanel.setVisible(false); instancesPanel.setVisible(true); } - @UiHandler("instancesAnchor") - protected void onShowInstances(ClickEvent event) { - if (dashboardPanel.isVisible()) { - presenter.showTasksTable(); - } else { - presenter.showDashboard(); - } + @Override + public boolean isDashboardPanelVisible() { + return dashboardPanel.isVisible(); } interface Binder extends UiBinder { diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.ui.xml b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.ui.xml index 08f7400325..d232f77285 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.ui.xml +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/TaskDashboardView.ui.xml @@ -39,7 +39,6 @@ - diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardI18n.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardI18n.java index a127edaa4d..4569ac9339 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardI18n.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardI18n.java @@ -45,6 +45,10 @@ String selectedTaskStatusHeader(String status, String processInstances(); + String ProcessInstanceBreadcrumb(Long processInstanceId); + + String TaskBreadcrumb(Long taskId); + String processTableInstanceId(); String processTableDeploymentId(); @@ -113,11 +117,9 @@ String selectedTaskStatusHeader(String status, String loadingDashboard(); - String showDashboard(); + String viewDashboard(); - String showInstances(); - - String showTasks(); + String viewTable(); String total(); @@ -236,4 +238,6 @@ String selectedTaskStatusHeader(String status, String displayerNotFound(String name); String dashboardCouldNotBeLoaded(); + + String Home(); } diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/ProcessDashboardPerspective.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/ProcessDashboardPerspective.java index 3a66ebe312..45cedc557e 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/ProcessDashboardPerspective.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/ProcessDashboardPerspective.java @@ -21,7 +21,7 @@ import org.jbpm.workbench.common.client.PerspectiveIds; import org.uberfire.client.annotations.Perspective; import org.uberfire.client.annotations.WorkbenchPerspective; -import org.uberfire.client.workbench.panels.impl.SimpleWorkbenchPanelPresenter; +import org.uberfire.client.workbench.panels.impl.MultiScreenWorkbenchPanelPresenter; import org.uberfire.workbench.model.PerspectiveDefinition; import org.uberfire.workbench.model.impl.PerspectiveDefinitionImpl; @@ -34,7 +34,7 @@ public class ProcessDashboardPerspective { @Perspective public PerspectiveDefinition buildPerspective() { - PerspectiveDefinition perspective = new PerspectiveDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); + PerspectiveDefinition perspective = new PerspectiveDefinitionImpl(MultiScreenWorkbenchPanelPresenter.class.getName()); perspective.setName(DashboardConstants.INSTANCE.processDashboardName()); perspective.getRoot().addPart(PerspectiveIds.PROCESS_DASHBOARD_SCREEN); return perspective; diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/TaskDashboardPerspective.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/TaskDashboardPerspective.java index a43e95a89f..2854711349 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/TaskDashboardPerspective.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/java/org/jbpm/dashboard/renderer/client/panel/perspectives/TaskDashboardPerspective.java @@ -21,7 +21,7 @@ import org.jbpm.workbench.common.client.PerspectiveIds; import org.uberfire.client.annotations.Perspective; import org.uberfire.client.annotations.WorkbenchPerspective; -import org.uberfire.client.workbench.panels.impl.SimpleWorkbenchPanelPresenter; +import org.uberfire.client.workbench.panels.impl.MultiScreenWorkbenchPanelPresenter; import org.uberfire.workbench.model.PerspectiveDefinition; import org.uberfire.workbench.model.impl.PerspectiveDefinitionImpl; @@ -34,7 +34,7 @@ public class TaskDashboardPerspective { @Perspective public PerspectiveDefinition buildPerspective() { - PerspectiveDefinition perspective = new PerspectiveDefinitionImpl(SimpleWorkbenchPanelPresenter.class.getName()); + PerspectiveDefinition perspective = new PerspectiveDefinitionImpl(MultiScreenWorkbenchPanelPresenter.class.getName()); perspective.setName(DashboardConstants.INSTANCE.taskDashboardName()); perspective.getRoot().addPart(PerspectiveIds.TASK_DASHBOARD_SCREEN); return perspective; diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/resources/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardConstants.properties b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/resources/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardConstants.properties index f3a5d12c9e..e16f01b4cc 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/resources/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardConstants.properties +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/main/resources/org/jbpm/dashboard/renderer/client/panel/i18n/DashboardConstants.properties @@ -4,13 +4,14 @@ processScreenTitle=Processes taskScreenTitle=Tasks allProcesses=All Processes allTasks=All Tasks +ProcessInstanceBreadcrumb=Process Instance: {0} +TaskBreadcrumb=Task: {0} selectedProcessStatusHeader={0} {1} Processes selectedTaskStatusHeader={0} {1} Tasks loadingDashboard=Loading dashboard ... -showDashboard=Show Dashboard -showInstances=Show Instances -showTasks=Show Tasks +viewDashboard=View dashboard +viewTable=View table total=Total byType=By Type byStartDate=By Start Date @@ -120,3 +121,4 @@ taskDetailsNotAvailable=Task details not available displayerNotFound=Displayer not found\: {0} dashboardCouldNotBeLoaded=The Dashboard could not be loaded. Check if the jBPM Capabilities are enabled and if the remote server is correctly set up. +Home=Home diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/ProcessDashboardTest.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/ProcessDashboardTest.java index 4a502e4c25..0f04f62178 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/ProcessDashboardTest.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/ProcessDashboardTest.java @@ -35,7 +35,10 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; +import org.uberfire.client.mvp.PerspectiveActivity; +import org.uberfire.client.mvp.PerspectiveManager; import org.uberfire.client.mvp.PlaceStatus; +import org.uberfire.ext.widgets.common.client.breadcrumbs.UberfireBreadcrumbs; import static org.dashbuilder.dataset.Assertions.*; import static org.mockito.Mockito.*; @@ -58,6 +61,12 @@ public class ProcessDashboardTest extends AbstractDashboardTest { @Mock DisplayerListener totalMetricListener; + @Mock + PerspectiveManager perspectiveManagerMock; + + @Mock + UberfireBreadcrumbs uberfireBreadcrumbsMock; + ProcessDashboard presenter; DataSet dataSet; @@ -99,6 +108,9 @@ public void init() throws Exception { placeManager, instanceSelectionEvent, serverTemplateSelectorMenuBuilder); + when(perspectiveManagerMock.getCurrentPerspective()).thenReturn(mock(PerspectiveActivity.class)); + presenter.setPerspectiveManager(perspectiveManagerMock); + presenter.setUberfireBreadcrumbs(uberfireBreadcrumbsMock); presenter.init(); } diff --git a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/TaskDashboardTest.java b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/TaskDashboardTest.java index 47f676caeb..4ec441733c 100644 --- a/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/TaskDashboardTest.java +++ b/jbpm-wb-dashboard/jbpm-wb-dashboard-client/src/test/java/org/jbpm/dashboard/renderer/client/TaskDashboardTest.java @@ -40,7 +40,10 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; +import org.uberfire.client.mvp.PerspectiveActivity; +import org.uberfire.client.mvp.PerspectiveManager; import org.uberfire.client.mvp.PlaceStatus; +import org.uberfire.ext.widgets.common.client.breadcrumbs.UberfireBreadcrumbs; import org.uberfire.mocks.CallerMock; import org.uberfire.workbench.events.NotificationEvent; @@ -73,6 +76,12 @@ public class TaskDashboardTest extends AbstractDashboardTest { @Mock DisplayerListener totalMetricListener; + @Mock + PerspectiveManager perspectiveManagerMock; + + @Mock + UberfireBreadcrumbs uberfireBreadcrumbsMock; + TaskDashboard presenter; DataSet dataSet; @@ -118,13 +127,15 @@ public void init() throws Exception { serverTemplateSelectorMenuBuilder, taskServiceCaller, notificationEvent); + when(perspectiveManagerMock.getCurrentPerspective()).thenReturn(mock(PerspectiveActivity.class)); + presenter.setPerspectiveManager(perspectiveManagerMock); + presenter.setUberfireBreadcrumbs(uberfireBreadcrumbsMock); presenter.init(); } @Test public void testDrawAll() { - verify(view).init(presenter, presenter.getTotalMetric(), presenter.getCreatedMetric(), @@ -289,14 +300,21 @@ public void testTasksByRunningTime() { ColumnSettings taskDurationSettings = displayerSettings.getColumnSettings(COLUMN_TASK_DURATION); assertNotNull(taskDurationSettings); - assertEquals("value/60000", taskDurationSettings.getValueExpression()); - assertEquals("#,##0 min", taskDurationSettings.getValuePattern()); - - assertEquals(COLUMN_PROCESS_NAME, dataSet.getColumnByIndex(0).getId()); - assertEquals("Tasks", dataSet.getColumnByIndex(1).getId()); - assertEquals(COLUMN_TASK_DURATION, dataSet.getColumnByIndex(2).getId()); - assertEquals(COLUMN_PROCESS_NAME, dataSet.getColumnByIndex(3).getId()); - assertEquals("Tasks", dataSet.getColumnByIndex(4).getId()); + assertEquals("value/60000", + taskDurationSettings.getValueExpression()); + assertEquals("#,##0 min", + taskDurationSettings.getValuePattern()); + + assertEquals(COLUMN_PROCESS_NAME, + dataSet.getColumnByIndex(0).getId()); + assertEquals("Tasks", + dataSet.getColumnByIndex(1).getId()); + assertEquals(COLUMN_TASK_DURATION, + dataSet.getColumnByIndex(2).getId()); + assertEquals(COLUMN_PROCESS_NAME, + dataSet.getColumnByIndex(3).getId()); + assertEquals("Tasks", + dataSet.getColumnByIndex(4).getId()); assertDataSetValues(dataSet, new String[][]{ diff --git a/jbpm-wb-human-tasks/jbpm-wb-human-tasks-client/src/main/java/org/jbpm/workbench/ht/client/editors/taskdetailsmulti/TaskDetailsMultiViewImpl.java b/jbpm-wb-human-tasks/jbpm-wb-human-tasks-client/src/main/java/org/jbpm/workbench/ht/client/editors/taskdetailsmulti/TaskDetailsMultiViewImpl.java index f1a1bbdbe1..92659949df 100644 --- a/jbpm-wb-human-tasks/jbpm-wb-human-tasks-client/src/main/java/org/jbpm/workbench/ht/client/editors/taskdetailsmulti/TaskDetailsMultiViewImpl.java +++ b/jbpm-wb-human-tasks/jbpm-wb-human-tasks-client/src/main/java/org/jbpm/workbench/ht/client/editors/taskdetailsmulti/TaskDetailsMultiViewImpl.java @@ -57,10 +57,6 @@ public class TaskDetailsMultiViewImpl extends Composite private TabListItem taskDetailsTab; - private TabPane processContextPane; - - private TabListItem processContextTab; - private TabPane taskAssignmentsPane; private TabListItem taskAssignmentsTab; @@ -216,9 +212,6 @@ public void displayOnlyLogTab() { taskDetailsPane.setVisible(true); taskDetailsTab.setVisible(true); - processContextTab.setVisible(true); - processContextPane.setVisible(true); - taskLogsPane.setVisible(true); taskLogsTab.setVisible(true); taskDetailsTab.showTab();