blob: 7731c11cfe88b66fa3544c3617d419dfeccd076d [file] [log] [blame]
/*
* $Id$ $Revision$ $Date$
*
* ==================================================================== 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.
*/
package wicket.examples.wizard.framework;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* Transitions between steps.
*
* @author Eelco Hillenius
*/
public class Transitions implements Serializable
{
/** transitions. */
private Map/* <Step,Map<TransitionResult,Transition>> */transitions = new HashMap();
/** the first node of the wizard. */
private final Node first;
/**
* Construct.
*
* @param first
* the first step of the wizard
*/
public Transitions(Node first)
{
this.first = first;
}
/**
* Adds a transition.
*
* @param node
* the node
* @param transition
* the transition to add
*/
public void put(Node node, Transition transition)
{
Map/* <TransitionLabel,Transition> */m = (Map)transitions.get(node);
if (m == null)
{
m = new HashMap();
transitions.put(node, m);
}
m.put(transition.getLabel(), transition);
}
/**
* Gets a transition.
*
* @param node
* the node
* @param label
* for the label
* @return the found transition or null if not found
*/
public Transition get(Node node, TransitionLabel label)
{
Map/* <TransitionLabel,Transition> */m = (Map)transitions.get(node);
if (m != null)
{
return (Transition)m.get(label);
}
return null;
}
/**
* Returns whether any transition exists for the given node and transition
* label.
*
* @param node
* the node
* @param label
* the transition label
* @return true if it does exist, false otherwise
*/
public boolean exists(Node node, TransitionLabel label)
{
return (get(node, label) != null);
}
/**
* Gets the first node.
*
* @return the first node
*/
public Node getFirst()
{
return first;
}
}