Package org.gwtoolbox.widget.client.panel.dashboard

Source Code of org.gwtoolbox.widget.client.panel.dashboard.DashboardPanel

package org.gwtoolbox.widget.client.panel.dashboard;

import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.*;
import org.gwtoolbox.widget.client.panel.contentpanel.ContentPanel;

/**
* @author Uri Boness
*/
public class DashboardPanel extends Composite {

    private SimplePanel main;
    private Columns columns;
    private DashboardDragController controller;

    public DashboardPanel(int numberOfColumns) {
        columns = new Columns(numberOfColumns);

        controller = new DashboardDragController();

        for (int i = 0; i<numberOfColumns; i++) {
            DashboardColumn column = new DashboardColumn();
            controller.addDashboardColumn(column);
            columns.setWidget(column, i);
            column.setWidth("100%");
        }

        main = new SimplePanel();
        main.setWidget(columns);
        columns.setSize("100%", "100%");

        initWidget(main);
        setStylePrimaryName("DashboardPanel");
    }

    public void addWidget(int column, String title, Widget widget) {
        addDashboardWidget(column, title, widget);
    }

    public void addGadget(int column, final Gadget gadget) {
        DashboardWidget dashboardWidget = addDashboardWidget(column, gadget.getTitle(), gadget.getContent());
        if (gadget.supportsMaximiz()) {
            dashboardWidget.addTool(ContentPanel.Tools.MAXIMIZE, new ClickHandler() {
                public void onClick(ClickEvent event) {
                    showMaximizedContent(gadget);
                }
            });
        }
    }


    //============================================== Helper Methods ====================================================

    private DashboardWidget addDashboardWidget(int column, String title, Widget widget) {
        DashboardWidget dashboardWidget = new DashboardWidget(title, widget, controller);
        DashboardColumn dashboardColumn = (DashboardColumn) columns.getWidget(column);
        dashboardColumn.addWidget(dashboardWidget);
        return dashboardWidget;
    }

    private void showMaximizedContent(Gadget gadget) {
        ContentPanel contentPanel = new ContentPanel(gadget.getTitle());
        contentPanel.addTool(ContentPanel.Tools.UNMAXIMIZE, new ClickHandler() {
            public void onClick(ClickEvent event) {
                main.setWidget(columns);
            }
        });
        contentPanel.setContent(gadget.getMaximizedContent());
        main.setWidget(contentPanel);
        contentPanel.setSize("100%", "100%");
    }


    //================================================= Inner Classes ==================================================

    private class Columns extends ResizeComposite {

        private LayoutPanel layout;

        private SimplePanel[] panels;

        private Columns(int numberOfColumns) {
            this.panels = new SimplePanel[numberOfColumns];
            layout = new LayoutPanel();
            int width = 100 / numberOfColumns;
            for (int i = 0; i < numberOfColumns; i++) {
                panels[i] = new SimplePanel();
                layout.add(panels[i]);
                int left = i * width;
                if (i == numberOfColumns - 1) {
                    width = 100 - left;
                }
                layout.setWidgetLeftWidth(panels[i], left, Style.Unit.PCT, width, Style.Unit.PCT);
            }
            initWidget(layout);
        }

        public void setWidget(Widget widget, int columnIndex) {
            panels[columnIndex].setWidget(widget);
        }

        public Widget getWidget(int columnIndex) {
            return panels[columnIndex].getWidget();
        }
    }

}
TOP

Related Classes of org.gwtoolbox.widget.client.panel.dashboard.DashboardPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.