01: package org.apache.turbine.modules.navigations;
02:
03: /*
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "License"); you may not use this file except in compliance
10: * with the License. You may obtain a copy of the License at
11: *
12: * http://www.apache.org/licenses/LICENSE-2.0
13: *
14: * Unless required by applicable law or agreed to in writing,
15: * software distributed under the License is distributed on an
16: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17: * KIND, either express or implied. See the License for the
18: * specific language governing permissions and limitations
19: * under the License.
20: */
21:
22: import org.apache.ecs.ConcreteElement;
23: import org.apache.ecs.StringElement;
24: import org.apache.turbine.TurbineConstants;
25: import org.apache.turbine.services.template.TurbineTemplate;
26: import org.apache.turbine.services.velocity.TurbineVelocity;
27: import org.apache.turbine.util.RunData;
28: import org.apache.velocity.context.Context;
29:
30: /**
31: * VelocityNavigation. This screen relies on the VelocityPage
32: * being set as the default page. The doBuildTemplate() assumes the
33: * user has put the template filename in the RunData parameter and set
34: * it to the value of the template file to execute. Specialized
35: * Navigations screens should extend this class and overide the
36: * doBuildTemplate( data , context) method.
37: *
38: * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
39: * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
40: * @version $Id: VelocityNavigation.java 534527 2007-05-02 16:10:59Z tv $
41: */
42: public class VelocityNavigation extends TemplateNavigation {
43: /** The prefix for lookup up navigation pages */
44: private String prefix = TurbineConstants.NAVIGATION_PREFIX + "/";
45:
46: /**
47: * Velocity Navigations extending this class should overide this
48: * method to perform any particular business logic and add
49: * information to the context.
50: *
51: * @param data Turbine information.
52: * @param context Context for web pages.
53: * @exception Exception, a generic exception.
54: */
55: protected void doBuildTemplate(RunData data, Context context)
56: throws Exception {
57: }
58:
59: /**
60: * Needs to be implemented to make TemplateNavigation like us.
61: * The actual method that you should override is the one with the
62: * context in the parameter list.
63: *
64: * @param data Turbine information.
65: * @exception Exception, a generic exception.
66: */
67: protected void doBuildTemplate(RunData data) throws Exception {
68: doBuildTemplate(data, TurbineVelocity.getContext(data));
69: }
70:
71: /**
72: * This Builds the Velocity template.
73: *
74: * @param data Turbine information.
75: * @return A ConcreteElement.
76: * @exception Exception, a generic exception.
77: */
78: public ConcreteElement buildTemplate(RunData data) throws Exception {
79: Context context = TurbineVelocity.getContext(data);
80:
81: String navigationTemplate = data.getTemplateInfo()
82: .getNavigationTemplate();
83: String templateName = TurbineTemplate
84: .getNavigationTemplateName(navigationTemplate);
85:
86: StringElement output = new StringElement();
87: output.setFilterState(false);
88: output.addElement(TurbineVelocity.handleRequest(context, prefix
89: + templateName));
90: return output;
91: }
92:
93: }
|