| /* |
| * $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; |
| } |
| } |