ReorderingTreePanelExample.java :  » Ajax » ext-gwt » com » extjs » gxt » samples » client » examples » dnd » Java Open Source

Java Open Source » Ajax » ext gwt 
ext gwt » com » extjs » gxt » samples » client » examples » dnd » ReorderingTreePanelExample.java
/*
 * Ext GWT - Ext for GWT
 * Copyright(c) 2007-2009, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */
package com.extjs.gxt.samples.client.examples.dnd;

import com.extjs.gxt.samples.client.Examples;
import com.extjs.gxt.samples.client.ExamplesModel;
import com.extjs.gxt.samples.client.examples.model.Category;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.TreeModel;
import com.extjs.gxt.ui.client.dnd.TreePanelDragSource;
import com.extjs.gxt.ui.client.dnd.TreePanelDropTarget;
import com.extjs.gxt.ui.client.dnd.DND.Feedback;
import com.extjs.gxt.ui.client.event.DNDEvent;
import com.extjs.gxt.ui.client.event.DNDListener;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.TreePanelEvent;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.util.IconHelper;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.google.gwt.user.client.Element;

public class ReorderingTreePanelExample extends LayoutContainer {

  @Override
  protected void onRender(Element parent, int index) {
    super.onRender(parent, index);
    setLayout(new FlowLayout(10));

    LayoutContainer container = new LayoutContainer();
    container.setSize(280, 400);
    container.setBorders(true);
    container.setScrollMode(Scroll.AUTO);

    TreeStore<ModelData> store = new TreeStore<ModelData>();
    final TreeModel root = (ExamplesModel) Registry.get(Examples.MODEL);
    root.set("name", "Ext GWT");
    store.add(root, true);

    final TreePanel<ModelData> tree = new TreePanel<ModelData>(store) {
      @Override
      public boolean hasChildren(ModelData parent) {
        if ("My Files".equals(parent.get("name")) || parent instanceof Category) {
          return true;
        }
        return super.hasChildren(parent);
      }
    };

    tree.getStyle().setLeafIcon(IconHelper.createStyle("icon-list"));
    tree.setAutoLoad(true);
    tree.setDisplayProperty("name");
    tree.addListener(Events.Render, new Listener<TreePanelEvent<ModelData>>() {
      public void handleEvent(TreePanelEvent<ModelData> be) {
        be.getTreePanel().setExpanded(root, true);
      }
    });
    
    TreePanelDragSource source = new TreePanelDragSource(tree);
    source.addDNDListener(new DNDListener() {
      @Override
      public void dragStart(DNDEvent e) {
        ModelData sel = tree.getSelectionModel().getSelectedItem();
        if (sel != null && sel == tree.getStore().getRootItems().get(0)) {
           e.setCancelled(true);
           e.getStatus().setStatus(false);
           return;
        }
        super.dragStart(e);
      }
    });

    TreePanelDropTarget target = new TreePanelDropTarget(tree);
    target.setAllowSelfAsSource(true);
    target.setFeedback(Feedback.BOTH);

    container.add(tree);
    add(container);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.