org.jbpm.dashboard.renderer.client.panel.ProcessDashboardView.java Source code

Java tutorial

Introduction

Here is the source code for org.jbpm.dashboard.renderer.client.panel.ProcessDashboardView.java

Source

/*
 * Copyright 2015 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.jbpm.dashboard.renderer.client.panel;

import java.util.HashMap;
import java.util.Map;
import javax.enterprise.context.Dependent;

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;
import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardConstants;
import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardI18n;
import org.jbpm.dashboard.renderer.client.panel.widgets.DisplayerContainer;
import org.jbpm.dashboard.renderer.client.panel.widgets.ProcessBreadCrumb;
import org.uberfire.ext.widgets.common.client.common.BusyPopup;

@Dependent
public class ProcessDashboardView extends Composite implements ProcessDashboard.View {

    private static Binder uiBinder = GWT.create(Binder.class);

    @UiField
    Heading headerLabel;

    @UiField
    Container dashboardPanel;

    @UiField
    Panel instancesPanel;

    @UiField
    AnchorButton instancesAnchor;

    @UiField
    Row processBreadCrumbRow;

    @UiField(provided = true)
    ProcessBreadCrumb processBreadCrumb;

    @UiField(provided = true)
    DisplayerContainer totalContainer;

    @UiField(provided = true)
    DisplayerContainer activeContainer;

    @UiField(provided = true)
    DisplayerContainer pendingContainer;

    @UiField(provided = true)
    DisplayerContainer suspendedContainer;

    @UiField(provided = true)
    DisplayerContainer abortedContainer;

    @UiField(provided = true)
    DisplayerContainer completedContainer;

    @UiField(provided = true)
    DisplayerContainer container1;

    @UiField(provided = true)
    DisplayerContainer container2;

    @UiField(provided = true)
    DisplayerContainer container3;

    @UiField(provided = true)
    DisplayerContainer container4;

    @UiField(provided = true)
    DisplayerContainer container5;

    @UiField(provided = true)
    DisplayerContainer container6;

    @UiField(provided = true)
    Displayer processesTable;

    ProcessDashboard presenter;

    public void init(ProcessDashboard presenter, Displayer totalMetric, Displayer activeMetric,
            Displayer pendingMetric, Displayer suspendedMetric, Displayer abortedMetric, Displayer completedMetric,
            Displayer processesByType, Displayer processesByUser, Displayer processesByStartDate,
            Displayer processesByEndDate, Displayer processesByRunningTime, Displayer processesByVersion,
            Displayer processesTable) {

        this.presenter = presenter;
        this.processesTable = processesTable;
        this.processBreadCrumb = presenter.getProcessBreadCrumb();

        Map<String, Displayer> dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.total(), totalMetric);
        totalContainer = createMetricContainer(dmap, false);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.processStatusActive(), activeMetric);
        activeContainer = createMetricContainer(dmap, false);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.processStatusPending(), pendingMetric);
        pendingContainer = createMetricContainer(dmap, false);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.processStatusSuspended(), suspendedMetric);
        suspendedContainer = createMetricContainer(dmap, false);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.processStatusAborted(), abortedMetric);
        abortedContainer = createMetricContainer(dmap, false);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.processStatusCompleted(), completedMetric);
        completedContainer = createMetricContainer(dmap, false);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.byType(), processesByType);
        container1 = createChartContainer(dmap, true);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.byStartDate(), processesByStartDate);
        container2 = createChartContainer(dmap, true);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.byUser(), processesByUser);
        container3 = createChartContainer(dmap, true);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.byRunningTime(), processesByRunningTime);
        container4 = createChartContainer(dmap, true);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.byEndDate(), processesByEndDate);
        container5 = createChartContainer(dmap, true);

        dmap = new HashMap<String, Displayer>();
        dmap.put(DashboardConstants.INSTANCE.byVersion(), processesByVersion);
        container6 = createChartContainer(dmap, true);

        initWidget(uiBinder.createAndBindUi(this));
    }

    protected DisplayerContainer createMetricContainer(Map<String, Displayer> m, boolean showHeader) {
        DisplayerContainer container = new DisplayerContainer(m, showHeader);
        Style s = container.getView().getHeaderStyle();
        s.setBackgroundColor("white");
        return container;
    }

    protected DisplayerContainer createChartContainer(Map<String, Displayer> m, boolean showHeader) {
        DisplayerContainer container = new DisplayerContainer(m, showHeader);
        Style s = container.getView().getHeaderStyle();
        s.setBackgroundColor("white");
        s = container.getView().getBodyStyle();
        s.setBackgroundColor("white");
        s.setPaddingBottom(30, Style.Unit.PX);
        return container;
    }

    @Override
    public DashboardI18n getI18nService() {
        return DashboardConstants.INSTANCE;
    }

    @Override
    public void showLoading() {
        BusyPopup.showMessage(DashboardConstants.INSTANCE.loadingDashboard());
    }

    @Override
    public void hideLoading() {
        BusyPopup.close();
    }

    @Override
    public void setHeaderText(String text) {
        headerLabel.setText(text);
    }

    @Override
    public void showBreadCrumb(String processName) {
        processBreadCrumbRow.setVisible(true);
        processBreadCrumb.setRootTitle(DashboardConstants.INSTANCE.processes());
        processBreadCrumb.setProcessName(processName);
    }

    @Override
    public void hideBreadCrumb() {
        processBreadCrumbRow.setVisible(false);
    }

    @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();
        }
    }

    interface Binder extends UiBinder<Widget, ProcessDashboardView> {

    }
}