[jboss-cvs] jboss-portal/theme/src/main/org/jboss/portal/theme/impl/render ...

Chris Laprun chris.laprun at jboss.com
Wed Jul 19 13:17:41 EDT 2006


  User: claprun 
  Date: 06/07/19 13:17:41

  Modified:    theme/src/main/org/jboss/portal/theme/impl/render 
                        DivDecorationRenderer.java
  Log:
  JBPORTAL-958:
  - Separated concerns: states and modes do not contain ordering logic anymore.
  - Ordering is done in DivDecorationRenderer.
  - Removed Actionable and BaseActionable.
  - Moved constants for action map to WindowResult.
  
  Revision  Changes    Path
  1.14      +66 -3     jboss-portal/theme/src/main/org/jboss/portal/theme/impl/render/DivDecorationRenderer.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DivDecorationRenderer.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-portal/theme/src/main/org/jboss/portal/theme/impl/render/DivDecorationRenderer.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -b -r1.13 -r1.14
  --- DivDecorationRenderer.java	18 Jul 2006 22:29:27 -0000	1.13
  +++ DivDecorationRenderer.java	19 Jul 2006 17:17:41 -0000	1.14
  @@ -22,7 +22,8 @@
   package org.jboss.portal.theme.impl.render;
   
   import org.apache.log4j.Logger;
  -import org.jboss.portal.portlet.Actionable;
  +import org.jboss.portal.portlet.Mode;
  +import org.jboss.portal.portlet.WindowState;
   import org.jboss.portal.theme.page.WindowContext;
   import org.jboss.portal.theme.page.WindowResult;
   import org.jboss.portal.theme.render.DecorationRenderer;
  @@ -30,7 +31,12 @@
   import org.jboss.portal.theme.render.RenderException;
   
   import java.util.Collection;
  +import java.util.Collections;
  +import java.util.Comparator;
  +import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.List;
  +import java.util.Map;
   
   /**
    * Implementation of a decoration renderer, based on div tags.
  @@ -71,8 +77,8 @@
         markup.append("<td class=\"portlet-titlebar-center\">");
         renderTitle(renderContext, result);
         markup.append("<div class=\"portlet-mode-container\">");
  -      renderModeAndStateLinks(renderContext, result, Actionable.MODES_KEY);
  -      renderModeAndStateLinks(renderContext, result, Actionable.WINDOWSTATES_KEY);
  +      renderModeAndStateLinks(renderContext, result, WindowResult.MODES_KEY);
  +      renderModeAndStateLinks(renderContext, result, WindowResult.WINDOWSTATES_KEY);
   
         markup.append("</div></td><td class=\"portlet-titlebar-right\"></td></tr>");
   
  @@ -96,6 +102,13 @@
            return;
         }
   
  +      if (modesOrStates instanceof List)
  +      {
  +         List list = (List)modesOrStates;
  +         Collections.sort(list, COMPARATOR);
  +         modesOrStates = list;
  +      }
  +
         for (Iterator i = modesOrStates.iterator(); i.hasNext();)
         {
            WindowResult.Action action = (WindowResult.Action)i.next();
  @@ -108,4 +121,54 @@
            }
         }
      }
  +
  +   private static final Comparator COMPARATOR = new ModeAndStateComparator();
  +
  +   private static class ModeAndStateComparator implements Comparator
  +   {
  +      private static final Map modeOrState2Index = new HashMap();
  +
  +      static
  +      {
  +         modeOrState2Index.put(Mode.EDIT, new Integer(98));
  +         modeOrState2Index.put(Mode.HELP, new Integer(99));
  +         modeOrState2Index.put(Mode.VIEW, new Integer(100));
  +         modeOrState2Index.put(WindowState.MINIMIZED, new Integer(198));
  +         modeOrState2Index.put(WindowState.NORMAL, new Integer(199));
  +         modeOrState2Index.put(WindowState.MAXIMIZED, new Integer(200));
  +      }
  +
  +      private static int lastModeIndex = 1;
  +      private static int lastStateIndex = 101;
  +
  +      public int compare(Object o1, Object o2)
  +      {
  +         WindowResult.Action action1 = (WindowResult.Action)o1;
  +         WindowResult.Action action2 = (WindowResult.Action)o2;
  +
  +         Object origin1 = action1.getOrigin();
  +         Object origin2 = action2.getOrigin();
  +
  +         if (origin1.equals(origin2))
  +         {
  +            return 0;
  +         }
  +
  +         int index1 = getIndexFor(origin1);
  +         int index2 = getIndexFor(origin2);
  +
  +         return index1 - index2;
  +      }
  +
  +      private int getIndexFor(Object origin)
  +      {
  +         Integer index = (Integer)modeOrState2Index.get(origin);
  +         if (index == null)
  +         {
  +            index = (origin instanceof Mode) ? new Integer(lastModeIndex++) : new Integer(lastStateIndex++);
  +            modeOrState2Index.put(origin, index);
  +         }
  +         return index.intValue();
  +      }
  +   }
   }
  \ No newline at end of file
  
  
  



More information about the jboss-cvs-commits mailing list