/* 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/WizardDelegate.java#2 $ */ package ariba.ui.wizard.core; import ariba.ui.aribaweb.util.AWResourceManager; import ariba.ui.aribaweb.core.AWStringLocalizer; import ariba.ui.aribaweb.core.AWConcreteApplication; import ariba.util.i18n.LocalizedJavaString; import ariba.util.core.StringUtil; import java.util.Map; /** The WizardDelegate is called by the core wizard engine to at various points to allow an application to override default behaviors. @aribaapi ariba */ public abstract class WizardDelegate { AWResourceManager _resourceManager = null; /** let wizarddelegate have a chance to do initialization work before the wizard starts. this method is invoked right before wizard displays the first step. */ public void initialize (Wizard wizard) { _resourceManager = wizard.resourceManager(); } /** Allows the WizardDelegate to provide the WizardFrameDelegate instance for a given frame. If this method returns null, then the static declaration from the XML meta-data is used. @aribaapi ariba */ public WizardFrameDelegate delegateForFrame (WizardFrame frame) { return null; } /** Allows the WizardDelegate to handle the given action. The return value should be the frame to show next, or null if the delegate wants to defer to the default flow. @aribaapi ariba */ public WizardActionTarget targetForAction (WizardAction action) { return null; } /** Allows the WizardDeleget to provide the localized string for labels and hints */ public String localizedStringForKey (String key) { return localizedStringForKey(key, null); } public String localizedStringForKey (String key, Wizard wizard) { if (key.startsWith("$[")) { int indexOfRightBrace = key.indexOf(']'); String originalString = key.substring(indexOfRightBrace + 1); String keyString = key.substring(2, indexOfRightBrace); String value = null; if (!StringUtil.nullOrEmptyOrBlankString(keyString)) { AWStringLocalizer localizer = AWConcreteApplication.SharedInstance.getStringLocalizer(); Map map = localizer.getLocalizedStrings(stringFile(), stringGroupName(), _resourceManager); if (map != null) { value = (String)map.get(keyString); } } return value == null ? originalString : value; } return key; } /** Determines the name of the strings resource file for the wizard. */ abstract public String stringFile (); /** Determines the strings group name (analogous to a component) for the strings in the wizard. */ abstract public String stringGroupName (); }