shesmer 01/05/04 04:25:53
Modified: src/java/org/apache/jetspeed/modules/screens Tag:
portlet_api Home.java
Log:
portlet api 2 implementation
Revision Changes Path
No revision
No revision
1.14.2.1 +179 -29
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/screens/Home.java
Index: Home.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/screens/Home.java,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -r1.14 -r1.14.2.1
--- Home.java 2001/04/25 00:10:10 1.14
+++ Home.java 2001/05/04 11:25:49 1.14.2.1
@@ -68,7 +68,7 @@
import org.apache.jetspeed.daemon.*;
import org.apache.jetspeed.portal.*;
import org.apache.jetspeed.portal.factory.*;
-//import org.apache.jetspeed.util.*;
+import org.apache.jetspeed.util.*;
import org.apache.jetspeed.profiler.*;
import org.apache.jetspeed.services.profiler.ProfileManager;
@@ -85,19 +85,18 @@
//Turbine support
import org.apache.turbine.modules.*;
-//import org.apache.turbine.util.*;
-import org.apache.turbine.util.RunData;
-import org.apache.turbine.util.StringUtils;
-import org.apache.turbine.util.Log;
+import org.apache.turbine.util.*;
import org.apache.jetspeed.services.resources.JetspeedResources;
+import org.apache.jetspeed.portletcontainer.invoker.*;
+import org.apache.jetspeed.portletcontainer.information.*;
+
/**
The Jetspeed home page
@author <a href="mailto:[EMAIL PROTECTED]">Kevin A. Burton</a>
-@author <a href="mailto:[EMAIL PROTECTED]">Tom Adams</a>
-@version $Id: Home.java,v 1.14 2001/04/25 00:10:10 taylor Exp $
+@version $Id: Home.java,v 1.14.2.1 2001/05/04 11:25:49 shesmer Exp $
*/
public class Home extends BaseJetspeedScreen {
@@ -105,17 +104,16 @@
Portlet pathinfo name
*/
public static final String PORTLET = "portlet";
-
+
/**
Layout pathinfo name
*/
public static final String LAYOUT = "layout";
/**
- Default control to be used for maximized portlet display
+ Control to be used for maximized portlet display
*/
- public static final String DEFAULT_MAXIMIZED_CONTROL_NAME =
- "org.apache.jetspeed.portal.controls.FullScreenControl";
+ public static final String MAX_CONTROL_NAME =
"org.apache.jetspeed.portal.controls.FullScreenControl";
/**
Build the output from the Home screen
@@ -123,6 +121,56 @@
public ConcreteElement doBuild( RunData rundata ) {
CapabilityMap cm = CapabilityMapFactory.getCapabilityMap( rundata );
+
+ // SHESMER-BEGIN
+ // temporary code here. has to be done better with Raphaels layout system
+ // save last window type and subtype to generate a window event
+ String pid = rundata.getParameters().getString( PORTLET );
+ String piid = rundata.getParameters().getString( "piid" );
+ int type = URILookup.getURIType(pid, rundata);
+ int subtype = URILookup.getURISubType(pid, rundata);
+ HttpSession session = rundata.getSession();
+ Integer lasttype = (Integer)session.getAttribute("LastPortletType");
+ Integer lastsubtype = (Integer)session.getAttribute("LastPortletSubtype");
+ if ((lasttype!=null) && (lastsubtype!=null)) {
+ Integer eventId = null;
+ if ((lastsubtype.intValue()==URILookup.SUBTYPE_MAXIMIZE) &&
+ (subtype==URILookup.SUBTYPE_NONE)) {
+ eventId = new
Integer(org.apache.jetspeed.portlet.event.WindowEvent.WINDOW_RESTORED);
+ pid = (String)session.getAttribute("LastPortletId");
+ piid = (String)session.getAttribute("LastPortletIId");
+ }
+ else if ((lastsubtype.intValue()==URILookup.SUBTYPE_NONE) &&
+ (subtype==URILookup.SUBTYPE_MAXIMIZE)) {
+ eventId = new
Integer(org.apache.jetspeed.portlet.event.WindowEvent.WINDOW_MAXIMIZED);
+ }
+ if ((eventId!=null) && (pid!=null) && (piid!=null)) {
+ PortalInformationProvider provider = new
PortalInformationProviderImpl( rundata );
+ PortletInvoker invoker = PortletInvokerImpl.getInstance();
+ Hashtable parameters = new Hashtable();
+ parameters.put("pid",pid);
+ parameters.put("piid",piid);
+ parameters.put("windowEventId",eventId);
+ parameters.put("provider",provider);
+ parameters.put("request",rundata.getRequest());
+ try {
+ invoker.perform( PortletInvoker.Event.WINDOW_EVENT,
+ parameters );
+ }
+ catch (org.apache.jetspeed.portlet.PortletException e) {
+ String message = "Home Screen: Could not fire a window event : "
+ + e.getMessage();
+ Log.error( message, e );
+ }
+ }
+ }
+ session.setAttribute("LastPortletType",new Integer(type));
+ session.setAttribute("LastPortletSubtype",new Integer(subtype));
+ if ((pid!=null) && (piid!=null)) {
+ session.setAttribute("LastPortletId",pid);
+ session.setAttribute("LastPortletIId",piid);
+ }
+ // SHESMER-END
/* From now on, each request for a default(-user) page is passed to method
'getPSMLContent()'.
For each request-type, there is a .psml file, which describes the
content/style
@@ -130,7 +178,10 @@
certain portlet, method getContent() is invoked. Both methods return the
actual content
according to the portlet - control - controller structure, provided by
Jetspeed (S.A.) */
- if ( rundata.getParameters().getString( PORTLET ) != null )
+// old source
+// if ( rundata.getParameters().getString( PORTLET ) != null )
+ if ( URILookup.getURISubType(rundata.getParameters().getString( PORTLET ),
+ rundata) == URILookup.SUBTYPE_MAXIMIZE )
{
return this.getContent( rundata );
}
@@ -139,6 +190,9 @@
return getPSMLContent( rundata, cm );
}
+ // SHESMER-TODO
+ // endPage cannot be called in the current layout-system, because of ECS
+
}
/**
@@ -151,16 +205,31 @@
//the set here should be one control and one portlet
PortletSet set = this.getPortletSet( rundata );
+
+ // SHESMER-BEGIN
+ PortalInformationProvider provider =
+ new PortalInformationProviderImpl(rundata);
+ PortletInvoker invoker =
+ PortletInvokerImpl.getInstance();
+ Hashtable portletsHashtable = getPortletsHashtable( set );
+ try {
+ invoker.beginPage( portletsHashtable, rundata.getRequest(),
provider );
+ }
+ catch (org.apache.jetspeed.portlet.PortletException e) {
+ String message = "Edit: Could not call beginPage: " +
e.getMessage();
+ Log.error( message, e );
+ }
+ // SHESMER-END
return set.getContent( rundata );
-
+
} catch (PortletException e) {
Log.error( e );
return null;
}
}
-
+
/**
Get the desired content from PSML
@@ -181,25 +250,43 @@
Profiler profiler = ProfilerFactory.getProfiler();
Portlet portlet = PortletSetFactory.getInstance(
profiler.getResourceURL( rundata ) )
.getPortletSet( rundata );
+
+ // SHESMER-BEGIN
+
org.apache.jetspeed.portletcontainer.information.PortalInformationProvider provider =
+ new
org.apache.jetspeed.portletcontainer.information.PortalInformationProviderImpl(rundata);
+ org.apache.jetspeed.portletcontainer.invoker.PortletInvoker invoker
=
+
org.apache.jetspeed.portletcontainer.invoker.PortletInvokerImpl.getInstance();
+ Hashtable portletsHashtable = getPortletsHashtable(
(PortletSet)portlet );
+ invoker.beginPage( portletsHashtable, rundata.getRequest(),
provider );
+ // SHESMER-END
+
root.addElement( portlet.getContent( rundata ) );
}
else
{
Profile profile = ProfileManager.getProfile( rundata, cm );
Portlet portlet = profile.getRootSet(rundata);
+
+ // SHESMER-BEGIN
+
org.apache.jetspeed.portletcontainer.information.PortalInformationProvider provider =
+ new
org.apache.jetspeed.portletcontainer.information.PortalInformationProviderImpl(rundata);
+ org.apache.jetspeed.portletcontainer.invoker.PortletInvoker invoker
=
+
org.apache.jetspeed.portletcontainer.invoker.PortletInvokerImpl.getInstance();
+ Hashtable portletsHashtable = getPortletsHashtable(
(PortletSet)portlet );
+ invoker.beginPage( portletsHashtable, rundata.getRequest(),
provider );
+ // SHESMER-END
+
root.addElement( portlet.getContent( rundata ) );
}
} catch ( Throwable t ) {
Log.error( t );
- root.addElement(new H2("Error Generating Jetspeed Screen:"));
- root.addElement(new H3(t.toString()));
- rundata.setMessage(t.toString());
- rundata.setStackTrace(StringUtils.stackTrace(t), t);
+
ByteArrayOutputStream ostr = new ByteArrayOutputStream();
t.printStackTrace( new PrintWriter(ostr,true) );
root.addElement( ostr.toString() );
+
}
// time in millis, sugested by Thomas Schaeck ([EMAIL PROTECTED])
@@ -230,6 +317,7 @@
*/
private PortletSet getPortletSet( RunData rundata ) throws PortletException {
+/* SHESMER-AGGR-API2
PortletSet ps = new PortletSet();
PortletEntry entry = PortletURIManager.getEntry( rundata.getParameters() );
@@ -237,25 +325,87 @@
String message = "Could not determine entry.";
throw new PortletException( message );
}
-
+
Portlet portlet = PortletFactory.getPortlet( entry );
-
- // get the controller out of the jetspeed resources properties file
- String controllerClassname = JetspeedResources.getString(
- JetspeedResources.PORTLETCONTROL_MAXIMIZED_CLASSNAME_KEY,
- DEFAULT_MAXIMIZED_CONTROL_NAME);
-
- /* Set the controller type explicitly.*/
- PortletControl control =
- PortletControlFactory.getPortletControl( controllerClassname, portlet );
+
+ // Set the controller type explicitely.
+ PortletControl control = PortletControlFactory.getPortletControl(
MAX_CONTROL_NAME, portlet );
control.setWidth( "100%" );
+
+ ps.addPortlet( control );
+
+*/
+ PortletSet ps = new PortletSet();
+
+ org.apache.jetspeed.xml.api.portletmarkup.Entry entry = null;
- ps.addPortlet( control );
+ Profiler profiler = ProfilerFactory.getProfiler();
+ PortletSetFactory factory = PortletSetFactory.getInstance(
profiler.getResourceURL( rundata ) );
+ org.apache.jetspeed.xml.api.portletmarkup.Portlets portlets =
factory.getPortlets();
+ entry = findEntry(portlets,rundata.getParameters().getString("portlet"));
+
+ if (entry!=null) {
+ Portlet portlet = new org.apache.jetspeed.portal.PortletPlaceholder(
entry, rundata );
+
+ PortletControl control = PortletControlFactory.getPortletControl(
MAX_CONTROL_NAME, portlet );
+
+ control.setWidth( "100%" );
+
+ ps.addPortlet( control );
+ }
return ps;
+
+ }
+
+ // SHESMER-AGGR-API2-BEGIN
+ private org.apache.jetspeed.xml.api.portletmarkup.Entry
+ findEntry(org.apache.jetspeed.xml.api.portletmarkup.Portlets portlets,
+ String portletName)
+ {
+ org.apache.jetspeed.xml.api.portletmarkup.Entry entry = null;
+ Enumeration allPortlets = portlets.enumeratePortlets();
+ while (allPortlets.hasMoreElements()) {
+ org.apache.jetspeed.xml.api.portletmarkup.Portlets p =
+
(org.apache.jetspeed.xml.api.portletmarkup.Portlets)allPortlets.nextElement();
+ entry = findEntry(p,portletName);
+ if (entry!=null) return entry;
+ }
+ Enumeration allEntries = portlets.enumerateEntry();
+ while (allEntries.hasMoreElements()) {
+ entry =
(org.apache.jetspeed.xml.api.portletmarkup.Entry)allEntries.nextElement();
+ if (entry.getParent().equals(portletName)) {
+ return entry;
+ }
+ }
+ return null;
+ }
+
+ private Hashtable fillHashtable(PortletSet portletset, Hashtable
portletsHashtable)
+ {
+ Enumeration allPortlets = portletset.getPortlets();
+ while (allPortlets.hasMoreElements()) {
+ Portlet p = (Portlet)allPortlets.nextElement();
+ if (p instanceof PortletSet) {
+ portletsHashtable = fillHashtable((PortletSet)p,portletsHashtable);
+ }
+ else {
+ org.apache.jetspeed.portal.PortletPlaceholder pp =
+ (org.apache.jetspeed.portal.PortletPlaceholder)p;
+ portletsHashtable.put(pp.getPiid(),pp.getName());
+ }
+ }
+ return portletsHashtable;
+ }
+ private Hashtable getPortletsHashtable(PortletSet portlets)
+ {
+ Hashtable portletsHashtable = new Hashtable();
+ portletsHashtable = fillHashtable(portlets,portletsHashtable);
+ return portletsHashtable;
}
+ // SHESMER-END
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]