com.ikon.frontend.client.panel.center.Dashboard.java Source code

Java tutorial

Introduction

Here is the source code for com.ikon.frontend.client.panel.center.Dashboard.java

Source

/**
*  openkm, Open Document Management System (http://www.openkm.com)
 *  Copyright (c) 2006-2013  Paco Avila & Josep Llort
 *
 *  No bytes were intentionally harmed during the development of this application.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *  
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

package com.ikon.frontend.client.panel.center;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.ikon.frontend.client.constants.ui.UIDashboardConstants;
import com.ikon.frontend.client.extension.event.HasDashboardEvent;
import com.ikon.frontend.client.extension.event.handler.DashboardHandlerExtension;
import com.ikon.frontend.client.extension.event.hashandler.HasDashboardHandlerExtension;
import com.ikon.frontend.client.extension.widget.toolbar.ToolBarBoxExtension;
import com.ikon.frontend.client.widget.dashboard.GeneralDashboard;
import com.ikon.frontend.client.widget.dashboard.HorizontalToolBar;
import com.ikon.frontend.client.widget.dashboard.MailDashboard;
import com.ikon.frontend.client.widget.dashboard.NewsDashboard;
import com.ikon.frontend.client.widget.dashboard.UserDashboard;
import com.ikon.frontend.client.widget.dashboard.keymap.KeyMapDashboard;
import com.ikon.frontend.client.widget.dashboard.workflow.WorkflowDashboard;

/**
 * Dashboard
 * 
 * @author jllort
 *
 */
public class Dashboard extends Composite implements HasDashboardHandlerExtension, HasDashboardEvent {

    private boolean userVisible = false;
    private boolean mailVisible = false;
    private boolean newsVisible = false;
    private boolean generalVisible = false;
    private boolean workflowVisible = false;
    private boolean keywordsVisible = false;

    private VerticalPanel panel;
    private SimplePanel sp;
    private ScrollPanel scrollPanel;
    public HorizontalToolBar horizontalToolBar;
    public UserDashboard userDashboard;
    public MailDashboard mailDashboard;
    public NewsDashboard newsDashboard;
    public GeneralDashboard generalDashboard;
    public WorkflowDashboard workflowDashboard;
    public KeyMapDashboard keyMapDashboard;
    private Widget actualWidgetExtension;
    private int actualView = 0;
    private Timer dashboardRefreshing;
    private List<ToolBarBoxExtension> toolBarBoxExtensionList;
    private List<DashboardHandlerExtension> dashboardHandlerExtensionList;
    private int width = 0;
    private int height = 0;

    /**
     * Dashboard
     */
    public Dashboard() {
        toolBarBoxExtensionList = new ArrayList<ToolBarBoxExtension>();
        dashboardHandlerExtensionList = new ArrayList<DashboardHandlerExtension>();
        panel = new VerticalPanel();
        sp = new SimplePanel();
        userDashboard = new UserDashboard();
        mailDashboard = new MailDashboard();
        scrollPanel = new ScrollPanel();
        horizontalToolBar = new HorizontalToolBar();
        newsDashboard = new NewsDashboard();
        generalDashboard = new GeneralDashboard();
        workflowDashboard = new WorkflowDashboard();
        keyMapDashboard = new KeyMapDashboard();

        actualView = UIDashboardConstants.DASHBOARD_NONE;

        sp.add(scrollPanel);

        panel.add(horizontalToolBar);
        panel.add(sp);

        sp.setStyleName("okm-Input");

        initWidget(panel);
    }

    /**
     * Sets the size on initialization
     * 
     * @param width The max width of the widget
     * @param height The max height of the widget
     */
    public void setSize(int width, int height) {
        this.width = width;
        this.height = height;
        panel.setPixelSize(width - 2, height - 2);
        panel.setCellHeight(sp, "" + (height - 60 - 2));
        panel.setCellHeight(horizontalToolBar, "" + 60);
        sp.setPixelSize(width - 2, height - 60 - 2);
        scrollPanel.setPixelSize(width - 2, height - (60 + 2));
        userDashboard.setWidth(width - 2);
        mailDashboard.setWidth(width - 2);
        newsDashboard.setWidth(width - 2);
        generalDashboard.setWidth(width - 2);
        workflowDashboard.setWidth(width - 2);
        keyMapDashboard.setSize("" + (width - 2), "" + (height - (60 + 2)));
        horizontalToolBar.setHeight("60");
        horizontalToolBar.setWidth("100%");

        for (Iterator<ToolBarBoxExtension> it = toolBarBoxExtensionList.iterator(); it.hasNext();) {
            it.next().getWidget().setPixelSize(width - 2, height - (60 + 2));
        }

        newsDashboard.getUserSearchs(true); // Here must get all searchs to set correct width size
    }

    /**
     * Refreshing language
     */
    public void langRefresh() {
        userDashboard.langRefresh();
        mailDashboard.langRefresh();
        horizontalToolBar.langRefresh();
        generalDashboard.langRefresh();
        newsDashboard.langRefresh();
        workflowDashboard.langRefresh();
        keyMapDashboard.langRefresh();
    }

    /**
     * changeView
     * 
     * @param view
     */
    public void changeView(int view) {

        switch (actualView) {
        case UIDashboardConstants.DASHBOARD_USER:
            scrollPanel.remove(userDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_MAIL:
            scrollPanel.remove(mailDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_NEWS:
            scrollPanel.remove(newsDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_GENERAL:
            scrollPanel.remove(generalDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_WORKFLOW:
            scrollPanel.remove(workflowDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_KEYMAP:
            scrollPanel.remove(keyMapDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_EXTENSION:
            scrollPanel.remove(actualWidgetExtension);
            break;
        }

        switch (view) {
        case UIDashboardConstants.DASHBOARD_USER:
            scrollPanel.add(userDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_MAIL:
            scrollPanel.add(mailDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_NEWS:
            scrollPanel.add(newsDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_GENERAL:
            scrollPanel.add(generalDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_WORKFLOW:
            scrollPanel.add(workflowDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_KEYMAP:
            scrollPanel.add(keyMapDashboard);
            break;

        case UIDashboardConstants.DASHBOARD_EXTENSION:
            actualWidgetExtension = toolBarBoxExtensionList.get(horizontalToolBar.getSelectedExtension())
                    .getWidget();
            scrollPanel.add(actualWidgetExtension);
            break;
        }

        actualView = view;
        fireEvent(HasDashboardEvent.TOOLBOX_CHANGED);
    }

    /**
     * getActualView
     */
    public int getActualView() {
        return actualView;
    }

    /**
     * @param widget
     * @return
     */
    public boolean isWidgetExtensionVisible(Widget widget) {
        if (actualView == UIDashboardConstants.DASHBOARD_EXTENSION && actualWidgetExtension.equals(widget)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Refresh all
     */
    public void refreshAll() {
        if (userVisible) {
            userDashboard.refreshAll();
        }
        if (mailVisible) {
            mailDashboard.refreshAll();
        }
        if (newsVisible) {
            newsDashboard.refreshAll();
        }
        if (generalVisible) {
            generalDashboard.refreshAll();
        }
        if (workflowVisible) {
            workflowDashboard.refreshAll();
        }
        keyMapDashboard.refreshAll();
        fireEvent(HasDashboardEvent.DASHBOARD_REFRESH);
    }

    /**
     * startRefreshingDashboard
     * 
     * @param scheduleTime
     */
    public void startRefreshingDashboard(double scheduleTime) {
        dashboardRefreshing = new Timer() {
            public void run() {
                refreshAll();
            }
        };

        dashboardRefreshing.scheduleRepeating(new Double(scheduleTime).intValue());
    }

    /**
     * showUser
     */
    public void showUser() {
        userVisible = true;
        horizontalToolBar.showUser();
    }

    /**
     * showMail
     */
    public void showMail() {
        mailVisible = true;
        horizontalToolBar.showMail();
    }

    /**
     * showNews
     */
    public void showNews() {
        newsVisible = true;
        horizontalToolBar.showNews();
    }

    /**
     * showGeneral
     */
    public void showGeneral() {
        generalVisible = true;
        horizontalToolBar.showGeneral();
    }

    /**
     * showWorkflow
     */
    public void showWorkflow() {
        workflowVisible = true;
        horizontalToolBar.showWorkflow();
    }

    /**
     * showKeywords
     */
    public void showKeywords() {
        keywordsVisible = true;
        horizontalToolBar.showKeywords();
    }

    /**
     * init
     */
    public void init() {
        if (userVisible) {
            changeView(UIDashboardConstants.DASHBOARD_USER);
        } else if (mailVisible) {
            changeView(UIDashboardConstants.DASHBOARD_MAIL);
        } else if (newsVisible) {
            changeView(UIDashboardConstants.DASHBOARD_NEWS);
        } else if (generalVisible) {
            changeView(UIDashboardConstants.DASHBOARD_GENERAL);
        } else if (workflowVisible) {
            changeView(UIDashboardConstants.DASHBOARD_WORKFLOW);
        } else if (keywordsVisible) {
            changeView(UIDashboardConstants.DASHBOARD_KEYMAP);
        } else if (!toolBarBoxExtensionList.isEmpty()) {
            changeView(UIDashboardConstants.DASHBOARD_EXTENSION);
        }
        horizontalToolBar.init();
    }

    /**
     * addToolBarBoxExtension
     * 
     * @param extension
     */
    public void addToolBarBoxExtension(ToolBarBoxExtension extension) {
        toolBarBoxExtensionList.add(extension);
        horizontalToolBar.addToolBarBoxExtension(extension);
        extension.getWidget().setPixelSize(width - 2, height - (60 + 2));
    }

    @Override
    public void addDashboardHandlerExtension(DashboardHandlerExtension handlerExtension) {
        dashboardHandlerExtensionList.add(handlerExtension);
    }

    @Override
    public void fireEvent(DashboardEventConstant event) {
        for (DashboardHandlerExtension handlerExtension : dashboardHandlerExtensionList) {
            handlerExtension.onChange(event);
        }
    }
}