<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title> 夜</title>
    <description></description>
    <link>http://strgo.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>[十分着急]树结构中多时间的实现？</title>
        <author>strgo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://strgo.javaeye.com">strgo</a>&nbsp;
          链接：<a href="http://strgo.javaeye.com/blog/219063" style="color:red;">http://strgo.javaeye.com/blog/219063</a>&nbsp;
          发表时间: 2008年07月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>直接来代码：</p>
<p>&nbsp;下面是我一个GWT中的树结构实现，大家不用关系是GWT什么的，我的问题是关于树的？请大家帮助，谢谢</p>
<p>&nbsp; 其中子菜单中的数据本来应该借助数据库，直接查到然后比较的。但是现在我需要算出来，比如</p>
<pre name="code" class="java">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;
</pre>
<p>&nbsp;</p>
<p>上面代码中 今年是2008年，往上算两年即2007和2006，往后算两年即2009和2010，然后排列出来。如何实现？</p>
<p>&nbsp;还有一点显示出来的时候，今年这里后面有个红色<span style="color: #ff0000;">"[&radic; ]"</span>的标记。</p>
<p>&nbsp;</p>
<p>VtsTaskModel.java</p>
<pre name="code" class="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&lt;Entry&gt; entries = new ArrayList&lt;Entry&gt;();
	
	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月,第二周"));//本周</pre>
<pre name="code" class="java">		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&lt;Entry&gt; getEntries()
	{
		return entries;
	}

	private void loadEntries(TreeModel&lt;TreeModel&gt; model)
	{
		for (TreeModel child : model.getChildren())
		{
			if (child instanceof Entry)
			{
				entries.add((Entry) child);
			}
			else if (child instanceof Category)
			{
				loadEntries(child);
			}
		}
	}

}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://strgo.javaeye.com/blog/219063#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Jul 2008 14:31:04 +0800</pubDate>
        <link>http://strgo.javaeye.com/blog/219063</link>
        <guid>http://strgo.javaeye.com/blog/219063</guid>
      </item>
      <item>
        <title>[十分着急]EXT-GWT中TREE的拖拽如何实现？</title>
        <author>strgo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://strgo.javaeye.com">strgo</a>&nbsp;
          链接：<a href="http://strgo.javaeye.com/blog/219054" style="color:red;">http://strgo.javaeye.com/blog/219054</a>&nbsp;
          发表时间: 2008年07月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>目前本人正在着手一个ext_gwt的项目，遇到一个问题，在此请假大家，希望得到大家的帮助，感谢！</p>
<p>&nbsp;</p>
<p>以下注意：</p>
<p>1.是EXT-GWT，也就是说是这个JAR包com.extjs.gxt，切记。</p>
<p>2.是对树结构往其他地方的拖拽，而不是对图片文本之类的拖拽</p>
<p>&nbsp;</p>
<p>以下提供部分代码：</p>
<p>VtsTaskModel.java</p>
<p>&nbsp;</p>
<pre name="code" class="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&lt;Entry&gt; entries = new ArrayList&lt;Entry&gt;();
	
	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&lt;Entry&gt; getEntries()
	{
		return entries;
	}

	private void loadEntries(TreeModel&lt;TreeModel&gt; model)
	{
		for (TreeModel child : model.getChildren())
		{
			if (child instanceof Entry)
			{
				entries.add((Entry) child);
			}
			else if (child instanceof Category)
			{
				loadEntries(child);
			}
		}
	}

}
</pre>
<p>&nbsp;</p>
<p>ContentView.java</p>
<pre name="code" class="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&lt;TabPanelEvent&gt;() {
      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&lt;TabPanelEvent&gt;() {
	 * 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; }
 */
  }

}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>下面是部分图片：</p>
<p>1.png(拖拽的图片)</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://strgo.javaeye.com/blog/219054#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Jul 2008 14:19:17 +0800</pubDate>
        <link>http://strgo.javaeye.com/blog/219054</link>
        <guid>http://strgo.javaeye.com/blog/219054</guid>
      </item>
  </channel>
</rss>