| @namespace(uri="filesystem", prefix="filesystem") | |
| package filesystem; | |
| @gmf.diagram | |
| class Filesystem { | |
| val Drive[*] drives; | |
| val Sync[*] syncs; | |
| } | |
| class Drive extends Folder { | |
| } | |
| class Folder extends File { | |
| @gmf.compartment | |
| val File[*] contents; | |
| } | |
| class Shortcut extends File { | |
| @gmf.link(target.decoration="arrow", style="dash") | |
| ref File target; | |
| } | |
| @gmf.link(label="lastSync", source="source", | |
| target="target", style="dot", width="2") | |
| class Sync { | |
| ref File source; | |
| ref File target; | |
| attr String lastSync; | |
| } | |
| @gmf.node(label = "name") | |
| class File { | |
| attr String name; | |
| } |