[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