From d53e127348f7759db5422512f0c27786134ab313 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Tue, 17 Feb 2009 13:27:31 +0000 Subject: Fixed build problem (missing beancontainer.jar) Updated portlet configuration generator to include actual demos and to use sampler widgetset Re-added PortletDemo which demonstrates portal integration svn changeset:6874/svn branch:trunk --- src/com/itmill/toolkit/demo/PortletDemo.java | 152 +++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 src/com/itmill/toolkit/demo/PortletDemo.java diff --git a/src/com/itmill/toolkit/demo/PortletDemo.java b/src/com/itmill/toolkit/demo/PortletDemo.java new file mode 100644 index 0000000000..e4089612f3 --- /dev/null +++ b/src/com/itmill/toolkit/demo/PortletDemo.java @@ -0,0 +1,152 @@ +/** + * + */ +package com.itmill.toolkit.demo; + +import java.util.Iterator; +import java.util.Map; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletMode; +import javax.portlet.PortletRequest; +import javax.portlet.PortletURL; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import javax.portlet.WindowState; + +import com.itmill.toolkit.Application; +import com.itmill.toolkit.terminal.ExternalResource; +import com.itmill.toolkit.terminal.gwt.server.PortletApplicationContext; +import com.itmill.toolkit.terminal.gwt.server.PortletApplicationContext.PortletListener; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Link; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Window; +import com.itmill.toolkit.ui.Window.Notification; + +/** + * @author marc + * + */ +public class PortletDemo extends Application { + + Window main = new Window(); + TextField tf = new TextField("Some value"); + Label userInfo = new Label(); + Link portletEdit = new Link(); + Link portletMax = new Link(); + Link someAction = null; + + public void init() { + main = new Window(); + setMainWindow(main); + + userInfo.setCaption("User info"); + userInfo.setContentMode(Label.CONTENT_PREFORMATTED); + main.addComponent(userInfo); + + tf.setEnabled(false); + tf.setImmediate(true); + main.addComponent(tf); + + portletEdit.setEnabled(false); + main.addComponent(portletEdit); + portletMax.setEnabled(false); + main.addComponent(portletMax); + + if (getContext() instanceof PortletApplicationContext) { + PortletApplicationContext ctx = (PortletApplicationContext) getContext(); + ctx.addPortletListener(this, new DemoPortletListener()); + } else { + getMainWindow().showNotification("Not inited via Portal!", + Notification.TYPE_ERROR_MESSAGE); + } + + } + + private class DemoPortletListener implements PortletListener { + + public void handleActionRequest(ActionRequest request, + ActionResponse response) { + + main.addComponent(new Label("Action received")); + + } + + public void handleRenderRequest(RenderRequest request, + RenderResponse response) { + // Portlet up-and-running, enable stuff + portletEdit.setEnabled(true); + portletMax.setEnabled(true); + + // Editable if we're in editmode + tf.setEnabled((request.getPortletMode() == PortletMode.EDIT)); + + // Show notification about current mode and state + getMainWindow().showNotification( + "Portlet status", + "Mode: " + request.getPortletMode() + " State: " + + request.getWindowState(), + Notification.TYPE_WARNING_MESSAGE); + + // Display current user info + Map uinfo = (Map) request.getAttribute(PortletRequest.USER_INFO); + if (uinfo != null) { + String s = ""; + for (Iterator it = uinfo.keySet().iterator(); it.hasNext();) { + Object key = it.next(); + Object val = uinfo.get(key); + s += key + ": " + val + "\n"; + } + if (request.isUserInRole("administrator")) { + s += "(administrator)"; + } + userInfo.setValue(s); + } else { + userInfo.setValue("-"); + } + + // Create Edit/Done link (actionUrl) + PortletURL url = response.createActionURL(); + try { + url + .setPortletMode((request.getPortletMode() == PortletMode.VIEW ? PortletMode.EDIT + : PortletMode.VIEW)); + portletEdit.setResource(new ExternalResource(url.toString())); + portletEdit + .setCaption((request.getPortletMode() == PortletMode.VIEW ? "Edit" + : "Done")); + } catch (Exception e) { + portletEdit.setEnabled(false); + } + // Create Maximize/Normal link (actionUrl) + url = response.createActionURL(); + try { + url + .setWindowState((request.getWindowState() == WindowState.NORMAL ? WindowState.MAXIMIZED + : WindowState.NORMAL)); + portletMax.setResource(new ExternalResource(url.toString())); + portletMax + .setCaption((request.getWindowState() == WindowState.NORMAL ? "Maximize" + : "Back to normal")); + } catch (Exception e) { + portletMax.setEnabled(false); + } + + if (someAction == null) { + url = response.createActionURL(); + try { + someAction = new Link("An action", new ExternalResource(url + .toString())); + main.addComponent(someAction); + } catch (Exception e) { + // Oops + System.err.println("Could not create someAction: " + e); + } + + } + + } + } +} -- cgit v1.2.3