. First cut of the Externalised UI Actions

- XML Config for UI actions: web-client-config-actions.xml
   - commented examples are included in the config, I will write up a Wiki page to document it properly :)
 - Named groups of actions can also be reused across screens (where as previously individual ActionLink components had to be coded up for each screen by hand in the JSP)
 - Individual Actions can be reused across action groups or defined against a specific action group
 - UI actions for Browse (Create, More, Document and Space actions), Document and Space details pages now externalised into config
 - Refactoring of other JSPs to use externalised config - big reduction in hand coded JSF tags and code duplication between pages
. Document Details and Space Details pages now have Actions panel on the right hand side instead of an Actions drop-down menu
. Several unreported minor bugs fixed where actions conditions or listeners were inconsistent between browse and details pages

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2553 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2006-03-17 18:07:47 +00:00
parent dd70d72198
commit 5d3872279f
37 changed files with 2013 additions and 500 deletions

View File

@@ -17,6 +17,11 @@
*/
package org.alfresco.web.app;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
@@ -33,30 +38,67 @@ public class DebugPhaseListener implements PhaseListener
{
private static final Log logger = LogFactory.getLog(DebugPhaseListener.class);
public int indent = 0;
public static final String INDENT = " ";
/**
* @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
*/
public void afterPhase(PhaseEvent event)
{
if (logger.isDebugEnabled())
logger.debug("********** Exiting phase: " + event.getPhaseId().toString());
{
printComponentTree(FacesContext.getCurrentInstance().getViewRoot());
}
}
/**
* @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
*/
public void beforePhase(PhaseEvent event)
{
if (logger.isDebugEnabled())
logger.debug("********** Entering phase: " + event.getPhaseId().toString());
}
/**
* @see javax.faces.event.PhaseListener#getPhaseId()
*/
public PhaseId getPhaseId()
{
return PhaseId.ANY_PHASE;
return PhaseId.RENDER_RESPONSE;
}
public void printComponentTree(UIComponent comp){
printComponentInfo(comp);
List complist = comp.getChildren();
if (complist.size()>0)
indent++;
for (int i = 0; i < complist.size(); i++) {
UIComponent uicom = (UIComponent) complist.get(i);
printComponentTree(uicom);
if (i+1 == complist.size())
indent--;
}
}
public void printComponentInfo(UIComponent comp){
if (comp.getId() == null){
logger.debug("UIViewRoot" + " " + "(" + comp.getClass().getName() + ")");
} else {
logger.debug(getIndent() + "|");
logger.debug(getIndent() + comp.getId() + " " + "(" + comp.getClass().getName() + ")");
}
}
public String getIndent()
{
String indent = "";
for (int i=0; i<this.indent; i++)
{
indent += INDENT;
}
return indent;
}
}