<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>beckrabbit</title>
    <description></description>
    <link>http://beckrabbit.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>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/212142" style="color:red;">http://beckrabbit.javaeye.com/blog/212142</a>&nbsp;
          发表时间: 2008年07月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          星矢：动画片《圣斗士星矢》的男猪脚，超级小强，怎么打也打不死。<br />雅典娜：动画片《圣斗士星矢》的女猪脚，自称女神，手下有88个男人为他卖命。<br />状态模式：为了方便的控制状态的变化，避免一堆IF／ELSE，以及状态规则改变的时避免代码改动的混乱。<br />观察者模式：一个被观察者一动，多个观察者跟着动，经常用于界面UI。<br /><br />话说星矢和很强的某斗士甲对打，雅典娜在一边看，星矢总是挨揍，每次挨揍完之后星矢的状态总是会发生一些变化：<br /><br />正常－－挨打－－瀕死－－挨打－－小宇宙爆发－－挨打－－瀕死－－挨打－－女神护体－－挨打（星矢无敌了，打也没用，战斗结束）－－正常<br /><br />以上状态转变用状态模式来表现，一个Saiya类代表星矢，一个SaiyaState代表他的状态，SaiyaState下面有多个子类，分别代表星矢的多种状态，如正常NORMAL、瀕死DYING、小宇宙爆发UNIVERSE、女神护体GODDESS，即把状态抽象成对象，在每种状态里面实现被打的时候所需要更改的状态，这样就避免了每次被打都要进行一次IF/ELSE的判断。<br /><br /><pre name="code" class="java">
public class Saiya extends Observable {
	//定义星矢的四种状态
	public final SaiyaState NORMAL = new NormalState(this);

	public final SaiyaState DYING = new DyingState(this);

	public final SaiyaState GODDESS = new GoddessState(this);

	public final SaiyaState UNIVERSE = new UniverseState(this);
	
	private SaiyaState state=NORMAL;
	
	private SaiyaState laststate=null;
	
	public void hit(){
		//调用当前状态的被打方法 反过来改变自己的状态
		state.hit();
	}
	public String status(){
		//当前状态名
		return state.status();
	}
	
	protected void setState(SaiyaState state){
		laststate=this.state;
		this.state=state;
		//观察者模式
		setChanged();
		notifyObservers("星矢状态变化");
	}
	
	public String getlastStatus(){
		return laststate.status();
	}
</pre><br />星矢的状态<br /><pre name="code" class="java">
public abstract class SaiyaState {
	protected Saiya saiya;

	public SaiyaState(Saiya saiya) {
		this.saiya = saiya;
	}
	
	public String status(){
		String name=getClass().getName();
		return name.substring(name.lastIndexOf(".")+1);
	}
	//星矢被打了
	public abstract void hit();
}
</pre><br />在每种状态里面实现被打的时候所需要更改的状态，例如小宇宙爆发状态下被打<br /><pre name="code" class="java">
public class UniverseState extends SaiyaState {

	/**
	 * @param saiya
	 */
	public UniverseState(Saiya saiya) {
		super(saiya);

	}

	/* 小宇宙爆发状态被打进入瀕死状态
	 * 
	 */

	public void hit() {
		saiya.setState( saiya.DYING);

	}

}</pre><br /><br />雅典娜在一边看，星矢每次被打她都要给星矢加油，她是个观察者，星矢是被观察者，这里星矢实现java.util.Observable，每次被打hit就notifyObservers，雅典娜就加油。<br /><pre name="code" class="java">
public class Athena implements Observer {

	/* 我是雅典娜 我是观察者
	 * 
	 */
	public void update(Observable arg0, Object arg1) {
		System.out.println("雅典娜说：星矢加油啊！！！");
		}

}
</pre><br />总的来看 这个过程就是这样子：<br /><pre name="code" class="java">
public class StateMain {
	public static void main(String[] args) {

		Saiya saiya = new Saiya();
		Observer athena = new Athena();
		saiya.addObserver(athena);
		System.out.println("星矢最初的状态是：" + saiya.status());
		for (int i = 0; i &lt; 5; i++) {
			System.out.println("星矢被揍了" + (i + 1) + "次");
			saiya.hit();
			System.out.println("星矢现在的状态是：" + saiya.status());
		}
	}
}

</pre><br /><br />结果星矢在雅典娜的帮助下，有惊无险的战胜了很强的某斗士甲：<br /><br /><pre name="code" class="java">
星矢最初的状态是：NormalState
星矢被揍了1次
雅典娜说：星矢加油啊！！！
星矢现在的状态是：DyingState
星矢被揍了2次
雅典娜说：星矢加油啊！！！
星矢现在的状态是：UniverseState
星矢被揍了3次
雅典娜说：星矢加油啊！！！
星矢现在的状态是：DyingState
星矢被揍了4次
雅典娜说：星矢加油啊！！！
星矢现在的状态是：GoddessState
星矢被揍了5次
雅典娜说：星矢加油啊！！！
星矢现在的状态是：NormalState
</pre><br /><br />总结：状态模式的缺点就是会弄出很多子类，如果状态没那么复杂，状态规则改变的可能性比较小的话就不要用了
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/212142#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>Sun, 06 Jul 2008 23:20:28 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/212142</link>
        <guid>http://beckrabbit.javaeye.com/blog/212142</guid>
      </item>
      <item>
        <title>google收购skype的话 中国移动们就傻眼了</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/179816" style="color:red;">http://beckrabbit.javaeye.com/blog/179816</a>&nbsp;
          发表时间: 2008年04月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          假设google把skype收购过来，那么在android手机上人们可以绕开移动运营商，直接使用skype拨打长途电话，也就是说，只要你有一台android手机，即使没有插手机卡，也可以利用无线wifi使用skype拨打电话，如果接听方也是skype的话，你就不用付电话费了...skype的收费起码比我的动感地带要便宜的多，而且在世界任何地方打电话都是一样的钱。这样的前提是有wifi支持，在天朝好像只有上海在建全城wifi,香港和台湾应该是已经建好了。<br />至于短信这种东西完全就是个过渡产品，有了wifi后直接收发电子邮件就可以了，用android手机的话相信即使没有黑莓的push mail，也可以比较及时的收取GMAIL，而GMAIL是可以收取其他任何邮箱的邮件的...<br />多么和谐的社会啊！这才是80年代动画片里的21世纪啊！中国移动们终于可以告别历史舞台了！
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/179816#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Apr 2008 12:11:21 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/179816</link>
        <guid>http://beckrabbit.javaeye.com/blog/179816</guid>
      </item>
      <item>
        <title>虽然我不相信神，但今天确实看到“神”了</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/177654" style="color:red;">http://beckrabbit.javaeye.com/blog/177654</a>&nbsp;
          发表时间: 2008年03月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最新一期的死神漫画也就是-108话（番外篇，讲100多年前的事）来了个超级大爆料，将假面军团的身世彻底抖了出来，他们就是前任的一批队长、副队长......<br />五番队队长 平子....<br /><img src="http://vp9krg.bay.livefilestore.com/y1pFd_9mkGGfevdAxn3BcDlUGzT9EH3jPIeOe5Gey8NodXmqYgSUERLVn4QmbWfpkY2Ocg5js_J4Bcx8PZuTFBtbA/04.png" /><br />以及：<br /><img src="http://vp9krg.bay.livefilestore.com/y1pFd_9mkGGfestL4SBQzi_pAwRStFhVu3wTeX3lk6m6rvuyv0OyuUl_l-H6czraXPgl9XbDNjT7aGYXEDta15WZw/08.png" /><br />几乎让所有人吃了一惊。<br />然而，大家突然发现，有人早在2006年就预知了此剧情...<br />此人ID是“神_0”，果然神的可以...现在此人已是百度贴吧众人膜拜的对象。<br />原帖在此<a href="http://tieba.baidu.com/f?z=157836408&ct=335544320&lm=0&sc=0&rn=50&tn=baiduPostBrowser&word=%CB%C0%C9%F1&pn=0" target="_blank">http://tieba.baidu.com/f?z=157836408&ct=335544320&lm=0&sc=0&rn=50&tn=baiduPostBrowser&word=%CB%C0%C9%F1&pn=0</a><br /><br />3 	回复：关于平子真子和四大贵族<br />	<br />平子真子--原五番队队长(那时大白和蓝染是副队,露琪亚刚进十二番队),现任面具军团团长.<br />	<br />	作者： 神_0   2006-12-25 10:23
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/177654#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Mar 2008 20:57:21 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/177654</link>
        <guid>http://beckrabbit.javaeye.com/blog/177654</guid>
      </item>
      <item>
        <title>Windows与Linux下InputStream读取字节与字符的不同</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/176777" style="color:red;">http://beckrabbit.javaeye.com/blog/176777</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近做了一个报文发送接收解析的客户端，发现了这样的问题：<br />某程序：<br /><pre name="code" class="java">

        con = new Socket(ip, port);//一个socket
	InputStream socketIn = con.getInputStream();
InputStreamReader isr=new InputStreamReader(socketIn, "UTF-8");
while ((headchar = isr.read()) != -1) {// 读取报文头 用字符流来读取
				headres += (char) headchar;
			......//一些逻辑 处理报文头
			}

...
//报文头读完了 获取了报文体的大小等内容 开始读报文体
byte tempbuf[] = new byte[buffsize];
			int start = 0;
			int tem = -1;
//用字节流来读报文体
			while ((tem = socketIn.read(tempbuf, start, buffsize)) != -1) {
				log.info("从"+start+"开始读"+buffsize);
				log.info("实际读取" + tem);
				if (tem &lt; outparamsizes[i]) {
					start = start + tem;
					buffsize = buffsize - tem;
...//一些逻辑 处理报文体 读取完毕
}
</pre><br /><br />这样的程序，在windows下正常工作，再放到linux下,读完报文头开始读取报文体的时候,并没有从报文体的开头开始读取，而是丢失了报文体前面的一些数据，导致读不到足够的数据直到超时。<br /><br />经过一番调试和请教后发现原因：在linux下一个InputStream不能用字符流和字节流分段读取，因为linux下的字符由于utf8编码会多加几位，用字符读完报文头后其实就已经多读了许多位，再用字节读就丢掉多读的那部分了。<br />因此，只要将读取报文头的部分也改成字节流读取就可以了<br /><pre name="code" class="java">while ((headchar = socketIn.read()) != -1) {
...}</pre>
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/176777#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 15:04:39 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/176777</link>
        <guid>http://beckrabbit.javaeye.com/blog/176777</guid>
      </item>
      <item>
        <title>解决websphere下war包部署后丢失文件的问题</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/176650" style="color:red;">http://beckrabbit.javaeye.com/blog/176650</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近将一个项目从tomcat移到websphere6.0下面，发现war包被ws解压时丢了很多文件，有时解出来就一个web.xml,导致无法部署。最后发现原因是war包里面包含几个以“.”开头的垃圾文件，比如“.#userdaoimpl”之类的，只要将这些文件删除就可以正确部署了。<br />    该war包是用eclipse直接导出的。
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/176650#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 10:46:29 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/176650</link>
        <guid>http://beckrabbit.javaeye.com/blog/176650</guid>
      </item>
      <item>
        <title>给想到上海工作的兄弟的话</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/164213" style="color:red;">http://beckrabbit.javaeye.com/blog/164213</a>&nbsp;
          发表时间: 2008年02月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          坛子里的人说的不错 转过来<br /><br />准备来上海的兄弟们.我来提醒你们一下.<br />肺腑之言:<br /><br />现在生活水平赶不上北京和上海的城市,已经不多了.你们要考虑好.<br />当然你们热爱的软件/互联网 行业,只在这种大城市里才有环境,这点是可以肯定的.<br /><br />1.北京和上海的工作是很累人的.生活节奏相对比小城市快些.与三线城市相比,你可能每天多花1-2个小时的时间在上下班路上.而且这里的工作和生活,绝对比不上小城市那么安逸.<br />2. 这里的环境不可能与小城市相比.即使上海现在越来越美丽了.终究逃脱不了人太多太杂,太过喧闹.比不上小城市的安宁,祥和.<br />3. 这里虽然收入水平很高,但是生活压力其实比小城市还要大很多.因为假设你是个新手,拿到6K薪水,这对于多数的,一般的新手或是一两年经验的人来说不算低了.其实你的税后收入(扣完四险一金和工资税)应该只有约4.5k. 然后你需要支付1K的房租+水电煤气费,1K的伙食,手机,交通,网费等等.剩余2.5K,一个月里四个周末,当你过一个周末时,如果只有100元可以支付,你会觉得很紧迫的.偶尔和朋友聚餐,或是去K个歌什么的.,都会使你感觉到开销的压力.姑且算500的周末必要开销.你一个月可攒下2K.一年也才2.4万.<br />3. 上海的房价便宜的算也近1万每平米了吧,你什么时候买的起?难道你指望你的父母从小城市攒下血汗钱给你付上海高昂房价的首期?你再背负10-20年的沉重债务?<br />4. 如果你家不在上海,而你又习惯了家乡那种温暖人情,逢周末走亲戚,或是和朋友们聚聚玩玩,那么你在上海的工作和生活,会是凄凉的.<br />5. 如果你是男孩子,大学毕业后也应该有二十三四虚岁了.你的女朋友在哪里?如果不在上海,你将来打算怎么办.上海的姑娘可是没房子不恋爱的,至少不跟你结婚的.如果你去了上海,那么我希望你在去的时候,就考虑好,三年后你会是什么样,如果在上海呆一年是一年,到了成家年龄,买不起房,呆不下去了,怎么办.如果最后呆不下去了,回家乡,那还不如趁早在家发展,别花着几年青春去漂泊.等近三十岁时回家,那时你回家乡干什么是好?
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/164213#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Feb 2008 14:19:25 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/164213</link>
        <guid>http://beckrabbit.javaeye.com/blog/164213</guid>
      </item>
      <item>
        <title>这safari也太快了吧...</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/151843" style="color:red;">http://beckrabbit.javaeye.com/blog/151843</a>&nbsp;
          发表时间: 2007年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          测试了一下，IE6 FF2 SAFARI3.0.4BETA分别给一个有400个节点的checkbox树全部打钩，结果如下（目测）：<br /><br />IE：39秒<br />FF2：10秒<br />safari:  <span style="color: red"> 2秒...</span><br /><br />速度是20：5：1 比广告上的还要牛...
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/151843#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Dec 2007 16:24:11 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/151843</link>
        <guid>http://beckrabbit.javaeye.com/blog/151843</guid>
      </item>
      <item>
        <title>推荐几个不错的igoogle小工具</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/150331" style="color:red;">http://beckrabbit.javaeye.com/blog/150331</a>&nbsp;
          发表时间: 2007年12月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          首先这几个都要用台湾google才能添加，要先www.google.com.tw然后登录igoogle添加<br /><br />首先是超赞的记账器～<br /><img src="http://lh5.google.com/beralee/R25jAh6YjuI/AAAAAAAAAIs/afrsVr9QsAw/imoney.jpg?imgmax=512" /><br />你不理财 财不理你...<br /><img src="http://lh3.google.com/beralee/R25mvB6YjvI/AAAAAAAAAIw/xC_vtxFOd6c/imoney2.jpg" /><br />居然还有图表..<br /><br /><br />然后是工具箱，可以把几个小工具集合在一个panel里，用tab健切换，省空间，就像这样：<br /><img src="http://lh6.google.com/beralee/R25mwx6YjxI/AAAAAAAAAJA/BAh8385eGgg/tool.jpg?imgmax=512" /><br />里面那个把googlemap搜索整合进来的也不错，不过只有台湾地区的可以搜索到详细内容。<br /><br /><br />最后一个是杀手锏～每日最新的美女推荐～实时更新<br /><img src="http://lh5.google.com/beralee/R25mvh6YjwI/AAAAAAAAAI4/6iqZxqkf2K8/mm.jpg" /><br /><br />写完程序养养眼...<br /><br /><br />台湾igoogle上还有不少好玩的 总之比大陆版的强多了
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/150331#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>Sun, 23 Dec 2007 21:59:28 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/150331</link>
        <guid>http://beckrabbit.javaeye.com/blog/150331</guid>
      </item>
      <item>
        <title>safari3.0.4试用</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/150233" style="color:red;">http://beckrabbit.javaeye.com/blog/150233</a>&nbsp;
          发表时间: 2007年12月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看了javaeye上关于js在主流浏览器里速度测试的新闻，觉得有必要玩一下safari--这个苹果的号称“世界最强的浏览器”。<br /><br /><br />     界面：下完装好后打开界面是灰色的，说实话这个颜色我不太喜欢，以前下的一堆火狐主题里就有几个仿safari的，太丑了从来没用过... 不过按钮还挺漂亮。<br /><br /><br />     速度：打开几个bookmark里的英文网页什么facebook 之类的确实速度比火狐快的太多了，也可能是我自己电脑配置低，玩火狐多开几个TAB机子就卡到死了，而safari不但打开页面速度快，而且开几个window也不觉得卡，这点挺爽。<br /><br /><br />     中文：早有流传safari对中文支持比较垃圾，开了几个中文网页觉得都不错，就是字体感觉虽然比较漂亮但不是很清楚，有些地方有点模糊，调了一下默认字体似乎没用，可能是测试版的缘故吧。<br /><br /><br />     使用：浏览页面的时候被选中的textarea和text都会有一个漂亮的蓝色边框，非常舒服，记得android里也是这样。单击打开新链接有时候是弹出window而不是tab页，设了半天也没弄好，好在和火狐一样鼠标中键是弹tab。浏览的效果还是不错的，开了几个网页没有出现显示不出来的东西。<br /><br /><br />    书签： 书签很重要～我一直都用的google书签，到哪里都可以使用，safari也一样，从google导出safari导入，我的书签立刻就可以使用了，不过不知道有没有类似火狐的gmark插件和google工具栏，不能和google书签联动的话就太垃圾了。<br /><br /><br />     最后打开ext的demo看了一下都可以正常使用，呵呵，不过他bug还是有不少，有的页面打开会出现无法访问，中间自己关了一次也没报错，总的来说safari要是解决了中文问题相信还是很不错的，非常期待正式版～
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/150233#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 23 Dec 2007 01:52:48 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/150233</link>
        <guid>http://beckrabbit.javaeye.com/blog/150233</guid>
      </item>
      <item>
        <title>EXT在线教程</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/148355" style="color:red;">http://beckrabbit.javaeye.com/blog/148355</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          不错的教程 标题我很喜欢 就像在看圣斗士 问题是经常打不开 <a href="http://203.93.254.59:8889/extdoc" target="_blank">http://203.93.254.59:8889/extdoc</a>
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/148355#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Dec 2007 15:08:44 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/148355</link>
        <guid>http://beckrabbit.javaeye.com/blog/148355</guid>
      </item>
      <item>
        <title>“80后”的28个特征（巨准）</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/138617" style="color:red;">http://beckrabbit.javaeye.com/blog/138617</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.永远找不到自己的笔（都是用键盘写字吧）；<br /> 2.永远对自己的发型不满意（来个光头算了）；<br />3.所有的电器都不看说明书（聪明）；<br />4.尽量使用自助办理业务（方便）；<br />5.使用最多的称呼是同学（嗯）；<br />6.喜欢玩小孩但不喜欢生小孩（-______-``）；<br />7.拥有一种奇怪的固执（是地!）；<br />8.熟人面前话多，生人面前一言不发；<br />9.认为幽默感是做人的根本；<br />10.为了不熬夜，不如就通宵（都是夜猫子）；<br />11.五一、十一决不出游（哪儿都是人山人海的）；<br />12.业余爱好中必有一项是睡觉；<br />13.经常觉得自己老了；<br />14.两分钟经常这样安排：前一分钟是崇拜，后一分钟变成蔑视或者相反；<br />15.永远觉得别人不可能了解自己；<br />16.MSN名字一天至少一换（是签名吧）；<br />17.不问问题，只查百度（有问题？百度一下！）；<br />18.每个人都是电影迷（废话，没事就看电影！）；<br />19.会画画，喜欢画画或者想学画画；<br />20.有一款自己喜欢的卡通形象（旋涡鸣人！）；<br />21.热衷于研究星座运势（占卜！）；<br />22.R&B，R&R，Hip-Hip,至少喜欢一个（陶吉吉！）；<br />23.熟知每家K房的歌曲；<br />24.可以穿短裤上班（＋拖鞋）；<br />25.任何工作都和电脑有关（哈哈！）；<br />26.电脑里一定有聊天工具（必须品）；<br />27.我高兴，你管得着吗（人家乐意~~~）；<br />28.尽管不屑仍然看完以上内容（确实）。<br /><br />我只有16 17不符合其他都符合……
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/138617#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 Nov 2007 19:34:40 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/138617</link>
        <guid>http://beckrabbit.javaeye.com/blog/138617</guid>
      </item>
      <item>
        <title>追忆当年玩网游时那27万元的游戏帐号</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/136307" style="color:red;">http://beckrabbit.javaeye.com/blog/136307</a>&nbsp;
          发表时间: 2007年10月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;</p>
<p><font face="Arial">今天和同事聊天提及网络游戏，就想起来当年玩《大话西游》时候的一件事，当时该游戏最大的民间网站&ldquo;叶子猪&rdquo;对全服务器等级最高的一个玩家做了一次专访，刚才回去把他挖了出来，只截取关键的部分：</font></p>
<p><font face="Arial"><strong><font size="4">高处不胜寒-大话西游第一人访谈<br />
</font></strong></font></p>
<p>&nbsp;作者：盘子 日期：2005-8-4</p>
<p>盘子算是记者 ，被访问的叫至尊无上，简称无上。</p>
<p>英雄自有自己的故事和传奇，在游戏的芸芸众生里，有这样一位特殊的人物，他的级别为全大话最高级153级，他就是云中殿服务器的--至尊无上。</p>
<p>&hellip;&hellip;</p>
<p><font color="#660066">&nbsp;盘子</font>: 那好，咱们再换个话题，据说传言你在中华人民共和国天津市人民政府那边作厅级干部，能否告诉我这个消息是否属实？<br />
<font color="#006600"><br />
　　无上</font>：其实，我只是一个<strong>公务员</strong>。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：我有个朋友也曾经是一个公务员，他的工作每天就无非是扫扫地，整理下自己的房间，然后看看报纸，那么你的工作性质呢？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：我就是那个给你那个朋友负责发放扫帚的公务员#78<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：莫非你真的是厅级干部？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：我可以负责任的告诉你，我不是。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：ok，我继续提问。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：作为一个政府工作人员，你居然能够拥有153级别的帐号，而且这个帐号又不是买来的，你怎么解释这个现象？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：这个有什么好解释的？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：你看，支撑起来一个153级的帐号，需要多少时间和金钱？作为一个公务繁忙的公务员，有那么多的时间和精力么，你理解我的问题所在么？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：这样跟你解释吧，你认为我从2003年二月到现在一共在大话西游二上投入了多少人民币？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：我猜大概是 3万-7万 。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：回答错误。事实是<strong>27万多一点</strong>。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：&hellip;&hellip;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：你很疑惑我一个公务员怎么可以做到投入那么多钱呢？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：是的，我很疑惑。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：我不是靠工资生活的人，我为政府工作，我觉得是一种爱好和乐趣。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：1989年，当时我在**大学读中文的时候,我的家人就开始开办公司，现在公司规模比较大了，主要经营登山、休闲、旅游用品，出口东欧和俄罗斯。所以我投入那么多的钱玩大话并不是如某些朋友的人所预想的那样黑暗#83。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：似乎国家公务员不能兼任公司董事、监事、经理。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：我只能说，我没有违法规定，我没有在公司那边兼任实质上和名义上的职务，我个人喜欢政府的这份工作，我会继续作下去的。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：27万确实是一个不小的数目，你觉得你值得么？一款虚拟的游戏，自己砸上去将近30万，算是打水漂了吧？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：我不这样认为，我觉得如果一个人有10块钱的话，投入1块钱去做可以让他愉悦的事情，是完全值得的。如果你只有2块钱的话，那就要值得仔细考虑了，反正我不欣赏那样的作风。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：比如我身上现在有100rmb，我花3rmb去买一份报纸，估计指责的人不会太多，能这样理解么？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：可以。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：但是，如你那样单单靠他们来帮自己游戏，除了能满足你一些***的虚荣心外，能体会多少游戏中的乐趣？ 抱歉，原谅我用这么直白的语气<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：呵呵，问过我的人很多。每个人对此的观点都不同，游戏是基于生活的，一味沉浸进去对自己不好。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：你玩游戏的时候最让你感到怀念的情景是什么？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：当时还没有转生的时候，我和一些朋友们一起去做天，聊天，那些时候的游戏才叫游戏。现在的游戏功利心太强，现在的玩家心态浮躁的也更多。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：你现在平均每天在线多长时间？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：<strong>由于工作关系，我每天要很晚才能回到家里。每周上线的频率基本也只有一两次。我的号由专业代练24小时不停的帮我手动作任务、升级。</strong></p>
<p>.......</p>
<p><font color="#660066">盘子</font>：你上线之后一般作什么事情？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：帮人过称、<strong>调解矛盾</strong>、体验新任务，帮战&hellip;&hellip;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：真是社会主义好青年阿#89<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：#17。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：你现在一个月要投入多少人民币在游戏上？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：<strong>一万多一点</strong>吧。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#660066">盘子</font>：果然如传言所说，一般你是怎么支配那1万块钱的呢？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">无上</font>：我一般先用<strong>5000左右的人民币兑换成大话币，然后是5000左右的代练费用</strong>，包括角色的代练支出和召唤兽的代练支出。</p>
<p>&nbsp;</p>
<p>回忆自己当年也曾拿人民币购买大话币，也曾通宵练级，也曾逃课跑钱（在游戏里赚钱）......</p>
<p>网络游戏带给我们的已经不仅仅是单纯的快乐了...他也造就了许许多多的&ldquo;至尊无上&rdquo;,丁磊、陈天桥...</p>
<p>网络游戏，真的不能太认真！</p>
<p><strong></strong></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/136307#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 29 Oct 2007 13:19:49 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/136307</link>
        <guid>http://beckrabbit.javaeye.com/blog/136307</guid>
      </item>
      <item>
        <title>实况足球11 PES2008发布了！！！</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/134956" style="color:red;">http://beckrabbit.javaeye.com/blog/134956</a>&nbsp;
          发表时间: 2007年10月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span class="bold">[Pro Evolution Soccer 2008英文单语言破解版][DVD]</span><br />
<br />
<div class="t_msgfont" id="message15881813">【游戏封面】<br />
<img onmousewheel="return imgzoom(this);" src="http://img.ali213.net/netshow/pes2008.png" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" /><br />
游戏名称：实况足球2008<br />
英文名称：Pro Evolution Soccer 2008<br />
游戏制作：KONAMI<br />
游戏发行：KONAMI<br />
游戏语种：多国语言<br />
游戏类型：竞技体育<br />
官方网站：<a href="http://www.pes2008.net/" target="_blank">http://www.pes2008.net/</a><br />
所属讨论区：（实况足球专区） <a href="http://game.ali213.net/forum-255-1.html" target="_blank">http://game.ali213.net/forum-255-1.html</a><br />
更多游戏请访问：gamebt.ali213.net<br />
<br />
<br />
<strong>游戏安装指南及版本说明：<br />
<font color="Red">* 解压缩游戏包<br />
* 推荐用Daemon Tool最新版载入镜像安装游戏<br />
* 安装所需序列号NA9C-97AN-HSLC-46R5-JYM9<br />
* 解压缩&ldquo;修正版免CD补丁&rdquo;目录下的文件到游戏目录覆盖同名文件即可<br />
* 开始游戏</font><br />
<br />
【游戏简介】<br />
</strong>
<p align="center"><strong><img onmousewheel="return imgzoom(this);" src="http://tothegame.com/res/game/6897/logo.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" /></strong></p>
<strong><br />
<br />
《实况足球11》是由KONAMI制作的知名足球游戏系列新作，游戏将会在2007年秋季发售，登陆平台包括PS3/Xbox 360/PC/PS2/PSP/NDS。日前，官方放出了游戏部分新画面，从这些画面中我们可以看到PS2版《实况足球 J联盟》新作中的单人生涯模式将有望被保留。　　在单人生涯模式中，玩家扮演的是某一特定位置的球员，全场比赛玩家只能控制一名球员，起初玩家只能在低级 别联赛中打拼，通过不断的比赛可以获得经验点数，随着点数的累计玩家能力也会逐渐提升。如果玩家表现出色就可以得到强队的转会邀请，整个模式的目标就是成 为一名世界顶级的球员。整个模式中的第三人称尾随视角在实际游戏时也比较顺畅，该模式有望成为大师联赛模式之后另一个《实况足球》系列的招牌模式。玩家可 以在《实况足球11》中充分体验一个球员的职业生涯，随队训练，参加比赛，赢得荣誉，可以和队友一同庆祝冠军，当玩家的知名度达到一定等级以后还会出现为 球迷签名的场景，游戏的细节十分出色。《实况足球11》将会在2007年秋季发售，PS3/Xbox 360/PC/PS2/PSP/NDS等各大平台都有涉及，有兴趣的玩家可以尝试一下。<br />
<br />
<br />
<br />
【游戏截图】<br />
<img onmousewheel="return imgzoom(this);" src="http://image.com.com/gamespot/images/2007/233/940560_20070822_screen006.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window
CTRL+Mouse wheel to zoom in/out" width="716" /><br />
<br />
<img onmousewheel="return imgzoom(this);" src="http://image.com.com/gamespot/images/2007/233/940560_20070822_screen007.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window
CTRL+Mouse wheel to zoom in/out" width="716" /><br />
<br />
<img onmousewheel="return imgzoom(this);" src="http://image.com.com/gamespot/images/2007/233/940560_20070822_screen008.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window
CTRL+Mouse wheel to zoom in/out" width="716" /><br />
<br />
<img onmousewheel="return imgzoom(this);" src="http://image.com.com/gamespot/images/2007/233/940560_20070822_screen009.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window
CTRL+Mouse wheel to zoom in/out" width="716" /><br />
<br />
<img onmousewheel="return imgzoom(this);" src="http://image.com.com/gamespot/images/2007/233/940560_20070822_screen010.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window
CTRL+Mouse wheel to zoom in/out" width="716" style="width: 716px; height: 403px;" /><br />
<br />
<img onmousewheel="return imgzoom(this);" src="http://image.com.com/gamespot/images/2007/233/940560_20070822_screen013.jpg" border="0" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window
CTRL+Mouse wheel to zoom in/out" width="716" /><br />
<br />
</strong>
<div class="msgbody">
<div class="msgheader"><strong>QUOTE:</strong></div>
<div class="msgborder"><strong><font color="Red"><u><strong>V1.1光盘升级档发布（推荐刻盘保存的人更新！）</strong></u></font><br />
地址：<a href="http://game.ali213.net/thread-1704870-1-1.html" target="_blank">http://game.ali213.net/thread-1704870-1-1.html</a></strong></div>
</div>
<strong><br />
</strong></div>
<strong><br style="clear: both;" />
<font style="color: rgb(0, 0, 32); font-family: Tahoma,Georgia; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;"> <br />
<br />
<div class="msgbody">
<div class="msgheader">
<div class="right"><a href="http://game.ali213.net/member.php?action=credits&amp;view=getattach" target="_blank"><img src="http://game.ali213.net/images/default/credits_attachlist.gif" border="0" alt="查看积分策略说明" /></a></div>
附件</div>
<div class="msgborder" style="border-bottom: 0px none; padding: 0px;">
<div class="t_attachlist">
<div class="right smalltxt">2007-10-23 00:01<br />
下载次数: 19180</div>
<img class="absmiddle" src="http://game.ali213.net/images/attachicons/torrent.gif" border="0" alt="" /> <a href="http://bbsimg.ali213.net/attachment.php?aid=751548" class="bold" target="_blank">Pro.Evolution.Soccer.2008.Proper.Crack.ENG-NETSHOW.torrent</a> <span class="smalltxt">(42.3 KB)</span> <br />
<br />
<br />
<font size="5">pc版居然没有一球成名模式&hellip;&hellip;&hellip;</font></div>
</div>
</div>
</font> </strong>
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/134956#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>Tue, 23 Oct 2007 23:11:50 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/134956</link>
        <guid>http://beckrabbit.javaeye.com/blog/134956</guid>
      </item>
      <item>
        <title>ext1.x to ext2.0升级指南2（转自官方）</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/134693" style="color:red;">http://beckrabbit.javaeye.com/blog/134693</a>&nbsp;
          发表时间: 2007年10月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h4><span class="mw-headline">TabPanelItem to Panel</span></h4>
<p>Note that while the TabPanelItem events are all supported by Panel, event handlers will now be called with a Panel object instead of a TabPanelItem, so any handling logic might have to change accordingly.</p>
<table class="wikitable">
    <tbody>
        <tr>
            <th style="white-space: nowrap;">TabPanelItem (1.x)</th>
            <th style="white-space: nowrap;">Panel (2.0)</th>
            <th>Notes</th>
        </tr>
        <tr>
            <td class="subhead" colspan="3">Properties</td>
        </tr>
        <tr>
            <td>TabPanelItem(tabPanel, id, text, closable)</td>
            <td>see notes</td>
            <td>TabPanelItems in 1.x only existed for the purpose of residing in a TabPanel, thus they had a very specific constructor argument list. There is no direct replacement as Panels are generic and the constructor is config-based. However, the following code would be equivalent when adding a new Panel to a TabPanel (note that a separate container config is not needed in this example since the Panel is being directly added):<br />
            <br />
            <pre class="source source-javascript">tabPanel.<span class="me1">add</span><span class="br0">(</span><span class="kw2">new</span> Ext.<span class="me1">Panel</span><span class="br0">(</span><span class="br0">{</span><br />   id: <span class="st0">'my-tab'</span>,<br />   title: <span class="st0">'My Tab'</span>,<br />   closable: <span class="kw2">true</span><br /><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span>;</pre>
            </td>
        </tr>
        <tr>
            <td>bodyEl</td>
            <td>body</td>
            <td> </td>
        </tr>
        <tr>
            <td>closeText</td>
            <td>&mdash;</td>
            <td>The tab's close button no longer supports configurable tooltip text in 2.0.</td>
        </tr>
        <tr>
            <td>id</td>
            <td>getId()</td>
            <td>The id property is now private in 2.0 and the inherited Component getId method should be used instead.</td>
        </tr>
        <tr>
            <td>tabPanel</td>
            <td>ownerCt</td>
            <td>Every Component in 2.0 supports the ownerCt property which returns a reference to the owning Container.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="3">Methods</td>
        </tr>
        <tr>
            <td>activate</td>
            <td>show (Component)</td>
            <td>When a Panel is added into a TabPanel as a tab, its normal show method will activate it within the TabPanel.</td>
        </tr>
        <tr>
            <td>getText</td>
            <td>title [property]</td>
            <td>The standard Panel title is used as the tab text when the Panel is added to a TabPanel.</td>
        </tr>
        <tr>
            <td>getUpdateManager</td>
            <td>getUpdater</td>
            <td>This returns the update manager for the Panel's body element.</td>
        </tr>
        <tr>
            <td>isActive</td>
            <td>&mdash;</td>
            <td>Panels have no knowledge of whether or not they are active.  Instead you could check <code>tabPanel.getActiveTab().getId() == 'my-panel'</code>.</td>
        </tr>
        <tr>
            <td>isHidden</td>
            <td>hidden [property]</td>
            <td>The standard Component hidden property can be used so no method is necessary.</td>
        </tr>
        <tr>
            <td>refresh,<br />
            setUrl</td>
            <td>load,<br />
            getUpdater().refresh</td>
            <td>In 1.x, refresh used the properties set in setUrl to reload remote content into the tab. In 2.0, Panels can be loaded directly using the load method, or you can access the update manager directly via getUpdater and either load the Panel or refresh it using previously loaded configuration data.</td>
        </tr>
        <tr>
            <td>setContent</td>
            <td>body.update</td>
            <td>Equivalent functionality.</td>
        </tr>
        <tr>
            <td>setHidden</td>
            <td>setVisible</td>
            <td>Same functionality, although note that <strong>these methods are now reversed</strong>. setHidden(true) in 1.x should now be setVisible(false) and vice versa.</td>
        </tr>
        <tr>
            <td>setText</td>
            <td>setTitle</td>
            <td> </td>
        </tr>
        <tr>
            <td>setTooltip</td>
            <td>&mdash;</td>
            <td>No longer supported in 2.0</td>
        </tr>
    </tbody>
</table>
<a name="Upgrading_Forms_for_2.0_.28TBD.29"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=23" title="Edit section: Upgrading Forms for 2.0 (TBD)"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Upgrading Forms for 2.0 (TBD)</span></h3>
<p>Ext.form.Form - Rename the class anywhere it's used to <code>Ext.form.FormPanel</code>.<br />
FormPanel now extends Ext.Panel in 2.0 so that it gets automatic layout handling. The following methods are no longer supported: </p>
<ul>
    <li>column</li>
    <li>fieldset</li>
    <li>container</li>
    <li>start</li>
    <li>end</li>
</ul>
<p>Ext.form.Layout </p>
<ul>
    <li>Replaced Ext.form.Layout with Ext.layout.FormLayout</li>
    <li>Changed Fieldset to extend Ext.layout.FormLayout instead of Ext.form.Layout</li>
</ul>
<a name="Upgrading_BasicDialog_to_Window"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=24" title="Edit section: Upgrading BasicDialog to Window"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Upgrading BasicDialog to Window</span></h3>
<a name="BasicDialog_and_Window_API_Comparison"></a>
<h4><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=25" title="Edit section: BasicDialog and Window API Comparison"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">BasicDialog and Window API Comparison</span></h4>
<p>The BasicDialog class no longer exists in 2.0, and has been replaced by the more general-purpose Window class. Window is based on Panel, so it can participate in the standard Component lifecycle, as well as acting as a standard Container and supporting 2.0 layouts. The table below summarizes the API differences between BasicDialog and Window, and offers tips on upgrading to Window when relevant. Only members that have been changed or removed are listed.</p>
<table class="wikitable">
    <tbody>
        <tr>
            <th style="white-space: nowrap;">BasicDialog (1.x)</th>
            <th style="white-space: nowrap;">Window (2.0)</th>
            <th>Notes</th>
        </tr>
        <tr>
            <td class="subhead" colspan="3">Config Options</td>
        </tr>
        <tr>
            <td>autoCreate</td>
            <td>&mdash;</td>
            <td>No longer needed, as Window automatically renders from code unless a content element is specified (e.g., via the <code>applyTo</code> config).</td>
        </tr>
        <tr>
            <td>autoTabs</td>
            <td>autoTabs (TabPanel)</td>
            <td>In 2.0, tab functionality has been completely factored out of the Window class. Anytime tabs are needed, a TabPanel should be created, and it has the autoTabs config that works just like the BasicDialog version did in 1.x. Note that the required CSS classes for identifying tab content in existing markup have changed (see the examples below for details).</td>
        </tr>
        <tr>
            <td>constraintoviewport</td>
            <td>constrain,<br />
            constrainHeader</td>
            <td>There are now two separate functions, one for constraining the entire Window to the viewport, and one for constraining only the header element while allowing the Window body to overflow.</td>
        </tr>
        <tr>
            <td>fixedcenter</td>
            <td>&mdash;</td>
            <td>The behavior of auto-centering the Window anytime it is displayed or programmatically resized is not supported by default in 2.0. However, it would be easy to add if needed by simply monitoring the Window's <code>resize</code> and/or <code>beforeshow</code> events and calling <code>Window.center()</code>.</td>
        </tr>
        <tr>
            <td>proxyDrag</td>
            <td>&mdash;</td>
            <td>Windows only support proxy dragging in 2.0, so it's no longer an option.</td>
        </tr>
        <tr>
            <td>syncHeightBeforeShow</td>
            <td>&mdash;</td>
            <td>No longer needed in 2.0 as internal box dimensions are managed automatically by the Window.</td>
        </tr>
        <tr>
            <td>tabTag</td>
            <td>autoTabSelector (TabPanel)</td>
            <td>The functionality is the same, but is now specified in the TabPanel config.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="3">Methods</td>
        </tr>
        <tr>
            <td>BasicDialog(el, config)</td>
            <td>Window(config)</td>
            <td>Aside from the supported config object being different, the Window constructor does not take an element as the first argument. Instead, the standard 2.0 approach to specifying the element is by using the renderTo config value or passing the el into the render method.</td>
        </tr>
        <tr class="change">
            <td>addButton</td>
            <td>addButton</td>
            <td>In 2.0, buttons must be added prior to rendering. The preferred approach in 2.0 is to specify all buttons in the buttons config for the Window rather than calling this method, but it is supported if needed.</td>
        </tr>
        <tr>
            <td>addKeyListener</td>
            <td>keys,<br />
            keyMap</td>
            <td>A valid KeyMap config object can be passed as the Window's <strong>keys</strong> config to add listeners at config time.  You can also access the Window's internal KeyMap object directly via the <strong>keyMap</strong> property.</td>
        </tr>
        <tr class="change">
            <td>collapse</td>
            <td>collapse([animate])</td>
            <td>New optional argument to animate the effect.</td>
        </tr>
        <tr class="change">
            <td>destroy([removeEl])</td>
            <td>destroy()</td>
            <td>Argument removed &mdash; the el will always be removed on destroy in 2.0.</td>
        </tr>
        <tr class="change">
            <td>expand</td>
            <td>expand(animate)</td>
            <td>New optional argument to animate the effect.</td>
        </tr>
        <tr>
            <td>getTabs</td>
            <td>items (Container),<br />
            Ext.getCmp()</td>
            <td>Since Containers in 2.0 can hold any type of Component, there is no point in having component-specific getters. Instead, you can access the Container's <strong>items</strong> MixedCollection and use any of the available methods for retrieving any component by id, index, selector, etc. Alternatively, any Component can be retrieved at any time by id from the ComponentMgr by calling <code>Ext.getCmp('id')</code>.</td>
        </tr>
        <tr>
            <td>hide([callback])</td>
            <td>hide([animateTarget], [callback], [scope])</td>
            <td>Additional arguments available (callback moved to second argument).</td>
        </tr>
        <tr>
            <td>initTabs</td>
            <td>readTabs(true) (TabPanel)</td>
            <td>The functionality is the same, but is now specified in the TabPanel <strong>readTabs</strong> method.  The optional <strong>removeExisting</strong> argument will remove any existing tabs if true is passed (initTabs always removed existing tabs).</td>
        </tr>
        <tr>
            <td>moveTo</td>
            <td>setPosition</td>
            <td>The functionality is the same, but is now specified by the BoxComponent base class.</td>
        </tr>
        <tr>
            <td>resizeTo</td>
            <td>setSize</td>
            <td>The functionality is the same, but is now specified by the BoxComponent base class.</td>
        </tr>
        <tr>
            <td>restoreState</td>
            <td>&mdash;</td>
            <td>State management is now handled automatically by the Component base class. If a state provider is initialized, the Window will automatically persist and reload its state.</td>
        </tr>
        <tr>
            <td>setContentSize</td>
            <td>&mdash;</td>
            <td>No longer needed in 2.0 as internal box dimensions are managed automatically by the Window.</td>
        </tr>
        <tr class="change">
            <td>setTitle(title)</td>
            <td>setTitle(title, [iconCls])</td>
            <td>New optional argument to set the window icon.</td>
        </tr>
        <tr class="change">
            <td>show([animateTarget])</td>
            <td>show([animateTarget], [callback], [scope])</td>
            <td>New optional arguments.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="3">Events</td>
        </tr>
        <tr>
            <td>keydown</td>
            <td>&mdash;</td>
            <td>This event is no longer fired by Window.  All keydown handling should be provided via the Window's internal KeyMap object.</td>
        </tr>
        <tr class="change">
            <td>resize(this, width, height)</td>
            <td>resize(this, adjustedWidth, adjustedHeight, rawWidth, rawHeight)</td>
            <td>New arguments for the original width and height have been added.</td>
        </tr>
    </tbody>
</table>
<a name="Simple_Dialog_Example"></a>
<h4><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=26" title="Edit section: Simple Dialog Example"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Simple Dialog Example</span></h4>
<div class="thumb tright">
<div class="thumbinner" style="width: 370px;"><a href="http://extjs.com/learn/Image:Ext-dialog-to-window-simple.gif" title="" class="internal"><img class="thumbimage" src="http://extjs.com/learn/w/images/0/09/Ext-dialog-to-window-simple.gif" longdesc="/learn/Image:Ext-dialog-to-window-simple.gif" height="228" alt="" width="368" /></a>  </div>
</div>
<p>This is the simplest possible dialog, built dynamically in code. These two blocks produce dialogs that have equivalent basic functionality.</p>
<p><strong>Implementation Notes:</strong></p>
<ul>
    <li>In 1.x you had to use <strong>autoCreate</strong> to create a dialog programmatically, and you had to update the body element to add content through code &mdash; in 2.0 the Window will create itself programmatically by default, and you can use the <strong>html</strong> config to add content.</li>
    <li>In 2.0, Windows have shadows by default, so the config is only needed to turn them off.</li>
    <li>The <strong>proxyDrag</strong> config is no longer supported &mdash; Windows can <em>only</em> be proxy-dragged.</li>
    <li>In 1.x the dialog had a minimize tool button that collapsed/expanded the dialog by default. In 2.0, there is not a default behavior for the minimize action since in a desktop-style application, the true default might be to minimize to a task bar or some other container. However, it is simple to add the 1.x default behavior by adding the minimize tool config option along with a simple event handler as shown below.</li>
    <li>2.0 does have an <strong>addButtons</strong> method too, but adding them in the config is preferred.  Buttons must be added prior to rendering!</li>
    <li>The <strong>addKeyListener</strong> method has been replaced by the <strong>keys</strong> config that allows you to pass a valid KeyMap config that defines all the keys to be handled by the Window.</li>
</ul>
<table width="100%">
    <tbody>
        <tr>
            <th>1.x</th>
            <th>2.0</th>
        </tr>
        <tr>
            <td width="50%">
            <pre class="source source-javascript"><span class="kw2">var</span> dialog = <span class="kw2">new</span> Ext.<span class="me1">BasicDialog</span><span class="br0">(</span><span class="kw2">null</span>, <span class="br0">{</span> <br />    autoCreate: <span class="kw2">true</span>,<br />    width: <span class="nu0">300</span>,<br />    height: <span class="nu0">150</span>,<br />    shadow: <span class="kw2">true</span>,<br />    minWidth: <span class="nu0">200</span>,<br />    minHeight: <span class="nu0">100</span>,<br />    proxyDrag: <span class="kw2">true</span>,<br />    title: <span class="st0">'1.x Simple Dialog'</span><br /><span class="br0">}</span><span class="br0">)</span>;<br />dialog.<span class="me1">addKeyListener</span><span class="br0">(</span><span class="nu0">27</span>, dialog.<span class="me1">hide</span>, dialog<span class="br0">)</span>;<br /> <span class="co1">// hide on Esc</span><br />dialog.<span class="me1">addButton</span><span class="br0">(</span><span class="st0">'Close'</span>, dialog.<span class="me1">hide</span>, dialog<span class="br0">)</span>;<br />dialog.<span class="me1">body</span>.<span class="me1">update</span><span class="br0">(</span><span class="st0">'&lt;p&gt;This is a simple <br />dialog.&lt;/p&gt;'</span><span class="br0">)</span>;<br />dialog.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;</pre>
            </td>
            <td width="50%">
            <pre class="source source-javascript"><span class="kw2">var</span> win = <span class="kw2">new</span> Ext.<span class="me1">Window</span><span class="br0">(</span><span class="br0">{</span> <br />    width: <span class="nu0">300</span>,<br />    height: <span class="nu0">150</span>,<br />    minWidth: <span class="nu0">200</span>,<br />    minHeight: <span class="nu0">100</span>,<br />    minimizable: <span class="kw2">true</span>,<br />    title: <span class="st0">'2.0 Simple Dialog'</span>,<br />    html: <span class="st0">'&lt;p&gt;This is a simple dialog.&lt;/p&gt;'</span>,<br />    buttons: <span class="br0">[</span><span class="br0">{</span><br />        text: <span class="st0">'Close'</span>,<br />        handler: <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />            win.<span class="me1">hide</span><span class="br0">(</span><span class="br0">)</span>;<br />        <span class="br0">}</span><br />    <span class="br0">}</span><span class="br0">]</span>,<br />    keys: <span class="br0">[</span><span class="br0">{</span><br />        key: <span class="nu0">27</span>,  <span class="co1">// hide on Esc</span><br />        fn: <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />            win.<span class="me1">hide</span><span class="br0">(</span><span class="br0">)</span>;<br />        <span class="br0">}</span><br />    <span class="br0">}</span><span class="br0">]</span><br /><span class="br0">}</span><span class="br0">)</span>;<br />win.<span class="me1">on</span><span class="br0">(</span><span class="st0">'minimize'</span>, <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />    win.<span class="me1">toggleCollapse</span><span class="br0">(</span><span class="br0">)</span>;<br /><span class="br0">}</span><span class="br0">)</span>;<br />win.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;</pre>
            </td>
        </tr>
    </tbody>
</table>
<a name="Tabbed_Dialog_From_Markup_Example"></a>
<h4><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=27" title="Edit section: Tabbed Dialog From Markup Example"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Tabbed Dialog From Markup Example</span></h4>
<div class="thumb tright">
<div class="thumbinner" style="width: 400px;"><a href="http://extjs.com/learn/Image:Ext-dialog-to-window-markup.gif" title="" class="internal"><img class="thumbimage" src="http://extjs.com/learn/w/images/9/9a/Ext-dialog-to-window-markup.gif" longdesc="/learn/Image:Ext-dialog-to-window-markup.gif" height="271" alt="" width="398" /></a>  </div>
</div>
<p>This is a slightly more complex dialog that demonstrates rendering from existing HTML markup, as well as automatically generating tabs in the dialog from the markup.</p>
<p><strong>Implementation Notes:</strong></p>
<ul>
    <li>Note that the dialog CSS classes have changed. In 1.x, the header was &quot;x-dlg-hd&quot; and the body was &quot;x-dlg-bd&quot;. These are now &quot;x-window-header&quot; and &quot;x-window-body&quot;. Note that &quot;x-window-body&quot; is not actually used in this example since the TabPanel is added to the body programmatically by passing it in the items config. However, you could just as easily create a div for static content with the class &quot;x-window-body&quot; and it would render into the body as expected.</li>
    <li>The tab-related classes have also changed. Tabs are now generic in 2.0, so there is no need for dialog-specific class names like &quot;x-dlg-tab&quot;. Now content anywhere in the page with the class &quot;x-tab&quot; can be added to any TabPanel component.</li>
    <li>The TabPanel is now created as a separate component since the tab functionality has been factored out of the Window class. Since Window is a Container subclass, it can contain any components (including TabPanel) by simply passing them into its <strong>items</strong> config.</li>
    <li>In 2.0, the <strong>applyTo</strong> config is used to apply a component to existing markup.</li>
</ul>
<table width="100%">
    <tbody>
        <tr>
            <th>1.x Markup</th>
            <th>2.0 Markup</th>
        </tr>
        <tr>
            <td width="50%">
            <pre class="source source-html4strict"><span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;markup-dlg&quot;</span> <span class="kw3">style</span>=<span class="st0">&quot;visibility:hidden;&quot;</span><span class="kw2">&gt;</span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-dlg-hd&quot;</span><span class="kw2">&gt;</span>1.x Tabbed Dialog from<br /> Markup<span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-dlg-bd&quot;</span><span class="kw2">&gt;</span><br />        <span class="sc2"><span class="coMULTI"><!-- Auto create tab 1 --></span></span><br />        <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-dlg-tab&quot;</span> <span class="kw3">title</span>=<span class="st0">&quot;Tab 1&quot;</span><span class="kw2">&gt;</span><br />            <span class="sc2"><span class="coMULTI"><!-- Nested "inner-tab" to safely add<br /> padding --></span></span><br />            <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;inner-tab&quot;</span><span class="kw2">&gt;</span><br />                 Hello...<br />            <span class="sc2"><span class="kw2"></span></span></div></span></span><br />        <span class="sc2"><span class="kw2"></span></span></div></span></span><br />        <span class="sc2"><span class="coMULTI"><!-- Auto create tab 2 --></span></span><br />        <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-dlg-tab&quot;</span> <span class="kw3">title</span>=<span class="st0">&quot;Tab 2&quot;</span><span class="kw2">&gt;</span><br />            <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;inner-tab&quot;</span><span class="kw2">&gt;</span><br />            ... World!<br />            <span class="sc2"><span class="kw2"></span></span></div></span></span><br />        <span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"></span></span></div></span></span><br /><span class="sc2"><span class="kw2"></span></span></div></span></span></pre>
            </td>
            <td width="50%">
            <pre class="source source-html4strict"><span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;markup-win&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;x-hidden&quot;</span><span class="kw2">&gt;</span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-window-header&quot;</span><span class="kw2">&gt;</span>2.0 Tabbed Dialog <br />from Markup<span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;hello-tabs&quot;</span><span class="kw2">&gt;</span><br />        <span class="sc2"><span class="coMULTI"><!-- Auto create tab 1 --></span></span><br />        <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-tab&quot;</span> <span class="kw3">title</span>=<span class="st0">&quot;Tab 1&quot;</span><span class="kw2">&gt;</span><br />            Hello...<br />        <span class="sc2"><span class="kw2"></span></span></div></span></span><br />        <span class="sc2"><span class="coMULTI"><!-- Auto create tab 2 --></span></span><br />        <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-tab&quot;</span> <span class="kw3">title</span>=<span class="st0">&quot;Tab 2&quot;</span><span class="kw2">&gt;</span><br />            ... World!<br />        <span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"></span></span></div></span></span><br /><span class="sc2"><span class="kw2"></span></span></div></span></span></pre>
            </td>
        </tr>
    </tbody>
</table>
<table width="100%">
    <tbody>
        <tr>
            <th>1.x Code</th>
            <th>2.0 Code</th>
        </tr>
        <tr>
            <td width="50%">
            <pre class="source source-javascript"><span class="kw2">var</span> dialog = <span class="kw2">new</span> Ext.<span class="me1">BasicDialog</span><span class="br0">(</span><span class="st0">&quot;markup-dlg&quot;</span>, <span class="br0">{</span> <br />    autoTabs: <span class="kw2">true</span>,<br />    width: <span class="nu0">300</span>,<br />    height: <span class="nu0">175</span>,<br />    shadow: <span class="kw2">true</span>,<br />    proxyDrag: <span class="kw2">true</span><br /><span class="br0">}</span><span class="br0">)</span>;<br />dialog.<span class="me1">addButton</span><span class="br0">(</span><span class="st0">'Close'</span>, dialog.<span class="me1">hide</span>, dialog<span class="br0">)</span>;<br />dialog.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;</pre>
            </td>
            <td width="50%">
            <pre class="source source-javascript"><span class="kw2">var</span> win = <span class="kw2">new</span> Ext.<span class="me1">Window</span><span class="br0">(</span><span class="br0">{</span><br />    applyTo: <span class="st0">'markup-win'</span>,<br />    layout: <span class="st0">'fit'</span>,<br />    width: <span class="nu0">300</span>,<br />    height: <span class="nu0">175</span>,<br />    minimizable: <span class="kw2">true</span>,<br />    closeAction: <span class="st0">'hide'</span>,<br />    plain: <span class="kw2">true</span>,<br />    items: <span class="kw2">new</span> Ext.<span class="me1">TabPanel</span><span class="br0">(</span><span class="br0">{</span><br />        el: <span class="st0">'hello-tabs'</span>,<br />        autoTabs: <span class="kw2">true</span>,<br />        activeTab: <span class="nu0">0</span>,<br />        deferredRender: <span class="kw2">false</span>,<br />        border: <span class="kw2">false</span><br />    <span class="br0">}</span><span class="br0">)</span>,<br />    buttons: <span class="br0">[</span><span class="br0">{</span><br />        text: <span class="st0">'Close'</span>,<br />        handler: <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />            win.<span class="me1">hide</span><span class="br0">(</span><span class="br0">)</span>;<br />        <span class="br0">}</span><br />    <span class="br0">}</span><span class="br0">]</span><br /><span class="br0">}</span><span class="br0">)</span>;<br />win.<span class="me1">on</span><span class="br0">(</span><span class="st0">'minimize'</span>, <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />    win.<span class="me1">toggleCollapse</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span>;<br /><span class="br0">}</span><span class="br0">)</span>;<br />win.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;</pre>
            </td>
        </tr>
    </tbody>
</table>
<a name="Upgrading_LayoutDialog_to_Window"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=28" title="Edit section: Upgrading LayoutDialog to Window"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Upgrading LayoutDialog to Window</span></h3>
<div class="thumb tright">
<div class="thumbinner" style="width: 478px;"><a href="http://extjs.com/learn/Image:Ext-dialog-to-window-layout.gif" title="" class="internal"><img class="thumbimage" src="http://extjs.com/learn/w/images/7/7c/Ext-dialog-to-window-layout.gif" longdesc="/learn/Image:Ext-dialog-to-window-layout.gif" height="318" alt="" width="476" /></a>  </div>
</div>
<p>In 1.x, a separate LayoutDialog class was required to embed a BorderLayout into a dialog. In 2.0, the LayoutDialog no longer exists &mdash; any Container can contain any style of layout, so it's now as simple as giving the Window a <strong>layout</strong> config value of 'border' and adding Panels as needed. This example also demonstrates the use of many new config options in the 2.0 code. They will not all be covered here, but are all documented in the Ext 2.0 API docs.</p>
<p><strong>Implementation Notes:</strong></p>
<ul>
    <li>In the &quot;Tabbed Dialog From Markup&quot; example above, we added a TabPanel directly inline by defining it inside the <strong>items</strong> config. In this example, each component is constructed separately and then later added into the Window's items config by reference. This is a convenient way of creating references that you can keep for later use if needed (although any component, including Panels and TabPanels, can be accessed at any time via <code>Ext.getCmp('id')</code>).</li>
    <li>Note that you can even mix building the Window contents in multiple ways. The Window container and header elements are defined in markup using the <strong>applyTo</strong> config.  The center tab and west region are populated by explicitly defining their <strong>contentEl</strong> configs, pointing them at the elements containing their contents.  The secondary tab contains content defined inline via the <strong>html</strong> config.  There are many options for building layouts from contents in 2.0!</li>
    <li>One subtle difference is how you can apply custom styles to the contents. In the 1.x example, an inline style declaration was required in the markup to add padding to the panel bodies. In 2.0, there is a special <strong>bodyStyle</strong> config that allows you to apply custom body styles in code.  In this example, passing that in the <strong>defaults</strong> config simply applies it to each contained item (the 'nav' and 'tabs' components).</li>
</ul>
<table width="100%">
    <tbody>
        <tr>
            <th>1.x Markup</th>
            <th>2.0 Markup</th>
        </tr>
        <tr>
            <td width="50%">
            <pre class="source source-html4strict"><span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;layout-dlg&quot;</span> <span class="kw3">style</span>=<span class="st0">&quot;visibility:hidden;&quot;</span><span class="kw2">&gt;</span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-dlg-hd&quot;</span><span class="kw2">&gt;</span>1.x Layout Dialog<span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-dlg-bd&quot;</span><span class="kw2">&gt;</span><br />        <span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;west&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;x-layout-inactive-content&quot;</span><br /> <span class="kw3">style</span>=<span class="st0">&quot;padding:13px 10px;&quot;</span><span class="kw2">&gt;</span><br />	        West<br />	    <span class="sc2"><span class="kw2"></span></span></div></span></span><br />	    <span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;center&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;x-layout-inactive-<br />content&quot;</span> <span class="kw3">style</span>=<span class="st0">&quot;padding:10px;&quot;</span><span class="kw2">&gt;</span><br />            A cool layout dialog from markup!<br />	    <span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"></span></span></div></span></span><br /><span class="sc2"><span class="kw2"></span></span></div></span></span></pre>
            </td>
            <td width="50%">
            <pre class="source source-html4strict"><span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;layout-win&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;x-hidden&quot;</span><span class="kw2">&gt;</span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">class</span>=<span class="st0">&quot;x-window-header&quot;</span><span class="kw2">&gt;</span>2.0 Layout<br /> Dialog<span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;west&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;x-hidden&quot;</span><span class="kw2">&gt;</span><br />        West<br />    <span class="sc2"><span class="kw2"></span></span></div></span></span><br />    <span class="sc2"><span class="kw2"><div> <span class="kw3">id</span>=<span class="st0">&quot;center&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;x-hidden&quot;</span><span class="kw2">&gt;</span><br />        A cool layout dialog from markup!<br />    <span class="sc2"><span class="kw2"></span></span></div></span></span><br /><span class="sc2"><span class="kw2"></span></span></div></span></span></pre>
            </td>
        </tr>
    </tbody>
</table>
<table height="774" width="565">
    <tbody>
        <tr>
            <th>1.x Code</th>
            <th>2.0 Code</th>
        </tr>
        <tr>
            <td width="50%">
            <pre class="source source-javascript"><span class="kw2">var</span> dialog = <span class="kw2">new</span> Ext.<span class="me1">LayoutDialog</span><span class="br0">(</span><span class="st0">&quot;layout-dlg&quot;</span>, <span class="br0">{</span><br />    width: <span class="nu0">400</span>,<br />    height: <span class="nu0">200</span>,<br />    shadow: <span class="kw2">true</span>,<br />    west: <span class="br0">{</span><br />        split: <span class="kw2">true</span>,<br />        initialSize: <span class="nu0">100</span>,<br />        titlebar: <span class="kw2">true</span>,<br />        collapsible: <span class="kw2">true</span>,<br />        animate: <span class="kw2">true</span><br />    <span class="br0">}</span>,<br />    center: <span class="br0">{</span><br />        autoScroll: <span class="kw2">true</span>,<br />        tabPosition: <span class="st0">'top'</span>,<br />        closeOnTab: <span class="kw2">true</span>,<br />        alwaysShowTabs: <span class="kw2">true</span><br />    <span class="br0">}</span><br /><span class="br0">}</span><span class="br0">)</span>;<br />dialog.<span class="me1">addButton</span><span class="br0">(</span><span class="st0">'Close'</span>, dialog.<span class="me1">hide</span>, dialog<span class="br0">)</span>;<br /> <br /><span class="kw2">var</span> layout = dialog.<span class="me1">getLayout</span><span class="br0">(</span><span class="br0">)</span>;<br />layout.<span class="me1">beginUpdate</span><span class="br0">(</span><span class="br0">)</span>;<br />layout.<span class="me1">add</span><span class="br0">(</span><span class="st0">'west'</span>, <span class="kw2">new</span> Ext.<span class="me1">ContentPanel</span><span class="br0">(</span><span class="st0">'west'</span>,<br /> <span class="br0">{</span>title: <span class="st0">'West'</span><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span>;<br />layout.<span class="me1">add</span><span class="br0">(</span><span class="st0">'center'</span>, <span class="kw2">new</span> Ext.<span class="me1">ContentPanel</span><span class="br0">(</span><span class="st0">'center'</span>,<br /> <span class="br0">{</span>title: <span class="st0">'First Tab'</span><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span>;<br />layout.<span class="me1">add</span><span class="br0">(</span><span class="st0">'center'</span>, <span class="kw2">new</span> Ext.<span class="me1">ContentPanel</span><span class="br0">(</span>Ext.<span class="me1">id</span><span class="br0">(</span><span class="br0">)</span>, <span class="br0">{</span><br />        autoCreate: <span class="kw2">true</span>, <br />        title: <span class="st0">'Another Tab'</span>,<br />        background: <span class="kw2">true</span><br /><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span>;<br />layout.<span class="me1">endUpdate</span><span class="br0">(</span><span class="br0">)</span>;<br />dialog.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;</pre>
            </td>
            <td width="50%">
            <pre class="source source-javascript"><span class="kw2">var</span> tabs = <span class="kw2">new</span> Ext.<span class="me1">TabPanel</span><span class="br0">(</span><span class="br0">{</span><br />    region: <span class="st0">'center'</span>,<br />    margins: <span class="st0">'3 3 3 0'</span>, <br />    activeTab: <span class="nu0">0</span>,<br />    defaults: <span class="br0">{</span>autoScroll:<span class="kw2">true</span><span class="br0">}</span>,<br /> <br />    items:<span class="br0">[</span><span class="br0">{</span><br />        title: <span class="st0">'First Tab'</span>,<br />        contentEl: <span class="st0">'center'</span><br />    <span class="br0">}</span>,<span class="br0">{</span><br />        title: <span class="st0">'Another Tab'</span>,<br />        html: <span class="st0">'Some other content'</span><br />    <span class="br0">}</span><span class="br0">]</span><br /><span class="br0">}</span><span class="br0">)</span>;<br /> <br /><span class="kw2">var</span> nav = <span class="kw2">new</span> Ext.<span class="me1">Panel</span><span class="br0">(</span><span class="br0">{</span><br />    title: <span class="st0">'West'</span>,<br />    region: <span class="st0">'west'</span>,<br />    contentEl: <span class="st0">'west'</span>,<br />    split: <span class="kw2">true</span>,<br />    width: <span class="nu0">100</span>,<br />    collapsible: <span class="kw2">true</span>,<br />    margins: <span class="st0">'3 0 3 3'</span>,<br />    cmargins: <span class="st0">'3 3 3 3'</span><br /><span class="br0">}</span><span class="br0">)</span>;<br /> <br /><span class="kw2">var</span> win = <span class="kw2">new</span> Ext.<span class="me1">Window</span><span class="br0">(</span><span class="br0">{</span><br />    applyTo: <span class="st0">'layout-win'</span>,<br />    closable: <span class="kw2">true</span>,<br />    width: <span class="nu0">400</span>,<br />    height: <span class="nu0">200</span>,<br />    minimizable: <span class="kw2">true</span>,<br />    border: <span class="kw2">false</span>,<br />    plain: <span class="kw2">true</span>,<br />    layout: <span class="st0">'border'</span>,<br />    defaults: <span class="br0">{</span>bodyStyle: <span class="st0">'padding:10px;'</span><span class="br0">}</span>,<br />    buttons: <span class="br0">[</span><span class="br0">{</span><br />        text: <span class="st0">'Close'</span>,<br />        handler: <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />            win.<span class="me1">hide</span><span class="br0">(</span><span class="br0">)</span>;<br />        <span class="br0">}</span><br />    <span class="br0">}</span><span class="br0">]</span>,<br />    items: <span class="br0">[</span>nav, tabs<span class="br0">]</span><br /><span class="br0">}</span><span class="br0">)</span>;<br /> <br />win.<span class="me1">on</span><span class="br0">(</span><span class="st0">'minimize'</span>, <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><br />    win.<span class="me1">toggleCollapse</span><span class="br0">(</span><span class="br0">)</span>;<br /><span class="br0">}</span><span class="br0">)</span>;<br />win.<span class="me1">show</span><span class="br0">(</span><span class="kw1">this</span><span class="br0">)</span>;</pre>
            </td>
        </tr>
    </tbody>
</table>
<a name="Upgrading_QuickTips_for_2.0_.28TBD.29"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=29" title="Edit section: Upgrading QuickTips for 2.0 (TBD)"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Upgrading QuickTips for 2.0 (TBD)</span></h3>
<ul>
    <li>QuickTips class has been broken out into Tip, QuickTip (class), QuickTips (singleton) and Tooltip</li>
    <li>Changed <em>width</em> tag attribute to <em>qwidth</em> to avoid browser attribute conflicts</li>
</ul>
<table class="wikitable">
    <tbody>
        <tr>
            <th style="white-space: nowrap;">1.x</th>
            <th style="white-space: nowrap;">2.0</th>
            <th>Notes</th>
        </tr>
        <tr>
            <td class="subhead" colspan="3">Config Options</td>
        </tr>
        <tr>
            <td>animate</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>autoDismiss</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>autoDismissDelay</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>autoHide</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>cls</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>hideDelay</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>hideOnClick</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>interceptTitles</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>maxWidth</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>minWidth</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>showDelay</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>text</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>title</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>trackMouse</td>
            <td> </td>
            <td> </td>
        </tr>
        <tr>
            <td>width</td>
            <td> </td>
            <td> </td>
        </tr>
    </tbody>
</table>
<a name="Converting_View_to_DataView_.28TBD.29"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=30" title="Edit section: Converting View to DataView (TBD)"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Converting View to DataView (TBD)</span></h3>
<ul>
    <li>Extends BoxComponent instead of Observable</li>
    <li>View used Ext.Template, DataView uses Ext.XTemplate</li>
    <li>itemSelector config is a new required property</li>
    <li>JsonView no longer exists as a separate class</li>
</ul>
<a name="Converting_MasterTemplate_to_XTemplate"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=31" title="Edit section: Converting MasterTemplate to XTemplate"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Converting MasterTemplate to XTemplate</span></h3>
<a name="Template_API_Changes"></a>
<h4><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=32" title="Edit section: Template API Changes"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Template API Changes</span></h4>
<table class="wikitable">
    <tbody>
        <tr>
            <th style="white-space: nowrap;">MasterTemplate (1.x)</th>
            <th style="white-space: nowrap;">XTemplate (1.1.1)</th>
            <th style="white-space: nowrap;">XTemplate (2.0)</th>
            <th>Notes</th>
        </tr>
        <tr>
            <td class="subhead" colspan="4">member formatting functions</td>
        </tr>
        <tr>
            <td>VARIABLE:this.METHOD(arguments)</td>
            <td>this.METHOD(arguments)</td>
            <td>{[this.METHOD(arguments)]}</td>
            <td>The syntax to execute member formatting functions has changed slightly through revisions. In 2.0 you can execute your member functions anywhere including in the new conditional if attribute.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">tpl attributes</td>
        </tr>
        <tr>
            <td>name</td>
            <td>for</td>
            <td>for</td>
            <td>The name attribute was changed to a for attribute. You must provide the name of a valid object or array instead of an arbitrary name to fill.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Methods</td>
        </tr>
        <tr>
            <td>add</td>
            <td>&mdash;</td>
            <td>&mdash;</td>
            <td>No longer needed due to auto-filling of arrays. Use a for attribute with the same name of your array.</td>
        </tr>
        <tr>
            <td>addAll</td>
            <td>&mdash;</td>
            <td>&mdash;</td>
            <td>No longer needed due to auto-filling of arrays. Use a for attribute with the same name of your array.</td>
        </tr>
        <tr>
            <td>fill</td>
            <td>&mdash;</td>
            <td>&mdash;</td>
            <td>No longer needed due to auto-filling of arrays. Use a for attribute with the same name of your array.</td>
        </tr>
        <tr>
            <td>reset</td>
            <td>&mdash;</td>
            <td>&mdash;</td>
            <td>No longer needed due to auto-filling of arrays. Use a for attribute with the same name of your array.</td>
        </tr>
        <tr>
            <td>set</td>
            <td>&mdash;</td>
            <td>&mdash;</td>
            <td>Create a new XTemplate via the constructor.</td>
        </tr>
    </tbody>
</table>
<a name="Converting_to_XTemplate"></a>
<h4><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=33" title="Edit section: Converting to XTemplate"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Converting to XTemplate</span></h4>
<ol>
    <li>Change any name attributes to a for attribute. If you previously used an unnamed tpl which you were filling, you will now need to give it a for attribute.</li>
    <li>Change the value of the for attribute to a valid object/array which will be in the variable you are applying</li>
    <li>Change the syntax of member formatting functions</li>
    <li>Apply an object which meets the specs of your template</li>
</ol>
<p>For Example: </p>
<pre class="source source-javascript"><span class="kw2">var</span> iconTpl = <span class="kw2">new</span> Ext.<span class="me1">MasterTemplate</span><span class="br0">(</span><span class="st0">'&lt;fieldset&gt;&lt;legend&gt;{title}&lt;/legend&gt;&lt;<br />tpl&gt;&lt;img src=&quot;{img}&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; {desc}&lt;br/&gt;&lt;/tpl&gt;&lt;/fieldset&gt;'</span><span class="br0">)</span>;<br /><span class="kw2">var</span> tplObj = <span class="br0">{</span>title: <span class="st0">'Order Legend'</span><span class="br0">}</span>;<br /><span class="kw2">var</span> iconArray = <span class="br0">[</span><br />	<span class="br0">{</span>img: <span class="st0">'images/icons/cog_orange.png'</span>, desc: <span class="st0">'Active Order'</span><span class="br0">}</span>,<br />	<span class="br0">{</span>img: <span class="st0">'images/icons/stop.png'</span>, desc: <span class="st0">'Cancelled Order'</span><span class="br0">}</span>,<br />	<span class="br0">{</span>img: <span class="st0">'images/icons/tick.png'</span>, desc: <span class="st0">'Completed Order'</span><span class="br0">}</span><br /><span class="br0">]</span>;                  <br />iconTpl.<span class="me1">compile</span><span class="br0">(</span><span class="br0">)</span>;<br />iconTpl.<span class="me1">fill</span><span class="br0">(</span>iconArray<span class="br0">)</span>;<br />iconTpl.<span class="me1">append</span><span class="br0">(</span>document.<span class="me1">body</span>, tplObj<span class="br0">)</span>;</pre>
<p>Could be converted to: </p>
<pre class="source source-javascript"><span class="kw2">var</span> iconTpl = <span class="kw2">new</span> Ext.<span class="me1">XTemplate</span><span class="br0">(</span><span class="st0">'&lt;fieldset&gt;&lt;legend&gt;{title}&lt;/legend&gt;&lt;tpl <br />for=&quot;iconArray&quot;&gt;&lt;img src=&quot;{img}&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; {desc}&lt;br/&gt;&lt;/tpl&gt;&lt;<br />/fieldset&gt;'</span><span class="br0">)</span>;	<br /><span class="kw2">var</span> tplObj = <span class="br0">{</span><br />	title: <span class="st0">'Order Legend'</span>,<br />	iconArray: <span class="br0">[</span><br />		<span class="br0">{</span>img: <span class="st0">'images/icons/cog_orange.png'</span>, desc: <span class="st0">'Active Order'</span><span class="br0">}</span>,<br />		<span class="br0">{</span>img: <span class="st0">'images/icons/stop.png'</span>, desc: <span class="st0">'Cancelled Order'</span><span class="br0">}</span>,<br />		<span class="br0">{</span>img: <span class="st0">'images/icons/tick.png'</span>, desc: <span class="st0">'Completed Order'</span><span class="br0">}</span><br />	<span class="br0">]</span><br /><span class="br0">}</span>;                  <br />iconTpl.<span class="me1">compile</span><span class="br0">(</span><span class="br0">)</span>;<br />iconTpl.<span class="me1">append</span><span class="br0">(</span>document.<span class="me1">body</span>, tplObj<span class="br0">)</span>;</pre>
<a name="Minor_API_Changes"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=34" title="Edit section: Minor API Changes"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Minor API Changes</span></h3>
<p>This section outlines all minor breaking API changes that only affect isolated members of a class, as opposed to a significant majority of a class's API or the class's underlying functionality. These changes are generally simple to diagnose and should only require minimal modifications to upgrade existing code.</p>
<table class="wikitable">
    <tbody>
        <tr>
            <th style="white-space: nowrap;">1.x</th>
            <th style="white-space: nowrap;">2.0</th>
            <th>Migration Steps</th>
            <th>Notes</th>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Ext.Element</td>
        </tr>
        <tr>
            <td><a href="http://extjs.com/deploy/ext-1.1.1/docs/output/Ext.Element.html#getNextSibling" title="http://extjs.com/deploy/ext-1.1.1/docs/output/Ext.Element.html#getNextSibling" class="external text" rel="nofollow">getNextSibling</a></td>
            <td><a href="http://extjs.com/deploy/dev/docs/?class=Ext.Element&amp;member=next" title="http://extjs.com/deploy/dev/docs/?class=Ext.Element&amp;member=next" class="external text" rel="nofollow">next</a></td>
            <td>
            <ol>
                <li>Change any calls from <code>getNextSibling()</code> to <code>next(null, true)</code> for equivalent results</li>
            </ol>
            </td>
            <td>You can optionally pass a CSS selctor in 2.0 as the first arg (instead of null) for custom filtering, and next returns an Element by default (1.x always returned a DOM node), so pass true as the second arg for a DOM node.</td>
        </tr>
        <tr>
            <td><a href="http://extjs.com/deploy/ext-1.1.1/docs/output/Ext.Element.html#getPreviousSibling" title="http://extjs.com/deploy/ext-1.1.1/docs/output/Ext.Element.html#getPreviousSibling" class="external text" rel="nofollow">getPreviousSibling</a></td>
            <td><a href="http://extjs.com/deploy/dev/docs/?class=Ext.Element&amp;member=prev" title="http://extjs.com/deploy/dev/docs/?class=Ext.Element&amp;member=prev" class="external text" rel="nofollow">prev</a></td>
            <td>
            <ol>
                <li>Change any calls from <code>getPrevSibling()</code> to <code>prev(null, true)</code> for equivalent results</li>
            </ol>
            </td>
            <td>You can optionally pass a CSS selctor in 2.0 as the first arg (instead of null) for custom filtering, and prev returns an Element by default (1.x always returned a DOM node), so pass true as the second arg for a DOM node.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Ext.EventManager</td>
        </tr>
        <tr>
            <td>wrap</td>
            <td>&mdash;</td>
            <td>
            <ol>
                <li>Remove the call</li>
            </ol>
            </td>
            <td>This was required in 1.x to wrap event handlers and override the default returned browser event object with an Ext.EventObject. This is now the default behavior in 2.0, so wrap can simple be removed.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Ext.MessageBox</td>
        </tr>
        <tr>
            <td>getDialog : BasicDialog</td>
            <td>getDialog : Window</td>
            <td>
            <ol>
                <li>Any calls to getDialog must now be changed to expect a Window object.</li>
            </ol>
            </td>
            <td>For details on interacting with a Window instead of a BasicDialog, see the section in this document on migrating to Ext.Window.</td>
        </tr>
        <tr>
            <td>updateProgress(value, text)</td>
            <td>updateProgress(value, progressText, msg)</td>
            <td>
            <ol>
                <li>To behave exactly like 1.x, simply insert an empty string as the second arg: <code>updateProgress(value, <em>, text)</em></code><em>.</em></li>
            </ol>
            </td>
            <td>By default, the progress text (second arg) will move from the window body into the progress bar itself between 1.x and 2.0. While technically a breaking (behavioral) change, most people will probably find the new default 2.0 behavior more desirable, so this will usually require no change in code. The new optional third argument will update the window body as the second argument did in 1.x.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Ext.form.Field</td>
        </tr>
        <tr>
            <td>applyTo()</td>
            <td>applyToMarkup(), or<br />
            applyTo [config]</td>
            <td>
            <ol>
                <li>To simply convert 1.x calls into working code, replace all instances of <code>field.applyTo()</code> with <code>field.applyToMarkup()</code>.</li>
                <li>To improve the code, optionally consider converting the calls to config definitions using the <code>apply</code> config property.  This will accomplish the same thing without the extra method calls.</li>
            </ol>
            </td>
            <td>The behavior of creating components from existing markup was moved into the Ext.Component base class so that all components implement it consistently, and the method was renamed to <code>applyToMarkup</code> so as not to conflict with the config property <code>applyTo</code>. The behavior and results should be exactly the same.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Ext.grid.EditorGrid</td>
        </tr>
        <tr>
            <td>EditorGrid(container, config)</td>
            <td>EditorGridPanel(config)</td>
            <td>
            <ol>
                <li>Rename all references to <code>Ext.grid.EditorGrid</code> to <code>Ext.grid.EditorGridPanel</code></li>
                <li>Change the constructor per the <a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_to_the_2.0_Component_Model" title="">Component constructor upgrade guidelines</a>.</li>
            </ol>
            </td>
            <td>EditorGrid now extends GridPanel instead of Grid to take advantage of the 2.0 layout architecture, and so was renamed to EditorGridPanel. It also uses the 2.0 Component model which requires that the only argument to the constructor is a config object.</td>
        </tr>
        <tr>
            <td class="subhead" colspan="4">Ext.tree.TreePanel</td>
        </tr>
        <tr>
            <td>TreePanel(container, config)</td>
            <td>TreePanel(config)</td>
            <td>
            <ol>
                <li>Change the constructor per the <a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_to_the_2.0_Component_Model" title="">Component constructor upgrade guidelines</a>.</li>
            </ol>
            </td>
            <td>TreePanel now extends Ext.Panel instead of Ext.data.Tree to take advantage of the 2.0 layout architecture. It also uses the 2.0 Component model which requires that the only argument to the constructor is a config object.</td>
        </tr>
        <tr>
            <td>beforeexpand,<br />
            expand,<br />
            beforecollapse,<br />
            collapse</td>
            <td>beforeexpandnode,<br />
            expandnode,<br />
            beforecollapsenode,<br />
            collapsenode</td>
            <td>
            <ol>
                <li>Add 'node' to the end of the names of any of these events in use.</li>
            </ol>
            </td>
            <td>These events were renamed to reflect the fact that they are actually <strong>node</strong> events, not <strong>tree</strong> events.</td>
        </tr>
    </tbody>
</table>
          <br/>
          <span style="color:red;">
            <a href="http://beckrabbit.javaeye.com/blog/134693#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>Tue, 23 Oct 2007 11:21:14 +0800</pubDate>
        <link>http://beckrabbit.javaeye.com/blog/134693</link>
        <guid>http://beckrabbit.javaeye.com/blog/134693</guid>
      </item>
      <item>
        <title>ext1.x to ext2.0升级指南1（转自官方）</title>
        <author>beckrabbit</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://beckrabbit.javaeye.com">beckrabbit</a>&nbsp;
          链接：<a href="http://beckrabbit.javaeye.com/blog/134681" style="color:red;">http://beckrabbit.javaeye.com/blog/134681</a>&nbsp;
          发表时间: 2007年10月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1 class="firstHeading">官方网站速度太慢了 转到自己这里</h1>
<h1 class="firstHeading">Ext 1 to 2 Migration Guide</h1>
<h3 id="siteSub">From Learn About the Ext JavaScript Library</h3>
<div id="jump-to-nav">Jump to: <a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#column-one">navigation</a>, <a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#searchInput">search</a></div>
<!-- start content -->
<div class="learn-doc-status"> <a name="Document_Status"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=1" title="Edit section: Document Status"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Document Status</span></h3>
<p>This document is currently in progress (<strong>DRAFT</strong> status). However, it has enough content that I wanted to</p>
<p> make it available for initial review. Please do not edit or translate yet &mdash; add all comments, questions, <br />
</p>
<p>etc. to the discussion page. I plan on finalizing and &quot;officially&quot; publishing it for the 2.0 final release,</p>
<p> but it is open now for public comment and technical review. &mdash;Brian</p>
</div>
<div class="learn-intro"> <a name="Introduction"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=2" title="Edit section: Introduction"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Introduction</span></h3>
<p><strong>Welcome to Ext 2.0.</strong> If you are new to Ext (or just new to 2.0), you'll probably want to begin with the <a href="http://extjs.com/learn/Ext_2_Overview" title="Ext 2 Overview">Ext 2.0 Overview</a> is</p>
<p> it introduces some of the new concepts in version 2.0. This document is intended for existing Ext 1.x users who need to <br />
</p>
<p>migrate existing code from 1.x to 2.0. Unfortunately, because of the architectural changes in the new version of Ext, i</p>
<p>t was not possible to maintain full backwards compatibility. While the Overview will help get you oriented with the new <br />
</p>
<p>code base, this guide will provide the practical steps needed to migrate your code as painlessly as possible.</p>
<p>Once your application is compiling again under 2.0, you'll probably want to dive into the details and start utilizing some</p>
<p> of the new advances in the framework that could help take your applications to the next level. For additional information</p>
<p> on 2.0, here are some helpful resources:</p>
<ul>
    <li><a href="http://extjs.com/learn/Ext_2_Overview" title="Ext 2 Overview">Ext 2.0 Overview</a></li>
    <li><a href="http://extjs.com/deploy/dev/docs/" title="http://extjs.com/deploy/dev/docs/" class="external text" rel="nofollow">Ext 2.0 API Reference</a></li>
    <li><a href="http://extjs.com/deploy/dev/examples/" title="http://extjs.com/deploy/dev/examples/" class="external text" rel="nofollow">Ext 2.0 Examples</a></li>
    <li>Ext 2.0 Change Log (Coming soon)</li>
    <li><a href="http://www.extjs.com/forum" title="http://www.extjs.com/forum" class="external text" rel="nofollow">Ext Community Forums</a></li>
</ul>
</div>
<div style="float: right; margin-left: 20px;">
<table class="toc" id="toc" summary="Contents">
    <tbody>
        <tr>
            <td>
            <div id="toctitle">
            <h2>Contents</h2>
            <span class="toctoggle">[<a href="javascript:toggleToc()" class="internal" id="togglelink">hide</a>]</span></div>
            <ul>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Document_Status"><span class="tocnumber">1</span> <span class="toctext">Document Status</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Introduction"><span class="tocnumber">2</span> <span class="toctext">Introduction</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Summary_of_Breaking_Changes"><span class="tocnumber">3</span> <span class="toctext">Summary of Breaking Changes</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_to_the_2.0_Component_Model"><span class="tocnumber">4</span> <span class="toctext">Upgrading to the 2.0 Component Model</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Converting_BorderLayout_to_2.0"><span class="tocnumber">5</span> <span class="toctext">Converting BorderLayout to 2.0</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Layout_Architecture"><span class="tocnumber">5.1</span> <span class="toctext">Layout Architecture</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Layout_Class_Mappings"><span class="tocnumber">5.2</span> <span class="toctext">Layout Class Mappings</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Converting_BorderLayout"><span class="tocnumber">5.3</span> <span class="toctext">Converting BorderLayout</span></a>
                    <ul>
                        <li class="toclevel-3"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#BorderLayout_vs._Viewport"><span class="tocnumber">5.3.1</span> <span class="toctext">BorderLayout vs. Viewport</span></a></li>
                        <li class="toclevel-3"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Using_the_Items_Array"><span class="tocnumber">5.3.2</span> <span class="toctext">Using the Items Array</span></a></li>
                        <li class="toclevel-3"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Adding_Regions_and_Panels"><span class="tocnumber">5.3.3</span> <span class="toctext">Adding Regions and Panels</span></a></li>
                        <li class="toclevel-3"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Creating_Tabs"><span class="tocnumber">5.3.4</span> <span class="toctext">Creating Tabs</span></a></li>
                        <li class="toclevel-3"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Rendering_the_Layout"><span class="tocnumber">5.3.5</span> <span class="toctext">Rendering the Layout</span></a></li>
                    </ul>
                    </li>
                </ul>
                </li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_Grids_for_2.0"><span class="tocnumber">6</span> <span class="toctext">Upgrading Grids for 2.0</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Introduction_2"><span class="tocnumber">6.1</span> <span class="toctext">Introduction</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Grid_to_GridPanel"><span class="tocnumber">6.2</span> <span class="toctext">Grid to GridPanel</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#GridView_API_Changes"><span class="tocnumber">6.3</span> <span class="toctext">GridView API Changes</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Details_Regarding_Column_Locking"><span class="tocnumber">6.4</span> <span class="toctext">Details Regarding Column Locking</span></a></li>
                </ul>
                </li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_TabPanels_for_2.0"><span class="tocnumber">7</span> <span class="toctext">Upgrading TabPanels for 2.0</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#TabPanel_Example"><span class="tocnumber">7.1</span> <span class="toctext">TabPanel Example</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#TabPanel_API_Changes"><span class="tocnumber">7.2</span> <span class="toctext">TabPanel API Changes</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#TabPanelItem_to_Panel"><span class="tocnumber">7.3</span> <span class="toctext">TabPanelItem to Panel</span></a></li>
                </ul>
                </li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_Forms_for_2.0_.28TBD.29"><span class="tocnumber">8</span> <span class="toctext">Upgrading Forms for 2.0 (TBD)</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_BasicDialog_to_Window"><span class="tocnumber">9</span> <span class="toctext">Upgrading BasicDialog to Window</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#BasicDialog_and_Window_API_Comparison"><span class="tocnumber">9.1</span> <span class="toctext">BasicDialog and Window API Comparison</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Simple_Dialog_Example"><span class="tocnumber">9.2</span> <span class="toctext">Simple Dialog Example</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Tabbed_Dialog_From_Markup_Example"><span class="tocnumber">9.3</span> <span class="toctext">Tabbed Dialog From Markup Example</span></a></li>
                </ul>
                </li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_LayoutDialog_to_Window"><span class="tocnumber">10</span> <span class="toctext">Upgrading LayoutDialog to Window</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Upgrading_QuickTips_for_2.0_.28TBD.29"><span class="tocnumber">11</span> <span class="toctext">Upgrading QuickTips for 2.0 (TBD)</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Converting_View_to_DataView_.28TBD.29"><span class="tocnumber">12</span> <span class="toctext">Converting View to DataView (TBD)</span></a></li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Converting_MasterTemplate_to_XTemplate"><span class="tocnumber">13</span> <span class="toctext">Converting MasterTemplate to XTemplate</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Template_API_Changes"><span class="tocnumber">13.1</span> <span class="toctext">Template API Changes</span></a></li>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Converting_to_XTemplate"><span class="tocnumber">13.2</span> <span class="toctext">Converting to XTemplate</span></a></li>
                </ul>
                </li>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide#Minor_API_Changes"><span class="tocnumber">14</span> <span class="toctext">Minor API Changes</span></a></li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script> </div>
<a name="Summary_of_Breaking_Changes"></a>
<h3><span class="editsection"><a href="http://extjs.com/learn/w/index.php?title=Ext_1_to_2_Migration_Guide&amp;action=edit&amp;section=3" title="Edit section: Summary of Breaking Changes"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span class="mw-headline">Summary of Breaking Changes</span></h3>
<p>Here's a high-level summary of all the areas in 2.0 that are not backwards-compatible with 1.x and will require manual modifications to existing code to migrate it to 2.0. Please note that there have been countless minor improvements, bug fixes and other backwards-compatible changes across the frame