com.atlassian.renderer.v2.macro.basic
Class AbstractPanelMacro

java.lang.Object
  extended by com.atlassian.renderer.v2.macro.BaseMacro
      extended by com.atlassian.renderer.v2.macro.basic.AbstractPanelMacro
All Implemented Interfaces:
Macro
Direct Known Subclasses:
CodeMacro, NoformatMacro, PanelMacro

public abstract class AbstractPanelMacro
extends BaseMacro

Abstract class for panel macros. Your implementation will need to provide css classes for panel container, panel header and panel body. These CSS classes will define the default look and feel. Users can override these default styles through styles specified in macro parameters.


Field Summary
 
Fields inherited from interface com.atlassian.renderer.v2.macro.Macro
RAW_PARAMS_KEY
 
Constructor Summary
AbstractPanelMacro()
           
 
Method Summary
 String execute(Map parameters, String body, RenderContext renderContext)
          Execute the macro.
protected  String getBodyContent(Map parameters, String body, RenderContext renderContext)
           
 RenderMode getBodyRenderMode()
          If the macro has a body, return the mode in which the body of the macro should be rendered.
protected abstract  String getPanelContentCSSClass()
           
protected abstract  String getPanelCSSClass()
           
protected abstract  String getPanelHeaderCSSClass()
           
protected  SubRenderer getSubRenderer()
           
protected  String getTitle(Map parameters, String body, RenderContext renderContext)
           
 boolean hasBody()
          Determine if the macro is a one-shot macro, or one that takes a body.
 boolean isInline()
          Determine if the macro is an "inline" element in the resulting HTML.
 void setSubRenderer(SubRenderer subRenderer)
           
protected  void writeContent(StringBuffer buffer, Map parameters, String content, String backgroundColor)
           
protected  void writeHeader(RenderContext renderContext, StringBuffer buffer, String title, String borderStyle, String borderColor, int borderWidth, String titleBackgroundColor)
           
 
Methods inherited from class com.atlassian.renderer.v2.macro.BaseMacro
suppressMacroRenderingDuringWysiwyg, suppressSurroundingTagDuringWysiwygRendering
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractPanelMacro

public AbstractPanelMacro()
Method Detail

getPanelCSSClass

protected abstract String getPanelCSSClass()

getPanelHeaderCSSClass

protected abstract String getPanelHeaderCSSClass()

getPanelContentCSSClass

protected abstract String getPanelContentCSSClass()

setSubRenderer

public void setSubRenderer(SubRenderer subRenderer)

hasBody

public boolean hasBody()
Description copied from interface: Macro
Determine if the macro is a one-shot macro, or one that takes a body. If this method returns false, the renderer will NOT look for an end-tag for the macro. If the method returns true, the renderer will look for an end-tag, but if the end-tag is not found then the macro will be processed with an empty body.


getBodyContent

protected String getBodyContent(Map parameters,
                                String body,
                                RenderContext renderContext)
                         throws MacroException
Throws:
MacroException

getTitle

protected String getTitle(Map parameters,
                          String body,
                          RenderContext renderContext)

isInline

public boolean isInline()
Description copied from interface: Macro
Determine if the macro is an "inline" element in the resulting HTML. Inline elements will have paragraphs drawn around them, or be incorporated into paragraphs they are included in. As a rule of thumb, if your macro produces a paragraph, table or div (or so on), you should return false. If it produces a span, replacement text or text decoration, return true.

Most macros will want to return false here.

Returns:
true if the macro output is included inline within the surrounding HTML, false if it forms its own HTML block.

getBodyRenderMode

public RenderMode getBodyRenderMode()
Description copied from interface: Macro
If the macro has a body, return the mode in which the body of the macro should be rendered. The body of the macro will be rendered before the macro is executed!

If this method returns null, it causes the macro processor to treat the macro as one that returns wiki-text rather than HTML. The body of the macro will be passed in un-rendered, and the macro's output will be inserted back into the page for further normal processing by the wiki-engine.

Returns:
the RenderMode in which the body of this macro should be rendered, or null if the macro is substituting wiki-text

execute

public String execute(Map parameters,
                      String body,
                      RenderContext renderContext)
               throws MacroException
Description copied from interface: Macro
Execute the macro. Macros should write any output to the writer (it will be rendered in the RenderMode returned in Macro.getBodyRenderMode()).

Macros are expected to output HTML. The output of macros will not be subjected to any further processing by the wiki-engine. If your macro produces wiki-text, you are responsible for rendering that text to HTML yourself using a SubRenderer or WikiStyleRenderer. If your macro returns pure wiki-text, you can force further processing in the normal chain by returning null from Macro.getBodyRenderMode()

Parameters:
parameters - the parameters included in the macro
body - the content of the body of the macro
renderContext - the rendering context in which the macro was executed
Returns:
the output of the macro
Throws:
MacroException - if the macro fails in some unremarkable way. If the macro fails in a way that is important to the server maintainer (i.e. something is badly wrong), throw a RuntimeException instead.

writeHeader

protected void writeHeader(RenderContext renderContext,
                           StringBuffer buffer,
                           String title,
                           String borderStyle,
                           String borderColor,
                           int borderWidth,
                           String titleBackgroundColor)

writeContent

protected void writeContent(StringBuffer buffer,
                            Map parameters,
                            String content,
                            String backgroundColor)

getSubRenderer

protected SubRenderer getSubRenderer()


Copyright © 2009 Atlassian Pty Ltd. All Rights Reserved.