From: Julien V. <vi...@us...> - 2004-08-26 22:17:07
|
User: vietj Date: 04/08/26 15:16:54 Added: core/src/main/org/jboss/nukes/core/invocation ConstrainedWindowStateInterceptor.java CoreRequest.java CoreResponse.java Log: added missing files, my bad Revision Changes Path 1.1 nukes-2/core/src/main/org/jboss/nukes/core/invocation/ConstrainedWindowStateInterceptor.java Index: ConstrainedWindowStateInterceptor.java =================================================================== /*************************************** * * * Nukes: The OpenSource CMS * * * * Distributable under GPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.nukes.core.invocation; import org.jboss.nukes.core.page.PageDescriptor; import org.jboss.nukes.portal.InstanceContext; import org.jboss.nukes.portal.invocation.AttachmentKey; import org.jboss.nukes.portal.invocation.Interceptor; import org.jboss.nukes.portal.invocation.Invocation; import org.jboss.nukes.portal.output.Result; import org.jboss.nukes.portal.user.UserContext; import org.jboss.nukes.portlet.PortletWindow; import org.jboss.nukes.portlet.PortletWindowContext; import org.jboss.nukes.portlet.invocation.PortletInvocationType; import org.jboss.nukes.portlet.invocation.PortletKey; import org.jboss.nukes.portlet.output.PortletActionResult; import javax.portlet.WindowState; import java.util.Iterator; /** * Responsible for updating the window state. * * @author <a href="mailto:ju...@jb...">Julien Viet</a> * @version $Revision: 1.1 $ */ public class ConstrainedWindowStateInterceptor implements Interceptor { public Object invoke(Invocation invocation) { PortletInvocationType pitype = (PortletInvocationType)invocation.getAttachment(PortletKey.PORTLET_INVOCATION_TYPE); CoreRequest preq = (CoreRequest)invocation.getAttachment(AttachmentKey.PORTAL_REQUEST); PortletWindowContext pwc = (PortletWindowContext)invocation.getAttachment(AttachmentKey.WINDOW_CONTEXT); UserContext uctx = (UserContext)invocation.getAttachment(AttachmentKey.USER_CONTEXT); // The target page PageDescriptor pageDescriptor = preq.getPageInfo(); if (pitype == PortletInvocationType.RENDER) { if (pwc.getWindow() == pageDescriptor.getDefaultWindow()) { boolean hasMaximized = false; for (Iterator i = pageDescriptor.getWindows().iterator();i.hasNext();) { PortletWindow opw = (PortletWindow)i.next(); InstanceContext oic = uctx.get(opw.getInstance()); PortletWindowContext opwc = (PortletWindowContext)oic.getWindowContext(opw); if (WindowState.MAXIMIZED.equals(opwc.getWindowState())) { hasMaximized = true; break; } } if (!hasMaximized) { pwc.setWindowState(WindowState.MAXIMIZED); } } return invocation.invokeNext(); } else { // Update the window state WindowState windowState = (WindowState)invocation.getAttachment(PortletKey.PORTLET_WINDOW_STATE); if (windowState != null) { // check auth with window.getInstance().isWindowStateAllowed() pwc.setWindowState(windowState); } // The returned result if any Result result = (Result)invocation.invokeNext(); // The window state may have been changed during the action if (result instanceof PortletActionResult) { PortletActionResult actionResult = (PortletActionResult)result; WindowState newWindowState = actionResult.getWindowState(); if (newWindowState != null) { pwc.setWindowState(newWindowState); } } // In case the new window state is maximized we need to remove other maximized windows if (WindowState.MAXIMIZED.equals(pwc.getWindowState())) { for (Iterator i = pageDescriptor.getWindows().iterator();i.hasNext();) { PortletWindow opw = (PortletWindow)i.next(); InstanceContext oic = uctx.get(opw.getInstance()); PortletWindowContext opwc = (PortletWindowContext)oic.getWindowContext(opw); if (opwc != pwc && WindowState.MAXIMIZED.equals(opwc.getWindowState())) { opwc.setWindowState(WindowState.NORMAL); } } } return result; } } } 1.1 nukes-2/core/src/main/org/jboss/nukes/core/invocation/CoreRequest.java Index: CoreRequest.java =================================================================== /*************************************** * * * Nukes: The OpenSource CMS * * * * Distributable under GPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.nukes.core.invocation; import org.jboss.nukes.core.page.PageDescriptor; import org.jboss.nukes.core.page.PageDescriptorRepository; import org.jboss.nukes.core.CorePortal; import org.jboss.nukes.portal.PortalContainer; import org.jboss.nukes.portal.impl.portal.PortalRequestImpl; import javax.servlet.http.HttpServletRequest; import java.util.Collection; /** * @author <a href="mailto:ju...@jb...">Julien Viet</a> * @version $Revision: 1.1 $ */ public class CoreRequest extends PortalRequestImpl { /** The page for this request. */ private PageDescriptor pageDescriptor; public CoreRequest(HttpServletRequest req, PortalContainer portalContainer) { super(req, portalContainer); PageDescriptorRepository descriptorRepository = ((CorePortal)portal).getPageRepository(); if (target != null) { pageDescriptor = descriptorRepository.getByWindow(target.getName()); } if (pageDescriptor == null) { pageDescriptor = descriptorRepository.getDefault(); } } public PageDescriptor getPageInfo() { return pageDescriptor; } public Collection getWindows() { return pageDescriptor.getWindows(); } } 1.1 nukes-2/core/src/main/org/jboss/nukes/core/invocation/CoreResponse.java Index: CoreResponse.java =================================================================== /*************************************** * * * Nukes: The OpenSource CMS * * * * Distributable under GPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.nukes.core.invocation; import org.jboss.nukes.portal.impl.portal.PortalResponseImpl; import org.jboss.nukes.portal.invocation.portal.PortalRequest; import javax.servlet.http.HttpServletResponse; /** * @author <a href="mailto:ju...@jb...">Julien Viet</a> * @version $Revision: 1.1 $ */ public class CoreResponse extends PortalResponseImpl { public CoreResponse(PortalRequest req, HttpServletResponse resp) { super(req, resp); } } |