/*
Copyright 1996-2008 Ariba, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
$Id: //ariba/platform/ui/widgets/ariba/ui/wizard/core/WizardAction.java#2 $
*/
package ariba.ui.wizard.core;
import ariba.ui.wizard.meta.WizardActionMeta;
import ariba.ui.aribaweb.core.AWStringLocalizer;
import ariba.ui.aribaweb.core.AWConcreteApplication;
import ariba.util.core.StringUtil;
import java.util.Map;
/**
The WizardAction class encapsulates an instance of some action, built-in
or custom, within a particular wizard. It has holds immutable state like
name & label, as well as dynamic state like whether the action is
currently enabled.
@aribaapi ariba
*/
// subclassed by demoshell/AWXWizardAction.java
public class WizardAction
{
/*-----------------------------------------------------------------------
Fields
-----------------------------------------------------------------------*/
// immutable meta-data for this wizard action
private WizardActionMeta _meta;
// cached localized values from our meta-data
private String _label;
private String _hint;
// immutable state
private Wizard _wizard;
private boolean _shouldTakeValues;
// dynamic state
private boolean _isEnabled;
/*-----------------------------------------------------------------------
Constructors
-----------------------------------------------------------------------*/
/**
@aribaapi private
*/
protected WizardAction (
WizardActionMeta meta,
Wizard wizard,
boolean shouldTakeValues)
{
// setup immutable state
_meta = meta;
_wizard = wizard;
_shouldTakeValues = shouldTakeValues;
// defaults to enabled
_isEnabled = true;
}
/**
@aribaapi private
*/
protected WizardAction (WizardActionMeta meta, Wizard wizard)
{
this(meta, wizard, true);
}
/**
* Added for use by demoshell
* @aribaapi private
*/
public WizardAction (Wizard wizard,
String name, String label, String button,
String hintKey, boolean ignoreValidation)
{
this (new WizardActionMeta (name, label, button, hintKey, ignoreValidation),
wizard, true);
}
/*-----------------------------------------------------------------------
Public Methods
-----------------------------------------------------------------------*/
/**
@aribaapi ariba
*/
public Wizard getWizard ()
{
return _wizard;
}
/**
@aribaapi ariba
*/
public String getName ()
{
return _meta.name();
}
/**
@aribaapi ariba
*/
public String getTarget ()
{
return _meta.target();
}
/**
@aribaapi private
*/
public String getLabel ()
{
if (_label == null) {
String label = _meta.label();
_label = getLocalizedString(label);
if (StringUtil.nullOrEmptyString(_label)) {
_label = label;
}
}
return _label;
}
/**
@aribaapi private
*/
public String getHint ()
{
if (_hint == null) {
_hint = getLocalizedString(_meta.hintKey());
if (StringUtil.nullOrEmptyString(_hint)) {
_hint = getLabel();
}
}
return _hint;
}
private String getLocalizedString (String key)
{
String stringTable = _meta.stringTable();
if (stringTable != null) {
AWStringLocalizer localizer = AWConcreteApplication.SharedInstance.getStringLocalizer();
Map map = localizer.getLocalizedStrings(stringTable, _meta.stringsGroup(), _wizard.resourceManager());
String value = (String)map.get(key);
return value == null ? key : value;
}
return _wizard.localizedStringForKey(key);
}
/**
@aribaapi private
*/
public boolean shouldTakeValues ()
{
return _shouldTakeValues;
}
/**
@aribaapi private
*/
public boolean ignoreValidation ()
{
return _meta.ignoreValidation();
}
/**
@aribaapi private
*/
public boolean isEnabled ()
{
return _isEnabled;
}
/**
@aribaapi private
*/
public void setEnabled (boolean isEnabled)
{
_isEnabled = isEnabled;
}
/**
@aribaapi private
*/
public boolean isDefault ()
{
return (getName().equals(_wizard.getCurrentFrame().getDefaultAction()));
}
}