Package org.gwtoolbox.sample.widget.client

Source Code of org.gwtoolbox.sample.widget.client.MainPane

package org.gwtoolbox.sample.widget.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.*;
import org.gwtoolbox.commons.ui.client.ggrowl.GGrowl;
import org.gwtoolbox.ioc.core.client.annotation.*;
import org.gwtoolbox.widget.client.panel.layout.DockLayout;
import org.gwtoolbox.widget.client.panel.layout.PanelLayout;
import org.gwtoolbox.widget.client.panel.layout.SplitLayout;
import org.gwtoolbox.widget.client.panel.layout.tab.TabLayout;
import org.gwtoolbox.widget.client.panel.layout.tab.TabSpec;

import java.util.List;

/**
* @author Uri Boness
*/
@Component
@RootPanelBinding
public class MainPane extends ResizeComposite {

    private Tree tree;
    private TabLayout tabs;

    private List<SampleGroup> groups;

    public MainPane() {

        DockLayout main = new DockLayout();

        Label header = new Label("GWToolbox Widget Explorer");
        header.setStylePrimaryName("MainHeader");
        header.setSize("100%", "100%");
        main.addNorth(header, 40);

        SplitLayout split = new SplitLayout();

        tree = new Tree();
        tree.setAnimationEnabled(true);
        tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
            public void onSelection(SelectionEvent<TreeItem> event) {
                TreeItem item = event.getSelectedItem();
                final SamplePanel sample = (SamplePanel) item.getUserObject();
                if (sample == null) {
                    return;
                }
                sample.reset();
                if (tabs.getTabIndex(sample.getName()) < 0) {
                    TabSpec ts = new TabSpec(sample.getName())
                            .setClosable(true)
                            .setText(sample.getName())
                            .setContent(sample.getContentWidget());

                    tabs.addTab(ts);
                }
                tabs.setSelectedTab(sample.getName());
            }
        });

        PanelLayout treePanel = new PanelLayout("Navigation Bar");
        treePanel.setContent(tree);

        split.addWest(treePanel, 200);
        tabs = new TabLayout();
        split.add(tabs);

        main.add(split);

        GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
            public void onUncaughtException(Throwable e) {
                GWT.log("Uncaught exception in java land", e);
                GGrowl.showMessage("An error occurred. Please contact your system administrator. ", e.toString(), 10000);
            }
        });

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

    @Initializer
    public void init() {
        for (SampleGroup group : groups) {
            initGroup(group);
        }
    }

    protected void initGroup(SampleGroup group) {
        HorizontalPanel itemContent = new HorizontalPanel();
        itemContent.setStylePrimaryName("Content");
        Image icon = group.getIcon();
        itemContent.add(icon);
        itemContent.setCellHorizontalAlignment(icon, HorizontalPanel.ALIGN_CENTER);
        itemContent.setCellVerticalAlignment(icon, HorizontalPanel.ALIGN_MIDDLE);
        Label gap = new Label();
        itemContent.add(gap);
        itemContent.setCellWidth(gap, "4px");
        Label label = new Label(group.getName());
        itemContent.add(label);
        itemContent.setCellHorizontalAlignment(label, HorizontalPanel.ALIGN_LEFT);
        itemContent.setCellVerticalAlignment(label, HorizontalPanel.ALIGN_MIDDLE);
        TreeItem groupNode = new TreeItem(itemContent);
        groupNode.setStylePrimaryName("GroupNode");

        for (SamplePanel panel : group.getSamples()) {
            TreeItem sampleNode = new TreeItem(panel.getName());
            sampleNode.setUserObject(panel);
            groupNode.addItem(sampleNode);
        }
        tree.addItem(groupNode);
        // fixes the display of nodes (on firefox)
        DOM.setStyleAttribute((Element) itemContent.getElement().getParentNode(), "display", "block");
    }

    //============================================== Setter/Getter =====================================================

    @Inject(by = InjectionType.TYPE)
    public void setSampleGroups(List<SampleGroup> groups) {
        this.groups = groups;
    }

}
TOP

Related Classes of org.gwtoolbox.sample.widget.client.MainPane

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.