001: /*
002: * This file is part of "SnipSnap Radeox Rendering Engine".
003: *
004: * Copyright (c) 2002 Stephan J. Schmidt, Matthias L. Jugel
005: * All Rights Reserved.
006: *
007: * Please visit http://radeox.org/ for updates and contact.
008: *
009: * --LICENSE NOTICE--
010: * Licensed under the Apache License, Version 2.0 (the "License");
011: * you may not use this file except in compliance with the License.
012: * You may obtain a copy of the License at
013: *
014: * http://www.apache.org/licenses/LICENSE-2.0
015: *
016: * Unless required by applicable law or agreed to in writing, software
017: * distributed under the License is distributed on an "AS IS" BASIS,
018: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
019: * See the License for the specific language governing permissions and
020: * limitations under the License.
021: * --LICENSE NOTICE--
022: */
023:
024: package org.radeox.macro;
025:
026: import java.io.IOException;
027: import java.io.Writer;
028:
029: import org.radeox.Messages;
030: import org.radeox.api.engine.context.InitialRenderContext;
031: import org.radeox.api.macro.Macro;
032: import org.radeox.api.macro.MacroParameter;
033:
034: /*
035: * Class that implements base functionality to write macros @author stephan
036: *
037: * @version $Id: BaseMacro.java 29159 2007-04-19 01:46:15Z ajpoland@iupui.edu $
038: */
039:
040: public abstract class BaseMacro implements Macro {
041: protected InitialRenderContext initialContext;
042:
043: protected String description = " "; //$NON-NLS-1$
044:
045: protected String[] paramDescription = { Messages
046: .getString("BaseMacro.1") }; //$NON-NLS-1$
047:
048: /**
049: * Get the name of the macro. This is used to map a macro in the input to
050: * the macro which should be called. The method has to be implemented by
051: * subclassing classes.
052: *
053: * @return name Name of the Macro
054: */
055: public abstract String getName();
056:
057: /**
058: * Get a description of the macro. This description explains in a short way
059: * what the macro does
060: *
061: * @return description A string describing the macro
062: */
063: public String getDescription() {
064: return description;
065: }
066:
067: /**
068: * Get a description of the paramters of the macro. The method returns an
069: * array with an String entry for every parameter. The format is {"1:
070: * description", ...} where 1 is the position of the parameter.
071: *
072: * @return description Array describing the parameters of the macro
073: */
074: public String[] getParamDescription() {
075: return paramDescription;
076: }
077:
078: public void setInitialContext(InitialRenderContext context) {
079: this .initialContext = context;
080: }
081:
082: /**
083: * Execute the macro. This method is called by MacroFilter to handle macros.
084: *
085: * @param writer
086: * A write where the macro should write its output to
087: * @param params
088: * Macro parameters with the parameters the macro is called with
089: */
090: public abstract void execute(Writer writer, MacroParameter params)
091: throws IllegalArgumentException, IOException;
092:
093: public String toString() {
094: return getName();
095: }
096:
097: public int compareTo(Object object) {
098: Macro macro = (Macro) object;
099: return getName().compareTo(macro.getName());
100: }
101: }
|