您的位置:首页 > 运维架构

GXT之旅:第八章:Portal&Drag-Drop——项目使用Portal重构(3)

2012-04-23 15:49 585 查看
按照上一节的思路,我们来继续重构feed和item区域

新建两个恒量,在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();
	}
}


最后,运行效果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: