<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox where print preview displays the noscript content */
noscript {display:none;}
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

Also see [[AdvancedOptions]]
Restarting project.  The goal is support the creation of box and arrow projects.  Storing information in a graphical way with boxes representing things and arrows representing associations.  [[UML]] is a kind of box and arrow diagrams.  The program will be coded in [[Java]], generate [[SVG]] and maybe [[Ascii graphics]] and store info as [[XMI]].  It will also use an [[injection of dependency]] framework to structure code.
Looking at connection between logic programing and box arrows.

p(x,y):-q(x,z),r(z),s(z,y).  So let p(x,y), r(z) and s(z,y) be boxes.

A predicate box has a cardinality; it may be have tuples of that length and or/rules like q(x,y),r(z),s(z,y). Or can rule be arrow:
<object data="./predicate.svg" type="image/svg+xml" id="svg" width="850" height="500"></object>

Implemented named-boxes, adding, saving and opening.
Began shell.  Decision to use Continuations to hold state; commands will operate with function from Continuations to Continuations
[[Shell Architecture]]
Got Shell to point where you can create named boxes, add them to a model and display the info including the list of boxes.

Subject for consideration: [[Graphical Unification]]

Start [[Back Log]] prior to [[Code Review 1]]
Cleaned up command parser, and Continuation state.  Discovered input parse doesn't deal with extra white space.
Beginning code review.  Analysis of code with CCCC
Created Utility class in XML added openTag boolean
Making up Eclipse Project. Writing ProjectDescription.
Got JaxP xml reading to work for Description using XMLStreamReader so it can be called from any reader to construct Description object from Stream.

Thoughts about TypesOfArrows
Work on model persistence. Got simple presistence working.
[[Research Bibliography]]
Re-opening work on Box Arrow; getting ready to revise code.
(1) Get model of current state:
(2) Make work plan for vistiting code:
Code revision.  Create utility class in xml package to read objects from xml file.

Documentation:  [[BoxArrow Command Shell]]

Work on implementing Handle and Predicate
Add new section [[Resources and Reviews]]

Add section [[Conceptual Background]]
Remove ditch id from backlog added [[Names and Boxes]] to capture thinking.
Added section on [[Venn Diagram]] though I think I'll actually end up going with Euler Diagram
New Section to explore [[Predicates and trueIf relationship]]  as an extension to [[Predicate Box]]
Created Google code project http://code.google.com/p/boxarrow/ on Feb-25.  Have fixed a view bugs since then.
Next step creating arrows!
The "Continuation" is really just a State since I don't make new versions but directly operate on it.  Sort of a Monad.

The code look up pattern in Command and Box for the instance creator should be extracted and made it's own thing.

✓Make input less sensitive to white space.

✓Create Interface for XML rendering.  It should include constants for tags.  {{{xml.Persist}}}

Implement handle, findByName and getHandle;  --ditch id scheme.--  Ditching id is a bad idea.

The BoxArrow Command Shell is a command processor that allows you to interactively create box objects, save them to files, read file back in.

The shell state is composed of 
* A [[BoxArrow Model]]
* A stack of [[BoxArrow Objects]]

The commands are defined in the command.LineParser class:
	final String[] commands = {"quit","newModel", "info", 
			                   "open", "save", "saveAs", 
			                   "addBox", "listBoxes", "newBox", "setDescription"};

* {{{info}}} -- displays the current working state
* {{{listBoxes}}} -- displays list of boxes in current model
* {{{open}}} //file-path// -- reads contents of file into the Model of the working state
* {{{save}}} -- writes the model of the working state back to its defined file.  It's an error if the file has never been read or written.
* {{{saveAs}}} //file-path// -- defines the file-path of the working state Model and writes its contents to the file.
* {{{addBox}}} -- pops a box off the stack and adds it to the working state Model
* {{{newBos}}} //type// //args// -- creates a new box of the specified type with required arguments and pushes it on the stack
* {{{setDescription}}}
* {{{quit}}}
A BoxArrow model represents a closed universe of objects (Boxes), relationships between those objects (Arrows); and views of objects and arrows (Diagrams).  A model also has a name and a description.

A model may be persisted, in which case, it has been stored as an xml file at a specified file path.  If as model has been persisted and subsequently changed it is said to be dirtied.  Note the file path is not persisted as such when the model is read the path from which it is read is stored in the file-path field so it can be saved.  Neither are the persisted or dirty flags written to the xml file (they make no sense there).
public class Model implements Persist {
	String name="";
	Description description=null;
	BoxList boxes = new BoxList();
	ArrowList arrows;
	DiagList diagrams;
	String fileName="";
	boolean persisted=false;
	boolean dirty=true;

<object data="./BoxArrow.svg" type="image/svg+xml" id="svg" width="850" height="900"></object>

Initial Metrics: 

|pkg|#classes|#interfaces|#test|non-test sloc|test-sloc|

<object data="./Pre-Class-Model&Box.svg" type="image/svg+xml" id="svg" width="850" height="600"/>
<object data="./Pre-Class-Command.svg" type="image/svg+xml" id="svg" width="850" height="900"/>
[[Code Review 1]]
I typically work on problems by drawing pictures consisting of boxes (area of the drawing containing other area and having attributes/names) and arrows (lines connecting boxes with attributes/names).  These let me reason about the problem graphically.  This project attemptes to tie serveral areas together:
# diagrams conisting of boxes and arrows
# graphs consisinting of vertices and edges
# first-order logic consisting of predicates and sentences
# graph homomorphisms and logical relationships between  graphs

<object data="./base-ideas.svg" type="image/svg+xml" id="svg" width="500" height="650"></object>

[[Names and Boxes]]

A basic form of diagram is the [[Venn Diagram]].  An more current form of diagram is a Class Diagram from Object Oriented programming.
A container  is a special form of a predicate  whose contents are unique;
a container syntho can contain the literal chicken but then syntho.chicken is different than chicken.  I.e. it is not the case that meat(syntho.chicken)
unless explicitly included in the predicate meat as in meat(syntho.chicken)
[[Boxes and Arrows]]
[[2010-Feb-05]] [[2010-Mar-16]]

[[2010-Jan-12]] [[2010-Jan-14]] [[2010-Jan-16]] [[2010-Jan-22]] [[2010-Jan-28]]

[[2009-Jul-06]] [[2009-Jul-08]] [[2009-Jul-09]] [[2009-Jul-10]] [[2009-Jul-16]] [[2009-Jul-20]]

[[2009-Apr-16]] [[2009-May-23]] [[2009-May-25]] [[2009-May-26]] [[2009-May-30]]
Boxes may have handles.   The value of a handle is the name of the box it refers to.
When including boxes in predicates they should be done by handles
When including boxes in containers they should be done directly since their names will change based on the container.

Handles are rendered into the xml file as a special kind of box.

The findByName method on a model will return the box named by the argument. Or a null if there is no such box in the model.

The getHandle method will return the handle of a specified box.

[[Boxes and Arrows]]
[[Diary Entries]]
[[Back Log]]
Boxes have names and containers create a namespace for their contents.  But it should be entirely possible for a box to be unnamed, renamed, anonymous, etc.  I want the emphasis of Box Arrow to the the logical structure of the boxes and arrows and not the names so making the structure dependent on the name was a bad idea.  

<object data="./package.svg" type="image/svg+xml" id="svg" width="500" height="650"></object>

Will revisit containers, name space, package later; but the idea is that packages partition their contents.
A predicate box can is treated as a named predicate.  All the items in a box satisfy the predicate.


can be represented as a named box 'food' containing the literals 'apple' and 'ham'

Expectation that literal boxes occur only once everything else is a reference. 
Also if a predicate is included in another predicate

Then the model should contain:
literalBox ham
literalBox chicken
literalBox brocolli
literalBox tomato
literalBox apple
literalBox jello
predBox fruit containing literalBox apple and literalBox tomato
predBox veggie containing literalBox brocolli and literalBox tomato
predBox meat containing literalBox chicken and literalBox ham
predBox food containing predBox fruit, predBox veggie, predBox meat and literalBox jello

<object data="./pred-sampe.svg" type="image/svg+xml" id="svg" width="640" height="550"></object>
Consider two kinds of boxes //literal// and //predicate// and the arrow of type //trueIf//
The literal box better named [[ur constant]] by SPARCL folk [[Spratt and Ambler]] //A Logic Programming Language Built on Sets// as" the numbers and alphanumeric tokens commonly used in writing the constants of sets.  In BoxArrow these correspond to simple named boxes.

The [[Predicate Box]] is a named box with a set of arrows of type //trueIf//  the following diagram:
<object data="./food-jello.svg" type="image/svg+xml" id="svg" width="280" height="80"></object>
should be read as the assertion: ''Food(jello)''

Likewise the relationship can hold between two Predicate Boxes such as Food and Meat.  This can be read as Food(X):-Meat(X).  The assertions in [[Predicate Box]] can be diagrammed as follows:
<object data="./foods.svg" type="image/svg+xml" id="svg" width="495" height="330"></object>

The figure above displays a model of BoxArrow relationships.  A diagram is an arrangement of model elements; it can be complete as above, it can be a hand crafted diagram to demonstrate a specific point, or it can represent a query/evaluation.  For example, if you add three boxes: Food, jello and ham to a diagram and evaluate the associations between the boxes, the result would be:
<object data="./ham-jello.svg" type="image/svg+xml" id="svg" width="300" height="160"></object>
The ''dotted'' relationship between Food and ham is inferred from the transitive nature of the //trueIf// relationship. 
Another example, is to create a diagram with the ''predicate boxes'' and query for the ''Euler Diagram'' relationships:
<object data="./food-euler.svg" type="image/svg+xml" id="svg" width="275" height="175"></object>
Where the direct arrows are the //enclosed// relation and the undirected relation is the //pure intersection// relation which is inferred by observing the non-null intersection between Fruit and Veggie.
Boxes are things/thoughts/concepts.  They have name, description, components which are other boxes; sub-boxes are named __container.name__. Arrows are relationships between boxes.  

A ''model'' contains boxes and their components and arrows.  A ''diagram'' is a view into the model.

A model has a name and a list of boxes;  it can be saved, boxes can be added to it and deleted from it..  Boxes can be added to boxes; A model can also have one or more diagrams; diagrams contain placed boxes (boxes with coordinates).  A model presents a treeview of its boxes.
''A literal box represents a constant value.''
[[Predicate Box]]



A map box represents a function from set of boxes to another:


A map can also be formed by composing two maps: tasty * meatList
Map is named set of arrows.   The arrow properties should belong to the map.

(1) DiaGen -    University of Erlangen

(2) Euler Diagram Reasoning
      Gem Stapleton
  Visual Modelling Group
 University of Brighton, UK
Technical Report VMG.07.02

(3)   Triangulated Categories - A. Neeman - 2001 - Princeton Univ. Press 

(4) General Euler Diagram Generation
 Peter Rodgers1, Leishi Zhang1 and Andrew Fish2
  Computing Laboratory, University of Kent, UK

(5) Logic, Computation and Set Theory
Thomas Foster
January 14, 2002

(6) Model categories
  Mark Hovey

(7) Modeling Bounded Rationality
Ariel Rubinstein
The MIT Press
Cambridge, Massachusetts
London, England
© 1998 Massachusetts Institute of Technology

(8)  ‘Galculator’ Functional Prototype of a Galois-connection Based Proof Assistant
                   Paulo F. Silva Jos ́ N. Oliveira
PPDP’08, July 15–17, 2008, Valencia, Spain.
Copyright c 2008 ACM 978-1-60558-117-0/0

(9) Similarity-based Reasoning in Qualified Logic Programming
         Rafael Caballero Mario Rodr ́guez-Artalejo
        Carlos A. Romero-D ́az
PPDP’08, July 15–17, 2008, Valencia, Spain.

(10)               Pictures Depicting Pictures
On the Specification of Visual Languages by Visual Grammars1
                        Bernd Meyer,
        FernUni Hagen, LG Praktische Informatik IV,
                   5800 Hagen, Germany

(11) SPARCL: A Logic Programming Language Built on Sets
                  Lindsey Spratt and Allen Ambler
      Department of Electrical Engineering and Computer Science
                        University of Kansas,
                        Lawrence, KS, 66045

(12)  A Visual Logic Programming Language
Based on Sets and Partitioning Constraints.
        Lindsey Spratt and Allen Ambler
         Computer Science Department
             University of Kansas,
             Lawrence, KS, 66045

(13)       Automated Diagram Drawing
Who?  John Howse, Peter Rodgers and Gem Stapleton
From? University of Brighton and University of Kent

(14)      Fast Zone Discrimination
                  Robin Clark∗
               R&D Department
         Energy Technology Control
25 North Street, Lewes, BN7 2PE, Great Britain

(15) A Peirce-style calculus for ALC
     Frithjof Dau and Peter Eklund ∗
          Faculty of Informatics
       University of Wollongong
         Wollongong, Australia

(16) Visualizing a Logic of Dependability Arguments
                         C Gurr
              School of Systems Engineering
                The University of Reading
                      Reading, UK

(17) A PROLOG-based Approach to Representing and
    Querying Software Engineering Models
                  Harald St ̈ rrle 
                 Munich, Germany

AGG is a development environment for attributed graph transformation systems supporting an algebraic approach to graph transformation. It aims at specifying and rapid prototyping applications with complex, graph structured data. AGG may be (re)used (without GUI) as a general purpose graph transformation engine in high level JAVA applications employing graph transformation methods.

Diary of a Project
Boxes and Arrows
<object data="./BoxSorts.svg" type="image/svg+xml" id="svg" width="950" height="750"></object>

Boxes all have id's and sorts.  The Named Boxes can be found via their name.  The Position Boxes can be found by their position in their owner.  Categories are boxes that can contain anyother Box plus support large content blocks of text, Tables can contained an indexed list of Tuples, Tuples contain an ordered list of Values.  Variables are named entities that contain an ordered list of values plus identifiy the type of the values.
Arrows should be transitive/intransitive and refexive and irreflexive  plus multiplicative where 

A- - -(0.xx)- - ->B- - -(0.yy)- - ->C implies A- - -(0.xx*0.yy)- - ->C
a probable arrow A- - - (90%)- - ->B and B - - - (70%) - - - >C implies A - - - (63%) - - - >C

transitive and reflexive === Identity
transitive and irreflexive === part-of or child-of
intransitive and reflexive === near or nearly
intransitive and irreflexive === arbitrary relationship

distance arrow  would be additive
probable arrow would be multiplicative


AddBoxAfter(<name>) add box with <name> after current
AddBoxBefore(<name>) add box with <name> before current
AddBoxTo(<name>) add box with <name> to current
FindBox(<pattern>) make first box matching <pattern> current
[img[Use Cases|./ba_usecases.gif]]

<object data="./venn.svg" type="image/svg+xml" id="svg" width="250" height="180"></object>

!!! Resources
Venn vs Euler Diagrams http://en.wikipedia.org/wiki/Euler_diagram
Euler Diagrams Project http://www.eulerdiagrams.com/
Network analysis of Bush admin: http://www.cmu.edu/joss/content/articles/volume5/JohnsonKrempel/
Reasoning with Euler Diagram: http://www.wiu.edu/users/mfmk/Math101/Logic/LEuler.html
Automatic Drawing of Diagrams: http://www.eulerdiagrams.com/tutorial/AutomatedDiagramDrawing.html
VennMaster http://www.informatik.uni-ulm.de/ni/staff/HKestler/vennm/doc.html

Force model layout engine: http://code.google.com/p/linloglayout/