KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > scriptengine > core > nodes > DispatchNode


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, is permitted provided that the following conditions are met: -
6  * Redistributions of source code must retain the above copyright notice, this
7  * list of conditions and the following disclaimer. - Redistributions in binary
8  * form must reproduce the above copyright notice, this list of conditions and
9  * the following disclaimer in the documentation and/or other materials
10  * provided with the distribution. - All advertising materials mentioning
11  * features or use of this software must display the following acknowledgment:
12  * "This product includes Djeneric." - Products derived from this software may
13  * not be called "Djeneric" nor may "Djeneric" appear in their names without
14  * prior written permission of Genimen BV. - Redistributions of any form
15  * whatsoever must retain the following acknowledgment: "This product includes
16  * Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG, OR CONTRIBUTORS
22  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.tools.scriptengine.core.nodes;
31
32 import java.util.ArrayList JavaDoc;
33
34 import com.genimen.djeneric.tools.scriptengine.core.DjScriptParserEngine;
35 import com.genimen.djeneric.tools.scriptengine.core.EditorEventDefinition;
36 import com.genimen.djeneric.tools.scriptengine.core.ScriptRunnerContainer;
37 import com.genimen.djeneric.tools.scriptengine.core.SimpleNode;
38 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptCompileTimeScope;
39 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionException;
40 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionTimeScope;
41
42 public class DispatchNode extends SimpleNode
43 {
44   String JavaDoc _customDispatcherClass = null;
45
46   public DispatchNode(int i)
47   {
48     super(i);
49   }
50
51   public DispatchNode(DjScriptParserEngine p, int i)
52   {
53     super(p, i);
54   }
55
56   public String JavaDoc getName()
57   {
58     return "dispatch";
59   }
60
61   public String JavaDoc toString()
62   {
63     return getName();
64   }
65
66   public void execute(DjScriptExecutionTimeScope context) throws DjScriptExecutionException
67   {
68     EventDefinitionNode events[] = (EventDefinitionNode[]) getChildren(EventDefinitionNode.class)
69         .toArray(new EventDefinitionNode[0]);
70
71     EditorEventDefinition[] eventDefs = new EditorEventDefinition[events.length];
72     for (int i = 0; i < eventDefs.length; i++)
73     {
74       eventDefs[i] = new EditorEventDefinition(events[i].getEventName(), events[i].getEventTitle(), events[i]
75           .getOption());
76     }
77
78     ScriptRunnerContainer container = context.getContainer();
79
80     ActionNode actionNode = (ActionNode) getParent(ActionNode.class);
81     String JavaDoc title = actionNode.getTitle();
82     if (title == null) title = actionNode.getActionName();
83
84     container.dispatch(getCustomDispatcherClass(), eventDefs, title, actionNode.getActionName());
85   }
86
87   public String JavaDoc getCustomDispatcherClass()
88   {
89     return _customDispatcherClass;
90   }
91
92   public void setCustomDispatcherClass(String JavaDoc string)
93   {
94     _customDispatcherClass = string;
95   }
96
97   public void collectEvents(DjScriptCompileTimeScope ctxt, ArrayList JavaDoc ev) throws DjScriptExecutionException
98   {
99     doCollectEvents(ctxt, ev);
100   }
101
102 }
Popular Tags