(Portal開発読書ノート)WindowState


WindowStateはPortletウィンドウの状態を表しています
JSR-168仕様では、3つのウィンドウステータスが定義されています(標準、最大化、最小化)

  
  
  
  
  1. public class WindowState 
  2.   public static final WindowState NORMAL = new WindowState("normal"); 
  3.  
  4.   public static final WindowState MAXIMIZED = new WindowState("maximized"); 
  5.  
  6.   public static final WindowState MINIMIZED = new WindowState("minimized"); 
  7.   private String _name; 
  8.  
  9.   public WindowState(String name) 
  10.   { 
  11.     if (name == null) { 
  12.       throw new IllegalArgumentException("WindowState name can not be NULL"); 
  13.     } 
  14.     this._name = name.toLowerCase(Locale.ENGLISH); 
  15.   } 
  16.  
  17.   public String toString() 
  18.   { 
  19.     return this._name; 
  20.   } 
  21.  
  22.   public int hashCode() 
  23.   { 
  24.     return this._name.hashCode(); 
  25.   } 
  26.  
  27.   public boolean equals(Object object) 
  28.   { 
  29.     if (object instanceof WindowState) { 
  30.       return this._name.equals(((WindowState)object)._name); 
  31.     } 
  32.     return false
  33.   } 

最小化するとrenderリクエストは無視され、最大化するとPortletに追加情報が表示されます.
 
-----
 
さまざまなPortal Server(Liferayなど)は、独自の仕様以外の独自のウィンドウステータスを持つことができます.
カスタムウィンドウのステータスを開発する方法:
まずportletでxmlのでこのPorletがサポートするウィンドウの状態を宣言し、複数指定できます

  
  
  
  
  1. <portlet> 
  2. <portlet-name>bookCatalog</portlet-name> 
  3. <portlet-class> 
  4. chapter03.code.listing.base.BookCatalogPortlet</portlet-class> 
  5. <supports> 
  6. <mime-type>text/html</mime-type> 
  7. <window-state>pop_up</window-state> 
  8. ... 
  9. </supports> 
  10. ... 
  11. </portlet> 

そしてportletアプリケーションレベル、すなわちportlet.xmlのすべての要素の外側で、カスタムウィンドウの状態を宣言します.このwindow-stateはPortletアプリケーションが属するPortal Serverでサポートされている必要があります.

  
  
  
  
  1. <portlet-app> 
  2.  
  3. <portlet> 
  4. .. 
  5. </portlet> 
  6.  
  7. <custom-window-state> 
  8. <window-state>pop_up</window-state> 
  9. </custom-window-state> 
  10. ... 
  11. </portlet-app>