GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(3)
2012-04-23 15:49
585 查看
按照上一节的思路,我们来继续重构feed和item区域
新建两个恒量,在RSSReaderConstants类里,加入两个新的恒量——FEED_PORTLET 和 ITEM_PORTLET
在包com.danielvaughan.rssreader.client.portlets:新建FeedPortlet extends Portlet;并且在构造函数中用相同于NavPortlet的代码。
同样的,在FeedPortlet类里,新建FeedPanel属性,在其构造函数里,设置头部可见性,并将FeedPanel加入到FeedPortlet里;最后,派发NewPortletCreated事件
在包com.danielvaughan.rssreader.client.portlets:新建ItemPortlet extends Portlet;并且在构造函数中用相同于NavPortlet的代码。
新建FeedPortlet和ItemPortlet好之后,我们在RSSReader.onModuleLoad()方法里面新建各自的实例
最后,运行效果如下
新建两个恒量,在RSSReaderConstants类里,加入两个新的恒量——FEED_PORTLET 和 ITEM_PORTLET
public static final String FEED_PORTLET = "feedPortlet"; public static final String ITEM_PORTLET = "itemPortlet";
在包com.danielvaughan.rssreader.client.portlets:新建FeedPortlet extends Portlet;并且在构造函数中用相同于NavPortlet的代码。
package com.danielvaughan.rssreader.client.portlets; import com.danielvaughan.rssreader.client.RSSReaderConstants; import com.extjs.gxt.ui.client.widget.custom.Portlet; import com.extjs.gxt.ui.client.widget.layout.FitLayout; public class FeedPortlet extends Portlet { public FeedPortlet() { setHeading("Feed"); setLayout(new FitLayout()); setHeight(350); setId(RSSReaderConstants.FEED_PORTLET); } }
同样的,在FeedPortlet类里,新建FeedPanel属性,在其构造函数里,设置头部可见性,并将FeedPanel加入到FeedPortlet里;最后,派发NewPortletCreated事件
package com.danielvaughan.rssreader.client.portlets; import com.danielvaughan.rssreader.client.RSSReaderConstants; import com.danielvaughan.rssreader.client.components.FeedPanel; import com.danielvaughan.rssreader.client.mvc.events.AppEvents; import com.extjs.gxt.ui.client.mvc.Dispatcher; import com.extjs.gxt.ui.client.widget.custom.Portlet; import com.extjs.gxt.ui.client.widget.layout.FitLayout; public class FeedPortlet extends Portlet { private final FeedPanel feedPanel = new FeedPanel(); public FeedPortlet() { setHeading("Feed"); setLayout(new FitLayout()); setHeight(350); setId(RSSReaderConstants.FEED_PORTLET); feedPanel.setHeaderVisible(false); add(feedPanel); Dispatcher.forwardEvent(AppEvents.NewPortletCreated, this); } }
在包com.danielvaughan.rssreader.client.portlets:新建ItemPortlet extends Portlet;并且在构造函数中用相同于NavPortlet的代码。
package com.danielvaughan.rssreader.client.portlets; import com.danielvaughan.rssreader.client.RSSReaderConstants; import com.danielvaughan.rssreader.client.components.ItemPanel; import com.danielvaughan.rssreader.client.mvc.events.AppEvents; import com.extjs.gxt.ui.client.mvc.Dispatcher; import com.extjs.gxt.ui.client.widget.custom.Portlet; import com.extjs.gxt.ui.client.widget.layout.FitLayout; public class ItemPortlet extends Portlet { public ItemPortlet() { setHeading("Item"); setLayout(new FitLayout()); setHeight(250); setId(RSSReaderConstants.ITEM_PORTLET); final ItemPanel itemPanel = new ItemPanel(); itemPanel.setHeaderVisible(false); add(itemPanel); Dispatcher.forwardEvent(AppEvents.NewPortletCreated, this); } }
新建FeedPortlet和ItemPortlet好之后,我们在RSSReader.onModuleLoad()方法里面新建各自的实例
package com.danielvaughan.rssreader.client; import com.danielvaughan.rssreader.client.mvc.controllers.PortalController; import com.danielvaughan.rssreader.client.portlets.FeedPortlet; import com.danielvaughan.rssreader.client.portlets.ItemPortlet; import com.danielvaughan.rssreader.client.portlets.NavPortlet; import com.danielvaughan.rssreader.client.services.FeedService; import com.danielvaughan.rssreader.client.services.FeedServiceAsync; import com.extjs.gxt.ui.client.Registry; import com.extjs.gxt.ui.client.mvc.Dispatcher; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; /** * Entry point classes define <code>onModuleLoad()</code>. */ public class RSSReader implements EntryPoint { /** * This is the entry point method. */ @Override public void onModuleLoad() { final FeedServiceAsync feedService = GWT.create(FeedService.class); Registry.register(RSSReaderConstants.FEED_SERVICE, feedService); Dispatcher dispatcher = Dispatcher.get(); dispatcher.addController(new PortalController()); new NavPortlet(); new FeedPortlet(); new ItemPortlet(); } }
最后,运行效果如下
相关文章推荐
- GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(2)
- GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(1)
- GXT之旅:第八章:Portal&Drag-Drop——项目使用Drag-Drop重构(2)
- GXT之旅:第八章:Portal&Drag-Drop——项目使用Drag-Drop重构(3)
- GXT之旅:第八章:Portal&Drag-Drop——项目使用Drag-Drop重构(1)
- GXT之旅:第八章:Portal&Drag-Drop——拖拽(Drag-Drop)基本介绍
- GXT之旅:第八章:Portal&Drag-Drop——Portal的基本介绍
- 使用HTML5的drag&drop做一个数独游戏
- 使用HTML5的drag&drop做一个数独游戏
- 使用ASP.NET Atlas实现拖放(Drag & Drop)效果
- Android 在Eclipse中使用Ant Build构建项目时出现的"crunch"
- 使用alter database datafile 'XXX' offline drop 是否能够恢复(非归档模式下)
- 使用RSL发布flex项目需要的build.xml要诀详解 &#8211; IT妖怪
- web拖动Drag&Drop原理
- Drag & Drop
- 【github&&git】5、使用Git拉取GitLab上的项目
- ASP.NET AJAX (Atlas) 拖放(Drag & Drop)功能6种实现方法总结
- <转>android-滑动菜单栏-开源项目SlidingMenu的搭建和使用
- 使用android studio的gradle新建项目时候出现No cached version listing 或Enable Gradle 'offline mode'
- Gradle 使用Jetty插件启动web项目时出现"java.lang.OutOfMemoryError: PermGen space"解决方法