Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorrgronback2008-04-29 06:40:15 -0400
committerrgronback2008-04-29 06:40:15 -0400
commit35580ad332a6ddf9313496ff0817092cd06ebc6d (patch)
tree5c758d4b4ae91ec2fe17405e9dbd4063ba895825 /doc
parent1deaff777630c0e828dae5136d1c6f9d3d48e34f (diff)
downloadorg.eclipse.gmf-tooling-35580ad332a6ddf9313496ff0817092cd06ebc6d.tar.gz
org.eclipse.gmf-tooling-35580ad332a6ddf9313496ff0817092cd06ebc6d.tar.xz
org.eclipse.gmf-tooling-35580ad332a6ddf9313496ff0817092cd06ebc6d.zip
[229015] Provide Wiki docs offline in gmf.doc plugin
Wiki content converted to HTML (with manual cleanup required), index altered, manifest bundle version incremented.
Diffstat (limited to 'doc')
-rw-r--r--doc/org.eclipse.gmf.doc/META-INF/MANIFEST.MF2
-rw-r--r--doc/org.eclipse.gmf.doc/toc.xml8
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/index.html11
-rwxr-xr-xdoc/org.eclipse.gmf.doc/tutorials/runtime-index.html66
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/audit_rule.pngbin0 -> 32391 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/audit_violation.pngbin0 -> 21654 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/basic_mindmap.pngbin0 -> 94088 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph.pngbin0 -> 102584 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph2.pngbin0 -> 117459 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_map.pngbin0 -> 129750 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_project.pngbin0 -> 69362 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_tool.pngbin0 -> 113298 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/checkout.pngbin0 -> 26549 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_graph.pngbin0 -> 22901 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_map.pngbin0 -> 13676 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/connection_handle.pngbin0 -> 37257 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/create_gmfgen.pngbin0 -> 23950 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link.pngbin0 -> 85890 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_def.pngbin0 -> 24388 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_mapping.pngbin0 -> 32804 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/domain.pngbin0 -> 18536 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/europa_gmf.pngbin0 -> 118155 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/feature_init.pngbin0 -> 32483 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/flow_layout.pngbin0 -> 24000 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_dashboard.pngbin0 -> 43666 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_navigator.pngbin0 -> 43427 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_properties.pngbin0 -> 38532 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/index.html9
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/insert_subtopic.pngbin0 -> 25886 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/inserted_subtopic.pngbin0 -> 7914 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/label_graph.pngbin0 -> 37857 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/label_mapping.pngbin0 -> 44800 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/link2self.pngbin0 -> 1856 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/link_constraint.pngbin0 -> 17544 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap-index.html12
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.ecore298
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.xsd96
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap_rcp.pngbin0 -> 64155 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/new_icons.pngbin0 -> 81898 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/overview.pngbin0 -> 36286 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/relationship_tool.pngbin0 -> 9947 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/resource.pngbin0 -> 7018 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/resource_figure.pngbin0 -> 10850 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/resource_map.pngbin0 -> 29996 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/resource_tool.pngbin0 -> 8234 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/rounded_figure.pngbin0 -> 29154 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/runtime_init.pngbin0 -> 11999 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/shortcut_element.pngbin0 -> 6408 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/step1.html258
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/step2.html416
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/step3.html443
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/step4.html140
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/stickynote.pngbin0 -> 10568 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram.pngbin0 -> 95483 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram_rcp.pngbin0 -> 65868 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/thread_Item_compartment.pngbin0 -> 18141 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/thread_tool.pngbin0 -> 7360 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/tool_links.pngbin0 -> 8239 bytes
-rw-r--r--doc/org.eclipse.gmf.doc/tutorials/tooling/validation_extensions.pngbin0 -> 8530 bytes
59 files changed, 1751 insertions, 8 deletions
diff --git a/doc/org.eclipse.gmf.doc/META-INF/MANIFEST.MF b/doc/org.eclipse.gmf.doc/META-INF/MANIFEST.MF
index dfea7a038..a5f5ae0f1 100644
--- a/doc/org.eclipse.gmf.doc/META-INF/MANIFEST.MF
+++ b/doc/org.eclipse.gmf.doc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.gmf.doc;singleton:=true
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
diff --git a/doc/org.eclipse.gmf.doc/toc.xml b/doc/org.eclipse.gmf.doc/toc.xml
index 4492984be..b5e14a990 100644
--- a/doc/org.eclipse.gmf.doc/toc.xml
+++ b/doc/org.eclipse.gmf.doc/toc.xml
@@ -45,9 +45,13 @@
<anchor id="tutorial-before" />
<topic label="Tutorials" href="tutorials/index.html">
-
+ <anchor id="tutorial-tooling-before" />
+ <topic label="Tooling" href="tutorials/tooling/index.html">
+ <topic label="Mindmap" href="tutorials/tooling/mindmap-index.html" />
+ </topic>
+ <anchor id="tutorial-tooling-after" />
<anchor id="tutorial-runtime-before" />
- <topic label="Runtime" href="tutorials/index.html">
+ <topic label="Runtime" href="tutorials/runtime-index.html">
<topic label="Extensible Type Registry" href="tutorials/common/Extensible Type Registry/extensibleTypeRegistryTutorial.html" />
<topic label="Service Providers" href="tutorials/Service and Provider Tutorial.html" />
<topic label="Clipboard Tutorial" href="tutorials/msl/clipboardTutorial.html" />
diff --git a/doc/org.eclipse.gmf.doc/tutorials/index.html b/doc/org.eclipse.gmf.doc/tutorials/index.html
index 6fe2c698f..aee66753c 100644
--- a/doc/org.eclipse.gmf.doc/tutorials/index.html
+++ b/doc/org.eclipse.gmf.doc/tutorials/index.html
@@ -17,10 +17,11 @@ content="IBM Software Development Platform" />
<p>This index lists available Tutorials on GMF.</p>
<h3>GMF Tooling Tutorials</h3>
-
-<p>A tutorial that covers the tooling and generative components of
-GMF is maintained on the GMF Wiki site <a
-href="http://wiki.eclipse.org/index.php/GMF_Tutorial">here</a>.</p>
+<ul>
+ <li><a href="tooling/mindmap-index.html">Mindmap tutorial</a></li>
+</ul>
+<p><b>Note</b>: The mindmap tutorial is also maintained on the <a href="http://wiki.eclipse.org/index.php/GMF_Tutorial">wiki</a> and may be more up-to-date than what is packaged in this Help book.
+</p>
<h3>GMF Runtime Tutorials</h3>
@@ -64,7 +65,7 @@ Creation Assistants</a></li>
<br />
<hr />
<p><a href="http://www.eclipse.org/legal/epl-v10.html">Copyright
-(c) 2000,2006 IBM Corporation and others. All Rights
+(c) 2000,2008 IBM Corporation and others. All Rights
Reserved.</a></p>
<br />
diff --git a/doc/org.eclipse.gmf.doc/tutorials/runtime-index.html b/doc/org.eclipse.gmf.doc/tutorials/runtime-index.html
new file mode 100755
index 000000000..aa0db706d
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/runtime-index.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="generator" content="HTML Tidy, see www.w3.org" />
+<meta http-equiv="Content-Type"
+content="text/html; charset=ISO-8859-1" />
+<meta name="GENERATOR"
+content="IBM Software Development Platform" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link href="../book.css" rel="stylesheet" type="text/css" />
+<title>Runtime Tutorials</title>
+</head>
+<body>
+<h1>GMF Runtime Tutorial Index</h1>
+
+<p>This index lists available Tutorials on the GMF Runtime.</p>
+
+<ul>
+<li><a
+href="common/Extensible Type Registry/extensibleTypeRegistryTutorial.html">
+Extensible Type Registry</a></li>
+
+<li><a href="Service and Provider Tutorial.html">Service
+Providers</a></li>
+
+<li><a href="msl/clipboardTutorial.html">Clipboard
+Tutorial</a></li>
+
+<li><a href="diagram/createShape.html">Creating a Shape</a></li>
+
+<li><a href="diagram/createConnection.html">Creating
+Connections</a></li>
+
+<li><a href="diagram/diagramPreferencesTutorial.html">Diagram
+Preferences</a></li>
+
+<li><a href="diagram/paletteConfigurationTutorial.html">Configuring
+and Extending the Diagram Palette</a></li>
+
+<li><a href="diagram/automaticLayout.html">Modifying a Container to
+Support Automatic Layout</a></li>
+
+<li><a href="diagram/containmentOfShapes.html">Supporting
+Containment of Shapes</a></li>
+
+<li><a href="diagram/canonicalContainer.html">Supporting Canonical
+Containers</a></li>
+
+<li><a
+href="diagram/connectionCreationAssistantTutorial.html">Connection
+Creation Assistants</a></li>
+</ul>
+
+<br />
+<br />
+<hr />
+<p><a href="http://www.eclipse.org/legal/epl-v10.html">Copyright
+(c) 2000,2008 IBM Corporation and others. All Rights
+Reserved.</a></p>
+
+<br />
+ <br />
+</body>
+</html>
+
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/audit_rule.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/audit_rule.png
new file mode 100644
index 000000000..73ee38557
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/audit_rule.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/audit_violation.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/audit_violation.png
new file mode 100644
index 000000000..c37392475
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/audit_violation.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/basic_mindmap.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/basic_mindmap.png
new file mode 100644
index 000000000..5d4f3c2d8
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/basic_mindmap.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph.png
new file mode 100644
index 000000000..9888dc26e
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph2.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph2.png
new file mode 100644
index 000000000..117e825da
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_graph2.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_map.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_map.png
new file mode 100644
index 000000000..0d21f1879
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_map.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_project.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_project.png
new file mode 100644
index 000000000..e1903e39f
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_project.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_tool.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_tool.png
new file mode 100644
index 000000000..0d643e386
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/cheatsheet_tool.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/checkout.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/checkout.png
new file mode 100644
index 000000000..019d8ede0
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/checkout.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_graph.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_graph.png
new file mode 100644
index 000000000..6240e2047
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_graph.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_map.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_map.png
new file mode 100644
index 000000000..2a58960f4
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/compartment_map.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/connection_handle.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/connection_handle.png
new file mode 100644
index 000000000..1d1ef06d9
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/connection_handle.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/create_gmfgen.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/create_gmfgen.png
new file mode 100644
index 000000000..05c4d850c
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/create_gmfgen.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link.png
new file mode 100644
index 000000000..620c2ea8c
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_def.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_def.png
new file mode 100644
index 000000000..9a59af802
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_def.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_mapping.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_mapping.png
new file mode 100644
index 000000000..cced57d82
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/dependency_link_mapping.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/domain.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/domain.png
new file mode 100644
index 000000000..eb2e6529e
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/domain.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/europa_gmf.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/europa_gmf.png
new file mode 100644
index 000000000..bde7018fe
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/europa_gmf.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/feature_init.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/feature_init.png
new file mode 100644
index 000000000..4fe926d00
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/feature_init.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/flow_layout.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/flow_layout.png
new file mode 100644
index 000000000..2e49acdf1
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/flow_layout.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_dashboard.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_dashboard.png
new file mode 100644
index 000000000..55cbc1ffa
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_dashboard.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_navigator.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_navigator.png
new file mode 100644
index 000000000..d52ac20b3
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_navigator.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_properties.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_properties.png
new file mode 100644
index 000000000..04a5a4568
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/gmf_properties.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/index.html b/doc/org.eclipse.gmf.doc/tutorials/tooling/index.html
new file mode 100644
index 000000000..e32abe4a2
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/index.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<h1><b>GMF Tooling Tutorials</b></h1>
+<p>This index lists available Tutorials on the GMF Tooling component.</p>
+<ul>
+ <li><a href="mindmap-index.html">Mindmap</a></li>
+</ul>
+</body>
+</html>
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/insert_subtopic.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/insert_subtopic.png
new file mode 100644
index 000000000..13d9f818e
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/insert_subtopic.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/inserted_subtopic.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/inserted_subtopic.png
new file mode 100644
index 000000000..49814d3c6
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/inserted_subtopic.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/label_graph.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/label_graph.png
new file mode 100644
index 000000000..4de98fa9d
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/label_graph.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/label_mapping.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/label_mapping.png
new file mode 100644
index 000000000..687a4b90f
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/label_mapping.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/link2self.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/link2self.png
new file mode 100644
index 000000000..c0a3e2e29
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/link2self.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/link_constraint.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/link_constraint.png
new file mode 100644
index 000000000..ad4fe53f6
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/link_constraint.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap-index.html b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap-index.html
new file mode 100644
index 000000000..29474fe92
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap-index.html
@@ -0,0 +1,12 @@
+<html>
+<body>
+<h1><b>GMF Mindmap Tutorial</b></h1>
+<p>This index lists the steps available for the Tooling component's Mindmap tutorial.</p>
+<ul>
+ <li><a href="./step1.html">Step 1</a></li>
+ <li><a href="./step2.html">Step 2</a></li>
+ <li><a href="./step3.html">Step 3</a></li>
+ <li><a href="./step4.html">Step 4</a></li>
+</ul>
+</body>
+</html>
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.ecore b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.ecore
new file mode 100644
index 000000000..3ef152f5e
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.ecore
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="mindmap"
+ nsURI="http://www.example.org/mindmap" nsPrefix="mindmap">
+ <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="map" upperBound="-2" eType="#//Map"
+ volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="map"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Map">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Map"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootTopics" upperBound="-1"
+ eType="#//Topic" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="rootTopics"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="relations" upperBound="-1"
+ eType="#//Relationship" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="relations"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resources" upperBound="-1"
+ eType="#//Resource" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="resources"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="title"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Priority">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Priority"/>
+ </eAnnotations>
+ <eLiterals name="ZERO"/>
+ <eLiterals name="ONE" value="1"/>
+ <eLiterals name="TWO" value="2"/>
+ <eLiterals name="THREE" value="3"/>
+ <eLiterals name="FOUR" value="4"/>
+ <eLiterals name="FIVE" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PriorityObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Priority:Object"/>
+ <details key="baseType" value="Priority"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Relationship">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Relationship"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="label"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Topic">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="source"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//Topic">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="target"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" unique="false" eType="#//RelationshipType"
+ defaultValueLiteral="DEPENDENCY" unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="type"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="RelationshipType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="RelationshipType"/>
+ </eAnnotations>
+ <eLiterals name="DEPENDENCY"/>
+ <eLiterals name="INCLUDES" value="1"/>
+ <eLiterals name="EXTENDS" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="RelationshipTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="RelationshipType:Object"/>
+ <details key="baseType" value="RelationshipType"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Resource">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Resource"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="comments" upperBound="-1"
+ eType="#//Thread" eOpposite="#//Thread/author">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="comments"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="email" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="email"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="name"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="topics" upperBound="-1"
+ eType="#//Topic" eOpposite="#//Topic/resources">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="topics"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Thread">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Thread"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="items" upperBound="-1"
+ eType="#//ThreadItem" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="items"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Resource"
+ eOpposite="#//Resource/comments">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="author"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="postDate" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Date">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="postDate"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="subject" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="subject"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ThreadItem">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ThreadItem"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Resource">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="author"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="body"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="itemPostDate" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Date">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="itemPostDate"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Topic">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Topic"/>
+ <details key="kind" value="elementOnly"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="comments" upperBound="-1"
+ eType="#//Thread" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="comments"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Float" defaultValueLiteral="0"
+ unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="duration"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="endDate" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Date">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="endDate"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="name"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentComplete" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Float" unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="percentComplete"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" unique="false"
+ eType="#//Priority" defaultValueLiteral="ZERO" unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="priority"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resources" upperBound="-1"
+ eType="#//Resource" eOpposite="#//Resource/topics">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="resources"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="startDate" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Date">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="startDate"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subtopics" upperBound="-1"
+ eType="#//Topic">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="subtopics"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.xsd b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.xsd
new file mode 100644
index 000000000..761088ad6
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap.xsd
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+ targetNamespace="http://www.example.org/mindmap"
+ xmlns:mindmap="http://www.example.org/mindmap"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+
+ <xsd:element name="map" type="mindmap:Map"/>
+
+ <xsd:complexType name="Map">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="rootTopics" type="mindmap:Topic"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="relations" type="mindmap:Relationship"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="resources" type="mindmap:Resource"/>
+ </xsd:sequence>
+ <xsd:attribute name="title" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="Topic">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="comments" type="mindmap:Thread"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute ecore:reference="mindmap:Topic" name="subtopics">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:anyURI"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute ecore:opposite="topics" ecore:reference="mindmap:Resource" name="resources">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:anyURI"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="percentComplete" type="xsd:float"/>
+ <xsd:attribute name="priority" type="mindmap:Priority"/>
+ <xsd:attribute name="startDate" type="xsd:date"/>
+ <xsd:attribute name="endDate" type="xsd:date"/>
+ <xsd:attribute default="0" name="duration" type="xsd:float"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="Relationship">
+ <xsd:attribute name="label" type="xsd:string"/>
+ <xsd:attribute ecore:reference="mindmap:Topic" name="source" type="xsd:anyURI"/>
+ <xsd:attribute ecore:reference="mindmap:Topic" name="target" type="xsd:anyURI"/>
+ <xsd:attribute name="type" type="mindmap:RelationshipType"/>
+ </xsd:complexType>
+ <xsd:complexType name="Resource">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute ecore:opposite="resources" ecore:reference="mindmap:Topic" name="topics">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:anyURI"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="email" type="xsd:string"/>
+ <xsd:attribute ecore:opposite="author" ecore:reference="mindmap:Thread" name="comments">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:anyURI"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+
+ <xsd:complexType name="Thread">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="items" type="mindmap:ThreadItem"/>
+ </xsd:sequence>
+ <xsd:attribute ecore:opposite="comments" ecore:reference="mindmap:Resource" name="author" type="xsd:anyURI"/>
+ <xsd:attribute name="subject" type="xsd:string"/>
+ <xsd:attribute name="postDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="ThreadItem">
+ <xsd:attribute ecore:reference="mindmap:Resource" name="author" type="xsd:anyURI"/>
+ <xsd:attribute name="body" type="xsd:string"/>
+ <xsd:attribute name="itemPostDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="RelationshipType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="DEPENDENCY"/>
+ <xsd:enumeration value="INCLUDES"/>
+ <xsd:enumeration value="EXTENDS"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="Priority">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ZERO"/>
+ <xsd:enumeration value="ONE"/>
+ <xsd:enumeration value="TWO"/>
+ <xsd:enumeration value="THREE"/>
+ <xsd:enumeration value="FOUR"/>
+ <xsd:enumeration value="FIVE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap_rcp.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap_rcp.png
new file mode 100644
index 000000000..eb18e60eb
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/mindmap_rcp.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/new_icons.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/new_icons.png
new file mode 100644
index 000000000..db816f0de
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/new_icons.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/overview.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/overview.png
new file mode 100644
index 000000000..99c04ac2b
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/overview.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/relationship_tool.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/relationship_tool.png
new file mode 100644
index 000000000..0215c5080
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/relationship_tool.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/resource.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource.png
new file mode 100644
index 000000000..7b93910ef
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_figure.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_figure.png
new file mode 100644
index 000000000..91737504c
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_figure.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_map.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_map.png
new file mode 100644
index 000000000..643ee9d94
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_map.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_tool.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_tool.png
new file mode 100644
index 000000000..03197c824
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/resource_tool.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/rounded_figure.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/rounded_figure.png
new file mode 100644
index 000000000..7d5897b11
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/rounded_figure.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/runtime_init.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/runtime_init.png
new file mode 100644
index 000000000..a19a5980f
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/runtime_init.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/shortcut_element.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/shortcut_element.png
new file mode 100644
index 000000000..dbbaafcb0
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/shortcut_element.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/step1.html b/doc/org.eclipse.gmf.doc/tutorials/tooling/step1.html
new file mode 100644
index 000000000..228bb142a
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/step1.html
@@ -0,0 +1,258 @@
+<html><head/>
+<img src="../../logo.gif" border="0" />
+<h1>GMF Tooling Tutorial: Step 1</h1>
+<p>
+This tutorial will introduce the Graphical Modeling Framework (<a href="http://www.eclipse.org/gmf" class="external">GMF</a>), an Eclipse Modeling Project project that aims to provide a generative bridge between the Eclipse Modeling Framework (<a href="http://www.eclipse.org/emf" class="external">EMF</a>) and Graphical Editing Framework (<a href="http://www.eclipse.org/gef" class="external">GEF</a>).
+</p>
+<p>
+In this tutorial, a <a href="http://en.wikipedia.org/wiki/Mind_map" class="external">mindmap</a> application will be developed, as described <a href="http://www.eclipse.org/gmf/requirements.php#scenarios" class="external">here</a>. This tutorial describes the functionality provided by GMF in its current state, using this build (<a href="http://download.eclipse.org/modeling/gmf/downloads/drops/R-2.0.1-200709280000/index.php" class="external">2.0.1</a>). It is expected that this tutorial will evolve with GMF to introduce new functionality as it is developed. New functionality will be covered by installments added to this tutorial, each with a corresponding viewlet. A viewlet for this installment of the tutorial can be found <a href="http://www.eclipse.org/gmf/tutorial/viewlets/tutorial.html" class="external">here</a> (warning: it's a bit out of date). The complete solution to this tutorial is maintained in CVS <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/?root=Modeling_Project" class="external">here</a>.
+</p>
+<h2 id="id1E4DAE5F62BF5F158E2AC67D46FF61BB62501"> Overview of GMF </h2>
+<p>
+The use of both EMF and GEF for building Eclipse-based functionality is quite common. Many references below provide information on how to utilize these frameworks together, some of which inspired the GMF project itself. Before diving into a new GMF project, let's explore a little of how GMF approaches the task of utilizing EMF and GEF in a generative manner. Another article focusing on the runtime portion of GMF is found <a href="http://www.eclipse.org/articles/Article-Introducing-GMF/article.html" class="external">here</a>.
+</p>
+<p>
+The GMF project has adopted the term 'toolsmith' to refer to developers that use GMF to build plug-ins, while 'practitioner' is used to referred to those who utilize said plug-ins, and who may also be developers. From a usability perspective, the number and types of 'models' utilized by GMF internally should be hidden to the greatest extent possible. However, it is likely that most toolsmiths are interested in knowing what is going on under the covers, so a description of each model is linked from the <a href="http://wiki.eclipse.org/index.php/GMF_Documentation">Documentation</a> page. Or, just import the plug-in into your workspace and browse the model locally.
+</p>
+<p>
+<span class="imgright">
+<img src="overview.png" alt="overview.png" /><br />
+GMF Overview
+</span>
+</p>
+<p>
+This is a diagram that illustrates the main components and models used during GMF-based development. Core to GMF is the concept of a graphical definition model. This model contains information related to the graphical elements that will appear in a GEF-based runtime, but have no direct connection to the domain models for which they will provide representation and editing. An optional tooling definition model is used to design the palette and other periphery (menus, toolbars, etc.).
+</p>
+<p>
+It is expected that a graphical or tooling definition may work equally well for several domains. For example, the UML class diagram has many counterparts, all of which are strikingly similar in their basic appearance and structure. A goal of GMF is to allow the graphical definition to be reused for several domains. This is achieved by using a separate mapping model to link the graphical and tooling definitions to the selected domain model(s).
+</p>
+<p>
+Once the appropriate mappings are defined, GMF provides a generator model to allow implementation details to be defined for the generation phase. The production of an editor plug-in based on the generator model will target a final model; that is, the diagram runtime (or &quot;notation&quot;) model. The runtime will bridge the notation and domain model(s) when a user is working with a diagram, and also provides for the persistence and synchronization of both. An important aspect of this runtime is that it provides a services-based approach to EMF and GEF functionality and is able to be leveraged by non-generated applications.
+</p>
+<p>
+With the basics of GMF covered, let's now walk through the process of using GMF in the development of a graphical editing surface for a particular domain. First, you will need to install GMF and its dependencies.
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id150616B53CCD2595D63104B820B8411C980463"> Setup </h2>
+<img src="europa_gmf.png" alt="europa_gmf.png" />
+<p>This version of the tutorial was written using this build of GMF (<a href="http://download.eclipse.org/modeling/gmf/downloads/drops/R-2.0.1-200709280000/index.php" class="external">2.0.1</a>). Note that the prerequisites are listed on the build page, which must be installed prior to installing GMF, either from the <a href="http://download.eclipse.org/modeling/gmf/downloads" class="external">download</a> page, or from the update manager <a href="http://download.eclipse.org/modeling/gmf/update-site/releases/site.xml" class="external">site</a>.
+</p>
+<p>
+Perhaps the easiest way to get started with GMF is to start with a fresh <a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.3.1.1-200710231652/index.php" class="external">Platform</a> install and utilize the Europa update site, found at Help > Updates > Find and Install... Search for new features to install > Europa Discovery Site. Then, select the Graphical Modeling Framework (Europa Edition) from under the 'Models and Model Development' category and then click the 'Select Required' button to have GMF's dependencies downloaded as well. Simple, huh?
+</p>
+<p>
+The TaiPan example referenced below is maintained in CVS and should remain functional with the latest builds of GMF, even if the tutorial is not quite up-to-date.
+</p>
+<br style="clear:both;"/>
+
+<h4 id="id4A7D5F394663462A3E161E1601D1883747BC17"> Quick Start </h4>
+<img src="checkout.png" alt="checkout.png" />
+<p>
+If you're anxious to see GMF in action, check out the Taipan example projects into your workspace from CVS by switching to the CVS Repository Exploring perspective and adding a repository location as shown in the image to the right. Otherwise, you can skip to the next section.
+</p>
+<p>
+Navigate to /HEAD/org.eclipse.gmf/examples and select the org.eclipse.gmf.examples.taipan.* modules. Right-click and select Check Out. If you are not using the latest build and prerequisites of GMF, you can always check out the version of the Taipan by date to correspond with the version you're using. The important point is that you'll need to work with synchronized versions of the GMF SDK and the Taipan example. To do this, after checkout you can right-click on the projects and selecting 'Team | Switch to Another Branch or Version...' and then choose 'Select the tag from the following list' and use the 'Add Date...' button at the bottom to enter the date of the GMF 2.0.1 release (28 September 2007). Press Finish and you're set.
+</p>
+<p>
+Switch to the Plug-in Development perspective and open the models folder within the org.eclipse.gmf.examples.taipan project. Explore each of the models found hereand their element properties. You'll notice that there are full and RCP versions of the generated Taipan examples to explore.
+</p>
+<p>
+We will look at each of the models in turn during the tutorial, but just to validate your configuration, you should be able to run this sample in a runtime workspace (simply accept the defaults for a new 'Eclipse Application' run configuration). In the runtime workspace, create an empty project and a new 'TaiPan Diagram' found in the Examples folder of the New dialog. Name it whatever you wish and click Finish. The generated diagram editor should open for you to explore. Some things to note in particular are:
+</p>
+<dl>
+ <ul>
+ <li>tool palette and overview </li>
+ <li>layout and selection tools </li>
+ <li>diagram image export (svg, bmp, jpeg, gif) </li>
+ <li>tabbed properties view </li>
+ <li>font and color options for selected element </li>
+ <li>link routing and style options </li>
+ <li>pop-up bars and connection handles </li>
+ <li>notes and geometric shapes </li>
+ <li>animated zoom and layout </li>
+ <li>diagram printing </li>
+ </ul>
+</dl>
+
+<p>
+<img src="taipan_diagram.png" alt="taipan_diagram.png" />
+</p>
+<p>
+Create a new launch configuration to run the TaiPanApplication and select just the Taipan *.rcp plug-in and its dependencies on the Plug-ins tab to run Taipan as a standalone RCP diagram editor.
+</p>
+<p>
+<img src="taipan_diagram_rcp.png" alt="taipan_diagram_rcp.png" />
+</p>
+<p>
+This concludes the quick start portion of this tutorial. What follows next is a more detailed look at each of the models shown above during the creation of a mindmap modeling surface.
+</p>
+
+<h4 id="id27BF51D3B27BFE1387B55D435E65ACA48229B"> A New Project </h4>
+<p>
+Before we start, you should specify for your workspace (or at least for your GMF projects) 1.5 compiler settings. In Window... Preferences... Java...Compiler options, make sure you have selected a Compliance Level of 1.5.
+</p>
+<p>
+As described <a href="http://www.eclipse.org/gmf/requirements.php#scenarios" class="external">here</a>, one of the usage scenarios for GMF includes producing a graphical surface for a mindmap application, to eventually be complemented with an alternative view of its temporal information (likely a Gantt chart &ndash; feel free to contribute this to the wiki). This section of the tutorial will demonstrate GMF's capabilities toward this end, and will continue to evolve as the project matures. If you'd prefer to follow along using a set of projects representing the complete solution to this tutorial, you can find a set of mindmap projects in CVS under the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/?root=Modeling_Project" class="external">org.eclipse.gmf/examples</a> module.
+</p>
+<p>
+<img src="cheatsheet_project.png" alt="cheatsheet_project.png" />
+</p>
+<p>
+GMF comes with a Tutorial Cheat Sheet found under 'Help | Cheat Sheets...' (Note that if you've installed GMF onto a platform without the SDK, i.e. using Europa's update manager, you will need to open the Cheat Sheets view from the Window | Show View... | Other... menu and then open the GMF Tutorial Cheat Sheet from the view menu). If you open this cheat sheet and follow through each step, you can accomplish most of this first tutorial segment, while taking advantage of some actions that will launch and pre-populate wizards to get you started. Try this now to create your new project.
+</p>
+<p>
+Alternatively, you can begin by creating an &quot;New GMF Project&quot; found under 'Graphical Modeling Framework' in the New dialog (Ctrl+N). Name the project 'org.eclipse.gmf.examples.mindmap' and create a new folder named 'model' in its root.
+</p>
+<br style="clear:both;"/>
+<h2 id="idE625271C1956151174B9B20523484BDAD143"> Domain Model Definition </h2>
+<p>
+Although it may seem necessary to begin with the domain model, it is not in the case with GMF, as the diagram definition is maintained separate from the domain. However, we will begin with the domain in the tutorial as it is likely familiar to most, and will allow us to jumpstart our diagram definition from the domain model using a wizard in the next section.
+</p>
+<p>
+A basic domain model for our mindmap is found in an Ecore version <a href="mindmap.ecore">here</a>. Following the cheat sheet, in the section &quot;Domain Model&quot;, select the Model Importers ... Ecore Model .... On the next panel, copy the URL from the download link found on the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap/model/mindmap.ecore?rev=HEAD&cvsroot=Modeling_Project&content-type=text/vnd.viewcvs-markup" class="external">Ecore file</a> and select the &quot;Load&quot; button. If you're working disconnected, copy the model into your workspace.
+</p>
+<p>
+(Alternatively, you may start with an XSD of the mindmap model, found <a href="mindmap.xsd">here</a> (you'll need to install the XSD feature from EMF in this case). Copy this file into your 'model' folder and feel free to examine the model, if you wish. GMF provides a (bootstrapped) graphical editor to complement the standard EMF generated editors, and is packaged in the SDK.
+</p>
+<p>
+To render the mindmap.ecore (or any *.ecore model) with the editor, simply right-click the file and select 'Initialize ecore_diagram diagram file' from the menu.
+</p>
+<p>
+<span class="imgcenter">
+<img src="domain.png" alt="domain.png" /><br />
+Mindmap domain model
+</span>
+</p>
+<p>
+To continue, create a new mindmap.genmodel from the mindmap.ecore file using the New > Eclipse Modeling Framework > EMF Model wizard. You may wish to change the 'Base Package' property for the genmodel's 'Mindmap' package to org.eclipse.gmf.examples to have your generated packaging match the project name. These steps are also covered in the next step of the cheat sheet.
+</p>
+<p>
+Generate the model and edit code using the right-click menu available from the root of the generator model. There is no need to create an editor or tests, but you are welcome to do so if you'd like. Now, we're ready to begin creating the graphical and mapping definitions for our mindmap application.
+</p>
+<h2 id="id6321FB60317537477B566DCE1AA418114174C6F"> Graphical Definition </h2>
+<p>
+A graphical definition model is used to define the figures, nodes, links, etc. that you will display on your diagram. The model you will work with to do this is seen at the right.
+</p>
+<p>
+Continuing on with the next step in the cheat sheet, we will create a new graphical definition model. The cheat sheet will launch the Simple Graphical Definition Model wizard, which is found in the Graphical Modeling Framework folder of the New (Ctrl + N) dialog. Select the 'model' folder under your org.eclipse.gmf.examples.mindmap project for the mindmap.gmfgraph model, and on the next page of the wizard use 'Browse' to locate your mindmap.ecore file. Select our Map class as the Diagram element.
+</p>
+<p>
+On the last page of the wizard, select a minimal set of element, link, and label options for our Topic class as shown in the image. Later on, feel free to experiment with this wizard and observe its output. For now, we're just interested in getting a minimal set of models to get started. Click 'Finish' to complete.
+</p>
+<p>
+If you examine the model, you will find a Canvas at the root with a Figure gallery containing basic Rectangle, Label, and Polyline Connection elements. These are used by corresponding Node, Diagram Label, and Connection elements to represent our Topics from the domain model. We can leave the defaults as-is for now and continue with our tooling definition in the next step of the cheat sheet.
+</p>
+<p>
+<img src="cheatsheet_graph.png" alt="cheatsheet_graph.png" />
+</p>
+<p>
+<img src="cheatsheet_graph2.png" alt="cheatsheet_graph2.png" />
+</p>
+<br style="clear:both;"/>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> There are several figure galleries intended for reuse and included with GMF. You can load these into your *.gmfgraph model (or *.gmfmap model) by using &quot;Load Resource...&quot; and entering <code>platform:/plugin/org.eclipse.gmf.graphdef/models/basic.gmfgraph</code> for the Resource URI. Others available include <code>classDiagram.gmfgraph</code> and <code>stateDiagram.gmfgraph</code>.
+</blockquote>
+
+<h2 id="id54186F73C52971161D1A9361EF54778732C24D"> Tooling Definition </h2>
+<p>
+As mentioned above, the tooling definition model is used to specify the palette, creation tools, actions, etc. for your graphical elements. To the right is a diagram of the model.
+</p>
+<p>
+The cheat sheet will guide you through a very similar process for getting started with our Simple Tooling Definition Model. In fact, the two steps are virtually identical, as the mindmap domain model is loaded and examined for possible tooling needs. We will simply select the same options we did for the graphical definition, save a tool for the Topic name label, and begin with a very simple palette for our Topic elements.
+</p>
+<br style="clear:both;"/>
+<p>
+<img src="cheatsheet_tool.png" alt="cheatsheet_tool.png" />
+</p>
+<br style="clear:both;"/>
+<p>
+Looking at the model provided for us, we see there is a top-level 'Tool Registry' element, under which we find a Palette. The palette contains a Tool Group with Creation Tool elements for both Topic nodes and links for subtopic elements that were identified by the wizard. We will reorganize these and modify them a bit in the future, but for now we'll leave the defaults and move on to the mapping definition. Feel free to browse this model and inspect its properties to familiarize yourself with tooling definitions.
+</p>
+<h2 id="id3474B14EE25F1191337E4C32341180F752B1"> Mapping Definition </h2>
+<p>
+The mapping definition model will let us bind the three models we have so far: the domain, the graphical definition, and the tooling definition. To the right is an image of this model. This is a key model to GMF development and will be used as input to a transformation step which will produce our final model, the generation model.
+</p>
+<p>
+Continuing on with our cheat sheet, follow the instructions to launch the Guide Mapping Model Creation wizard. We will again select the 'model' folder to hold our mindmap.gmfmap file and move on to load each of the preselected mindmap.ecore, mindmap.gmfgraph, and mindmap.gmftool models. On the next page, select 'Map' as the Diagram Root Element, accept the mindmapPalette from the selected tooling model, and then accept the selected mindmap diagram canvas. Finally, make the last page look like the image below. Note that you can adjust the properties for the selected node or link by using the 'Change...' button in the dialog.
+</p>
+<p>
+<img src="cheatsheet_map.png" alt="cheatsheet_map.png" />
+</p>
+<br style="clear:both;"/>
+<p>
+<img src="label_mapping.png" alt="label_mapping.png" />
+<br/>
+One thing we need to do manually is create a Label Mapping for our TopicNameLabel from the graphical definition. The result should look like the image to the right. While in the properties view, check the mapping of the TopicNode Node Mapping as well, to make sure it has the desired values. Actually, carefully check that the mapping wizard assigned the proper tool to both the Topic node and the Subtopics link until <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=189410" class="external">bug 189410</a> is resolved.
+</p>
+<p>
+Before moving on, let's pause to describe the mappings. We'll start with the Label Mapping, as it's the one we're looking at here. It's a straightforward mapping, with the Diagram Label property set as we discussed and a mapping to the 'EAttribute name' feature on our Topic element in the domain model.
+</p>
+<p>
+Moving up to the Node Mapping, we see that our Diagram Node is mapped to the TopicNode of our graphical definition with its corresponding domain model element mapped to our Topic class. The Topic creation tool is also specified in the mapping.
+</p>
+<p>
+Above the Node Mapping you will find a Top Node Reference. Its Containment Feature is set to the 'EReference rootTopics' feature of our Map class. So, when new Topic nodes are added to the diagram, the instance of our domain Topic will be added to the rootTopics containment reference of our Map class. The label of the node will display the 'name' attribute of the Topic.
+</p>
+<p>
+The Map class itself is represented by the Canvas. Select the Canvas Mapping element to see this defined, along with the map to the Palette in our tooling definition. Finally, if you select the Link Mapping, you will observe that connections represented by our TopicSubtopicsLink are mapped to the 'EReference subtopics' feature of our Topic class, and are created with our TopicSubtopics Creation Tool.
+</p>
+<br style="clear:both;"/>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> It is important to select the proper element when defining mappings at this stage; that is, before GMF does more complete filtering and validation. A good way to ensure you have selected the element you intended (as several may have the same name), open the mapping definition (*.gmfmap) file in a text editor, when in doubt.
+</blockquote>
+<h2 id="id4636144CF3DF261015C1225722E1371777513"> Code Generation </h2>
+<p>
+The last model to cover in this tutorial, and the one that is not as critical to understand at this point, is the GMF generator model. See the diagram to the right if you're interested in examining this model.
+</p>
+<p>
+Now that the minimal graphical elements and mappings are defined, we can generate the code needed to test our work so far. To accomplish this, we will first create a generator model (*.gmfgen) in order to set the properties for code generation, similar to the familiar EMF genmodel. To accomplish this, right-click the mapping file and select 'Create generator model...' as shown below. When prompted, keep the default name 'mindmap.gmfgen'.
+</p>
+<br style="clear:both;"/>
+<p>
+<img src="create_gmfgen.png" alt="create_gmfgen.png" />
+</p>
+<p>
+Now, we can examine the generator model to see what it includes (if you're the curious type). We'll keep all the default values for now and right-click the mindmap.gmfgen file and select 'Generate diagram code' to proceed. If all goes well, you will see a &quot;Code generation completed successfully.&quot; message dialog. Dismiss the dialog, opting to never see it again, and notice the new org.eclipse.gmf.examples.mindmap.diagram plug-in in your workspace.
+</p>
+<p>
+Up to this point, the models used have been fairly straightforward to edit and understand. The transformation that takes place to create the generator model (*.gmfgen) from the mapping model involves a bit of logic that is important to understand. However, it is not required to understand the details at this point in the tutorial, so additional information can be found <a href="http://wiki.eclipse.org/index.php/GMF_GenModel">here</a> for those interested.
+</p>
+<br style="clear:both;"/>
+<h2 id="id117E43CAF87C6214A3F0A8D1A313A7665"> Running the Diagram </h2>
+<p>
+Recall that the runtime uses its own 'notation model' to display and persist the graphical components for your diagram. An image of this model is linked here for those interested.
+</p>
+<p>
+Now that we have generated the plug-in needed for our diagram, let's launch a new runtime workspace and test the diagram. The default settings of a new Eclipse Application runtime configuration should work fine, while you may opt to run a minimal configuration that includes only your generated plug-ins and their runtime dependencies within an org.eclipse.platform.ide configuration.
+</p>
+<p>
+Create an empty project and invoke the New... dialog (Ctrl+N). Under 'Examples' you'll notice your new Mindmap Diagram. Create a new diagram and explore its functionality, and look for the creation of the domain model instance as you add and save diagram elements. Of course, we've only specified enough in our diagram definition to allow for simple Topic elements and subtopic links.
+</p>
+<p>
+<img src="basic_mindmap.png" alt="basic_mindmap.png" />
+</p>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> If you'd like remove the icons from your labels (as shown here), try setting the 'Element Icon' property on your 'Diagram Label TopicNameLabel' element in your mindmap.gmfgraph model to 'false'. They are enabled by default.
+</blockquote>
+<h2 id="id236F4008C1D23CEBA3D560547FE45CBA4FD"> Summary </h2>
+<p>
+As you have seen, using GMF as a means by which to get started creating graphical editors for your domain models is fairly straightforward. We have seen how creating a graphical definition and a mapping definition to the chosen domain can be used to generate much of the basic functionality expected in an EMF/GEF-based editor. In the future, GMF will mature and include more advance capabilities, so check back to see how this tutorial matures along with the project. In the meantime, if you've skipped over links that provide more detail on certain aspects of GMF, now may be the time to do so. Otherwise, feel free to continue with the <a href="step2.html">GMF Tutorial Part 2</a>.
+</p>
+<h2 id="id34751410151582D571A93F452FDF9D98CF7C"> References </h2>
+<ul>
+ <li><a href="http://www.eclipse.org/gmf" class="external">Graphical Modeling Framework Website</a></li>
+ <li><a href="http://wiki.eclipse.org/index.php/GMF_Documentation "> GMF Documentation</a></li>
+ <li><a href="step2.html">GMF Tutorial Part 2</a></li>
+ <li><a href="step3.html">GMF Tutorial Part 3</a></li>
+ <li><a href="step4.html">GMF Tutorial Part 4</a></li>
+ <li><a href="http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg246302.html" class="external">Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework</a>, IBM Redbook</li>
+ <li><a href="http://www.eclipse.org/modeling/emf/docs/" class="external">EMF Documentation</a></li>
+ <li><a href="http://dev.eclipse.org/viewcvs/indextools.cgi/org.eclipse.emf/doc/org.eclipse.emf.doc/tutorials/clibmod/clibmod.html" class="external">Generating an EMF Model</a></li>
+ <li><a href="http://sourceforge.net/projects/merlingenerator/" class="external">Merlin Homepage</a></li>
+ <li><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gef.examples.ediagram/?cvsroot=Tools_Project" class="external">EDiagram Example Source</a></li>
+ <li><a href="http://www.eclipse.org/articles/Article-GEF-EMF/gef-emf.html" class="external">Using GEF with EMF</a>, Eclipse Corner Article</li>
+ <li><a href="http://www.eclipse.org/emft" class="external">EMF Technology project</a></li>
+ <li><a href="http://www.omg.org/docs/ptc/03-10-14.pdf" class="external">OCL Specification</a> </li>
+</ul>
+</head>
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/step2.html b/doc/org.eclipse.gmf.doc/tutorials/tooling/step2.html
new file mode 100644
index 000000000..fd04a5982
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/step2.html
@@ -0,0 +1,416 @@
+<html><head/><img src="../../logo.gif" border="0" />
+<h1>GMF Tooling Tutorial: Step 2</h1>
+<p>
+In this second part of the GMF Tutorial, some of the more advanced capabilities of the generation and runtime frameworks will be explored. Specifically, information on adding compartments, connections, feature initializers, diagram validation, and nested child nodes will be covered. The complete solution to this tutorial is maintained in CVS <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/?root=Modeling_Project" class="external">here</a>. Viewlets will be available after appropriate sections below to focus their content and keep them short. (warning: they are outdated)
+</p>
+
+<p>
+<strong>Important note:</strong> If you previously followed this tutorial with GMF 1.0, you'll need to be aware of changes in the graphical definition model described <a href="http://wiki.eclipse.org/GMFGraph_Hints#Evolution_of_GMFGraph_Metamodel" class="external">here</a>.
+</p>
+
+<h2 id="id1E4DAE5F62BF5F158E2AC67D46FF61BB62501"> Compartments </h2>
+<p>
+<span class="imgright">
+<img src="stickynote.png" alt="stickynote.png" /><br />
+</span>
+
+Let's add a compartment to our Topic node to allow discussion threads to be added. In order to illustrate how to allow nodes within compartments, we will represent Thread items as yellow sticky notes and allow ThreadItem elements to appear as list items within them. So, we will have nodes with a compartment list nested within a parent node compartment. A preview of where we're going is seen to the right. And yes, it's a bit contrived, but it does give us an opportunity to describe a lot of features in one section.
+</p>
+
+<p>
+Some of the steps in this section are a bit complex, so the <a href="http://www.eclipse.org/gmf/tutorial/viewlets/tutorial2.html" class="external">viewlet</a> should prove helpful in getting things right.
+</p>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> Be careful when working with multiple models, as until there is true refactoring support, you will need to be conscious of changes in definition models and how they will impact referenced models, such as our mapping model. Editing models open in the same resource set will help, so you might consider making changes to your graphical and tooling models from within the open mapping model. Otherwise, you'll receive errors when opening the editors and will need to repair broken references in a text editor.
+</blockquote>
+<br style="clear:both;"/>
+
+<h3 id="id150616B53CCD2595D63104B820B8411C980463"> Graphical Definition </h3>
+<p>
+<span class="imgright">
+<img src="rounded_figure.png" alt="rounded_figure.png" /><br />
+</span>
+
+Open up your graphical definition again and let's first take care of giving our Topics a rounded rectangle. Right-click the Figure Gallery and add a new Figure Descriptor and child Rounded Rectangle, naming them both RoundedTopicFigure. Adjust the Corner Width and Height property values to 12 (or whatever you'd like). To alter the default line color, right-click on the Rounded Rectangle RoundedTopicFigure and add a new Child | Foreground Color RGB Color with R=220, G=220, B=250 (or whatever you'd like).
+</p>
+
+<p>
+We'll reuse the old TopicFigure rectangle for our sticky note. Rename it and its Figure Descriptor to StickyNoteFigure and give it a Background Color RGB Color child with values R=250, G=250, B=190 (a pale yellow, but feel free to change to suit your taste). Rename its child Label to StickyNoteNameFigure.
+</p>
+
+<p>
+We'll need to create a child Label on our new Rounded Rectangle named TopicNameFigure, similar to the original Rectangle. You'll also need to create a Child Access element to your Figure Descriptor and select the new Label TopicNameFigure as its Figure. The Accessor property will default to 'getFigureTopicNameFigure' automatically. See the link above regarding changes to the graphical definition model if you're confused by the Child Access and Figure Descriptor changes that took place during the 2.0 release cycle.
+</p>
+
+<p>
+Now, you'll need to change the Diagram Label TopicName to use this new Label TopicNameFigure as its Figure (it should still be pointing to the now-renamed StickyNoteFigure) and change the Accessor to the 'getFigureTopicNameFigure' child access. Then, just change the Figure property on your Node Topic element to use the Rounded Rectangle RoundedTopicFigure.
+</p>
+
+<p>
+Create a new Node on the Canvas to use your StickyNoteFigure and name it Thread, along with a new Diagram Label named ThreadName that uses your StickyNoteFigure and 'getFigureStickyNoteNameFigure' accessor. Select 'true' for the Element Icon property of the label.
+</p>
+<br style="clear:both;"/>
+
+<p>
+<span class="imgright">
+<img src="compartment_graph.png" alt="compartment_graph.png" /><br />
+</span>
+
+As we'd like to have discussion threads within a compartment of our topic nodes, we'll need to add one to our Canvas by right-clicking and selecting New Child | Compartment. Give it the name ThreadCompartment and select RoundedTopicFigure for its Figure property. Select 'true' for its Collapsible property and 'false' for its Needs Title property.
+</p>
+
+<p>
+We'd also like to give threads their own compartment to contain a list of thread items for the subject. Create another compartment for our Thread node named ThreadItemCompartment which will use StickyNoteFigure as its Figure. So, our topics will be rounded rectangles which will contain child rectangles within a compartment. These child rectangles will also have a compartment, but they will not contain rectangles, but rather, just a simple list of discussion threads. These will be represented with a Label.
+</p>
+<br style="clear:both;"/>
+
+<p>
+<span class="imgright">
+<img src="label_graph.png" alt="label_graph.png" /><br />
+</span>
+
+While they will be represented as a series of labels, there are some things we need to ensure they are displayed correctly within the parent StickyNoteFigure rectangle. First, select the Flow Layout child of the parent and modify its properties to match the figure to the left.
+<span class="imgleft">
+<img src="flow_layout.png" alt="flow_layout.png" /><br />
+</span>
+
+As you can see, we're going to force a single line of vertically-oriented children. The Major Alignment (vertical) is set to BEGINNING, while the minor (horizontal) is set to CENTER. We're going to set spacings to 0 and set Match Minor Size to 'true' as well. Now, we'll need a new child Rectangle element named ThreadItems and give it a Stack layout. Finally, the parent StickyNoteFigure Figure Descriptor will need a Child Access to access this rectangle and its labels. Create a new Child Access and set its Figure to the ThreadItems rectangle.
+</p>
+
+<p>
+Add a new FigureDescriptor and Label to the Figure Gallery for our thread items named ThreadItemLabelFigure. Create a Diagram Label to the Canvas named ThreadItemLabel and assign the ThreadItemLabelFigure as its Figure property.
+</p>
+
+<p>
+In summary, you should now have two nodes, one connection, two compartments, and three diagram labels as shown in the figure. These correspond to the rectangles, our polyline connection, and labels in the Figure Gallery.
+</p>
+<blockquote>
+<font color="darkblue"><strong>Note</strong> :</font> In the future, graphical definitions will be done using a designer bootstrapped by GMF itself. The figures you have created here will be done visually, rather than by manipulating a model using the generated EMF editor. To test drive this editor, download and install the &quot;Experimental SDK&quot; from the download site and provide feedback on the newsgroup.
+</blockquote>
+<br style="clear:both;"/>
+
+<h3 id="id4A7D5F394663462A3E161E1601D1883747BC17"> Tooling Definition </h3>
+<p>
+<span class="imgright">
+<img src="thread_tool.png" alt="thread_tool.png" /><br />
+
+</span>
+
+We'll need a tool to add Thread nodes and ThreadItems, so open mindmap.gmftool and copy/paste the Topic tool and rename Thread. Repeat for a ThreadItem tool. Next, we'll need to complete our mappings, so reopen your mindmap.gmfmap file (if you're not already working within the mapping model editor, as recommended).
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id27BF51D3B27BFE1387B55D435E65ACA48229B"> Mapping Definition </h3>
+<p>
+<span class="imgright">
+<img src="compartment_map.png" alt="compartment_map.png" /><br />
+
+</span>
+
+First, we'll need to add a new Compartment Mapping to our Topic Node Mapping and select ThreadCompartment for its Compartment property. Also, add a Child Reference to the Node Mapping. In the properties, select 'comments : Thread' for its Containment Feature and Compartment Mapping <ThreadCompartment> for the Compartment. Leave the rest of the properties blank.
+</p>
+<blockquote>
+<font color="darkblue"><strong>Note</strong> :</font> If you're wondering about the difference between 'Children Feature' and 'Containment Feature' the idea is this (as described in the [news://news.eclipse.org:119/e2j1il$j0a$1@utils.eclipse.org newsgroup]): the 'Containment Feature' refers to where children are stored, while the 'Children Feature' refers to where to take them from. These are usually the same, and there is no need to set Children Feature if Containment Feature is set as it will default to this value. An example of when you'd need to specify this property is with EClass and EAttribute where eStructuralFeatures is the 'containment' for both operations and attributes, but where eAttributes is 'children' for instances of EAttribute.
+</blockquote>
+
+<p>
+Right now, the node that represents our topic has a compartment with a reference to the domain element which will contain its contents. The contents of this compartment we have decided will be thread discussions, which are represented by yellow sticky notes. To represent this in our mapping, add a Node Mapping to our Child Reference. In the properties, select our Thread class for the domain Element, our Thread node for the Diagram Node, and our Thread creation tool from the palette.
+</p>
+
+<p>
+The last thing we'll need for our child thread node is a mapping to its label. To our Thread Node mapping, add a child Feature Label Mapping. Select our ThreadName for the Diagram Label and the 'subject : String' feature from our Thread class for the label's Feature property.
+</p>
+
+<p>
+At this point, you can regenerate the generator model and diagram plugin to see how things look. Let's continue on and map our thread node compartment to display thread items.
+</p>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> In the generator model, you will find a property on the compartment that will allow you to show children as 'floating' nodes and not stacked in a list. The property is 'List Layout' and should be set to 'false' in this case.
+</blockquote>
+<br style="clear:both;"/>
+
+<p>
+<span class="imgright">
+<img src="thread_Item_compartment.png" alt="thread_Item_compartment.png" /><br />
+
+</span>
+
+We will basically repeat the steps above to add a Compartment Mapping for our ThreadItemCompartment. Add a Child Reference for our 'items : ThreadItem' feature on our Thread class and select ThreadItemCompartment for its Compartment.
+</p>
+
+<p>
+To our Child Reference, add a child Node Mapping for our ThreadItem class with corresponding ThreadItemLabel as the Diagram Node and ThreadItem tool. Finally, add a Feature Label Mapping to the node for our ThreadItemLabel to display the 'body : String' feature of our ThreadItem class.
+</p>
+
+<p>
+At this point, you can regenerate the mindmap.gmfgen model and diagram plugin code. You should be able to run the diagram and produce a diagram similar to the one shown at the beginning of this section.
+</p>
+<br style="clear:both;"/>
+<blockquote>
+<font color="darkblue"><strong>Note</strong> :</font> When making changes to your diagram definition and regenerating, you may not be able to open diagrams that were created with previously generated diagram code. This is to be expected, so it's best to start with a new diagram instance to test each iteration.
+</blockquote>
+
+<h2 id="idE625271C1956151174B9B20523484BDAD143"> Link Constraints </h2>
+<p>
+<span class="imgright">
+<img src="link2self.png" alt="link2self.png" /><br />
+
+</span>
+
+</p>
+
+<p>
+Currently, the diagram will allow you to make a subtopic link from one Topic to itself, as seen here. Clearly, this does not make sense for our Mindmap, so we'd like to prevent this somehow. This section makes for a very short <a href="http://www.eclipse.org/gmf/tutorial/viewlets/tutorial_constraint.html" class="external">viewlet</a>.
+</p>
+<br style="clear:both;"/>
+
+<p>
+<span class="imgright">
+<img src="link_constraint.png" alt="link_constraint.png" /><br />
+
+</span>
+
+</p>
+
+<p>
+Let's return to our mapping definition, and to the 'Link Mapping' we created earlier. To add a constraint, we begin by right-clicking on the 'Link Mapping' and selecting 'New Child > Link Constraints'. To the Link Constraint, right-click and select 'New Child > Source End Constraint'. The 'Language' property defaults to 'ocl' and we'll need to add the following OCL statement to the 'Body' property: self <> oppositeEnd, as seen in the image below. Then, go through the usual regeneration of mindmap.gmfgen and diagram code and try it out. You will no longer be able to make a link from a Topic to itself.
+</p>
+
+<p>
+So, now to explain what is happening here. As you can tell from the context above, we've added a constraint to the creation of a link, based on its source end; that is, the Topic element from which a link is being created. In the OCL we've specified the only condition that will evaluate to true, and therefore allow the link to be created, is the condition where the source element is not equal to the 'oppositeEnd' of the link (the target). In this case, the context of 'self' is the source Topic, and 'oppositeEnd' is a custom variable added to the parser environment for link constraints.
+</p>
+
+<p>
+Clearly, this is a very simple constraint, and one that could very well have been defined in the domain model itself and respected by the graphical editor automatically. We will look more closely at constraints in future versions of this tutorial as support for their use matures.
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id6321FB60317537477B566DCE1AA418114174C6F"> Another Connection </h2>
+<p>
+<span class="imgright">
+<img src="dependency_link_def.png" alt="dependency_link_def.png" /><br />
+
+</span>
+
+Let's look now at the 'Relationship' element of our domain model. It specifies a number of possible relationships that may be indicated between Topic elements, in addition to the subtopic relationship we have supported thus far. We will add support for this type of Connection, as it will illustrate more completely the properties available for a Link Mapping within GMF. A viewlet of this section can be found <a href="http://www.eclipse.org/gmf/tutorial/viewlets/tutorial_relationship.html" class="external">here</a>.
+</p>
+
+<h3 id="id54186F73C52971161D1A9361EF54778732C24D"> Graphical Definition </h3>
+<p>
+Returning to our graphical definition model (mindmap.gmfgraph), let's right-click on our gallery and add a 'New Child > Figure Descriptor' and to it a 'New Child > Polyline Connection'. Name it 'DashedLineOpenArrow' and change 'Line Kind' to LINE_DASH. Then add a 'New Child > Polyline Decoration' element to the Figure Gallery and name it 'OpenArrow'. The default decoration will be an open arrow (while a Polygon Decoration will be a filled triangle), but if you want to make one explicitly, you could add three Template Point children to the OpenArrow with X:Y values of -1:1, 0:0, and -1:-1. Finally, add the OpenArrow as a Target Decoration to the DashedLineOpenArrow polyline.
+</p>
+
+<p>
+Now that you have the figure defined, create a corresponding Connection on our Canvas named 'RelationshipLink', selecting our 'DashedLineOpenArrow' Figure Descriptor as its 'Figure'. Finally, we'd prefer to have subtopics just connected with a solid line (no arrow), so delete the Polyline Decoration TopicsSubtopicsTargetDecoration element from the Figure Gallery which was added by the wizard in part one.
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id3474B14EE25F1191337E4C32341180F752B1"> Tooling Definition </h3>
+<p>
+<span class="imgright">
+<img src="relationship_tool.png" alt="relationship_tool.png" /><br />
+
+</span>
+
+We'll need a tool to create these links, so reopen your mindmap.gmftool model. We already have one link tool for subtopics, but it's in the same tool group as our node elements. Let's create a new Tool Group under our Palette for links named 'Links' and add to it new Relationship Creation Tool. Copy/paste the TopicSubtopics tool into this new group and name it simply 'Subtopic'. Delete the old TopicSubtopics tool. Finally, rename the 'mindmap' tool group to 'Nodes'. Make both tool groups collapsible by setting their Collapsible to 'true'.
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id4636144CF3DF261015C1225722E1371777513"> Mapping Definition </h3>
+<p>
+<span class="imgright">
+<img src="dependency_link_mapping.png" alt="dependency_link_mapping.png" /><br />
+
+</span>
+
+In the mapping definition, due to our changes in the tooling model, you'll need to check/update your existing tool selections. Right-clicking and running validation after a close/open of the mapping model can make it easier to spot invalid tool references. If you've been working with your graphical and tooling models from within the mapping model editor, everything should be fine (well, maybe not everything).
+</p>
+
+<p>
+Now, create a new 'Link Mapping' and fill in its properties to match what's displayed in the image. In this mapping, we'll start with the 'Domain meta information > Element' property. It represents the element represented by this link in the domain, which is simply the 'EClass Relationship' element. Recall that in our previous link mapping, we left this and other properties blank. In that case, our target element for the link was represented by an element (Topic) added to a list of reference held in our source element (also a Topic). In this case, the link is represented in the domain by a class of its own, so more information is required in the link mapping. This class, the Relationship class of the domain model, is contained in a list of references in the Map element, which explains the 'Domain meta feature > Containment Feature' map to 'relations : Relationship'.
+</p>
+
+<p>
+Continuing the mapping description, the 'Target Feature' in this case is mapped to the 'target : Topic' domain model element, indicating that targets of the link are added to this list in the domain when the link is created. Similarly, the 'Source Feature' maps to the 'source : Topic' domain model element. And of course, we have our straightforward tool mapping and 'Diagram Link' mapping to our RelationshipLink.
+</p>
+
+<p>
+<img src="dependency_link.png" alt="dependency_link.png" />
+
+</p>
+
+<p>
+Now, we can regenerate our diagram code as before, launch our diagram workspace and test this new link. Here is an example of the results.
+</p>
+
+<p>
+What we will now need to do is initialize the link to be of the proper type (dependency, includes, extends) when created. We will use separate tools for each, and could also opt to use distinct visualization. For now, we'll simply add a label to the link to indicate its type and maintain the dashed line with open arrow appearance for each.
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id117E43CAF87C6214A3F0A8D1A313A7665"> Feature Initializers </h2>
+<p>
+When you create a new element on a diagram, there is typically a domain element created or modified as a result. In some cases, it's necessary to provide additional initialization information to ensure that objects are properly created. For example, the links we create between topics in our mindmap diagram come in three flavors: dependency, includes, and extends. The 'type' attribute of the Relationship class is used to hold the RelationshipType enum value for the new instance.
+</p>
+
+<p>
+In our graphical definition, we will create a figure and corresponding link for each type, along with a creation tool for each in our tooling definition. We'll then use a feature sequence initilizer in our mapping definition to properly initialize our domain objects, depending on the type of link created on the diagram.
+</p>
+
+<p>
+Another initialization we will perform is to set the 'label' attribute of the Relationship. As we've indicate above, this will serve to distinguish between the types as our visualization will remain the same for each. A viewlet of this section can be found <a href="http://www.eclipse.org/gmf/tutorial/viewlets/tutorial_init.html" class="external">here</a>.
+</p>
+
+<h3 id="id236F4008C1D23CEBA3D560547FE45CBA4FD"> Graphical Definition </h3>
+<p>
+First, we need to add a Label to our graphical definition to use in displaying the relationship type. Add a new Figure Descriptor and Label to our Figure Gallery and name them DashedLineLabelFigure. Right-click on the Canvas and add a new Diagram Label named 'RelationshipLabel' with a Figure assigned to our DashedLineLabelFigure. Set the Element Icon property to 'false'.
+</p>
+
+<h3 id="id34751410151582D571A93F452FDF9D98CF7C"> Tooling Definition </h3>
+<p>
+<span class="imgright">
+<img src="tool_links.png" alt="tool_links.png" /><br />
+
+</span>
+
+Return to our tooling model and rename the 'Relationship' tool to 'Dependency'. Copy/paste this tool in order to create additional 'Includes' and 'Extends' tools.
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id39B5ED271A111EF2E76F424713DE3AA63A1A2"> Mapping Definition </h3>
+<p>
+In the mapping model, change the tool used by our current Relationship Link Mapping to the 'Extends' tool. After we add the constraint and initializers, we will copy/paste this Link Mapping and change the properties to be used for dependency and extends links. In the end, we will have a single link in our graphical definition being used by 3 tools with corresponding mappings to the same domain element.
+</p>
+
+<p>
+<span class="imgright">
+<img src="feature_init.png" alt="feature_init.png" /><br />
+
+</span>
+
+In the mapping model, below your dependency Link Mapping, create a 'Feature Seq Initializer' element. This will hold subsequent 'Feature Value Spec' elements as seen in the figure. OCL is the language we'll use, so be careful that the body expressions you enter are valid. In the case of initializing the enumeration field, you'll enter 'RelationshipType::EXTENDS' to set the 'type : RelationshipType' feature of our Relationship class. In the case of initilizing the 'label : String' feature, you'll enter the string value 'extends' (within single quotes).
+</p>
+
+<p>
+In addition to the initializer, we'll need to add a Constraint to the link itself. In fact, whenever you create multiple mappings to a single domain element, you will need to add constraints such that each can be uniquely identified. To the Link Mapping, right-click and add a new Constraint with language set to 'ocl' and a body of 'self.type = RelationshipType::EXTENDS'. Note this is an equality statement (=) and not an assignment (:=).
+</p>
+
+<p>
+Lastly, we'll need to provide a new Feature Label Mapping to let the 'label : String' feature of our Relationship domain element be represented by our RelationshipLabel. If you'd like your label to include guillemets, include them in the View Pattern. For example, enter {0} to have the label text display on the diagram within these double angle brackets (French quotation marks), or whatever you'd prefer.
+</p>
+
+<p>
+Copy/paste your Dependency Link Mapping to create an Include and Dependency link mapping, changing their properties as necessary (e.g. 'RelationshipType::INCLUDES' and 'RelationshipType::DEPENDENCY' with corresponding 'includes' and 'depends' body values). Be sure not to forget the tool selection for each as well.
+</p>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> Keep in mind that the order of the 'Feature Value Spec' elements will determine the order in which they are executed.
+</blockquote>
+<br style="clear:both;"/>
+
+<p>
+With these steps complete, we can regenerate our mindmap.gmfgen and code.
+</p>
+<br style="clear:both;"/>
+
+<p>
+<span class="imgright">
+<img src="runtime_init.png" alt="runtime_init.png" /><br />
+
+</span>
+
+If you launch your runtime instance and test these new initializers, you will find that the type attribute is set according to the Relationship tool selected, and that the label attribute is preset to the names you defined above.
+</p>
+<br style="clear:both;"/>
+
+<h2 id="idD3162246B3115121DCFD4510171141E30DFA4E"> Validation </h2>
+<p>
+As we saw with the OCL constraint added in the first part of the tutorial, it is possible to restrict connections made between nodes by declaring constraints in our mapping definition. Sometimes, it is more appropriate to validate connections and other aspects of a diagram content using batch or even &quot;live&quot; validation using the Validation framework provided by the <a href="http://www.eclipse.org/modeling/emf/?project=validation" class="external">EMF</a> project. In this section, we will add such a validation feature to our mindmap in order to alert us of cyclic dependencies that have been created between Topics.
+<span class="imgright">
+<img src="audit_rule.png" alt="audit_rule.png" /><br />
+
+</span>
+
+To begin, open the mapping definition (mindmap.gmfmap) and right-click the Mapping node. Select 'New Child... Audit Container' and give it a name (e.g. Mindmap Audits). Assign it an id and description as well. To the container, add a new 'Audit Rule' named 'Cyclic relationship check'. We are going to target the Map class for the audit, so add a child 'Domain Element Target' to the Audit Rule and select 'Map' as the Element. Add a new child 'Constraint' to the Audit Rule and enter the following for the Body, leaving the Language set to ocl.
+</p>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> When authoring these constraint expressions in OCL, you may find it helpful to contribute an action to open the OCL Interpreter view on instances of your domain model. See the OCL Interpreter Example in the online documentation for more information.
+</blockquote>
+<br style="clear:both;"/>
+<pre>self.relations->forAll(r1, r2 | r1.target = r2.source and r1.type = r2.type
+implies r2.target <> r1.source)
+</pre>
+<br style="clear:both;"/>
+
+<p>
+This will only detect cycles that exist between two directly linked Topic elements, but is sufficient for our purposes here. If someone more OCL-savvy can provide a statement to detect cycles between more than two Topics (if possible), it would be appreciated ;).
+</p>
+
+<p>
+<span class="imgright">
+<img src="validation_extensions.png" alt="validation_extensions.png" /><br />
+
+</span>
+
+</p>
+
+<p>
+After reproducing the mindmap.gmfgen model, you will <strong>need</strong> to set the 'Validation Enabled' property of the Gen Diagram element to 'true' in order for the new audit to be run. To view familiar Eclipse decorators on our elements when audits are violated, set the 'Validation Decorators' property to 'true'. Finally, below that property is one called 'Validation Provider Priority' that you should set to 'Medium' (something higher than 'Lowest'). Do this and regenerate your editor code. After doing so, you will notice some new extensions listed in your editor's plugin.xml file. Primarily, you should notice the constraintProviders and constraintBindings extension-points to which your editor contributes. Examine these and take a closer look at the EMF Validation framework if you wish.
+</p>
+
+<p>
+An improvement here would be to write validations that identify the offensive element to allow for selection via the problems view. Currently, violations result in the canvas itself being selected, as the context is the Map and not a particular Topic or Relationship. For example, a simple constraint added to our Topic elements would be to verify each has a name. Add such an Audit Rule to our container where the Domain Element is our Topic class and the constraint is 'name.size() > 0'.
+</p>
+<br style="clear:both;"/>
+
+<p>
+<span class="imgright">
+<img src="audit_violation.png" alt="audit_violation.png" /><br />
+
+</span>
+
+</p>
+<blockquote>
+<font color="darkblue"><strong>Note</strong> :</font> The generated code has a dependency on the EMF Data Integrity Frameworks feature from the Europa update site. It will not be selected automatically when installing GMF, so you will need to explicitly install it to run this part of the tutorial.
+</blockquote>
+
+<p>
+To test the new audits, launch your runtime workspace and create a dependency link between two Topic elements. Also, add a Topic and give it no name. Then from the Diagram menu, select 'Validate' and observe the errors in the Problems view, as shown here. To enable/disable the audit, you can find it now listed in the preferences dialog under 'Model Validation'.
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id4A4074F496D76479AF44EE4EE6AB65481D5"> Shortcuts </h2>
+<p>
+In order to share content between diagrams, and indeed between domain model instances, GMF provides the capability to allow shortcuts to be added to diagrams. In order to enable this functionality, you'll need to locate the 'Shortcuts Provided For' and 'Contains Shortcuts To' properties of the Gen Diagram root of your generator model (e.g. mindmap.gmfgen). In order to allow the shortcutting of Mindmap elements, set both of these properties to 'mindmap' and regenerate your editor.
+</p>
+
+<p>
+<span class="imgright">
+<img src="shortcut_element.png" alt="shortcut_element.png" /><br />
+
+</span>
+
+</p>
+
+<p>
+Test the shortcut capability by creating two new Mindmap diagrams and adding elements to each. On the background of one, right-click and select 'Create Shortcut...' to bring up a selection dialog. Browse to the other diagram and select a Topic node to add as a shortcut.
+</p>
+
+<p>
+There is understandably no viewlet for this section.
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id7F79616466615A86C677704C98F2A48342F4"> Summary </h2>
+<p>
+In this section of the tutorial, we saw how to add compartments (including nested nodes), links representing classes, feature initializers, constraints, validation, and shortcuts. The next section of the tutorial will dig deeper and focus on altering generated output and manual extension of the editor, along with adding some polish. See <a href="step3.html">GMF Tutorial Part 3</a>.
+</p>
+
+<h2 id="id76145E4CE6E22ADC14CAF532595B06766225"> References </h2>
+<ul>
+ <li><a href="http://www.eclipse.org/gmf" class="external">Graphical Modeling Framework Website</a></li>
+ <li><a href="http://wiki.eclipse.org/index.php/GMF_Documentation "> GMF Documentation</a></li>
+ <li><a href="step1.html "> GMF Tutorial Part 1</a></li>
+ <li><a href="step3.html "> GMF Tutorial Part 3</a></li>
+ <li><a href="step4.html "> GMF Tutorial Part 4</a> </li>
+</ul>
+</html>
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/step3.html b/doc/org.eclipse.gmf.doc/tutorials/tooling/step3.html
new file mode 100644
index 000000000..20cab66dc
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/step3.html
@@ -0,0 +1,443 @@
+<html><head/><img src="../../logo.gif" border="0" />
+<h1>GMF Tooling Tutorial: Step 3</h1>
+<p>
+In this third part of the GMF Tutorial, we will explore some more advanced capabilities related to the tooling components, while also extending what's generated with customizations to the runtime. Specifically we will add a composite figure using the graphical definition, show how to leverage external figures, and how to use an extension plug-in to add a custom action to our diagram. The complete solution to this tutorial is maintained in CVS <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/?root=Modeling_Project" class="external">here</a>. Viewlets will be available after appropriate sections below to focus their content and keep them short.
+</p>
+
+<h2 id="id1E4DAE5F62BF5F158E2AC67D46FF61BB62501"> New Icons </h2>
+<p>
+A quick way to get a polished look for our mindmap diagram is by replacing the generated EMF icons we've seen so far with some that are more, well... distinctive ;-) The easiest way to do this is to replace the GIF images found in our org.eclipse.gmf.examples.mindmap.edit/icons/ folder.
+</p>
+
+<p>
+In case you'd like to map another image file to a palette item, say in the case of our three Relationship tools, or for our Subtopic link which has no default icon, you can modify the children of your Creation Tool elements in the mindmap.gmftool model. For example, delete the 'Default Image' entry below the 'Creation Tool Subtopic' element that represents the small icon and replace it with a 'Small Icon Bundle Image' and set its Bundle to org.eclipse.gmf.examples.mindmap.edit and its Path property to /icons/full/obj16/Subtopic.gif. Regenerate and the palette will display the new icon. Of course, you'll need to provide this file or use the one found in the solution to this tutorial section.
+</p>
+
+<p>
+Finally, take a look in the mindmap.gmfgen for properties to set for the default wizard and diagram file icons. While you're there, you might want to change the diagram file extension from 'mindmap_diagram' to 'mmd' or something similar. Browsing the properties available in the gmfgen model is a useful exercise.
+</p>
+
+<p>
+Below is an image of our diagram and palette using some new images.
+</p>
+
+<p>
+<img src="new_icons.png" alt="new_icons.png" />
+
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id150616B53CCD2595D63104B820B8411C980463"> Composite Figures </h2>
+<p>
+<span class="imgright">
+<img src="resource.png" alt="resource.png" /><br />
+
+</span>
+
+What we'd like to do is have an actor-style representation for our resources added to our diagram. These will be linked to their respective Topic elements, much like our relationship links between Topic elements. Also, we'd like to have the labels for our Resource figures external and display both the name and email address attribute values of the corresponding domain element.
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id4A7D5F394663462A3E161E1601D1883747BC17"> Graphical Definition </h3>
+<p>
+<span class="imgright">
+<img src="resource_figure.png" alt="resource_figure.png" /><br />
+
+</span>
+
+Open up your graphical definition again and add a new Figure Descriptor and Rectangle named 'ResourceFigure' to your Figure Gallery. Set its Outline property to false, along with its Fill. As you can see from the image to the right, we will be adding a series of children to the rectangle, which will act as a container for the elements that comprise our Resource figure. Specifically, right-click and add an XY Layout, and Ellipse for the head, a Polygon for the Body, and sizing elements. Rather than go through all of the gory details of these, the figure code is found below. Either paste it into your mindmap.gmfgraph in the appropriate location using a text editor, or utilize the default editor and properties view.
+</p>
+
+<p>
+To our Canvas, add a new Node named Resource and assign our ResourceFigure as its Figure. Also, notice the new 'BasicLabelFigure' label that is added to the Figure Gallery in the image. Create this and add a new Diagram Label 'ResourceLabel' to the Figure Gallery and Canvas respectively. Note that the Label for our Resource is not a child element of its figure. We want the label to be external, and therefore be allowed to float and be positioned wherever the user would like it.
+</p>
+
+<pre>
+ &lt;descriptors
+ name=&quot;ResourceFigure&quot;&gt;
+ &lt;actualFigure
+ xsi:type=&quot;gmfgraph:Rectangle&quot;
+ name=&quot;ResourceFigure&quot;
+ outline=&quot;false&quot;
+ fill=&quot;false&quot;&gt;
+ &lt;layout
+ xsi:type=&quot;gmfgraph:StackLayout&quot;/&gt;
+ &lt;children
+ xsi:type=&quot;gmfgraph:Rectangle&quot;
+ name=&quot;Resource&quot;
+ outline=&quot;false&quot;
+ fill=&quot;false&quot;&gt;
+ &lt;layout
+ xsi:type=&quot;gmfgraph:FlowLayout&quot;
+ vertical=&quot;true&quot;
+ forceSingleLine=&quot;true&quot;
+ minorAlignment=&quot;CENTER&quot;
+ majorSpacing=&quot;0&quot;
+ minorSpacing=&quot;0&quot;/&gt;
+ &lt;children
+ xsi:type=&quot;gmfgraph:Ellipse&quot;
+ name=&quot;Head&quot;&gt;
+ &lt;foregroundColor
+ xsi:type=&quot;gmfgraph:RGBColor&quot;
+ red=&quot;220&quot;
+ green=&quot;220&quot;
+ blue=&quot;250&quot;/&gt;
+ &lt;backgroundColor
+ xsi:type=&quot;gmfgraph:RGBColor&quot;
+ red=&quot;230&quot;
+ green=&quot;230&quot;
+ blue=&quot;255&quot;/&gt;
+ &lt;size
+ x=&quot;40&quot;
+ y=&quot;20&quot;/&gt;
+ &lt;/children&gt;
+ &lt;children
+ xsi:type=&quot;gmfgraph:Polygon&quot;
+ name=&quot;Body&quot;&gt;
+ &lt;foregroundColor
+ xsi:type=&quot;gmfgraph:RGBColor&quot;
+ red=&quot;220&quot;
+ green=&quot;220&quot;
+ blue=&quot;250&quot;/&gt;
+ &lt;backgroundColor
+ xsi:type=&quot;gmfgraph:RGBColor&quot;
+ red=&quot;230&quot;
+ green=&quot;230&quot;
+ blue=&quot;255&quot;/&gt;
+ &lt;template
+ x=&quot;23&quot;
+ y=&quot;19&quot;/&gt;
+ &lt;template
+ x=&quot;23&quot;
+ y=&quot;24&quot;/&gt;
+ &lt;template
+ x=&quot;39&quot;
+ y=&quot;24&quot;/&gt;
+ &lt;template
+ x=&quot;39&quot;
+ y=&quot;29&quot;/&gt;
+ &lt;template
+ x=&quot;23&quot;
+ y=&quot;29&quot;/&gt;
+ &lt;template
+ x=&quot;23&quot;
+ y=&quot;36&quot;/&gt;
+ &lt;template
+ x=&quot;39&quot;
+ y=&quot;48&quot;/&gt;
+ &lt;template
+ x=&quot;39&quot;
+ y=&quot;53&quot;/&gt;
+ &lt;template
+ x=&quot;20&quot;
+ y=&quot;42&quot;/&gt;
+ &lt;template
+ x=&quot;1&quot;
+ y=&quot;53&quot;/&gt;
+ &lt;template
+ x=&quot;1&quot;
+ y=&quot;48&quot;/&gt;
+ &lt;template
+ x=&quot;17&quot;
+ y=&quot;36&quot;/&gt;
+ &lt;template
+ x=&quot;17&quot;
+ y=&quot;29&quot;/&gt;
+ &lt;template
+ x=&quot;1&quot;
+ y=&quot;29&quot;/&gt;
+ &lt;template
+ x=&quot;1&quot;
+ y=&quot;24&quot;/&gt;
+ &lt;template
+ x=&quot;17&quot;
+ y=&quot;24&quot;/&gt;
+ &lt;template
+ x=&quot;17&quot;
+ y=&quot;19&quot;/&gt;
+ &lt;template
+ x=&quot;23&quot;
+ y=&quot;19&quot;/&gt;
+ &lt;/children&gt;
+ &lt;/children&gt;
+ &lt;/actualFigure&gt;
+ &lt;/descriptors&gt;
+</pre>
+<blockquote>
+<font color="darkblue"><strong>Tip</strong> :</font> It's a bit tedious to add multiple template points in the manner above, so feel free to open the gmfgraph file in a text editor to make life easier. To get it looking right more quickly, open the generated figure class and simply modify the GEF code directly and run the editor to see how it looks. Then, move this information back into your gmfgraph model. Of course, when the WYSIWYG features of GMF become more mature, none of this should be necessary.
+</blockquote>
+<br style="clear:both;"/>
+
+<h3 id="id27BF51D3B27BFE1387B55D435E65ACA48229B"> Tooling Definition </h3>
+<p>
+<span class="imgright">
+<img src="resource_tool.png" alt="resource_tool.png" /><br />
+
+</span>
+
+We'll need a tool to add Resource nodes, so as you've done many times before, open the mindmap.gmftool model and add a new node creation tool for the Resource. Next, we'll need to add our mappings, so reopen your mindmap.gmfmap file.
+</p>
+<br style="clear:both;"/>
+
+<h3 id="idE625271C1956151174B9B20523484BDAD143"> Mapping Definition </h3>
+<p>
+<span class="imgright">
+<img src="resource_map.png" alt="resource_map.png" /><br />
+
+</span>
+
+First, we'll need to add a new Top Node Reference to our Mapping definition. Set the Containment Feature to our 'resources : Resource' attribute of our Map class. Add a child Node Mapping element to this Top Node Reference and select our 'Resource' for the Domain meta information Element property. Of course, we'll select our Resource node for the Diagram Node and our Resource creation tool for the palette.
+</p>
+
+<p>
+Now, to add our Feature Label Mapping as a child of the Node Mapping and set the Edit and View Pattern and corresponding features from our Resource class in the domain model. Here, we'll utilize the edit and view pattern properties of the mapping model to allow a Resource label to be displayed as 'name [email@some.com]'. To allow for the proper parsing of what's entered into the direct edit field, we will define an edit and editor pattern for the label as '{0} : {1}' where a colon is used to separate the name and email attributes. The view pattern will be '{0} [{1}]' and allow our label to be displayed as shown in the image. Note that the generated plug-in code will contribute to the parserProvider extension-point, which will in turn leverages the Java MessageFormat class.
+</p>
+
+<h3 id="id6321FB60317537477B566DCE1AA418114174C6F"> Generation </h3>
+<p>
+After generation, a slight tweak will need to be made to the generated figure until <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=142010" class="external">bug 142010</a> is resolved. In the generated org.eclipse.gmf.examples.mindmap.diagram.edit.parts.ResourceEditPart$ResourceFigure class, set the attribute private boolean myUseLocalCoordinates = true; You might want to set the comment above it to @generated NOT in order to preserve this change. Without doing this the polygon used for the figure's body will not be visible. With that, set the fill(true) method on the body in the generated figure code, as it seems otherwise to not be filled.
+</p>
+
+<p>
+Run the diagram and check the operation of the label, as well as the look of the figure. It should look similar to the one above. Resources added to the diagram are now available in the properties view for topic assignments, thread authoring, etc. To add the ability to create links from other elements to a Resource, follow steps similar to how links are used to represent subtopics. This exercise is left to the reader ;-)
+</p>
+
+<h2 id="id54186F73C52971161D1A9361EF54778732C24D"> Creating a Customization Plug-in </h2>
+<p>
+Although making modifications to the generated code and specifying '@generated NOT' to allow JMerge to preserve our changes works well for some customizations, it's also possible to separate other customizations (extensions) to our generated plug-in using a new plug-in. For this purpose, create a new plug-in project named org.eclipse.gmf.examples.mindmap.diagram.custom to your workspace. Use the default settings, although no Activator class is needed, nor is the use of any of the templates provided in the wizard.
+</p>
+
+<h2 id="id3474B14EE25F1191337E4C32341180F752B1"> Custom Actions </h2>
+<p>
+<span class="imgright">
+<img src="insert_subtopic.png" alt="insert_subtopic.png" /><br />
+
+</span>
+
+The standard means to create a new subtopic is a bit painful at the moment: click on Topic creation tool, then diagram, name with in-place editor, click Subtopic link creation tool, draw link from parent to subtopic. Ideally, we'd like to simply use a right-click menu option on a selected Topic and choose &quot;Create Subtopic&quot; or better yet, press the Insert key (or some combination) and have the new Topic created, including the link, and with the in-place editor active on the new Topic. In this section, we will explore how to accomplish just this.
+</p>
+
+<p>
+To begin, we know that the org.eclipse.ui.bindings can be used to assign a Ctrl+I key combination to our action (as seen on the image, though for OS X). This is easily accomplished by contributing to the extension-point in our new *.diagram.custom plugin.xml file. Note that this is a simplistic example that does not declare a context, as you would probably expect to create for your diagram and potentially extend a default GMF diagram context (if one existed ;-).
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.ui.bindings&quot;&gt;
+ &lt;key commandId=&quot;org.eclipse.gmf.examples.mindmap.insertSubtopic&quot; sequence=&quot;M1+I&quot; schemeId=&quot;org.eclipse.ui.defaultAcceleratorConfiguration&quot;/&gt;
+&lt;/extension&gt;
+</pre>
+<p>Now, for the command, we'll contribute to the org.eclipse.ui.commands extension-point, as seen below. When you run your diagram, you will see this command category and the shortcut listed in the General | Keys preference page.
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.ui.commands&quot;&gt;
+ &lt;category name=&quot;Mindmap&quot; description=&quot;Commands related to Mindmap diagrams.&quot; id=&quot;org.eclipse.gmf.category.mindmap&quot;/&gt;
+ &lt;command categoryId=&quot;org.eclipse.gmf.category.mindmap&quot; description=&quot;Inserts a new subtopic&quot; id=&quot;org.eclipse.gmf.examples.mindmap.insertSubtopic&quot; name=&quot;Insert Subtopic&quot;&gt;
+ &lt;/command&gt;
+&lt;/extension&gt;
+</pre>
+Now, for the popup menu. We'd like to have a series of potential menu items to insert elements on our diagram (i.e. subtopics, threads, etc.), so our contribution to org.eclipse.ui.popupMenus will define an 'Insert | Subtopic' menu and link it to our binding above through the defintionId:
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.ui.bindings&quot;&gt;
+ &lt;key commandId=&quot;org.eclipse.gmf.examples.mindmap.insertSubtopic&quot; sequence=&quot;M1+I&quot; schemeId=&quot;org.eclipse.ui.defaultAcceleratorConfiguration&quot;/&gt;
+&lt;/extension&gt;
+</pre>
+<p>Now, for the command, we'll contribute to the org.eclipse.ui.commands extension-point, as seen below. When you run your diagram, you will see this command category and the shortcut listed in the General | Keys preference page.
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.ui.commands&quot;&gt;
+ &lt;category name=&quot;Mindmap&quot; description=&quot;Commands related to Mindmap diagrams.&quot; id=&quot;org.eclipse.gmf.category.mindmap&quot;/&gt;
+ &lt;command categoryId=&quot;org.eclipse.gmf.category.mindmap&quot; description=&quot;Inserts a new subtopic&quot; id=&quot;org.eclipse.gmf.examples.mindmap.insertSubtopic&quot; name=&quot;Insert Subtopic&quot;&gt;
+ &lt;/command&gt;
+&lt;/extension&gt;
+</pre>
+<p>Now, for the popup menu. We'd like to have a series of potential menu items to insert elements on our diagram (i.e. subtopics, threads, etc.), so our contribution to org.eclipse.ui.popupMenus will define an 'Insert | Subtopic' menu and link it to our binding above through the defintionId:
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.ui.popupMenus&quot;&gt;
+ &lt;objectContribution
+ adaptable=&quot;false&quot;
+ id=&quot;org.eclipse.gmf.examples.mindmap.diagram.ui.objectContribution.TopicEditPart1&quot;
+ objectClass=&quot;org.eclipse.gmf.examples.mindmap.diagram.edit.parts.TopicEditPart&quot;&gt;
+ &lt;menu
+ id=&quot;MindmapInsert&quot;
+ label=&quot;&amp;Insert&quot;
+ path=&quot;additions&quot;&gt;
+ &lt;separator name=&quot;group1&quot;/&gt;
+ &lt;/menu&gt;
+ &lt;action
+ class=&quot;org.eclipse.gmf.examples.mindmap.diagram.part.MindmapCreateSubtopicAction&quot;
+ definitionId=&quot;org.eclipse.gmf.examples.mindmap.insertSubtopic&quot;
+ enablesFor=&quot;1&quot;
+ id=&quot;org.eclipse.gmf.examples.mindmap.popup.MindmapCreateSubtopicActionID&quot;
+ label=&quot;&amp;Subtopic&quot;
+ menubarPath=&quot;MindmapInsert/group1&quot;&gt;
+ &lt;/action&gt;
+ &lt;/objectContribution&gt;
+&lt;/extension&gt;
+</pre>
+<p>Now, for the fun part... to define the declared MindmapCreateSubtopicAction class. To begin, we know that similar functionality exists in the connection handles feature provided by the runtime (see image below).
+</p>
+<img src="Connection_handle.png"/>
+<p><br style="clear:both;" />
+</p><p>After some investigation, it seems the CreateViewAndOptionallyElementCommand class gives us a hint at how to implement what we want (thanks to Cherie for providing a simplied version of the original tutorial code below, which leverages the DeferredCreateConnectionViewAndElementCommand).
+</p>
+<pre>
+public void run(IAction action) {
+ CompoundCommand cc = new CompoundCommand("Create Subtopic and Link");
+
+ // Create the new topic for the other end.
+ CreateViewRequest topicRequest = CreateViewRequestFactory.getCreateShapeRequest(MindmapElementTypes.Topic_2001, selectedElement.getDiagramPreferencesHint());
+
+ Point p = selectedElement.getFigure().getBounds().getTopRight().getCopy();
+ selectedElement.getFigure().translateToAbsolute(p);
+ int edgeCount = selectedElement.getNotationView().getSourceEdges().size();
+ // A quick hack to get subtopics to layout to the right, from top to bottom
+ int offset = (edgeCount * 50) &ndash; 100;
+ topicRequest.setLocation(p.translate(100, offset));
+
+ MapEditPart mapEditPart = (MapEditPart) selectedElement.getParent();
+ Command createTopicCmd = mapEditPart.getCommand(topicRequest);
+ IAdaptable topicViewAdapter = (IAdaptable) ((List) topicRequest.getNewObject()).get(0);
+
+ cc.add(createTopicCmd);
+
+ // create the subtopics link command
+ ICommand createSubTopicsCmd = new DeferredCreateConnectionViewAndElementCommand(new CreateConnectionViewAndElementRequest(MindmapElementTypes.TopicSubtopics_4001,
+ ((IHintedType) MindmapElementTypes.TopicSubtopics_4001).getSemanticHint(), selectedElement.getDiagramPreferencesHint()), new EObjectAdapter((EObject) selectedElement.getModel()),
+ topicViewAdapter, selectedElement.getViewer());
+
+ cc.add(new ICommandProxy(createSubTopicsCmd));
+
+ selectedElement.getDiagramEditDomain().getDiagramCommandStack().execute(cc);
+
+ // put the new topic in edit mode
+ final EditPartViewer viewer = selectedElement.getViewer();
+ final EditPart elementPart = (EditPart) viewer.getEditPartRegistry().get(topicViewAdapter.getAdapter(View.class));
+ if (elementPart != null) {
+ Display.getCurrent().asyncExec(new Runnable() {
+
+ public void run() {
+ viewer.setSelection(new StructuredSelection(elementPart));
+ Request der = new Request(RequestConstants.REQ_DIRECT_EDIT);
+ elementPart.performRequest(der);
+ }
+ });
+ }
+}
+</pre>
+
+<p>
+Rather than type in the code, simply copy the MindmapCreateSubtopicAction class into your project from the solution in CVS. If you observe any Access Restriction errors, add the required packages to the Exported Packages list on the Runtime of the *.diagram plugin. The basic concepts are outlined next.
+</p>
+
+<p>
+Our action will implement IObjectActionDelegate, with its run method performing the following:
+</p>
+<ul>
+ <li>create and initialize a CreateConnectionRequest</li>
+ <li>create and execute a CompoundCommand, containing a DeferredCreateConnectionViewAndElementCommand</li>
+ <li>create and perform a direct edit request on the new subtopic </li>
+</ul>
+
+<p>
+<span class="imgright">
+<img src="inserted_subtopic.png" alt="inserted_subtopic.png" /><br />
+
+</span>
+
+Run the diagram and test the functionality using the keyboard combination (Ctrl+I) or right-click menu. Note that the subtopic is created above and to the right of the parent with direct editing enabled for you to give it a name. As you can see, the code to determine the position is a temporary hack (layout will be covered in another installment of the tutorial).
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id4636144CF3DF261015C1225722E1371777513"> Custom Layout </h2>
+<p>
+Clearly, the default layout provided is not appropriate for a mindmap. What we are about to add is also less than optimal, but will indicate what is necessary to add a custom layout to your diagram. As described in the <a href="http://help.eclipse.org/help33/topic/org.eclipse.gmf.doc/examples-guide/diagram/layoutServiceExample.html" class="external">Layout Service Example</a>, we will contribute an extension to the runtime's layoutProviders extension-point.
+</p>
+
+<p>
+We'll try two layouts: one that extends org.eclipse.gmf.runtime.diagram.ui.providers.LeftRightProvider; the other, extending org.eclipse.gmf.runtime.diagram.ui.providers.internal.RadialProvider <em>(To access these class you need to include org.eclipse.gmf.runtime.diagram.ui.providers in your project dependancies)</em>. For each, add the appropriate extension in your plugin.xml file, setting the Priority higher for the one you'd like to take precedence. For example:
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.gmf.runtime.diagram.ui.layoutProviders&quot;&gt;
+ &lt;layoutProvider class=&quot;org.eclipse.gmf.examples.mindmap.diagram.layout.MindmapDefaultLayoutProvider&quot;&gt;
+ &lt;Priority name=&quot;Medium&quot;/&gt;
+ &lt;/layoutProvider&gt;
+&lt;/extension&gt;
+</pre>
+
+<p>
+The code for the LeftRightProvider is below:
+</p>
+<pre>
+public class MindmapDefaultLayoutProvider
+ extends LeftRightProvider {
+
+ public static String DEFAULT_LAYOUT = &quot;Default&quot;;
+
+ public boolean provides(IOperation operation) {
+ // enable this provider only on mindmap diagrams
+ if (operation instanceof ILayoutNodeOperation) {
+ Iterator nodes = ((ILayoutNodeOperation) operation)
+ .getLayoutNodes().listIterator();
+ if (nodes.hasNext()) {
+ View node = ((ILayoutNode) nodes.next()).getNode();
+ Diagram container = node.getDiagram();
+ if (container == null
+ ||&nbsp;!(container.getType().equals(&quot;Mindmap&quot;))) //$NON-NLS-1$
+ return false;
+ }
+ } else {
+ return false;
+ }
+ IAdaptable layoutHint = ((ILayoutNodeOperation) operation)
+ .getLayoutHint();
+ String layoutType = (String) layoutHint.getAdapter(String.class);
+ return LayoutType.DEFAULT.equals(layoutType);
+ }
+
+}
+</pre>
+
+<p>
+If you run the diagram using both providers, it's clear that the left-right layout is more well-suited for a mindmap, although some adjustments would be necessary to make it more usable.
+</p>
+
+<h2 id="id117E43CAF87C6214A3F0A8D1A313A7665"> Removing Tools from the Palette </h2>
+<p>
+Let's say you don't want to see the Notes stack and Zoom tool on your palette. To remove them, you need to contribute to the paletteProvider extension-point using the predefinedEntry IDs and remove="true" attribute. For these contributions to not impact all editors, add an editor element with your diagram's ID to the paletteProvider, as seen below:
+</p>
+<pre>
+&lt;extension point=&quot;org.eclipse.gmf.runtime.diagram.ui.paletteProviders&quot;&gt;
+ &lt;paletteProvider class=&quot;org.eclipse.gmf.runtime.diagram.ui.providers.DefaultPaletteProvider&quot;&gt;
+ &lt;Priority name=&quot;High&quot;/&gt;
+ &lt;contribution&gt;
+ &lt;predefinedEntry id=&quot;standardGroup/zoomTool&quot; remove=&quot;true&quot;/&gt;
+ &lt;predefinedEntry id=&quot;standardGroup/noteStack/noteTool&quot; remove=&quot;true&quot;/&gt;
+ &lt;predefinedEntry id=&quot;standardGroup/noteStack/textTool&quot; remove=&quot;true&quot;/&gt;
+ &lt;predefinedEntry id=&quot;standardGroup/noteStack/noteattachmentTool&quot; remove=&quot;true&quot;/&gt;
+ &lt;/contribution&gt;
+ &lt;editor
+ id=&quot;org.eclipse.gmf.examples.mindmap.diagram.part.MindmapDiagramEditorID&quot;&gt;
+ &lt;/editor&gt;
+ &lt;/paletteProvider&gt;
+&lt;/extension&gt;
+</pre>
+
+<p>
+This contribution is added to the org.eclipse.gmf.examples.mindmap.custom plugin.xml file in <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap.diagram.custom/plugin.xml?view=log&root=Modeling_Project&pathrev=HEAD" class="external">CVS</a>.
+</p>
+
+<h2 id="id236F4008C1D23CEBA3D560547FE45CBA4FD"> Summary </h2>
+<p>
+In this section of the tutorial, we saw how to add a composite figure, create a custom action and layout provider contained within a new extension plug-in. In the next section, we will look at using the dashboard, and generating an RCP-based mindmap with the &quot;lite&quot; runtime: <a href="step4.html">GMF Tutorial Part 4</a>
+</p>
+
+<h2 id="id34751410151582D571A93F452FDF9D98CF7C"> References </h2>
+<ul>
+ <li><a href="http://www.eclipse.org/gmf" class="external">Graphical Modeling Framework Website</a></li>
+ <li><a href="http://wiki.eclipse.org/index.php/GMF_Documentation "> GMF Documentation</a></li>
+ <li><a href="step1.html"> GMF Tutorial Part 1</a></li>
+ <li><a href="step2.html "> GMF Tutorial Part 2</a></li>
+ <li><a href="step4.html "> GMF Tutorial Part 4</a> </li>
+</ul>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/step4.html b/doc/org.eclipse.gmf.doc/tutorials/tooling/step4.html
new file mode 100644
index 000000000..ee527e5f0
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/step4.html
@@ -0,0 +1,140 @@
+<html><head/><img src="../../logo.gif" border="0" />
+<h1>GMF Tooling Tutorial: Step 4</h1>
+<p>
+In this fourth part of the GMF Tutorial, we will begin to explore alternative generation options; namely, the lite runtime option and targeting RCP. For this, you will need the experimental SDK installed, in addition to the normal SDK.
+</p>
+
+<h2 id="id1E4DAE5F62BF5F158E2AC67D46FF61BB62501"> Lite Runtime Generation to RCP </h2>
+<p>
+Let's begin with a new workspace to keep things isolated from the main tutorial a bit. This also eases maintenance of the tutorial content.
+</p>
+
+<h3 id="id150616B53CCD2595D63104B820B8411C980463"> GMF Dashboard View </h3>
+<p>
+First, let's create a new org.eclipse.gmf.examples.mindmap.lite GMF Project and select the option to use the dashboard view this time. Below is an image of the dashboard view we will use to work through the flow of producing a GMF-based editor. As you can see, it invokes actions for many of the steps we routinely use in GMF-based development, but all from a single location.
+</p>
+
+<p>
+<span class="imgcenter">
+<img src="gmf_dashboard.png" alt="gmf_dashboard.png" /><br />
+
+</span>
+
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id4A7D5F394663462A3E161E1601D1883747BC17"> Generating EMF for RCP </h3>
+<p>
+First, let's obtain our <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap.lite/model/mindmap.ecore?view=log&root=Modeling_Project&pathrev=HEAD" class="external">mindmap.ecore</a> model from the CVS as the input. Copy this file to your project's model folder. Note that this is not the modeling.ecore that is derived from the XSD. A bug in the lite generator requires us to use this &quot;pure&quot; Ecore model at the moment.
+</p>
+
+<p>
+Using the dashboard view's 'Select' link in the Domain Model section, locate your mindmap.ecore file. To produce an .ecore and a .genmodel from the xsd, select the 'Derive' link between Domain Model and Domain Gen Model. This will launch the New EMF Model wizard. Work your way through the dialogs and accept the defaults to Finish.
+</p>
+
+<p>
+In the opened editor, view the properties of the root 'Mindmap' element. Within the Editor category, select 'true' for the Rich Client Platform property. This will be picked up by our GMF generator later. Expand the root in the editor and change the 'Base Package Name' property of the 'Mindmap' package to 'org.eclipse.gmf.examples' and save the model. Right-click the root and generate your Model, Edit, and Editor (if desired) code. If you generated the editor, you can run it now by creating a new Eclipse Application runtime configuration and selecting 'Run an application' with your org.eclipse.gmf.examples.mindmap.editor.MindmapEditorAdvisorApplication class as the Program to Run.
+</p>
+
+<h3 id="id27BF51D3B27BFE1387B55D435E65ACA48229B"> Creating the GMF Generator Model </h3>
+<p>
+Now that our domain is set, we'll need to copy our <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap/model/mindmap.gmfgraph?root=Modeling_Project&view=co" class="external">graphical</a>, <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap/model/mindmap.gmftool?root=Modeling_Project&view=co" class="external">tooling</a>, and <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gmf/examples/org.eclipse.gmf.examples.mindmap/model/mindmap.gmfmap?root=Modeling_Project&view=co" class="external">mapping</a> models from the main tutorial. Save them to your model folder (where your domain models are) and update the state of the dashboard for each using its respective 'Select' link.
+</p>
+
+<p>
+With our models in place and 83% complete (according to the dashboard ;-), we can create our generator model by first checking the 'RCP' option on the dashboard between Mapping Model and Diagram Editor Gen Model, and then selecting the &quot;'Lite' transform&quot; link.
+</p>
+
+<p>
+When done, you can select 'Edit' from the dashboard's Diagram Gen Model section to open the model in the editor. Change the Diagram File Extension property in the Gen Editor to 'mmd' to match the main tutorial. A goal of the lite runtime is to allow for interoperability with diagrams used by the full runtime, which means they use the same notation model.
+</p>
+
+<p>
+You may also wish to select the option 'Same File for Diagram And Model' in order to keep it simple for small applications where there may not be a need for multiple views into a single domain model instance (as is the case in our lightweight mindmap application).
+</p>
+
+<p>
+Change the Gen Editor Generator Package Name Prefix property to org.eclipse.gmf.examples.mindmap.rcp and the Gen Plugin ID to match.
+</p>
+
+<h3 id="idE625271C1956151174B9B20523484BDAD143"> Generate and Run </h3>
+<p>
+We're now ready to generate our diagram code and run as an RCP application. To generate, us the 'Generate lite diagram editor' on the dashboard.
+</p>
+
+<p>
+To run our RCP-based diagram, create a new Eclipse Application configuration named mindmap-rcp (or something) and select org.eclipse.gmf.examples.mindmap.lite.rcp.MindmapApplication from the Run an Application section of Program to Run. On the Plug-ins tab, opt to 'plug-ins selected below only' and 'Deselect All'. Locate your org.eclipse.gmf.examples.mindmap.lite.diagram plug-in from the list, then 'Add Required Plug-ins' to create a minimal launch configuration. Run the diagram, and use the File menu to create a new diagram, similar to what you see below.
+</p>
+
+<p>
+<span class="imgcenter">
+<img src="mindmap_rcp.png" alt="mindmap_rcp.png" /><br />
+
+</span>
+
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id6321FB60317537477B566DCE1AA418114174C6F"> Exploring the Lite Runtime </h3>
+<p>
+What you will immediately notice are some differences with the full runtime:
+</p>
+<ul>
+ <li>No toolbar</li>
+ <li>No action bars or handles </li>
+</ul>
+
+<p>
+These may become available in future versions of the lite runtime, but will be individually selectable by the toolsmith. The goal of the lite runtime is to provide minimal dependencies and small download size for running these kinds of RCP-based diagram editors.
+</p>
+
+<h2 id="id54186F73C52971161D1A9361EF54778732C24D"> Enhanced Generator Model Features </h2>
+<p>
+Some new enhancements have arrived in the generator model for the 2.0 release. Here, we will explore the project navigator and property sheet features in the context of our Mindmap application.
+</p>
+
+<p>
+At this point, you can either return to your mapping model from above and create a new generator model for creating a full runtime diagram, or return to the workspace containing the solution to part 3 of the tutorial and open its generator model (assuming you've done it with GMF 2.0).
+</p>
+
+<h3 id="id3474B14EE25F1191337E4C32341180F752B1"> Project Navigator </h3>
+<p>
+As described in the <a href="http://wiki.eclipse.org/index.php/GMF_New_and_Noteworthy">New and Noteworthy</a> for the 2.0 stream, an extension to the generator model was added to allow for displaying diagram elements within the Project Explorer.
+</p>
+
+<p>
+If you look at the generator model, you will find a Gen Navigator element, which includes properties related to the mindmap navigator, and a number of child elements that represent child references. You can alter these as you see fit. When you run your diagram and open the Project Explorer view, you will now have visibility of the diagram contents as seen below.
+</p>
+
+<p>
+<span class="imgcenter">
+<img src="gmf_navigator.png" alt="gmf_navigator.png" /><br />
+
+</span>
+
+</p>
+<br style="clear:both;"/>
+
+<h3 id="id4636144CF3DF261015C1225722E1371777513"> Property Sheet </h3>
+<p>
+Another extension made to the generator model involves support for customizing the Properties view for your diagram. In the generator model, you'll find a Property Sheet element (child of the root Gen Editor Generator element), which includes a number of properties, such as for including a caption, read only, etc. It also contains a number of standard and custom property tab child elements that will describe the content of each at runtime, as seen below:
+</p>
+
+<p>
+<span class="imgcenter">
+<img src="gmf_properties.png" alt="gmf_properties.png" /><br />
+
+</span>
+
+</p>
+<br style="clear:both;"/>
+
+<h2 id="id117E43CAF87C6214A3F0A8D1A313A7665"> References </h2>
+<ul>
+ <li><a href="http://www.eclipse.org/gmf" class="external">Graphical Modeling Framework Website</a></li>
+ <li><a href="http://wiki.eclipse.org/index.php/GMF_Documentation "> GMF Documentation</a></li>
+ <li><a href="step1.html "> GMF Tutorial Part 1</a></li>
+ <li><a href="step2.html "> GMF Tutorial Part 2</a></li>
+ <li><a href="step3.html "> GMF Tutorial Part 3</a> </li>
+</ul>
+</html> \ No newline at end of file
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/stickynote.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/stickynote.png
new file mode 100644
index 000000000..0cf9030f6
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/stickynote.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram.png
new file mode 100644
index 000000000..dcc30e08f
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram_rcp.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram_rcp.png
new file mode 100644
index 000000000..dee983cb5
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/taipan_diagram_rcp.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/thread_Item_compartment.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/thread_Item_compartment.png
new file mode 100644
index 000000000..0ba9ca162
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/thread_Item_compartment.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/thread_tool.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/thread_tool.png
new file mode 100644
index 000000000..5131fe4f3
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/thread_tool.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/tool_links.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/tool_links.png
new file mode 100644
index 000000000..8a16882cd
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/tool_links.png
Binary files differ
diff --git a/doc/org.eclipse.gmf.doc/tutorials/tooling/validation_extensions.png b/doc/org.eclipse.gmf.doc/tutorials/tooling/validation_extensions.png
new file mode 100644
index 000000000..49080fb80
--- /dev/null
+++ b/doc/org.eclipse.gmf.doc/tutorials/tooling/validation_extensions.png
Binary files differ

Back to the top