From 8cd2a6871784efa19be39f26deab2c69da93d0ec Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Wed, 10 May 2006 11:33:02 +0000 Subject: [PATCH] Added ability to pass parameters to wizards and dialogs git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2807 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/bean/actions/BaseActionWizard.java | 4 +-- .../web/bean/content/AddContentDialog.java | 7 +++-- .../web/bean/content/BaseContentWizard.java | 4 +-- .../web/bean/content/CreateContentWizard.java | 5 ++-- .../content/EditContentPropertiesDialog.java | 4 +-- .../web/bean/dialog/BaseDialogBean.java | 13 ++++++++- .../web/bean/dialog/DialogManager.java | 29 +++++++++++++++++-- .../alfresco/web/bean/dialog/IDialogBean.java | 6 +++- .../web/bean/rules/CreateRuleWizard.java | 4 +-- .../web/bean/rules/EditRuleWizard.java | 4 +-- .../web/bean/spaces/CreateSpaceWizard.java | 4 +-- .../web/bean/spaces/EditSpaceDialog.java | 4 +-- .../web/bean/wizard/WizardManager.java | 26 ++++++++++++++++- 13 files changed, 90 insertions(+), 24 deletions(-) diff --git a/source/java/org/alfresco/web/bean/actions/BaseActionWizard.java b/source/java/org/alfresco/web/bean/actions/BaseActionWizard.java index 7b123dbeec..3154896bbe 100644 --- a/source/java/org/alfresco/web/bean/actions/BaseActionWizard.java +++ b/source/java/org/alfresco/web/bean/actions/BaseActionWizard.java @@ -131,9 +131,9 @@ public abstract class BaseActionWizard extends BaseWizardBean // Wizard implementation @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); this.action = null; this.users = null; diff --git a/source/java/org/alfresco/web/bean/content/AddContentDialog.java b/source/java/org/alfresco/web/bean/content/AddContentDialog.java index 4b0af8bacc..9c696abc3b 100644 --- a/source/java/org/alfresco/web/bean/content/AddContentDialog.java +++ b/source/java/org/alfresco/web/bean/content/AddContentDialog.java @@ -2,6 +2,7 @@ package org.alfresco.web.bean.content; import java.io.File; import java.text.MessageFormat; +import java.util.Map; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; @@ -35,9 +36,9 @@ public class AddContentDialog extends BaseContentWizard } @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); clearUpload(); } @@ -141,7 +142,7 @@ public class AddContentDialog extends BaseContentWizard // approach can not be used in the current dialog framework. Until // we have a pure JSF upload solution we need this initialisation - init(); + init(null); } /** diff --git a/source/java/org/alfresco/web/bean/content/BaseContentWizard.java b/source/java/org/alfresco/web/bean/content/BaseContentWizard.java index f44dc5e165..d9ea580c02 100644 --- a/source/java/org/alfresco/web/bean/content/BaseContentWizard.java +++ b/source/java/org/alfresco/web/bean/content/BaseContentWizard.java @@ -59,9 +59,9 @@ public abstract class BaseContentWizard extends BaseWizardBean // Wizard implementation @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); this.fileName = null; this.author = null; diff --git a/source/java/org/alfresco/web/bean/content/CreateContentWizard.java b/source/java/org/alfresco/web/bean/content/CreateContentWizard.java index 0e874b5787..881facb299 100644 --- a/source/java/org/alfresco/web/bean/content/CreateContentWizard.java +++ b/source/java/org/alfresco/web/bean/content/CreateContentWizard.java @@ -2,6 +2,7 @@ package org.alfresco.web.bean.content; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.ResourceBundle; import javax.faces.context.FacesContext; @@ -47,9 +48,9 @@ public class CreateContentWizard extends BaseContentWizard } @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); this.content = null; this.inlineEdit = true; diff --git a/source/java/org/alfresco/web/bean/content/EditContentPropertiesDialog.java b/source/java/org/alfresco/web/bean/content/EditContentPropertiesDialog.java index d4cb19da64..297c371363 100644 --- a/source/java/org/alfresco/web/bean/content/EditContentPropertiesDialog.java +++ b/source/java/org/alfresco/web/bean/content/EditContentPropertiesDialog.java @@ -38,9 +38,9 @@ public class EditContentPropertiesDialog extends BaseDialogBean // Dialog implementation @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); // setup the editable node this.editableNode = new Node(this.browseBean.getDocument().getNodeRef()); diff --git a/source/java/org/alfresco/web/bean/dialog/BaseDialogBean.java b/source/java/org/alfresco/web/bean/dialog/BaseDialogBean.java index dae1f1aa21..2bc9cd7db1 100644 --- a/source/java/org/alfresco/web/bean/dialog/BaseDialogBean.java +++ b/source/java/org/alfresco/web/bean/dialog/BaseDialogBean.java @@ -1,6 +1,8 @@ package org.alfresco.web.bean.dialog; import java.text.MessageFormat; +import java.util.HashMap; +import java.util.Map; import javax.faces.context.FacesContext; import javax.transaction.UserTransaction; @@ -25,6 +27,7 @@ import org.alfresco.web.ui.common.Utils; */ public abstract class BaseDialogBean implements IDialogBean { + protected Map parameters; protected boolean isFinished = false; // services common to most dialogs @@ -36,11 +39,19 @@ public abstract class BaseDialogBean implements IDialogBean protected DictionaryService dictionaryService; protected NamespaceService namespaceService; - public void init() + public void init(Map parameters) { // tell any beans to update themselves so the UI gets refreshed UIContextService.getInstance(FacesContext.getCurrentInstance()).notifyBeans(); + // store the parameters, create empty map if necessary + this.parameters = parameters; + + if (this.parameters == null) + { + this.parameters = new HashMap(); + } + // reset the isFinished flag this.isFinished = false; } diff --git a/source/java/org/alfresco/web/bean/dialog/DialogManager.java b/source/java/org/alfresco/web/bean/dialog/DialogManager.java index d719dda39c..b28ebe2f9c 100644 --- a/source/java/org/alfresco/web/bean/dialog/DialogManager.java +++ b/source/java/org/alfresco/web/bean/dialog/DialogManager.java @@ -1,11 +1,16 @@ package org.alfresco.web.bean.dialog; +import java.util.Map; + +import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; +import javax.faces.event.ActionEvent; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.config.DialogsConfigElement.DialogConfig; +import org.alfresco.web.ui.common.component.UIActionLink; /** * Bean that manages the dialog framework @@ -14,8 +19,25 @@ import org.alfresco.web.config.DialogsConfigElement.DialogConfig; */ public class DialogManager { - protected DialogConfig currentDialogConfig; protected IDialogBean currentDialog; + protected DialogConfig currentDialogConfig; + protected Map currentDialogParams; + + /** + * Action handler used to setup parameters for the dialog being launched + * + * @param event The event containing the parameters + */ + public void setupParameters(ActionEvent event) + { + // check the component the event come from was an action link + UIComponent component = event.getComponent(); + if (component instanceof UIActionLink) + { + // store the parameters + this.currentDialogParams = ((UIActionLink)component).getParameterMap(); + } + } /** * Sets the current dialog @@ -36,7 +58,10 @@ public class DialogManager } // initialise the managed bean - this.currentDialog.init(); + this.currentDialog.init(this.currentDialogParams); + + // reset the current parameters so subsequent dialogs don't get them + this.currentDialogParams = null; } /** diff --git a/source/java/org/alfresco/web/bean/dialog/IDialogBean.java b/source/java/org/alfresco/web/bean/dialog/IDialogBean.java index 7d6345b157..354129db01 100644 --- a/source/java/org/alfresco/web/bean/dialog/IDialogBean.java +++ b/source/java/org/alfresco/web/bean/dialog/IDialogBean.java @@ -1,5 +1,7 @@ package org.alfresco.web.bean.dialog; +import java.util.Map; + /** * Interface that defines the contract for a dialog backing bean * @@ -9,8 +11,10 @@ public interface IDialogBean { /** * Initialises the dialog bean + * + * @param parameters Map of parameters for the dialog */ - public void init(); + public void init(Map parameters); /** * Method handler called when the cancel button of the dialog is pressed diff --git a/source/java/org/alfresco/web/bean/rules/CreateRuleWizard.java b/source/java/org/alfresco/web/bean/rules/CreateRuleWizard.java index 8e57e1a847..ac9478d679 100644 --- a/source/java/org/alfresco/web/bean/rules/CreateRuleWizard.java +++ b/source/java/org/alfresco/web/bean/rules/CreateRuleWizard.java @@ -81,9 +81,9 @@ public class CreateRuleWizard extends BaseActionWizard // Wizard implementation @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); this.title = null; this.description = null; diff --git a/source/java/org/alfresco/web/bean/rules/EditRuleWizard.java b/source/java/org/alfresco/web/bean/rules/EditRuleWizard.java index 3872772cd3..d4286d2961 100644 --- a/source/java/org/alfresco/web/bean/rules/EditRuleWizard.java +++ b/source/java/org/alfresco/web/bean/rules/EditRuleWizard.java @@ -50,9 +50,9 @@ public class EditRuleWizard extends CreateRuleWizard // Wizard implementation @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); // get hold of the current rule details Rule rule = this.rulesBean.getCurrentRule(); diff --git a/source/java/org/alfresco/web/bean/spaces/CreateSpaceWizard.java b/source/java/org/alfresco/web/bean/spaces/CreateSpaceWizard.java index da937ea1f1..fb1590b8ba 100644 --- a/source/java/org/alfresco/web/bean/spaces/CreateSpaceWizard.java +++ b/source/java/org/alfresco/web/bean/spaces/CreateSpaceWizard.java @@ -66,9 +66,9 @@ public class CreateSpaceWizard extends BaseWizardBean /** * Initialises the wizard */ - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); // clear the cached query results if (this.templates != null) diff --git a/source/java/org/alfresco/web/bean/spaces/EditSpaceDialog.java b/source/java/org/alfresco/web/bean/spaces/EditSpaceDialog.java index 8e7ca08cf0..f2e30ea812 100644 --- a/source/java/org/alfresco/web/bean/spaces/EditSpaceDialog.java +++ b/source/java/org/alfresco/web/bean/spaces/EditSpaceDialog.java @@ -35,9 +35,9 @@ public class EditSpaceDialog extends BaseDialogBean protected Node editableNode; @Override - public void init() + public void init(Map parameters) { - super.init(); + super.init(parameters); // setup the space being edited this.editableNode = this.browseBean.getActionSpace(); diff --git a/source/java/org/alfresco/web/bean/wizard/WizardManager.java b/source/java/org/alfresco/web/bean/wizard/WizardManager.java index 5d182bb54d..6a696930fb 100644 --- a/source/java/org/alfresco/web/bean/wizard/WizardManager.java +++ b/source/java/org/alfresco/web/bean/wizard/WizardManager.java @@ -2,9 +2,12 @@ package org.alfresco.web.bean.wizard; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; +import javax.faces.event.ActionEvent; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.web.app.Application; @@ -13,6 +16,7 @@ import org.alfresco.web.config.WizardsConfigElement.ConditionalPageConfig; import org.alfresco.web.config.WizardsConfigElement.PageConfig; import org.alfresco.web.config.WizardsConfigElement.StepConfig; import org.alfresco.web.config.WizardsConfigElement.WizardConfig; +import org.alfresco.web.ui.common.component.UIActionLink; import org.alfresco.web.ui.common.component.UIListItem; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -31,6 +35,23 @@ public class WizardManager protected WizardConfig currentWizardConfig; protected IWizardBean currentWizard; protected List steps; + protected Map currentWizardParams; + + /** + * Action handler used to setup parameters for the wizard being launched + * + * @param event The event containing the parameters + */ + public void setupParameters(ActionEvent event) + { + // check the component the event come from was an action link + UIComponent component = event.getComponent(); + if (component instanceof UIActionLink) + { + // store the parameters + this.currentWizardParams = ((UIActionLink)component).getParameterMap(); + } + } /** * Sets the current wizard @@ -52,7 +73,10 @@ public class WizardManager } // initialise the managed bean - this.currentWizard.init(); + this.currentWizard.init(this.currentWizardParams); + + // reset the current parameters so subsequent wizards don't get them + this.currentWizardParams = null; // get the steps for the wizard this.steps = this.currentWizardConfig.getStepsAsList();