Provide a plug-in to edit the Eclipse project plan with Vex.

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.projectplan/.classpath b/org.eclipse.vex.projectplan/.classpath
new file mode 100644
index 0000000..2d1a430
--- /dev/null
+++ b/org.eclipse.vex.projectplan/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.vex.projectplan/.project b/org.eclipse.vex.projectplan/.project
new file mode 100644
index 0000000..d9397cb
--- /dev/null
+++ b/org.eclipse.vex.projectplan/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.vex.projectplan</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/org.eclipse.vex.projectplan/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.vex.projectplan/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..bdf2b4f
--- /dev/null
+++ b/org.eclipse.vex.projectplan/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Dec 12 23:25:18 CET 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

+org.eclipse.jdt.core.compiler.compliance=1.5

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.5

diff --git a/org.eclipse.vex.projectplan/META-INF/MANIFEST.MF b/org.eclipse.vex.projectplan/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..021381a
--- /dev/null
+++ b/org.eclipse.vex.projectplan/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.vex.projectplan;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.core.contenttype,
+ org.eclipse.wst.xml.core,
+ org.eclipse.vex.ui;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.vex.xhtml;bundle-version="[1.0.0,2.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/org.eclipse.vex.projectplan/build.properties b/org.eclipse.vex.projectplan/build.properties
new file mode 100644
index 0000000..afd0556
--- /dev/null
+++ b/org.eclipse.vex.projectplan/build.properties
@@ -0,0 +1,8 @@
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .,\

+               plugin.xml,\

+               styles/,\

+               xsd/,\

+               plugin.properties

diff --git a/org.eclipse.vex.projectplan/plugin.properties b/org.eclipse.vex.projectplan/plugin.properties
new file mode 100644
index 0000000..c203949
--- /dev/null
+++ b/org.eclipse.vex.projectplan/plugin.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2011 Florian Thienel and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Florian Thienel - initial API and implementation
+###############################################################################
+pluginName= The Eclipse Project Plan
+providerName= Eclipse.org
+
+doctype.plan=Eclipse Project Plan
+
+style.plain=Plain
+contentType.name=Eclipse Project Plan

diff --git a/org.eclipse.vex.projectplan/plugin.xml b/org.eclipse.vex.projectplan/plugin.xml
new file mode 100644
index 0000000..b4206b3
--- /dev/null
+++ b/org.eclipse.vex.projectplan/plugin.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.4"?>

+<plugin>

+   <extension

+         point="org.eclipse.core.contenttype.contentTypes">

+      <content-type

+            base-type="org.eclipse.vex.ui.XmlDocument"

+            file-extensions="xml, projectplan"

+            id="org.eclipse.vex.projectplan"

+            name="%contentType.name"

+            priority="normal">

+      </content-type>

+   </extension>

+   <extension

+         point="org.eclipse.wst.xml.core.catalogContributions">

+      <catalogContribution>

+         <uri

+               name="http://www.eclipse.org/project/plan"

+               uri="xsd/plan.xsd">

+         </uri>

+         <uri

+               name="http://www.w3.org/1999/xhtml"

+               uri="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd">

+         </uri>

+      </catalogContribution>

+   </extension>

+   <extension

+         id="plan"

+         name="Eclipse Project Plan"

+         point="org.eclipse.vex.ui.doctypes">

+      <doctype

+            publicId="http://www.eclipse.org/project/plan"

+            systemId="xsd/plan.xsd">

+         <rootElement

+               name="plan">

+         </rootElement>

+      </doctype>

+   </extension>

+   <extension

+         id="plan-default"

+         name="Project Plan Default"

+         point="org.eclipse.vex.ui.styles">

+      <style

+            css="styles/plan-default.css">

+         <doctypeRef

+               publicId="http://www.eclipse.org/project/plan"></doctypeRef>

+      </style>

+   </extension>

+

+</plugin>

diff --git a/org.eclipse.vex.projectplan/styles/plan-default.css b/org.eclipse.vex.projectplan/styles/plan-default.css
new file mode 100644
index 0000000..f5b9779
--- /dev/null
+++ b/org.eclipse.vex.projectplan/styles/plan-default.css
@@ -0,0 +1,223 @@
+@import url(urn:org:eclipse:vex:styles:xhtml:xhtml1-plain.css);

+

+* {

+	font-family: sans-serif;

+	font-size: 10pt;

+}

+

+plan:before {

+	display: block;

+	content: "Project Plan for " attr(name);

+	font-weight: bold;

+	font-size: 18pt;

+}

+

+release:before {

+	display: block;

+	content: "Release " attr(version);	

+}

+

+release {

+	display: block;

+}

+

+introduction:before {

+	display: block;

+	content: "Introduction";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+introduction {

+	display: block;

+	margin-bottom: 5px;

+}

+

+release_deliverables:before {

+	display: block;

+	content: "Release Deliverables";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+release_deliverables {

+	display: block;

+	margin-bottom: 5px;

+}

+

+release_milestones:before {

+	display: block;

+	content: "Release Milestones";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+release_milestones {

+	display: block;

+	margin-bottom: 5px;

+}

+

+milestone:before {

+	display: inline;

+	content: attr(milestone) " (" attr(date) ") ";

+	font-weight: bold;

+}

+

+milestone {

+	display: block;

+	margin: 7px;

+}

+

+target_environments:before {

+	display: block;

+	content: "Target Environments";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+target_environments {

+	display: block;

+	margin-bottom: 5px;

+}

+

+internationalization:before {

+	display: block;

+	content: "Internationalization";

+	font-weight: bold;

+	font-size: 14pt;

+	color: black;

+	border-bottom-width: 1px;

+	border-bottom-style: dotted;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+internationalization {

+	display: block;

+}

+

+compatibility_with_previous_releases:before {

+	display: block;

+	content: "Compatibility with Previous Releases";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+compatibility_with_previous_releases {

+	display: block;

+	margin-bottom: 5px;

+}

+

+themes_and_priorities:before {

+	display: block;

+	content: "Themes and Priorities";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+themes_and_priorities {

+	display: block;

+	margin-bottom: 5px;

+}

+

+theme:before {

+	display: block;

+	content: attr(name);

+	font-weight: bold;

+	font-size: 14pt;

+	color: black;

+	border-bottom-width: 1px;

+	border-bottom-style: dotted;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+theme {

+	display: block;

+}

+

+committed:before {

+	display: block;

+	content: "Committed " attr(bugzilla);

+}

+

+committed {

+	display: block;

+	margin: 7px;

+}

+

+proposed:before {

+	display: block;

+	content: "Proposed " attr(bugzilla);

+}

+

+proposed {

+	display: block;

+	margin: 7px;

+}

+

+deferred:before {

+	content: "Deferred " attr(bugzilla);

+}

+

+deferred {

+	display: block;

+	margin: 7px;

+}

+

+appendix:before {

+	display: block;

+	content: "Appendix";

+	font-weight: bold;

+	font-size: 14pt;

+	color: blue;

+	border-bottom-width: 1px;

+	border-bottom-style: solid;

+	border-bottom-color: gray;

+	margin-top: 5px;

+	margin-bottom: 5px;

+}

+

+appendix {

+	display: block;

+	margin-bottom: 5px;

+}

+

diff --git a/org.eclipse.vex.projectplan/xsd/plan.xsd b/org.eclipse.vex.projectplan/xsd/plan.xsd
new file mode 100644
index 0000000..c0ecb35
--- /dev/null
+++ b/org.eclipse.vex.projectplan/xsd/plan.xsd
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+
+
+ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	elementFormDefault="qualified" targetNamespace="http://www.eclipse.org/project/plan"
+    xmlns="http://www.eclipse.org/project/plan">
+	<xsd:element name="plan" type="ProjectPlanType">
+		<xsd:annotation>
+			<xsd:documentation>Project Plan Root Element</xsd:documentation>
+		</xsd:annotation>
+	</xsd:element>
+	<xsd:complexType name="ProjectPlanType">
+		<xsd:sequence>
+			<xsd:element name="release" type="ReleaseType">
+				<xsd:annotation>
+					<xsd:documentation></xsd:documentation>
+				</xsd:annotation>
+			</xsd:element>
+			<xsd:element name="introduction" type="XHTMLUserAreaType" minOccurs="1"/>
+			<xsd:element name="release_deliverables" type="XHTMLUserAreaType" minOccurs="0"/>
+			<xsd:element name="release_milestones" type="ReleaseMilestonesType" minOccurs="0"/>
+			<xsd:element name="target_environments" type="TargetEnvironmentsType" minOccurs="0"/>
+			<xsd:element name="compatibility_with_previous_releases" type="XHTMLUserAreaType" minOccurs="0"/>
+			<xsd:element name="themes_and_priorities" type="ThemesAndPrioritiesType" minOccurs="0"/>
+			<xsd:element name="appendix" type="AppendixType" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+        <xsd:attribute name="plan-format" type="planEnumeratedType"></xsd:attribute>
+        <xsd:attribute name="name" type="xsd:token">
+            <xsd:annotation>
+                <xsd:documentation>
+                    Project Plan Name
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+	</xsd:complexType>
+    
+    <xsd:simpleType name="planEnumeratedType">
+        <xsd:restriction base="xsd:token">
+            <xsd:enumeration value="1.0"/>
+        </xsd:restriction>
+    </xsd:simpleType>
+	
+	<xsd:complexType name="ReleaseType">
+		<xsd:attribute name="projectid" type="xsd:token"/>
+		<xsd:attribute name="version" type="xsd:token"/>
+	</xsd:complexType>
+
+	<xsd:complexType name="XHTMLUserAreaType">
+        <xsd:sequence>
+            <xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+	</xsd:complexType>
+	
+	<xsd:complexType name="TargetEnvironmentsType">
+        <xsd:sequence>
+            <xsd:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="internationalization" type="XHTMLUserAreaType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+	</xsd:complexType>
+	
+	<xsd:complexType name="ReleaseMilestonesType">
+		<xsd:sequence>
+			<xsd:element name="preamble" type="XHTMLUserAreaType" minOccurs="0" maxOccurs="1"/>
+			<xsd:element name="milestone" type="MilestoneUserAreaType" minOccurs="1" maxOccurs="unbounded"/>
+			<xsd:element name="postamble" type="XHTMLUserAreaType" minOccurs="0" maxOccurs="1"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	
+	<xsd:complexType name="MilestoneUserAreaType">
+		<xsd:complexContent>
+			<xsd:extension base="XHTMLUserAreaType">
+				<xsd:attribute name="date" type="xsd:token"></xsd:attribute>
+				<xsd:attribute name="milestone" type="xsd:token"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType name="ThemesAndPrioritiesType">
+		<xsd:sequence>
+			<xsd:element name="preamble" type="XHTMLUserAreaType" minOccurs="0" maxOccurs="1"/>
+			<xsd:element name="theme" type="ThemeType" minOccurs="1" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	
+	<xsd:complexType name="ThemeType">
+		<xsd:sequence>
+            <xsd:element name="description" type="XHTMLUserAreaType" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="committed" type="BugzillaType" minOccurs="0" maxOccurs="1"/>
+			<xsd:element name="proposed" type="BugzillaType" minOccurs="0" maxOccurs="1"/>
+			<xsd:element name="deferred" type="BugzillaType" minOccurs="0" maxOccurs="1"/>
+		</xsd:sequence>
+        <xsd:attribute name="name" type="xsd:token" use="required"/>
+	</xsd:complexType>
+     
+    <xsd:complexType name="BugzillaType">
+        <xsd:complexContent>
+            <xsd:extension base="XHTMLUserAreaType">
+                <xsd:attribute name="bugzilla" type="xsd:anyURI" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    
+	
+	<xsd:complexType name="AppendixType">
+		<xsd:complexContent>
+			<xsd:extension base="XHTMLUserAreaType">
+				<xsd:attribute name="name" type="xsd:token"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+</xsd:schema>
\ No newline at end of file