// Uncomment the following line to change the fontsize:
// fontsize=14
//////////////////////////////////////////////////////////////////////////////////////////////
// Welcome to UMLet!
//
// Double-click on UML elements to add them to the diagram, or to copy them
// Edit elements by modifying the text in this panel
// Hold Ctrl to select multiple elements
// Use Ctrl+mouse to select via lasso
//
// Use ± or Ctrl+mouse wheel to zoom
// Drag a whole relation at its central square icon
//
// Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word)
// Edit the files in the "palettes" directory to create your own element palettes
//
// Select "Custom Elements > New..." to create new element types
//////////////////////////////////////////////////////////////////////////////////////////////
// This text will be stored with each diagram; use it for notes.10com.umlet.element.base.Class0330210140Menu
--
--
#Menu()
/+~Menu()/
#addItem(MenuItem*)
#removeItem(MenuItem*)
#display()
--
-- Base class for all Menuscom.umlet.element.base.Class0540210250TextMenu
--
outputter: ostream
title: string;
spacer: char
length: int
--
#TextMenu(ostream&,string,char,int)
#TextMenu(ostream&,string)
/+~TextMenu()/
addItem(MenuItem*)
removeItem(MenuItem*)
display()
doQuit()
hasQuit(): bool
showEntry(MenuItem*)
com.umlet.element.base.Class740300370380MenuItem
--
char trigger: char
description: string*
added: bool
--
#MenuItem(char,const char*,Menu*);
/+~MenuItem();/
/+doTrigger()/
/+checkTrigger(char)/
/+formatEntry(): const string/
/+getDescription(): const string/
/+getTrigger(): char/
/+add_to_menu(Menu*)/
/+wasAdded(): bool/
#setDescription(string);
--
Responsibilities
-- Store Items in a menu
-- check a trigger,
if the trigger matches call doTrigger() on subclass
--
Constraints
-- A MenuItem always belongs to a single
-- Destruction is done by the owning menucom.umlet.element.base.Relation18036058050lt=<<<<-
m1=1
m2=1...N30;30;560;30com.umlet.element.base.Relation7044050120lt=<<-30;30;30;100com.umlet.element.base.Class7501200360120ActionMenuItem
--
--
#ActionMenuItem(char,const char*,Menu*,Action*)
/+~ActionMenuItem()/
/+doTrigger()/
--
Responsibilities
-- Call action.call() when the trigger is recieved
com.umlet.element.base.Relation88065050570lt=<<-30;30;30;550com.umlet.element.base.Class1400830340260DisplayMenuItem
--
string title;
int length;
char spacer;
--
#DisplayMenuItem(Menu*, StringView *);
#DisplayMenuItem(Menu*, StringView *, string, char, int);
/+~DisplayMenuItem()/
/+doTrigger()/
/+checkTrigger(char)/
/+formatEntry(): const string/
/getDescription(): const string/
--
Responsibilities
-- Display any kind of stringView within a Menu
-- All trigger are ignoredcom.umlet.element.base.Class1890880410120StringView
--
--
#StringView()
/+~StringView()/
/+toString(): const string/
--
Responsibilities
-- Base class for anything that can be displayed as a Stringcom.umlet.element.base.Relation171090019040lt=<<<<-
m1=1...N
m2=130;30;180;30com.umlet.element.base.Relation880650640200lt=<<-30;30;30;150;620;150;620;180com.umlet.element.base.Class960850310220SeperatorItem
--
spacer: char
length: int
--
#SeperatorItem(Menu*)
#SeperatorItem(Menu*,char,int)
/+virtual ~SeperatorItem()/
/+doTrigger()/
/+checkTrigger(char)/
/+getDescription(): const string/
/+formatEntry(): const string/
--
Responsibilities
-- Display a seperating line of spacers com.umlet.element.base.Relation880650250220lt=<<-30;30;30;150;230;150;230;200com.umlet.element.base.Class350760360140<<composite>>
SubMenuItem
--
--
#SubMenuItem(char,const char*,Menu*,Menu*)
/+~SubMenuItem()/
/+doTrigger()/
--
Responsibilities
-- Produce a submenu when this item is triggeredcom.umlet.element.base.Relation180410190460lt=<<<<-
m1=1
m2=1170;440;110;440;110;30;30;30com.umlet.element.base.Relation490650440130lt=<<-420;30;420;80;30;80;30;110com.umlet.element.base.Class3801190220170<<Command>>
Action
--
--
#Action()
/+~Action()/
/+call()/
/+undo()/
/+canUndo(): bool/
--
Responsibilities
-- Perfom an Operation on callcom.umlet.element.base.Relation570121020050lt=<<<<-
m1=0...N
m2=1180;30;30;30com.umlet.element.base.Class3201470340190<<Wrapper>>
MethodAction
--
executeMethod : boost::function<void()>
--
#MethodAction(boost::function<void()>)
/+~MethodAction()/
/+call()/
/+undo()/
/+canUndo(): bool/
--
Responsibilities
-- Transform an ordinary method into an Actioncom.umlet.element.base.Relation450133050160lt=<<-30;30;30;140com.umlet.element.base.Class197064026080<<View>>
View
--
--
--
Responsibilities
-- Anything that needs to be shown
com.umlet.element.base.Relation207069040200lt=<<-30;30;30;190com.umlet.element.base.Class16601190410150<<Wrapper>>
MethodStringView
--
displayMethod: boost::function<string()>
--
#MethodStringView(boost::function<string()>)
/+~MethodStringView()/
/+toString(): const string/
--
Responsibilities
-- Turn any method that returns a string into a StringViewcom.umlet.element.base.Class21501190470150<<Wrapper>>
StreamStringView
--
displayMethod: boost::function<void(ofstream *)>
--
StreamStringView(boost::function<void(ofstream *)>)
/+~StreamStringView()/
/+toString(): const string/
--
Responsibilities
-- Turn any method that uses a stream for output into a StringViewcom.umlet.element.base.Relation1830970270230lt=<<-260;30;260;120;30;120;30;220com.umlet.element.base.Relation2060970340230lt=<<-30;30;30;120;330;120;330;220