Author: vsiveton
Date: Sat May 19 08:49:11 2007
New Revision: 539770
URL: http://svn.apache.org/viewvc?view=rev&rev=539770
Log:
DOXIA-109: Add Macro to support SWF (Flash) within APT
DOXIA-110: Add APT site documentation for SWF Maceo
Submitted by: Steve Motola
Reviewed by: Vincent Siveton
o applied patches with some modifications: code format, using
StringUtils.isNotEmpty() and StringBuffer
o updated documentation to link to the swf macro page
Added:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java
(with props)
maven/doxia/site/src/site/apt/swf-macro.apt (with props)
Modified:
maven/doxia/site/src/site/apt/guide-doxia-macros.apt
Added:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java?view=auto&rev=539770
==============================================================================
---
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java
(added)
+++
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java
Sat May 19 08:49:11 2007
@@ -0,0 +1,186 @@
+package org.apache.maven.doxia.macro;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import org.apache.maven.doxia.sink.Sink;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.util.Iterator;
+
+/**
+ * Macro for embedding Flash (SWF) within Maven documentation.
+ *
+ * @plexus.component role="org.apache.maven.doxia.macro.Macro"
+ * role-hint="swf"
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Steve Motola</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class SwfMacro
+ extends AbstractMacro
+{
+ private static final String EOL = System.getProperty( "line.separator" );
+
+ /**
+ * @see
org.apache.maven.doxia.macro.Macro#execute(org.apache.maven.doxia.sink.Sink,
org.apache.maven.doxia.macro.MacroRequest)
+ */
+ public void execute( Sink sink, MacroRequest request )
+ throws MacroExecutionException
+ {
+ // parameter defaults
+ String src = "";
+ String id = "swf";
+ String width = "400";
+ String height = "400";
+ String quality = "high";
+ String menu = "false";
+ String loop = "0";
+ String play = "true";
+ String version = "9,0,45,0";
+ String allowScript = "sameDomain";
+
+ // assign parameters
+ for ( Iterator i = request.getParameters().keySet().iterator();
i.hasNext(); )
+ {
+ String str = "";
+ String key = (String) i.next();
+ if ( key.equals( "src" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ src = str;
+ }
+ }
+ if ( key.equals( "id" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ id = str;
+ }
+ }
+ if ( key.equals( "width" ) )
+ {
+ width = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ width = str;
+ }
+ }
+ if ( key.equals( "height" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ height = str;
+ }
+ }
+ if ( key.equals( "quality" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ quality = str;
+ }
+ }
+ if ( key.equals( "menu" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ menu = str;
+ }
+ }
+ if ( key.equals( "loop" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ loop = str;
+ }
+ }
+ if ( key.equals( "play" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ play = str;
+ }
+ }
+ if ( key.equals( "version" ) )
+ {
+ str = (String) request.getParameter( key );
+ // enable version shorthand
+ // TODO: put in other shorthand versions
+ if ( str.equals( "6" ) )
+ {
+ version = "6,0,29,0";
+ }
+ else
+ {
+ if ( str.equals( "9" ) )
+ {
+ version = "9,0,45,0";
+ }
+ else
+ {
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ version = str;
+ }
+ }
+ }
+ }
+ if ( key.equals( "allowScript" ) )
+ {
+ str = (String) request.getParameter( key );
+ if ( StringUtils.isNotEmpty( str ) )
+ {
+ allowScript = str;
+ }
+ }
+ }
+
+ StringBuffer content = new StringBuffer();
+ content.append( "<center>" ).append( EOL );
+ content.append( "<object
classid=\"clsid27CDB6E-AE6D-11cf-96B8-444553540000\" " )
+ .append(
"codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version="
)
+ .append( version ).append( "\" width=\"" ).append( width ).append(
"\" height=\"" ).append( height )
+ .append( "\" id=\"" ).append( id ).append( "\">" ).append( EOL );
+ content.append( "<param name=\"movie\" value=\"" ).append( src
).append( ".swf\">" ).append( EOL );
+ content.append( "<param name=\"quality\" value=\"" ).append( quality
).append( "\">" ).append( EOL );
+ content.append( "<param name=\"menu\" value=\"" ).append( menu
).append( "\">" ).append( EOL );
+ content.append( "<param name=\"loop\" value=\"" ).append( loop
).append( "\">" ).append( EOL );
+ content.append( "<param name=\"play\" value=\"" ).append( play
).append( "\">" ).append( EOL );
+ content.append( "<param name=\"allowScriptAccess\" value=\"" ).append(
allowScript ).append( "\">" );
+ content.append( "<embed src=\"" ).append( src ).append( "\" width=\""
).append( width ).append( "\" height=\"" )
+ .append( height ).append( "\" loop=\"" ).append( loop ).append(
"\" play=\"" ).append( play )
+ .append( "\" quality=\"" ).append( quality ).append( "\"
allowScriptAccess=\"" ).append( allowScript )
+ .append( "\" " ).append(
"pluginspage=\"http://www.macromedia.com/go/getflashplayer\" " )
+ .append( "type=\"application/x-shockwave-flash\" menu=\""
).append( menu ).append( "\">" ).append( EOL );
+ content.append( "</embed>" ).append( EOL );
+ content.append( "</object>" ).append( EOL );
+ content.append( "</center>" ).append( EOL );
+
+ sink.rawText( content.toString() );
+ }
+}
\ No newline at end of file
Propchange:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/macro/SwfMacro.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/doxia/site/src/site/apt/guide-doxia-macros.apt
URL:
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/guide-doxia-macros.apt?view=diff&rev=539770&r1=539769&r2=539770
==============================================================================
--- maven/doxia/site/src/site/apt/guide-doxia-macros.apt (original)
+++ maven/doxia/site/src/site/apt/guide-doxia-macros.apt Sat May 19 08:49:11
2007
@@ -1,10 +1,10 @@
------
Guide to Doxia Macros
------
- The Maven Team
+ The Maven Team
------
25 November 2006
- ------
+ ------
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
@@ -27,12 +27,12 @@
The Doxia Core module includes the Echo and Snippet macros, and you can create
your own.
-
+
Macros are Plexus components with a role of
org.apache.macro.doxia.macro.Macro.
The role-hint is the macro name.
-
+
For example:
-
+
-----
/**
* @plexus.component role="org.apache.maven.doxia.macro.Macro"
@@ -45,13 +45,13 @@
-----
is called with
-
+
-----
%{echo|param=value|param2=value2}
-----
and will output
-
+
-----
param ---> value
param2 ---> value2
@@ -59,11 +59,11 @@
(The echo macro simply prints out the key and value of any parameters that
you
supply.)
-
+
Note that macros <<must not>> be indented in your apt source document.
-
-~~ In the execute method, [TODO]
-
+
+~~ In the execute method, [TODO]
+
The following plugin config can be used to generate the Plexus component.xml
file for the module containing your macro:
@@ -87,3 +87,11 @@
...
</build>
-----
+
+*Out-of-box Doxia Macros
+
+ * TOC Macro
+
+ * Snippet Macro
+
+ * {{{swf-macro.html}SWF Macro}}
Added: maven/doxia/site/src/site/apt/swf-macro.apt
URL:
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/swf-macro.apt?view=auto&rev=539770
==============================================================================
--- maven/doxia/site/src/site/apt/swf-macro.apt (added)
+++ maven/doxia/site/src/site/apt/swf-macro.apt Sat May 19 08:49:11 2007
@@ -0,0 +1,94 @@
+ ------
+ Doxia - SWF Macro
+ ------
+ The Maven Team
+ ------
+ 17 May 2007
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements. See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership. The ASF licenses this file
+~~ to you 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.
+
+SWF Macro
+
+ The SWF macro enables users of APT to put SWF (Flash) assets in their
documentation.
+
+ Flash assets typically need to be wrappered in <<<object>>> and <<<embed>>>
tags and can have
+ a variety of parameters. Below is a typical example:
+
+-----
+<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
+
codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0'
+ width='400' height='400' id='MyMovie'>
+ <param name='movie' value='myfile.swf'>
+ <param name='quality' value='high'>
+ <param name='menu' value='false'>
+ <param name='loop' value='0'>
+ <embed src='myfile.swf' width='400' height='400' loop='0' quality='high'
+ pluginspage='http://www.macromedia.com/go/getflashplayer'
+ type='application/x-shockwave-flash' menu='false'></embed>
+</object>
+-----
+
+ In order to use a *.swf in your APT file, use the basic syntax:
+
+-----
+%{swf|src=swf/myfile.swf|id=MyMovie|width=600|height=200}
+-----
+
+ For which <<<src>>> is the required parameter. Make sure to put your *.swf
file into
+ the <</resources>> folder so that it will get copied to /target when running
the <<<mvn site>>> task.
+
+ You can use more advanced parameters to control the output, as per below:
+
+-----
+%{swf|src=swf/myfile.swf|id=MyMovie|width=600|height=200|version=9|allowScript=always}
+-----
+
+ For a full listing of parameters and their values see the Adobe knowledge
base:
+
+
{{{http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701}http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701}}
+
+*Parameters and Defaults
+
+ Currently the following parameters are available through the macro. If no
value is placed within a parameter, the
+ value will default to the following:
+
+ * id = "swf"
+
+ * width = "400"
+
+ * height = "400"
+
+ * quality = "high"
+
+ * menu = "false"
+
+ * loop = "0"
+
+ * play = "true"
+
+ * version = "9,0,45,0"
+
+ * allowScript = "sameDomain"
+
+ []
+
+ Note: There is some provided shorthand for versions, i.e. - version=6 -
becomes version=6,0,29,0.
+
+ <TODO:> only shorthand for 6 and 9 are functional. Need to find standard
long
+ version for other types.
Propchange: maven/doxia/site/src/site/apt/swf-macro.apt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/site/src/site/apt/swf-macro.apt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"