org.drools.guvnor.client.explorer.navigation.browse.BrowseTreeViewImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.drools.guvnor.client.explorer.navigation.browse.BrowseTreeViewImpl.java

Source

/*
 * Copyright 2011 JBoss Inc
 *
 *   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.drools.guvnor.client.explorer.navigation.browse;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.*;

import org.drools.guvnor.client.explorer.ClientFactory;
import org.drools.guvnor.client.messages.ConstantsCore;
import org.drools.guvnor.client.resources.ImagesCore;
import org.drools.guvnor.client.util.Util;

import java.util.ArrayList;
import java.util.Collection;

public class BrowseTreeViewImpl extends Composite implements BrowseTreeView {

    private static ConstantsCore constants = GWT.create(ConstantsCore.class);
    private static ImagesCore images = GWT.create(ImagesCore.class);
    private TreeItem root;
    private TreeItem states;
    private TreeItem inbox;

    interface BrowseTreeViewImplBinder extends UiBinder<Widget, BrowseTreeViewImpl> {
    }

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

    private Presenter presenter;

    @UiField
    DockLayoutPanel layout;

    @UiField
    Tree tree;

    public BrowseTreeViewImpl(ClientFactory clientFactory) {
        initWidget(uiBinder.createAndBindUi(this));

        addSelectionHandler();
        addOpenHandler();
        inbox = tree.addItem(Util.getHeader(images.inbox(), constants.Inbox()));
    }

    private void addSelectionHandler() {
        tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
            public void onSelection(SelectionEvent<TreeItem> treeItemSelectionEvent) {
                TreeItem selectedItem = treeItemSelectionEvent.getSelectedItem();
                presenter.onTreeItemSelection(selectedItem, selectedItem.getText());
            }
        });
    }

    private void addOpenHandler() {
        tree.addOpenHandler(new OpenHandler<TreeItem>() {
            public void onOpen(OpenEvent<TreeItem> treeItemOpenEvent) {
                presenter.onTreeItemOpen(treeItemOpenEvent.getTarget());
            }
        });
    }

    public void setPresenter(Presenter presenter) {
        this.presenter = presenter;
    }

    public IsTreeItem addRootTreeItem() {
        root = tree.addItem(Util.getHeader(images.ruleAsset(), constants.AssetsTreeView()));
        return root;
    }

    public IsTreeItem addInboxIncomingTreeItem() {
        return inbox.addItem(Util.getHeader(images.categorySmall(), getInboxIncomingName()));
    }

    public IsTreeItem addInboxRecentEditedTreeItem() {
        return inbox.addItem(Util.getHeader(images.categorySmall(), getInboxRecentEditedName()));
    }

    public IsTreeItem addInboxRecentViewedTreeItem() {
        return inbox.addItem(Util.getHeader(images.categorySmall(), getInboxRecentViewedName()));
    }

    public String getInboxIncomingName() {
        return constants.IncomingChanges();
    }

    public String getInboxRecentEditedName() {
        return constants.RecentlyEdited();
    }

    public String getInboxRecentViewedName() {
        return constants.RecentlyOpened();
    }

    public Collection<IsTreeItem> getChildren(IsTreeItem openedItem) {
        Collection<IsTreeItem> children = new ArrayList<IsTreeItem>();

        TreeItem parent = openedItem.asTreeItem();
        for (int i = 0; i < parent.getChildCount(); i++) {
            children.add(parent.getChild(i));
        }

        return children;
    }

    public IsTreeItem addFind() {
        return root.addItem(Util.getHeader(images.find(), constants.Find()));
    }

    public IsTreeItem addRootStateTreeItem() {
        states = root.addItem(Util.getHeader(images.statusSmall(), constants.ByStatus()));
        return states;
    }

    public IsTreeItem addRootCategoryTreeItem() {
        return root.addItem(Util.getHeader(images.chartOrganisation(), constants.ByCategory()));
    }

    public IsTreeItem addTreeItem(IsTreeItem parent, String name) {
        return parent.asTreeItem().addItem(name);
    }

    public void removeStates() {
        states.removeItems();
    }

    public IsTreeItem addStateItem(String state) {
        return states.addItem(state);
    }

    public void removeCategories(IsTreeItem treeItem) {
        treeItem.asTreeItem().removeItems();
    }

}