论坛首页 Web前端技术论坛

[十分着急]EXT-GWT中TREE的拖拽如何实现?

浏览 2053 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2008-07-24  
GWT

目前本人正在着手一个ext_gwt的项目,遇到一个问题,在此请假大家,希望得到大家的帮助,感谢!

 

以下注意:

1.是EXT-GWT,也就是说是这个JAR包com.extjs.gxt,切记。

2.是对树结构往其他地方的拖拽,而不是对图片文本之类的拖拽

 

以下提供部分代码:

VtsTaskModel.java

 

package com.lingran.vts.client.model;

import java.util.ArrayList;
import java.util.List;

import com.extjs.gxt.ui.client.data.BaseTreeModel;
import com.extjs.gxt.ui.client.data.TreeModel;
import com.lingran.vts.client.pages.OverviewPage;
import com.lingran.vts.client.pages.Page;

public class VtsTaskModel extends BaseTreeModel
{
	private List<Entry> entries = new ArrayList<Entry>();
	
	private Category createYearPlanEntries()
	{
		Category category = new Category("年计划");
			category.add(new YearEntry ("Y2006", "2006年"));
			category.add(new YearEntry ("Y2007", "2007年"));
			category.add(new YearEntry ("Y2008", "2008年"));
			category.add(new YearEntry ("Y2009", "2009年"));
			category.add(new YearEntry ("Y2010", "2010年"));
		return category;
	}
	private Category createMonthPlanEntries()
	{
		Category category = new Category("月计划");
			category.add(new MonthEntry ("M200806", "2008年06月"));
			category.add(new MonthEntry ("M200807", "2008年07月"));
			category.add(new MonthEntry ("M200808", "2008年08月"));
		return category;
	}
	private Category createWeekPlanEntries()
	{
		Category category = new Category("周计划");
		category.add(new MonthEntry ("W20080701", "2008年07月,第一周"));
		category.add(new MonthEntry ("W20080702", "2008年07月,第二周"));
		category.add(new MonthEntry ("W20080703", "2008年07月,第三周"));
		return category;
	}
	private Category createDayPlanEntries()
	{
		Category category = new Category("日常计划");
			Category week;
			week = new Category ("上一周");
			category.add(week);
				week.add(new DayEntry ("D20080713", "2008年07月13日,星期一"));
				week.add(new DayEntry ("D20080714", "2008年07月14日,星期二"));
				week.add(new DayEntry ("D20080715", "2008年07月15日,星期三"));
				week.add(new DayEntry ("D20080716", "2008年07月16日,星期四"));
				week.add(new DayEntry ("D20080717", "2008年07月17日,星期五"));
				week.add(new DayEntry ("D20080718", "2008年07月18日,星期六"));
				week.add(new DayEntry ("D20080719", "2008年07月19日,星期天"));
			week = new Category ("本周");
			category.add(week);
				week.add(new DayEntry ("D20080713", "2008年07月13日,星期一"));
				week.add(new DayEntry ("D20080714", "2008年07月14日,星期二"));
				week.add(new DayEntry ("D20080715", "2008年07月15日,星期三"));
				week.add(new DayEntry ("D20080716", "2008年07月16日,星期四"));
				week.add(new DayEntry ("D20080717", "2008年07月17日,星期五"));
				week.add(new DayEntry ("D20080718", "2008年07月18日,星期六"));
				week.add(new DayEntry ("D20080719", "2008年07月19日,星期天"));
			week = new Category ("下一周");
			category.add(week);
				week.add(new DayEntry ("D20080713", "2008年07月13日,星期一"));
				week.add(new DayEntry ("D20080714", "2008年07月14日,星期二"));
				week.add(new DayEntry ("D20080715", "2008年07月15日,星期三"));
				week.add(new DayEntry ("D20080716", "2008年07月16日,星期四"));
				week.add(new DayEntry ("D20080717", "2008年07月17日,星期五"));
				week.add(new DayEntry ("D20080718", "2008年07月18日,星期六"));
				week.add(new DayEntry ("D20080719", "2008年07月19日,星期天"));
		return category;
	}
	private Category createProjectEntries ()
	{
		Category category = new Category("项目计划");
		return category;
	}
	private Category createTodayPersonTaskEntries ()
	{
		Category category = new Category("今日派发任务");
		return category;	
	}
	public VtsTaskModel()
	{
		set("overview", new Entry("Overview"));
		
		// Period plan tree content
		Category periodPlans = new Category("周期计划");
		periodPlans.add(createYearPlanEntries());
		periodPlans.add(createMonthPlanEntries());
		periodPlans.add(createWeekPlanEntries());
		periodPlans.add(createDayPlanEntries());
		add(periodPlans);
		// Project tree content
		add(createProjectEntries ());
		// Tody person tasks 
		add(createTodayPersonTaskEntries ());
		
		loadEntries(this);
	}

	public Entry findEntry(String name)
	{
		if (get(name) != null)
		{
			return (Entry) get(name);
		}
		for (Entry entry : getEntries())
		{
			if (name.equals(entry.getId()))
			{
				return entry;
			}
		}
		return null;
	}

	public List<Entry> getEntries()
	{
		return entries;
	}

	private void loadEntries(TreeModel<TreeModel> model)
	{
		for (TreeModel child : model.getChildren())
		{
			if (child instanceof Entry)
			{
				entries.add((Entry) child);
			}
			else if (child instanceof Category)
			{
				loadEntries(child);
			}
		}
	}

}

 

ContentView.java

package com.lingran.vts.client.mvc;

import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.TabPanelEvent;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.lingran.vts.client.AppEvents;
import com.lingran.vts.client.model.Entry;
import com.lingran.vts.client.pages.Page;

public class ContentView extends View {

  private TabPanel tabPanel;
  private Page current;

  public ContentView(Controller controller) {
    super(controller);
  }

  public void initialize() {
    tabPanel = new TabPanel();
    tabPanel.setBorderStyle(false);
    tabPanel.setBodyBorder(false);
    tabPanel.setTabScroll(true);
    tabPanel.setAnimScroll(true);
    /*
    tabPanel.addListener(Events.Remove, new Listener<TabPanelEvent>() {
      public void handleEvent(TabPanelEvent be) {
        TabItem item = be.item;
        Entry entry = (Entry)item.getModel();
        Dispatcher.forwardEvent(AppEvents.HidePage, entry);
      }
    });
    */
    /*
	 * tabPanel.addListener(Events.BeforeSelect, new Listener<TabPanelEvent>() {
	 * public void handleEvent(TabPanelEvent be) { Entry entry =
	 * (Entry)be.item.getData("entry"); if (entry.getPage() != current) {
	 * be.doit = false; VtsTask.showPage(entry); } } });
	 */
    ContentPanel center = (ContentPanel) Registry.get("centerPanel");
	    center.setLayout(new BorderLayout());
	    
	    //ContentPanel north = new ContentPanel();
	    ContentPanel west = new ContentPanel();
	    ContentPanel east = new ContentPanel();
	    ContentPanel south = new ContentPanel();

	    BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 300);
	    westData.setSplit(true);
	    westData.setCollapsible(true);
	    westData.setMargins(new Margins(5));
	    
	    BorderLayoutData eastData = new BorderLayoutData(LayoutRegion.CENTER);
	    eastData.setMargins(new Margins(5, 0, 5, 0));
	    
	    BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, 200);
	    southData.setSplit(true);
	    southData.setCollapsible(true);
	    southData.setFloatable(true);
	    southData.setMargins(new Margins(0, 5, 5, 5));
	    
	    center.add(west, westData);
	    center.add(east, eastData);
	    center.add(south, southData);
    center.add(tabPanel);
  }

  protected void handleEvent(AppEvent event) 
  {
/*
 * switch (event.type) { case AppEvents.ShowPage: Entry entry = (Entry)
 * event.data; onShowPage(entry); break; case AppEvents.HidePage: current =
 * null; break; }
 */
  }

}

 

 

下面是部分图片:

1.png(拖拽的图片)

 

  • 大小: 11.4 KB
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics