实际上,Portlet components并不是那么复杂,大多数的工作,我们在上一节都完成了,Portlet其实只是一个包装。
package com.danielvaughan.rssreader.client.portlets; import com.extjs.gxt.ui.client.widget.custom.Portlet; import com.extjs.gxt.ui.client.widget.layout.FitLayout; public class NavPortlet extends Portlet { public NavPortlet() { setHeading("Navigation"); setLayout(new FitLayout()); setHeight(610); } }
public static final String NAV_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 NavPortlet extends Portlet { public NavPortlet() { setHeading("Navigation"); setLayout(new FitLayout()); setHeight(610); setId(RSSReaderConstants.NAV_PORTLET); } }
public NavPortlet() { setHeading("Navigation"); setLayout(new FitLayout()); setHeight(610); setId(RSSReaderConstants.NAV_PORTLET); NavPanel navPanel = new NavPanel(); navPanel.setHeaderVisible(false); add(navPanel); }
package com.danielvaughan.rssreader.client.portlets; import com.danielvaughan.rssreader.client.RSSReaderConstants; import com.danielvaughan.rssreader.client.components.NavPanel; 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 NavPortlet extends Portlet { public NavPortlet() { setHeading("Navigation"); setLayout(new FitLayout()); setHeight(610); setId(RSSReaderConstants.NAV_PORTLET); NavPanel navPanel = new NavPanel(); navPanel.setHeaderVisible(false); add(navPanel); Dispatcher.forwardEvent(AppEvents.NewPortletCreated , this); } }
@Override protected void handleEvent(AppEvent event) { EventType eventType = event.getType(); if (eventType.equals(AppEvents.NewPortletCreated)) { onNewPortletCreated(event); } } private void onNewPortletCreated(AppEvent event) { final Portlet portlet = (Portlet) event.getData(); if (portlet.getId() == RSSReaderConstants.NAV_PORTLET) { portal.add(portlet, 0); } else { portal.add(portlet, 1); } }
package com.danielvaughan.rssreader.client; import com.danielvaughan.rssreader.client.mvc.controllers.PortalController; 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(); } }