Package com.google.gwt.gen2.demo.fasttree.client

Source Code of com.google.gwt.gen2.demo.fasttree.client.FastTreeDemo

/*
* Copyright 2008 Google 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 com.google.gwt.gen2.demo.fasttree.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
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.gen2.commonevent.shared.BeforeCloseEvent;
import com.google.gwt.gen2.commonevent.shared.BeforeCloseHandler;
import com.google.gwt.gen2.commonevent.shared.BeforeOpenEvent;
import com.google.gwt.gen2.commonevent.shared.BeforeOpenHandler;
import com.google.gwt.gen2.complexpanel.client.FastTree;
import com.google.gwt.gen2.complexpanel.client.FastTreeItem;
import com.google.gwt.gen2.complexpanel.client.HasFastTreeItems;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.StackPanel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

/**
* Fast tree demo.
*/
public class FastTreeDemo implements EntryPoint {

  public StackPanel createDemo() {

    // inject default styles
    FastTree.injectDefaultCss();

    StackPanel p = new StackPanel();

    if (LocaleInfo.getCurrentLocale().isRTL()) {
      p.add(hebrewTree(), "עץ עברי");
    }
    p.add(basicTree(), "Basic tree");
    p.add(lazyTree(), "Lazy tree");
    p.add(verboseTree(), "Verbose tree");
    p.add(crazyTree(), "Crazy tree");
    p.add(dynamicTree(), "Dynamic tree");
    p.add(cancelEventTree(), "Cancel event tree");

    return p;
  }

  /**
   * This is the entry point method.
   */
  public void onModuleLoad() {
    RootPanel.get().add(new FastTreeDemo().createDemo());
  }

  protected Widget basicTree() {
    FastTree t = new FastTree();
    FastTreeItem a = t.addItem("A root tree item");
    a.addItem("A child with different style");
    a.addItem("regular style");
    FastTreeItem aXb = a.addItem("Another child");
    aXb.addItem("a grand child");
    FastTreeItem widgetBranch = a.addItem(new CheckBox("A checkbox child"));
    FastTreeItem textBoxParent = widgetBranch.addItem("A TextBox parent");
    textBoxParent.addItem(new TextBox());
    textBoxParent.addItem("and another one...");
    textBoxParent.addItem(new TextArea());

    // Add an item with basic elements inside of it
    {
      final TextBox textBox = new TextBox();
      Hyperlink link = new Hyperlink("change focus", "blah");
      link.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
          textBox.setFocus(true);
          event.getNativeEvent().stopPropagation();
        }
      });
      VerticalPanel vPanel = new VerticalPanel();
      vPanel.add(link);
      vPanel.add(textBox);
      a.addItem(vPanel);
    }

    // Add a large item
    FastTreeItem hugeParent = a.addItem("I contain a huge item");
    SimplePanel hugePanel = new SimplePanel();
    hugePanel.setPixelSize(1000, 1000);
    hugePanel.getElement().getStyle().setProperty("border", "2px solid blue");
    hugePanel.getElement().getStyle().setPropertyPx("padding", 50);
    Label clickableLabel = new Label("Click Me");
    clickableLabel.setWidth("70px");
    clickableLabel.getElement().getStyle().setProperty("border",
        "1px solid blue");
    clickableLabel.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        Window.alert("You clicked the label");
      }
    });
    hugePanel.setWidget(clickableLabel);
    hugeParent.addItem(hugePanel);

    ListBox lb = new ListBox();
    for (int i = 0; i < 100; i++) {
      lb.addItem(i + "");
    }
    widgetBranch.addItem("A ListBox parent").addItem(lb);
    return t;
  }

  /**
   * Creates a lazy tree.
   */
  protected Widget lazyTree() {
    final FastTree t = new FastTree();
    lazyCreateChild(t, 0, 50);
    t.addBeforeOpenHandler(new BeforeOpenHandler<FastTreeItem>() {
      public void onBeforeOpen(BeforeOpenEvent<FastTreeItem> event) {
        if (event.isFirstTime()) {
          for (int i = 0; i < 50; i++) {
            lazyCreateChild(event.getTarget(), i, 50 + (i * 10));
          }
        }
      }
    });
    return t;
  }

  protected Widget verboseTree() {
    FastTree tree = new FastTree();
    verboseTreeItem(tree, 10);
    tree.addOpenHandler(new OpenHandler<FastTreeItem>() {

      public void onOpen(OpenEvent<FastTreeItem> event) {
        Window.alert("Opened " + event.getTarget().getHTML());
      }
    });
    tree.addCloseHandler(new CloseHandler<FastTreeItem>() {

      public void onClose(CloseEvent<FastTreeItem> event) {
        Window.alert("Close " + event.getTarget().getHTML());
      }
    });
    tree.addSelectionHandler(new SelectionHandler<FastTreeItem>() {

      public void onSelection(SelectionEvent<FastTreeItem> event) {
        Window.alert("You selected " + event.getSelectedItem().getHTML());
      }
    });
    tree.addBeforeOpenHandler(new BeforeOpenHandler<FastTreeItem>() {

      public void onBeforeOpen(BeforeOpenEvent<FastTreeItem> event) {
        if (Window.confirm("Would you like to change the name of the item before opening it?")) {
          event.getTarget().setHTML("Name changed before open.");
        }
      }
    });
    tree.addBeforeCloseHandler(new BeforeCloseHandler<FastTreeItem>() {

      public void onBeforeClose(BeforeCloseEvent<FastTreeItem> event) {
        if (Window.confirm("Would you like to change the name of the item before closing it?")) {
          event.getTarget().setHTML("Name changed before close.");
        }
      }
    });
    return tree;
  }

  private Widget crazyTree() {
    FastTree tree = new FastTree();
    FastTreeItem a = tree.addItem("I am root");
    a.addItem("I am root's child");
    FastTreeItem aXb = a.addItem("Root to become leaf.");
    aXb.addItem("a grand child");
    for (int i = 0; i < 10; i++) {
      aXb.addItem("grand child " + i);
    }
    tree.addOpenHandler(new OpenHandler<FastTreeItem>() {

      public void onOpen(OpenEvent<FastTreeItem> event) {
        if (!event.getTarget().isLeafNode()) {
          if (Window.confirm("Would you like me to become a leaf?")) {
            event.getTarget().becomeLeaf();
          }
        }
      }
    });

    return tree;
  }

  private Widget dynamicTree() {
    FlowPanel container = new FlowPanel();

    // Add Tree
    final FastTree topTree = new FastTree();
    FastTreeItem firstBranch = topTree.addItem("Inbox (3)");
    firstBranch.addItem("Urgent");
    FastTreeItem familyBranch = firstBranch.addItem("Family");
    familyBranch.becomeInteriorNode();
    familyBranch.addItem("Mom");
    familyBranch.addItem("Brosef");
    FastTreeItem secondBranch = firstBranch.addItem("Calendar");
    secondBranch.addItem("Important Meetings");
    container.add(topTree);

    final Button btnAdd = new Button("Add to Family Branch",
        new ClickHandler() {

          public void onClick(ClickEvent event) {
            FastTreeItem selectedItem = topTree.getChild(0).getChild(1);
            Window.alert("Adding new " + selectedItem.getText()
                + " Child Nodes");
            selectedItem.addItem("Dad");
            selectedItem.addItem("Sissef");
          }
        });

    final Button btnKill = new Button("Disown Family Branch",
        new ClickHandler() {

          public void onClick(ClickEvent event) {
            FastTreeItem selectedItem = topTree.getChild(0).getChild(1);
            Window.alert("Disowning " + selectedItem.getText() + " Child Nodes");
            selectedItem.becomeLeaf();
            btnAdd.setVisible(true);
          }
        });

    topTree.addBeforeCloseHandler(new BeforeCloseHandler<FastTreeItem>() {
      public void onBeforeClose(BeforeCloseEvent<FastTreeItem> event) {
        btnKill.setVisible(event.getTarget().getText().equals("Family"));
      }
    });
    btnKill.setVisible(false);
    btnAdd.setVisible(false);

    container.add(btnKill);
    container.add(btnAdd);

    return container;
  }

  private Widget hebrewTree() {
    final FastTree hebrewTree = new FastTree();
    FastTreeItem firstBranch = hebrewTree.addItem("דואר נכנס (3)");
    firstBranch.addItem("דחוף");
    FastTreeItem familyBranch = firstBranch.addItem("משפחה");
    familyBranch.becomeInteriorNode();
    familyBranch.addItem("אמא");
    familyBranch.addItem("אח שלו");
    FastTreeItem secondBranch = firstBranch.addItem("יומן");
    secondBranch.addItem("פגישות חשובות");

    return hebrewTree;
  }

  private Widget cancelEventTree() {
    final FastTree cancelEventTree = new FastTree();
    FastTreeItem firstBranch = cancelEventTree.addItem("Select Me!");
    firstBranch.addItem("No! Select Me!");
    firstBranch.addItem("No! Select Me!");
    firstBranch.addItem("No! Select Me!");
    FastTreeItem secondBranch = cancelEventTree.addItem("Don't Select me!");
    secondBranch.addItem("Not me!");
    secondBranch.addItem("Not me!");
    secondBranch.addItem("Not me!");

    cancelEventTree.addBeforeSelectionHandler(new BeforeSelectionHandler<FastTreeItem>() {
      public void onBeforeSelection(BeforeSelectionEvent<FastTreeItem> event) {
        if (!Window.confirm("Continue?")) {
          event.cancel();
        }
      }
    });

    return cancelEventTree;
  }

  private void lazyCreateChild(final HasFastTreeItems parent, final int index,
      final int children) {

    final FastTreeItem item = new FastTreeItem("child" + index + " ("
        + children + " children)");

    item.becomeInteriorNode();
    parent.addItem(item);
  }

  private void verboseTreeItem(HasFastTreeItems parent, int children) {
    for (int i = 0; i < children; i++) {
      final int index = i;

      FastTreeItem item = new FastTreeItem();
      item.setText("item " + index);
      parent.addItem(item);
      verboseTreeItem(item, children - (i + 1));
    }
  }
}
TOP

Related Classes of com.google.gwt.gen2.demo.fasttree.client.FastTreeDemo

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.