com.ibm.wps.portlets.menu
Class XMIMenuTreePortlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by com.ibm.wps.pe.pc.legacy.cache.CacheablePortlet
              extended by org.apache.jetspeed.portlet.Portlet
                  extended by org.apache.jetspeed.portlet.PortletAdapter
                      extended by com.ibm.wps.portlets.menu.XMIMenuTreePortlet
All Implemented Interfaces:
com.ibm.websphere.servlet.cache.CacheableServlet, MenuProvider, java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig, org.apache.jetspeed.portlet.PortletSessionListener

Deprecated. since 6.0. Support of the IBM portlet API may be removed in a future release of WebSphere Portal. Use of the Java Portlet API (javax.portlet) is recommended instead.

public class XMIMenuTreePortlet
extends org.apache.jetspeed.portlet.PortletAdapter
implements MenuProvider

XMIMenuTreePortlet is a convenience implementation of a portlet that exposes a static portlet menu based on the content of an XMI file.

The XMIMenuTreePortlet is a default implementation for the Portlet interface. If a portlet uses a static XMI tree, it is recommended that it derives from XMIMenuTreePortlet. The tree structure is completely defined in an XML file, e.g., menu-tree.xml. In the deployment descriptor portlet.xml, the configuration parameter XMIFilePath for the concrete portlet specifies the full path of this XML file relative to the directory <Portlet_HOME>/war. The method getMenu(com.ibm.wps.portlet.menu.MenuContext) does not have to be implemented any more.

The following example shows a section of portlet.xml including the configuration parameter for XMIFilePath.

 <concrete-portlet href="#Portlet_1">
 <portlet-name> ... </portlet-name>
 
     <config-param>
         <param-name>XMIFilePath</param-name>
         <param-value>menu-tree.xml</param-value>
     </config-param>
 
 </concrete-portlet>
 

The next example shows how menu-tree.xml can be implemented to create a menu tree with two nodes and two subnodes of the first node. Title and description are set in two different locales.

Code of menu-tree.xml:

 <!DOCTYPE menu-tree PUBLIC "-//IBM//DTD Portlet Menu 1.0//EN" "menu-tree.dtd">
 <!-- root node -->
 <menu-tree id="id0">
     <!-- root node -->
     <menu-node id="rootId">
         <display-info>
             <locale>en</locale>
             <title>XMI Test Portlet</title>
             <description>XMI Tree Description</description>
         </display-info>
         <display-info>
             <locale>fr</locale>
             <title>XMI Test Portlet</title>
             <description>XMI Tree Description</description>
         </display-info>
         <!-- node 1 -->
         <menu-node id="id1">
             <display-info>
                 <locale>en</locale>
                 <title>Node 1</title>
                 <description>Node 1 Description</description>
             </display-info>
             <display-info>
                 <locale>fr</locale>
                 <title>Noeud 1</title>
                 <description>Noeud 1 Description</description>
             </display-info>
             <action-name>Node1Action</action-name>
             <param id="n1-pid1">
                 <param-name>Param1Name</param-name>
                 <param-value>Node1Param1Value</param-value>
             </param>
             <param id="n1-pid2">
                 <param-name>Param2Name</param-name>
                 <param-value>Node1Param2Value</param-value>
             </param>
             <!-- node 1.1 -->
             <menu-node id="id1_1">
                 <display-info>
                     <locale>en</locale>
                     <title>Node 1.1</title>
                     <description>Node 1.1 Description</description>
                 </display-info>
             </menu-node> 
             <!-- node 1.2 -->
             <menu-node id="id1_2">
                 <display-info>
                     <locale>en</locale>
                     <title>Node 1.2</title>
                     <description>Node 1.2 Description</description>
                 </display-info>
             </menu-node>
         </menu-node>
         <!-- node 2 -->
         <menu-node id="id2">
             <display-info>
                 <locale>en</locale>
                 <title>Node 2</title>
                 <description>Node 2 Description</description>
             </display-info>
             <display-info>
                 <locale>fr</locale>
                 <title>Noeud 2</title>
                 <description>Noeud 2 Description</description>
             </display-info>
             <action-name>Node2Action</action-name>
             <param id="n2-pid1">
                 <param-name>Param1Name</param-name>
                 <param-value>Node2Param1Value</param-value>
             </param>
             <param id="n2-pid2">
                 <param-name>Param2Name</param-name>
                 <param-value>Node2Param2Value</param-value>
             </param>
         </menu-node> 
     </menu-node>
 </menu-tree>
 

Sample portlet source code:

 import java.io.*;
 import org.apache.jetspeed.portlet.*;
 import org.apache.jetspeed.portlet.event.*;
 import com.ibm.wps.portlet.menu.*;
 import com.ibm.wps.portlets.menu.*;
 
 public class XMITestPortlet extends XMIMenuTreePortlet implements MenuProvider, ActionListener
 {
     public void doView(PortletRequest request, PortletResponse response)
     throws PortletException, IOException
     {
         // Invoke the JSP to render
         getPortletConfig().getContext().include("/jsp/View.jsp", request, response);
     }
 
     public void actionPerformed(ActionEvent event) throws PortletException
     {
         if (event != null)
         {
             String actionString = event.getActionString();
 
             PortletRequest request = event.getRequest();
 
             if (actionString != null)
             {
                 request.setAttribute("ActionString", actionString);
             }
         }
     }
 }
 

with /jsp/View.jsp:

 <%@ page contentType="text/html"%>
 <H3>Test of XMIMenuTree</H3>
 <UL>
  <LI>Expand root node and <CITE>Node 1</CITE>.<BR><BR>
  </LI>
  <LI>Click <CITE>Node 1</CITE> and <CITE>Node 2</CITE>. Check if action string and request parameters are displayed.
      <TABLE BORDER="0">
      <TR>
          <TD>Action:</TD>
          <TD><%=request.getAttribute("ActionString")%></TD>
      </TR><TR>
          <TD>Param1:</TD>
          <TD><%=request.getParameter("Param1Name")%></TD>
      </TR><TR>
          <TD>Param2:</TD>
          <TD><%=request.getParameter("Param2Name")%></TD>
      </TR>
      </TABLE>
      <BR>
  </LI>
 </UL>
 

Since:
5.0
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.jetspeed.portlet.Portlet
org.apache.jetspeed.portlet.Portlet.Mode, org.apache.jetspeed.portlet.Portlet.ModeModifier
 
Constructor Summary
protected XMIMenuTreePortlet()
          Deprecated. Constructor.
 
Method Summary
 MenuTree getMenu(MenuContext menuContext)
          Deprecated. Returns the menu tree containing the complete portlet menus configured in an XML file.
 
Methods inherited from class org.apache.jetspeed.portlet.PortletAdapter
destroy, destroyConcrete, doConfigure, doEdit, doHelp, doView, getLastModified, getPortletConfig, getPortletLog, getVariable, init, initConcrete, login, logout, removeVariable, service, setVariable
 
Methods inherited from class org.apache.jetspeed.portlet.Portlet
destroy, doGet, doPost, doPut, getId, getInitParameter, getInitParameterNames, getLastModified, getPortletSettings, getServletContext, getServletInfo, init, service
 
Methods inherited from class com.ibm.wps.pe.pc.legacy.cache.CacheablePortlet
getSharingPolicy, service
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doTrace
 
Methods inherited from class javax.servlet.GenericServlet
getServletConfig, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMIMenuTreePortlet

protected XMIMenuTreePortlet()
Deprecated. 
Constructor.

Method Detail

getMenu

public MenuTree getMenu(MenuContext menuContext)
                 throws org.apache.jetspeed.portlet.PortletException
Deprecated. 
Returns the menu tree containing the complete portlet menus configured in an XML file.

Specified by:
getMenu in interface MenuProvider
Parameters:
menuContext - contains the current request and response ID
Returns:
the complete menu tree
Throws:
org.apache.jetspeed.portlet.PortletException - if XML file or service not found or unavailable or if XMIFilePath not specified
See Also:
MenuProvider