Test of FreeMind mind-mapping content
FreeMind is free mind mapping software.
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/wb/ (C) Ken Webb Fri Mar 23 2012 19:40:45 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Test of FreeMind mind-mapping content
Description: FreeMind is free mind mapping software.
Url: http://freemind.sourceforge.net/wiki/index.php/Main_Page
InternalName:
YoutubeId:
Keywords:
My Notes
--------
This is a test to see if Xholon Workbooks can handle the FreeMind XML format.
I will use a MIME media type of::
application/x-mm+xml
where x signifies a non-standard type, and mm is the FreeMind file extension (ex: myFreeMindFile.mm).
The Java-based Xholon jvmEdition can convert any Xholon application into a FreeMind file.
This is possible because of the close similarity between Xholon models and mind-mapping.
This Xholon application is a reimplementation of the "Spring Idol" contest as
described and implemented in the book:
Walls, Craig. (2008). Spring in Action, 2nd edition. Greenwich, CT: Manning.
See especially pages 40-70 in the book.
The intent of implementing this application in Xholon is to demonstrate and
experiment with the similarities between the Spring and Xholon frameworks.
]]></Notes>
<script implName="lang:python:inline:"><![CDATA[
#print "height = 12.34 m"
]]></script>
<script implName="lang:javascript:inline:"><![CDATA[
//print("height = 56.78 meters\n");
]]></script>
<_-.XholonClass>
<!-- domain objects -->
<PhysicalSystem/>
<!-- Xholon SpringIdol InheritanceHierarchy.xml -->
<Instrument> <!-- interface -->
<Cymbal/>
<Guitar/>
<Harmonica/>
<Piano/>
<Saxophone/>
</Instrument>
<Performer> <!-- interface -->
<Instrumentalist>
<BaseSaxophonist/>
</Instrumentalist>
<Juggler>
<PoeticJuggler/>
</Juggler>
<OneManBand/>
<Singer/>
</Performer>
<Poem> <!-- interface -->
<Sonnet29/>
<Damoyselle/>
</Poem>
<TalentCompetition> <!-- interface -->
<SpringIdol/>
</TalentCompetition>
<Song/>
<!-- Xholon additions -->
<Instruments/>
<Performers/>
<Songs/>
<Poems/>
</_-.XholonClass>
<xholonClassDetails>
<Instrument xhType="XhtypePurePassiveObject"/>
<Cymbal xhType="XhtypePurePassiveObject"/>
<Guitar xhType="XhtypePurePassiveObject"/>
<Harmonica xhType="XhtypePurePassiveObject"/>
<Piano xhType="XhtypePurePassiveObject"/>
<Saxophone xhType="XhtypePurePassiveObject"/>
<Performer xhType="XhtypePureActiveObject"/>
<OneManBand xhType="XhtypePureActiveObject"/>
<PoeticJuggler xhType="XhtypePureActiveObject">
<!--<port name="poem" connector="#xpointer(ancestor::SpringIdol/Poems/Sonnet29)"/>-->
<port name="poem" connector="#xpointer(ancestor::SpringIdol/Poems/Damoyselle)"/>
</PoeticJuggler>
<BaseSaxophonist xhType="XhtypePureActiveObject">
<port name="song" connector="#xpointer(ancestor::SpringIdol/Songs/Song)"/>
<port name="instrument" connector="#xpointer(ancestor::SpringIdol/Instruments/Saxophone)"/>
</BaseSaxophonist>
<Song xhType="XhtypePurePassiveObject"/>
<Sonnet29 xhType="XhtypePurePassiveObject"/>
<Damoyselle xhType="XhtypePurePassiveObject"/>
<SpringIdol xhType="XhtypePureActiveObject"/>
</xholonClassDetails>
<PhysicalSystem>
<!-- Xholon SpringIdol CompositeStructure.xml -->
<SpringIdol>
<Instruments>
<Cymbal/>
<Guitar/>
<Harmonica/>
<Piano/>
<Saxophone/>
</Instruments>
<Performers>
<OneManBand roleName="hank"/>
<PoeticJuggler roleName="duke"/>
<BaseSaxophonist roleName="kenny"/>
</Performers>
<Songs>
<Song>
<Attribute_String roleName="Title">Jingle Bells</Attribute_String>
</Song>
</Songs>
<Poems>
<!--<Sonnet29/>-->
<Damoyselle/>
</Poems>
</SpringIdol>
</PhysicalSystem>
<Blockbehavior implName="lang:python:inline:"><![CDATA[
# This works if pasted in as a last child of Block.
height.incVal(0.02)
print("Python wants something to do. Height:" + str(height))
]]></Blockbehavior>
<Blockbehavior implName="lang:javascript:inline:"><![CDATA[
// This works if pasted in as a last child of Block.
height.incVal(0.02);
print("JavaScript wants something to do. Height:" + height + "\n");
]]></Blockbehavior>
<Blockbehavior implName="lang:webEditionjs:inline:"><![CDATA[
this.bindPorts(this.parent());
this.height.incVal(0.02);
print("JavaScript wants something to do. Height:" + this.height.attr('val') + "\n");
]]></Blockbehavior>
<Blockbehavior implName="lang:bsh:inline:"><![CDATA[
// This works if pasted in as a last child of Block.
height.incVal(0.02);
System.out.print("Java/Beanshell wants something to do. Height:" + height + "\n");
]]></Blockbehavior>
<Blockbehavior implName="lang:jruby:inline:"><![CDATA[
require 'java'
# This works if pasted in as a last child of Block.
$height.incVal(0.02)
puts "Ruby wants something to do. Height: #{$height}"
]]></Blockbehavior>
<Blockbehavior implName="lang:groovy:inline:"><![CDATA[
// This works if pasted in as a last child of Block.
height.incVal(0.02);
System.out.print("Groovy wants something to do. Height:" + height + "\n");
]]></Blockbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Block</title>
<rect id="PhysicalSystem/Block" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<g>
<title>Height</title>
<rect id="PhysicalSystem/Block/Height" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
<FreeMind mediaType="application/x-mm+xml">
<map version="0.9.0">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<!--
Automatically generated by Xholon version 0.7.1, using Xholon2MindMap.java
Sun Jan 20 12:56:37 EST 2008 1200851797856
model: Spring Idol
www.primordion.com/Xholon
-->
<node CREATED="1200851797856" ID="0" TEXT="springIdol_0">
<node CREATED="1200851797856" FOLDED="true" ID="1" POSITION="right" TEXT="instruments_1">
<node CREATED="1200851797856" ID="2" TEXT="cymbal_2">
</node>
<node CREATED="1200851797856" ID="3" TEXT="guitar_3">
</node>
<node CREATED="1200851797856" ID="4" TEXT="harmonica_4">
</node>
<node CREATED="1200851797856" ID="5" TEXT="piano_5">
</node>
<node CREATED="1200851797856" ID="6" TEXT="saxophone_6">
</node>
</node>
<node CREATED="1200851797856" FOLDED="true" ID="7" POSITION="right" TEXT="performers_7">
<node CREATED="1200851797856" ID="8" TEXT="oneManBand_8">
<arrowlink COLOR="#6666ff" DESTINATION="3" ENDARROW="Default" ID="830" STARTARROW="None"/>
</node>
<node CREATED="1200851797856" ID="9" TEXT="poeticJuggler_9">
<arrowlink COLOR="#6666ff" DESTINATION="14" ENDARROW="Default" ID="9140" STARTARROW="None"/>
</node>
<node CREATED="1200851797856" ID="10" TEXT="baseSaxophonist_10">
<arrowlink COLOR="#6666ff" DESTINATION="12" ENDARROW="Default" ID="10120" STARTARROW="None"/>
<arrowlink COLOR="#6666ff" DESTINATION="6" ENDARROW="Default" ID="1061" STARTARROW="None"/>
</node>
</node>
<node CREATED="1200851797856" FOLDED="true" ID="11" POSITION="right" TEXT="songs_11">
<node CREATED="1200851797856" ID="12" TEXT="song_12">
</node>
</node>
<node CREATED="1200851797856" FOLDED="true" ID="13" POSITION="right" TEXT="poems_13">
<node CREATED="1200851797856" ID="14" TEXT="sonnet29_14">
</node>
</node>
</node>
</map>
</FreeMind>
<Test mediaType="application/x-test+xml">
<Testing1/>
<Testing2/>
<Testing3/>
</Test>
<Test mediaType="application/x-test+xml">
<Testing4/>
<Testing5/>
<Testing6/>
</Test>
</XholonWorkbook>