mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
New build scripts
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5282 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
233
source/web/scripts/ajax/dojo/src/widget/Wizard.js
Normal file
233
source/web/scripts/ajax/dojo/src/widget/Wizard.js
Normal file
@@ -0,0 +1,233 @@
|
||||
/*
|
||||
Copyright (c) 2004-2006, The Dojo Foundation
|
||||
All Rights Reserved.
|
||||
|
||||
Licensed under the Academic Free License version 2.1 or above OR the
|
||||
modified BSD license. For more information on Dojo licensing, see:
|
||||
|
||||
http://dojotoolkit.org/community/licensing.shtml
|
||||
*/
|
||||
|
||||
dojo.provide("dojo.widget.Wizard");
|
||||
|
||||
dojo.require("dojo.widget.*");
|
||||
dojo.require("dojo.widget.LayoutContainer");
|
||||
dojo.require("dojo.widget.ContentPane");
|
||||
dojo.require("dojo.event.*");
|
||||
dojo.require("dojo.html.style");
|
||||
|
||||
// TODO: base this on PageContainer
|
||||
dojo.widget.defineWidget(
|
||||
"dojo.widget.WizardContainer",
|
||||
dojo.widget.LayoutContainer,
|
||||
{
|
||||
// summary
|
||||
// A set of panels that display sequentially, typically notating a step-by-step
|
||||
// procedure like an install
|
||||
|
||||
templatePath: dojo.uri.dojoUri("src/widget/templates/Wizard.html"),
|
||||
templateCssPath: dojo.uri.dojoUri("src/widget/templates/Wizard.css"),
|
||||
|
||||
// selected: DomNode
|
||||
// Currently selected panel. (Read-only)
|
||||
selected: null,
|
||||
|
||||
// nextButtonLabel: String
|
||||
// Label for the "Next" button.
|
||||
nextButtonLabel: "next",
|
||||
|
||||
// previousButtonLabel: String
|
||||
// Label for the "Previous" button.
|
||||
previousButtonLabel: "previous",
|
||||
|
||||
// cancelButtonLabel: String
|
||||
// Label for the "Cancel" button.
|
||||
cancelButtonLabel: "cancel",
|
||||
|
||||
// doneButtonLabel: String
|
||||
// Label for the "Done" button.
|
||||
doneButtonLabel: "done",
|
||||
|
||||
// cancelButtonLabel: FunctionName
|
||||
// Name of function to call if user presses cancel button.
|
||||
// Cancel button is not displayed if function is not specified.
|
||||
cancelFunction: "",
|
||||
|
||||
// hideDisabledButtons: Boolean
|
||||
// If true, disabled buttons are hidden; otherwise, they are assigned the
|
||||
// "WizardButtonDisabled" CSS class
|
||||
hideDisabledButtons: false,
|
||||
|
||||
fillInTemplate: function(args, frag){
|
||||
dojo.event.connect(this.nextButton, "onclick", this, "_onNextButtonClick");
|
||||
dojo.event.connect(this.previousButton, "onclick", this, "_onPreviousButtonClick");
|
||||
if (this.cancelFunction){
|
||||
dojo.event.connect(this.cancelButton, "onclick", this.cancelFunction);
|
||||
}else{
|
||||
this.cancelButton.style.display = "none";
|
||||
}
|
||||
dojo.event.connect(this.doneButton, "onclick", this, "done");
|
||||
this.nextButton.value = this.nextButtonLabel;
|
||||
this.previousButton.value = this.previousButtonLabel;
|
||||
this.cancelButton.value = this.cancelButtonLabel;
|
||||
this.doneButton.value = this.doneButtonLabel;
|
||||
},
|
||||
|
||||
_checkButtons: function(){
|
||||
var lastStep = !this.hasNextPanel();
|
||||
this.nextButton.disabled = lastStep;
|
||||
this._setButtonClass(this.nextButton);
|
||||
if(this.selected.doneFunction){
|
||||
this.doneButton.style.display = "";
|
||||
// hide the next button if this is the last one and we have a done function
|
||||
if(lastStep){
|
||||
this.nextButton.style.display = "none";
|
||||
}
|
||||
}else{
|
||||
this.doneButton.style.display = "none";
|
||||
}
|
||||
this.previousButton.disabled = ((!this.hasPreviousPanel()) || (!this.selected.canGoBack));
|
||||
this._setButtonClass(this.previousButton);
|
||||
},
|
||||
|
||||
_setButtonClass: function(button){
|
||||
if(!this.hideDisabledButtons){
|
||||
button.style.display = "";
|
||||
dojo.html.setClass(button, button.disabled ? "WizardButtonDisabled" : "WizardButton");
|
||||
}else{
|
||||
button.style.display = button.disabled ? "none" : "";
|
||||
}
|
||||
},
|
||||
|
||||
registerChild: function(panel, insertionIndex){
|
||||
dojo.widget.WizardContainer.superclass.registerChild.call(this, panel, insertionIndex);
|
||||
this.wizardPanelContainerNode.appendChild(panel.domNode);
|
||||
panel.hide();
|
||||
|
||||
if(!this.selected){
|
||||
this.onSelected(panel);
|
||||
}
|
||||
this._checkButtons();
|
||||
},
|
||||
|
||||
onSelected: function(/*WizardPanel*/ panel){
|
||||
// summary: Callback when new panel is selected.. Deselect old panel and select new one
|
||||
if(this.selected ){
|
||||
if (this.selected._checkPass()) {
|
||||
this.selected.hide();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
panel.show();
|
||||
this.selected = panel;
|
||||
},
|
||||
|
||||
getPanels: function() {
|
||||
// summary: returns array of WizardPane children
|
||||
return this.getChildrenOfType("WizardPane", false); // WizardPane[]
|
||||
},
|
||||
|
||||
selectedIndex: function() {
|
||||
// summary: Returns index (into this.children[]) for currently selected child.
|
||||
if (this.selected) {
|
||||
return dojo.lang.indexOf(this.getPanels(), this.selected); // Integer
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
|
||||
_onNextButtonClick: function() {
|
||||
// summary: callback when next button is clicked
|
||||
var selectedIndex = this.selectedIndex();
|
||||
if ( selectedIndex > -1 ) {
|
||||
var childPanels = this.getPanels();
|
||||
if (childPanels[selectedIndex + 1]) {
|
||||
this.onSelected(childPanels[selectedIndex + 1]);
|
||||
}
|
||||
}
|
||||
this._checkButtons();
|
||||
},
|
||||
|
||||
_onPreviousButtonClick: function() {
|
||||
// summary: callback when previous button is clicked
|
||||
var selectedIndex = this.selectedIndex();
|
||||
if ( selectedIndex > -1 ) {
|
||||
var childPanels = this.getPanels();
|
||||
if (childPanels[selectedIndex - 1]) {
|
||||
this.onSelected(childPanels[selectedIndex - 1]);
|
||||
}
|
||||
}
|
||||
this._checkButtons();
|
||||
},
|
||||
|
||||
hasNextPanel: function() {
|
||||
// summary: Returns true if there's a another panel after the current panel
|
||||
var selectedIndex = this.selectedIndex();
|
||||
return (selectedIndex < (this.getPanels().length - 1));
|
||||
},
|
||||
|
||||
hasPreviousPanel: function() {
|
||||
// summary: Returns true if there's a panel before the current panel
|
||||
var selectedIndex = this.selectedIndex();
|
||||
return (selectedIndex > 0);
|
||||
},
|
||||
|
||||
done: function() {
|
||||
// summary: Finish the wizard's operation
|
||||
this.selected.done();
|
||||
}
|
||||
});
|
||||
|
||||
dojo.widget.defineWidget(
|
||||
"dojo.widget.WizardPane",
|
||||
dojo.widget.ContentPane,
|
||||
{
|
||||
// summary
|
||||
// a panel in a WizardContainer
|
||||
|
||||
// canGoBack: Boolean
|
||||
// If true, then can move back to a previous panel (by clicking the "Previous" button)
|
||||
canGoBack: true,
|
||||
|
||||
// passFunction: String
|
||||
// Name of function that checks if it's OK to advance to the next panel.
|
||||
// If it's not OK (for example, mandatory field hasn't been entered), then
|
||||
// returns an error message (String) explaining the reason.
|
||||
passFunction: "",
|
||||
|
||||
// doneFunction: String
|
||||
// Name of function that is run if you press the "Done" button from this panel
|
||||
doneFunction: "",
|
||||
|
||||
postMixInProperties: function(args, frag) {
|
||||
if (this.passFunction) {
|
||||
this.passFunction = dj_global[this.passFunction];
|
||||
}
|
||||
if (this.doneFunction) {
|
||||
this.doneFunction = dj_global[this.doneFunction];
|
||||
}
|
||||
dojo.widget.WizardPane.superclass.postMixInProperties.apply(this, arguments);
|
||||
},
|
||||
|
||||
_checkPass: function() {
|
||||
// summary:
|
||||
// Called when the user presses the "next" button.
|
||||
// Calls passFunction to see if it's OK to advance to next panel, and
|
||||
// if it isn't, then display error.
|
||||
// Returns true to advance, false to not advance.
|
||||
if (this.passFunction && dojo.lang.isFunction(this.passFunction)) {
|
||||
var failMessage = this.passFunction();
|
||||
if (failMessage) {
|
||||
alert(failMessage);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
done: function() {
|
||||
if (this.doneFunction && dojo.lang.isFunction(this.doneFunction)) {
|
||||
this.doneFunction();
|
||||
}
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user