Skip to main content
summaryrefslogtreecommitdiffstats
path: root/demos
diff options
context:
space:
mode:
authorTom Schindl2013-05-23 17:14:16 -0400
committerTom Schindl2013-05-23 17:14:16 -0400
commit1f393f8327958698d35f8bda6819c3b28d41ff1b (patch)
treef9b0baf23abf2acbe524f1fd2b49d5ccef4602f4 /demos
parent4138e1b7b58bc36b41d59594e006175524276f88 (diff)
downloadorg.eclipse.efxclipse-1f393f8327958698d35f8bda6819c3b28d41ff1b.tar.gz
org.eclipse.efxclipse-1f393f8327958698d35f8bda6819c3b28d41ff1b.tar.xz
org.eclipse.efxclipse-1f393f8327958698d35f8bda6819c3b28d41ff1b.zip
initial check in
Diffstat (limited to 'demos')
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/.classpath7
-rw-r--r--demos/org.eclipse.fx.demo.e4/.gitignore1
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/.project34
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.resources.prefs2
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.runtime.prefs2
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/.settings/org.eclipse.jdt.core.prefs7
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/Application.e4xmi25
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/E4JFX.product93
-rw-r--r--demos/org.eclipse.fx.demo.e4/E4JFX_workspace.product.launch34
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/IP-TODO.txt30
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/META-INF/MANIFEST.MF51
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/OSGI-INF/l10n/bundle.properties4
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/about.html28
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/build.properties10
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/default.css97
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/clef.pngbin0 -> 13050 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/top-bar.pngbin0 -> 13525 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-close-over.pngbin0 -> 457 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-close.pngbin0 -> 448 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-corner.pngbin0 -> 306 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-expand-over.pngbin0 -> 462 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-expand.pngbin0 -> 444 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-min-over.pngbin0 -> 455 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/css/images/window-min.pngbin0 -> 428 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/alt_about.gifbin0 -> 9340 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/alt_launcher.icnsbin0 -> 51159 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/alt_launcher.icobin0 -> 26694 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/alt_launcher.xpm307
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/alt_window_16.gifbin0 -> 637 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/alt_window_32.gifbin0 -> 1192 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/document-save.pngbin0 -> 2122 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/list-add-user.pngbin0 -> 2808 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/icons/list-remove-user.pngbin0 -> 2940 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/plugin.xml33
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/splash.bmpbin0 -> 135600 bytes
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/Activator.java30
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/DecorationController.java79
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/DeletePersonAction.java13
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/NewPersonAction.java14
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/SaveAction.java13
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/model/Person.java68
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonDetailPart.java25
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonListPart.java77
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/controllers/PersonDetailPartController.java89
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxgraph60
-rw-r--r--demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxml24
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/topdecoration.fxgraph28
-rwxr-xr-xdemos/org.eclipse.fx.demo.e4/src/topdecoration.fxml25
48 files changed, 1310 insertions, 0 deletions
diff --git a/demos/org.eclipse.fx.demo.e4/.classpath b/demos/org.eclipse.fx.demo.e4/.classpath
new file mode 100755
index 000000000..b1dabee38
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/.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/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/demos/org.eclipse.fx.demo.e4/.gitignore b/demos/org.eclipse.fx.demo.e4/.gitignore
new file mode 100644
index 000000000..5e56e040e
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/demos/org.eclipse.fx.demo.e4/.project b/demos/org.eclipse.fx.demo.e4/.project
new file mode 100755
index 000000000..368da4d29
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fx.demo.e4</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>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.resources.prefs b/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.resources.prefs
new file mode 100755
index 000000000..4824b8026
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.runtime.prefs b/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.runtime.prefs
new file mode 100755
index 000000000..deae05a97
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\r\n
diff --git a/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.jdt.core.prefs b/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 000000000..11f6e462d
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/demos/org.eclipse.fx.demo.e4/Application.e4xmi b/demos/org.eclipse.fx.demo.e4/Application.e4xmi
new file mode 100755
index 000000000..e26f26050
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/Application.e4xmi
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ASCII"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_fBMHIOrvEeCt9o_FPfmYHQ" elementId="org.eclipse.fx.demo.e4.application">
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_Pod3YOr0EeCt9o_FPfmYHQ" label="My e4 FX Application" x="10" y="10" width="800" height="600">
+ <tags>decoration#topdecoration.fxml</tags>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_DQApgOuPEeCDVr_5ofScGw" horizontal="true">
+ <children xsi:type="basic:Part" xmi:id="_dXzjYPRDEeCCOIYCLNYQTA" containerData="25" contributionURI="bundleclass://org.eclipse.fx.demo.e4/org.eclipse.fx.demo.e4.parts.PersonListPart" label="Person List"/>
+ <children xsi:type="basic:PartStack" xmi:id="_awnesPRDEeCCOIYCLNYQTA" elementId="detailstack" containerData="75">
+ <children xsi:type="basic:Part" xmi:id="_0P_cEPRDEeCCOIYCLNYQTA" elementId="persondetail" contributionURI="bundleclass://org.eclipse.fx.demo.e4/org.eclipse.fx.demo.e4.parts.PersonDetailPart" label="Person Detail"/>
+ </children>
+ </children>
+ <trimBars xmi:id="_VGEc4PaXEeCklfymhgw39w">
+ <children xsi:type="menu:ToolBar" xmi:id="_WRBNEPaXEeCklfymhgw39w">
+ <children xsi:type="menu:DirectToolItem" xmi:id="_aBhDMPaXEeCklfymhgw39w" iconURI="platform:/plugin/org.eclipse.fx.demo.e4/icons/list-add-user.png" contributionURI="bundleclass://org.eclipse.fx.demo.e4/org.eclipse.fx.demo.e4.actions.NewPersonAction"/>
+ <children xsi:type="menu:DirectToolItem" xmi:id="_FKEg8PacEeCklfymhgw39w" iconURI="platform:/plugin/org.eclipse.fx.demo.e4/icons/list-remove-user.png" contributionURI="bundleclass://org.eclipse.fx.demo.e4/org.eclipse.fx.demo.e4.actions.DeletePersonAction"/>
+ <children xsi:type="menu:DirectToolItem" xmi:id="_JZH7UPacEeCklfymhgw39w" iconURI="platform:/plugin/org.eclipse.fx.demo.e4/icons/document-save.png" contributionURI="bundleclass://org.eclipse.fx.demo.e4/org.eclipse.fx.demo.e4.actions.SaveAction"/>
+ </children>
+ </trimBars>
+ </children>
+ <addons xmi:id="_GyGBhEMOEeKso-cEr7pQbw" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_GyGBhUMOEeKso-cEr7pQbw" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_GyGBhkMOEeKso-cEr7pQbw" elementId="org.eclipse.fx.ui.keybindings.e4.service" contributionURI="bundleclass://org.eclipse.fx.ui.keybindings.e4/org.eclipse.fx.ui.keybindings.e4.BindingServiceAddon"/>
+ <addons xmi:id="_GyGBh0MOEeKso-cEr7pQbw" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_GyGBiEMOEeKso-cEr7pQbw" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_GyGBiUMOEeKso-cEr7pQbw" elementId="org.eclipse.fx.ui.keybindings.e4.model" contributionURI="bundleclass://org.eclipse.fx.ui.keybindings.e4/org.eclipse.fx.ui.keybindings.e4.BindingProcessingAddon"/>
+</application:Application>
diff --git a/demos/org.eclipse.fx.demo.e4/E4JFX.product b/demos/org.eclipse.fx.demo.e4/E4JFX.product
new file mode 100755
index 000000000..a01a5ec82
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/E4JFX.product
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="Hello JavaFX e4" id="org.eclipse.fx.demo.e4.product" application="org.eclipse.fx.ui.workbench.fx.application" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgs>-nosplash</programArgs>
+ <vmArgs>-Dosgi.framework.extensions=org.eclipse.fx.osgi</vmArgs>
+ </launcherArgs>
+
+ <windowImages i16="icons/alt_window_16.gif" i32="icons/alt_window_32.gif"/>
+
+ <launcher>
+ <solaris/>
+ <win useIco="false">
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ </vm>
+
+ <plugins>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.servlet"/>
+ <plugin id="javax.xml"/>
+ <plugin id="org.eclipse.ant.core"/>
+ <plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.databinding"/>
+ <plugin id="org.eclipse.core.databinding.beans"/>
+ <plugin id="org.eclipse.core.databinding.observable"/>
+ <plugin id="org.eclipse.core.databinding.property"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
+ <plugin id="org.eclipse.core.variables"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
+ <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.equinox.util"/>
+ <plugin id="org.eclipse.fx.core"/>
+ <plugin id="org.eclipse.fx.core.databinding"/>
+ <plugin id="org.eclipse.fx.demo.e4"/>
+ <plugin id="org.eclipse.fx.javafx"/>
+ <plugin id="org.eclipse.fx.osgi" fragment="true"/>
+ <plugin id="org.eclipse.fx.osgi.util"/>
+ <plugin id="org.eclipse.fx.ui.application"/>
+ <plugin id="org.eclipse.fx.ui.databinding"/>
+ <plugin id="org.eclipse.fx.ui.di"/>
+ <plugin id="org.eclipse.fx.ui.dialogs"/>
+ <plugin id="org.eclipse.fx.ui.keybindings"/>
+ <plugin id="org.eclipse.fx.ui.keybindings.e4"/>
+ <plugin id="org.eclipse.fx.ui.keybindings.generic"/>
+ <plugin id="org.eclipse.fx.ui.panes"/>
+ <plugin id="org.eclipse.fx.ui.services"/>
+ <plugin id="org.eclipse.fx.ui.theme"/>
+ <plugin id="org.eclipse.fx.ui.workbench.base"/>
+ <plugin id="org.eclipse.fx.ui.workbench.fx"/>
+ <plugin id="org.eclipse.fx.ui.workbench.fx.controls"/>
+ <plugin id="org.eclipse.fx.ui.workbench.renderers.base"/>
+ <plugin id="org.eclipse.fx.ui.workbench.renderers.fx"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ </plugins>
+
+
+</product>
diff --git a/demos/org.eclipse.fx.demo.e4/E4JFX_workspace.product.launch b/demos/org.eclipse.fx.demo.e4/E4JFX_workspace.product.launch
new file mode 100644
index 000000000..fafe84707
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/E4JFX_workspace.product.launch
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.fx.ui.workbench.fx.application"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/E4JFX_workspace.product"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-E4JFX.product"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-consoleLog -nosplash"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.framework.extensions=org.eclipse.fx.osgi"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.fx.demo.e4.product"/>
+<stringAttribute key="productFile" value="/org.eclipse.fx.demo.e4/E4JFX.product"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.fx.javafx@default:default,org.eclipse.fx.osgi@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.fx.core.databinding@default:default,org.eclipse.fx.core@default:default,org.eclipse.fx.demo.e4@default:default,org.eclipse.fx.osgi.util@default:default,org.eclipse.fx.ui.application@default:default,org.eclipse.fx.ui.databinding@default:default,org.eclipse.fx.ui.di@default:default,org.eclipse.fx.ui.dialogs@default:default,org.eclipse.fx.ui.keybindings.e4@default:default,org.eclipse.fx.ui.keybindings.generic@default:default,org.eclipse.fx.ui.keybindings@default:default,org.eclipse.fx.ui.panes@default:default,org.eclipse.fx.ui.services@default:default,org.eclipse.fx.ui.theme@default:default,org.eclipse.fx.ui.workbench.base@default:default,org.eclipse.fx.ui.workbench.fx.controls@default:default,org.eclipse.fx.ui.workbench.fx@default:default,org.eclipse.fx.ui.workbench.renderers.base@default:default,org.eclipse.fx.ui.workbench.renderers.fx@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/demos/org.eclipse.fx.demo.e4/IP-TODO.txt b/demos/org.eclipse.fx.demo.e4/IP-TODO.txt
new file mode 100755
index 000000000..91bf39ad0
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/IP-TODO.txt
@@ -0,0 +1,30 @@
+Ensemble-Icons (Oracle BSD):
+----------------------------
+From http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
+css/images/clef.png
+css/images/top-bar.png
+css/images/window-close-over.png
+css/images/window-close.png
+css/images/window-corner.png
+css/images/window-expand-over.png
+css/images/window-expand.png
+css/images/window-min-over.png
+css/images/window-min.png
+
+Eclipse-Icons (EPL):
+--------------------
+icons/alt_about.gif
+icons/alt_launcher.icns
+icons/alt_launcher.ico
+icons/alt_launcher.xpm
+icons/alt_window_16.gif
+icons/alt_window_32.gif
+
+Oxygene-Icons (Creative Commons 3.0 & LGPL):
+--------------------------------------------
+From: svn -r 760421 co svn://anonsvn.kde.org/home/kde/trunk/kdesupport/oxygen-icons
+
+icons/document-save.png
+icons/list-add-user.png
+icons/list-remove-user.png
+
diff --git a/demos/org.eclipse.fx.demo.e4/META-INF/MANIFEST.MF b/demos/org.eclipse.fx.demo.e4/META-INF/MANIFEST.MF
new file mode 100755
index 000000000..a8bb35760
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/META-INF/MANIFEST.MF
@@ -0,0 +1,51 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.fx.demo.e4; singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.fx.demo.e4.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ javax.inject;bundle-version="1.0.0",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.9.1",
+ org.eclipse.e4.core.services;bundle-version="0.9.1",
+ org.eclipse.e4.core.di;bundle-version="0.9.0",
+ org.eclipse.e4.core.di.extensions;bundle-version="0.9.0",
+ org.eclipse.e4.core.contexts;bundle-version="0.9.0",
+ org.eclipse.core.databinding;bundle-version="1.4.0",
+ org.eclipse.core.databinding.beans;bundle-version="1.2.100",
+ org.eclipse.core.databinding.observable;bundle-version="1.4.0",
+ org.eclipse.core.databinding.property;bundle-version="1.4.0",
+ org.eclipse.fx.core.databinding,
+ org.eclipse.fx.ui.di
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Import-Package: javafx.animation;version="2.0.0",
+ javafx.application;version="2.0.0",
+ javafx.beans;version="2.0.0",
+ javafx.beans.binding;version="2.0.0",
+ javafx.beans.property;version="2.0.0",
+ javafx.beans.value;version="2.0.0",
+ javafx.collections;version="2.0.0",
+ javafx.concurrent;version="2.0.0",
+ javafx.embed.swing;version="2.0.0",
+ javafx.event;version="2.0.0",
+ javafx.fxml;version="2.0.0",
+ javafx.geometry;version="2.0.0",
+ javafx.scene;version="2.0.0",
+ javafx.scene.chart;version="2.0.0",
+ javafx.scene.control;version="2.0.0",
+ javafx.scene.control.cell;version="2.0.0",
+ javafx.scene.effect;version="2.0.0",
+ javafx.scene.image;version="2.0.0",
+ javafx.scene.input;version="2.0.0",
+ javafx.scene.layout;version="2.0.0",
+ javafx.scene.media;version="2.0.0",
+ javafx.scene.paint;version="2.0.0",
+ javafx.scene.shape;version="2.0.0",
+ javafx.scene.text;version="2.0.0",
+ javafx.scene.transform;version="2.0.0",
+ javafx.scene.web;version="2.0.0",
+ javafx.stage;version="2.0.0",
+ javafx.util;version="2.0.0",
+ javax.annotation;version="1.0.0"
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %Bundle-Vendor
diff --git a/demos/org.eclipse.fx.demo.e4/OSGI-INF/l10n/bundle.properties b/demos/org.eclipse.fx.demo.e4/OSGI-INF/l10n/bundle.properties
new file mode 100755
index 000000000..844e31eb8
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,4 @@
+#Properties file for org.eclipse.fx.demo.e4
+product.name = Hello JavaFX e4
+Bundle-Vendor = BestSolution.at
+Bundle-Name = E4 Example \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/about.html b/demos/org.eclipse.fx.demo.e4/about.html
new file mode 100755
index 000000000..ecd1378e9
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The BestSolution.at makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the BestSolution.at, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/build.properties b/demos/org.eclipse.fx.demo.e4/build.properties
new file mode 100755
index 000000000..a41f59787
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/build.properties
@@ -0,0 +1,10 @@
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ splash.bmp,\
+ about.html,\
+ OSGI-INF/,\
+ Application.e4xmi
+source.. = src/
diff --git a/demos/org.eclipse.fx.demo.e4/css/default.css b/demos/org.eclipse.fx.demo.e4/css/default.css
new file mode 100755
index 000000000..9da4d7204
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/default.css
@@ -0,0 +1,97 @@
+#decorationArea {
+ -fx-padding: 10px;
+ -fx-background-image: url("images/top-bar.png"),
+ url("images/clef.png");
+ -fx-background-size: cover, contain;
+ -fx-background-position: left top, center center;
+ -fx-background-repeat: no-repeat;
+}
+
+#window-resize-button {
+ -fx-background-image: url("images/window-corner.png");
+ -fx-background-position: right 1px bottom 1px;
+ -fx-background-repeat: no-repeat;
+}
+#window_close {
+ -fx-font-size: 1px;
+ -fx-background-color: null;
+ -fx-background-image: url("images/window-close.png");
+ -fx-padding: 6 6 4 6;
+}
+#window_min {
+ -fx-font-size: 1px;
+ -fx-background-color: null;
+ -fx-background-image: url("images/window-min.png");
+ -fx-padding: 6 6 4 6;
+}
+#window_max {
+ -fx-font-size: 1px;
+ -fx-background-color: null;
+ -fx-background-image: url("images/window-expand.png");
+ -fx-padding: 6 6 4 6;
+}
+#window_close:hover {
+ -fx-background-image: url("images/window-close-over.png");
+}
+#window_min:hover {
+ -fx-background-image: url("images/window-min-over.png");
+}
+#window_max:hover {
+ -fx-background-image: url("images/window-expand-over.png");
+}
+
+
+#detail-list {
+ -fx-background-color: #d1dee3;
+ -fx-background-insets: 0;
+ -fx-background-radius: 0;
+ -fx-padding: 0;
+ /*-fx-effect: innershadow( one-pass-box, rgba(0,0,0,0.1), 20, 0.0, 0, 0 ); */
+}
+
+#detail-list .list-cell {
+ -fx-indent: 10;
+ -fx-background-color: transparent;
+}
+
+#detail-list .list-cell:filled:selected:focused, #detail-list .list-cell:filled:selected {
+ -fx-background: -fx-accent;
+ -fx-background-color: -fx-selection-bar;
+ -fx-text-fill: -fx-selection-bar-text;
+}
+
+#detailstack {
+ -fx-tab-spacing: 0px;
+}
+
+#detailstack *.tab-header-background {
+ -fx-background-color: #51555c;
+ -fx-effect: innershadow(two-pass-box , rgba(0,0,0,0.7) , 12, 0.0 , 0 , 0);
+}
+
+#detailstack .tab-header-content-spacer {
+ -fx-padding: 0;
+ -fx-border-width: 0px;
+}
+
+#detailstack .tab {
+ -fx-padding: 2 8 2 8;
+ -fx-background-radius: 8 8 0 0, 7 7 0 0, 6 6 0 0;
+}
+
+#detailstack .tab-label {
+ -fx-font-size: 1.2em;
+}
+
+#detailstack .tab:selected {
+ -fx-padding: 2 8 2 8;
+ -fx-background-radius: 8 8 0 0, 7 7 0 0, 6 6 0 0;
+ -fx-background-color: #EEEEEE;
+}
+
+#persondetail {
+ -fx-background-color: #EEEEEE;
+ -fx-background-repeat: repeat repeat;
+ -fx-background-position: left top;
+ -fx-padding: 8px;
+} \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/clef.png b/demos/org.eclipse.fx.demo.e4/css/images/clef.png
new file mode 100755
index 000000000..fc200e159
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/clef.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/top-bar.png b/demos/org.eclipse.fx.demo.e4/css/images/top-bar.png
new file mode 100755
index 000000000..1a8a2e5b5
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/top-bar.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-close-over.png b/demos/org.eclipse.fx.demo.e4/css/images/window-close-over.png
new file mode 100755
index 000000000..beb28981e
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-close-over.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-close.png b/demos/org.eclipse.fx.demo.e4/css/images/window-close.png
new file mode 100755
index 000000000..ddd20ef04
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-close.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-corner.png b/demos/org.eclipse.fx.demo.e4/css/images/window-corner.png
new file mode 100755
index 000000000..298193880
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-corner.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-expand-over.png b/demos/org.eclipse.fx.demo.e4/css/images/window-expand-over.png
new file mode 100755
index 000000000..de3664af8
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-expand-over.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-expand.png b/demos/org.eclipse.fx.demo.e4/css/images/window-expand.png
new file mode 100755
index 000000000..d08534fc2
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-expand.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-min-over.png b/demos/org.eclipse.fx.demo.e4/css/images/window-min-over.png
new file mode 100755
index 000000000..3cb6f133f
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-min-over.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/css/images/window-min.png b/demos/org.eclipse.fx.demo.e4/css/images/window-min.png
new file mode 100755
index 000000000..6e90c1811
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/css/images/window-min.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/alt_about.gif b/demos/org.eclipse.fx.demo.e4/icons/alt_about.gif
new file mode 100755
index 000000000..20d9ad2d9
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/alt_about.gif
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.icns b/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.icns
new file mode 100755
index 000000000..b77a6a639
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.icns
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.ico b/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.ico
new file mode 100755
index 000000000..d548f7109
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.ico
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.xpm b/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.xpm
new file mode 100755
index 000000000..b0c139e06
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/alt_launcher.xpm
@@ -0,0 +1,307 @@
+/* XPM */
+static char * icon48_xpm[] = {
+"48 48 256 2",
+" c #4B4B3B3B9090",
+". c #0D0D0E0E5454",
+"X c #11110E0E5B5B",
+"o c #17170F0F6363",
+"O c #1D1D13136969",
+"+ c #212114146C6C",
+"@ c #252514147171",
+"# c #282811116C6C",
+"$ c #26260D0D6363",
+"% c #22220B0B5E5E",
+"& c #1C1C0B0B5A5A",
+"* c #1C1C0B0B5252",
+"= c #1B1B05055353",
+"- c #161606064D4D",
+"; c #161605054949",
+": c #111104044848",
+"> c #131304044545",
+", c #131305054242",
+"< c #141410105E5E",
+"1 c #2C2C15157373",
+"2 c #2B2B1B1B7575",
+"3 c #343416167272",
+"4 c #313113136E6E",
+"5 c #222209095757",
+"6 c #1B1B06064D4D",
+"7 c #15150B0B4242",
+"8 c #13130C0C5555",
+"9 c #2E2E1B1B7878",
+"0 c #33331F1F7C7C",
+"q c #343418187878",
+"w c #3B3B1C1C7575",
+"e c #2E2E10106767",
+"r c #1B1B07074747",
+"t c #18180B0B4646",
+"y c #151513136262",
+"u c #1A1A15156464",
+"i c #34341F1F7777",
+"p c #40401E1E8080",
+"a c #42421B1B7A7A",
+"s c #3B3B15157474",
+"d c #2B2B0B0B5B5B",
+"f c #222207075252",
+"g c #373727277A7A",
+"h c #474724248484",
+"j c #393915156E6E",
+"k c #373711116A6A",
+"l c #343413136363",
+"z c #232319196E6E",
+"x c #292919197070",
+"c c #3C3C2C2C8282",
+"v c #444431318585",
+"b c #494934348A8A",
+"n c #505026268A8A",
+"m c #3D3D1B1B6E6E",
+"M c #31310E0E5C5C",
+"N c #2B2B0D0D5353",
+"B c #222207074A4A",
+"V c #52523C3C9292",
+"C c #58583C3C9494",
+"Z c #5D5D44449797",
+"A c #5C5C2E2E9292",
+"S c #676733339595",
+"D c #424228287575",
+"F c #29290A0A4F4F",
+"G c #6C6C4A4A9E9E",
+"H c #72725454A7A7",
+"J c #8C8C6D6DB2B2",
+"K c #343424246E6E",
+"L c #3A3A23236A6A",
+"P c #3A3A1C1C6767",
+"I c #24240A0A4B4B",
+"U c #151518186161",
+"Y c #76766F6FA5A5",
+"T c #ADAD9191CCCC",
+"R c #98988989D3D3",
+"E c #45453B3B8686",
+"W c #3C3C35357979",
+"Q c #363631317575",
+"! c #32322D2D6B6B",
+"~ c #323229296363",
+"^ c #30301F1F6262",
+"/ c #323218185E5E",
+"( c #272707074B4B",
+") c #202028286C6C",
+"_ c #1E1E1D1D6868",
+"` c #9A9A8282BBBB",
+"' c #C8C8B3B3D3D3",
+"] c #B3B3AFAFE7E7",
+"[ c #84847272C6C6",
+"{ c #58585757A3A3",
+"} c #3F3F3C3C8A8A",
+"| c #3B3B3A3A8484",
+" . c #414139397D7D",
+".. c #3D3D39397A7A",
+"X. c #37372E2E6E6E",
+"o. c #2C2C21215A5A",
+"O. c #2E2E1B1B5B5B",
+"+. c #F5F5EFEFF5F5",
+"@. c #656566669A9A",
+"#. c #47474B4B8E8E",
+"$. c #3C3C44447B7B",
+"%. c #444442428080",
+"&. c #45453E3E8181",
+"*. c #40403C3C8181",
+"=. c #3D3D33337474",
+"-. c #3B3B30306E6E",
+";. c #38382D2D6969",
+":. c #303026265D5D",
+">. c #2C2C15155A5A",
+",. c #1F1F1C1C7070",
+"<. c #25251E1E7171",
+"1. c #59595C5C9191",
+"2. c #4D4D53538989",
+"3. c #4C4C49498484",
+"4. c #484845458585",
+"5. c #494941418585",
+"6. c #494940408181",
+"7. c #2F2F1C1C5353",
+"8. c #2B2B28287676",
+"9. c #323231317F7F",
+"0. c #545452528B8B",
+"q. c #51514E4E8989",
+"w. c #4E4E4B4B8C8C",
+"e. c #4C4C47478686",
+"r. c #46463D3D7E7E",
+"t. c #434336367A7A",
+"y. c #2B2B13135555",
+"u. c #47473D3D8D8D",
+"i. c #575757578E8E",
+"p. c #48483E3E7F7F",
+"a. c #46463A3A7D7D",
+"s. c #424235357575",
+"d. c #404034347171",
+"f. c #BFBFCBCBFAFA",
+"g. c #B8B8A8A8DDDD",
+"h. c #5E5E60609292",
+"j. c #565655558C8C",
+"k. c #4B4B44448282",
+"l. c #454539397B7B",
+"z. c #434338387878",
+"x. c #3F3F32326D6D",
+"c. c #3D3D30306969",
+"v. c #3A3A2E2E6363",
+"b. c #36362A2A5C5C",
+"n. c #343424245555",
+"m. c #30301E1E4D4D",
+"M. c #49493C3C8282",
+"N. c #5E5E4F4F8C8C",
+"B. c #56563B3B8B8B",
+"V. c #545407078585",
+"C. c #424234347272",
+"Z. c #9797A4A4F7F7",
+"A. c #444436367676",
+"S. c #7D7D7979D5D5",
+"D. c #464640408A8A",
+"F. c #44444B4B8282",
+"G. c #414107077777",
+"H. c #71716161C1C1",
+"J. c #303039397979",
+"K. c #8E8E8E8EE6E6",
+"L. c #404033338B8B",
+"P. c #4A4A45458C8C",
+"I. c #46463A3A8080",
+"U. c #363629295454",
+"Y. c #303022224848",
+"T. c #424237377575",
+"R. c #2E2E1D1D6363",
+"E. c #79798383EAEA",
+"W. c #74747B7BE4E4",
+"Q. c #6D6D7676D6D6",
+"!. c #6A6A7171CECE",
+"~. c #66666969C6C6",
+"^. c #62626565BCBC",
+"/. c #5F5F6060B5B5",
+"(. c #5B5B5B5BACAC",
+"). c #535353539898",
+"_. c #4F4F4F4FA4A4",
+"`. c #54544D4DA4A4",
+"'. c #323204046B6B",
+"]. c #303035357979",
+"[. c #313122224343",
+"{. c #5A5A5B5BB7B7",
+"}. c #484846468080",
+"|. c #454541417575",
+" X c #4B4B31318282",
+".X c #47473C3C8484",
+"XX c #3E3E35356E6E",
+"oX c #2F2F26264040",
+"OX c #2B2B23233A3A",
+"+X c #262619195C5C",
+"@X c #252515155A5A",
+"#X c #55555151B3B3",
+"$X c #3C3C2D2D5D5D",
+"%X c #39392F2F5656",
+"&X c #37372D2D5050",
+"*X c #25251F1F3030",
+"=X c #24241D1D4343",
+"-X c #202013135656",
+";X c #41413B3B6C6C",
+":X c #444442429696",
+">X c #212100005E5E",
+",X c #444436367272",
+"<X c #444436366F6F",
+"1X c #424236366868",
+"2X c #3F3F34346161",
+"3X c #3C3C32325A5A",
+"4X c #34342A2A4A4A",
+"5X c #21211B1B2121",
+"6X c #22221C1C6363",
+"7X c #2D2D01015E5E",
+"8X c #20201B1B2525",
+"9X c #49492F2F7B7B",
+"0X c #434334346C6C",
+"qX c #323229294545",
+"wX c #1C1C10104F4F",
+"eX c #222217176363",
+"rX c #37371E1E6B6B",
+"tX c #424232326E6E",
+"yX c #444433336969",
+"uX c #424233336565",
+"iX c #1E1E1A1A1E1E",
+"pX c #161601014C4C",
+"aX c #1C1C11115454",
+"sX c #252503035B5B",
+"dX c #414131316A6A",
+"fX c #22221F1F7878",
+"gX c #272724246767",
+"hX c #1D1D16165E5E",
+"jX c #131305055151",
+"kX c #40402F2F6464",
+"lX c #111107074E4E",
+"zX c #0C0C05054B4B",
+"xX c #22221E1E5757",
+"cX c #1A1A0D0D4D4D",
+"vX c #16160B0B4D4D",
+"bX c #060604044747",
+"nX c #040403034343",
+"mX c #3B3B27276565",
+"MX c #0E0E03034141",
+"NX c #111106064A4A",
+"BX c #0E0E04044646",
+"VX c #111105053B3B",
+"CX c #0D0D01013A3A",
+"ZX c #030305053F3F",
+"AX c #0F0F0F0F4C4C",
+"SX c #020207073B3B",
+"DX c #0D0D03034646",
+"FX c #0B0B02023F3F",
+"GX c #0D0D02023434",
+"HX c #0A0A0E0E4444",
+"JX c #161614145252",
+"KX c #0B0B04044646",
+"LX c #0A0A03034444",
+"PX c #1D1D21215757",
+"IX c #090910104040",
+"UX c #18181E1E5353",
+" ",
+" . . . . X X o o o o O + + @ @ @ @ @ @ @ # # # # # # $ $ % % & & & & * = - - - ; : > > , , , ",
+" . . X X < < o o O O + @ 1 2 2 1 1 1 1 1 1 1 1 3 4 # # $ $ $ % % % 5 = = 6 6 - ; ; > > , , 7 ",
+" . 8 < < < o O O + @ @ 2 9 9 0 0 q q q q q q q w 3 4 4 e e $ $ $ $ % 5 = = 6 6 6 ; ; > > r t ",
+" . X < y u O O + @ 1 2 i 0 0 p p p p p p p a a p a s 3 4 4 e e e e d 5 5 f f 6 6 6 ; ; r r t ",
+" X < y u O + + @ 2 9 0 g p p h h h h h h h p h h a a s s j k k j l d d 5 5 f f 6 6 r r r r r ",
+" X < y O z x x 9 0 g c v b n n n n n n n n n n n h a a s s j j m l M d d N f f B B B B r r r ",
+" < y u + z 2 0 c c b V C Z C C A A A A A S S S n h D w w m m m m k l M d d N f F F F B r r r ",
+" < y O z z 9 c b V Z G H H H G S G G J J H V v c g g K K K K L P l l l M M N N N N I B B r r ",
+" U u + z x i v C H Y J J J J H J T R H V E W W Q Q Q Q ! ! ! ~ ^ ^ / / M M M M M N ( B B r r ",
+" ) _ z x 9 g b Z Y ` ' ' ' T T ] [ { } | .........W W Q Q X.! ~ ~ o.O./ / / / N F ( B B B r ",
+" ) ) z x i c V G J ' +.+.+.+.] [ @.#.$.%.%.%.&.*. . .....W =.-.X.;.~ :.o.O.^ >.N F ( B B B B ",
+" ) ,.<.2 g v C H J ' +.+.+.+.T Y 1.2.3.4.4.4.5.6.&.&. . ...W =.=.-.;.~ :.o.7.>.N F F ( B I I ",
+" ) ,.<.8.9.b C H J T +.+.+.' J @.1.0.q.q.w.e.4.5.6.&.r. . .t.W =.=.-.;.~ :.o.7.y.N F ( ( I I ",
+" 8.8.8.9.| u.C G J T +.+.' ` Y @.1.i.0.q.q.e.e.5.6.p.r.a. .t.t.s.d.d.-.;.~ :.7.7.y.F F ( I I ",
+" 9.c c c v b A S H ' f.g.` Y @.h.1.i.j.0.q.q.e.k.6.p.r.a.l.t.z.s.s.d.x.c.v.b.n.m.7.N F F F I ",
+" <.g M.N.B.B.n V.J f.R J @.h.h.1.i.i.j.j.0.q.3.k.6.p.r.a.l.l.z.s.C.d.x.x.c.v.b.n.m.y.N F F F ",
+" + x i v B.Z Z G g.Z.[ @.2.i.i.j.j.j.j.j.0.q.3.k.6.p.p.a.l.l.A.s.C.C.d.x.c.v.b.n.m.7.y.N N y. ",
+" O # 3 w p n Z ` f.S.H D.F.q.0.0.0.0.j.0.q.q.3.k.6.p.r.a.a.l.A.s.s.C.d.x.x.c.v.b.n.m.y.y.y.y. ",
+" O # 4 s a G.V.T Z.H.V J.%.e.w.q.0.0.0.0.q.q.e.k.6.p.r.a.a.l.z.A.s.C.d.d.x.c.v.b.n.m.7.>.y.y. ",
+" O # 4 s w G.A f.K.H L...4.P.w.w.w.q.q.q.q.e.e.5.6.M.I.I.a.a.l.z.A.s.d.d.x.c.v.v.U.Y.7.O.>.y. ",
+" $ # 4 3 s G.G f.S.Z 9.*.D.P.P.w.w.w.w.w.e.e.5.5.M.M.I.I.a.a.l.z.T.s.d.d.x.x.c.v.U.Y.m.R.>.>. ",
+" E.E.W.W.W.W.E.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { )._.`._. ",
+" + # 3 w s '.` f.H.V ].*.D.P.P.P.P.P.P.P.5.5.5.M.M.M.I.I.a.l.z.z.T.T.s.d.d.x.c.v.U.Y.[.^ O.>. ",
+" ~.~.~.~.~.~.K.Z.S.~.{.^.^.^.^.^.^.^.^././././././.(.(.(.(.(.(.{ { { { { ).).).w.w.}.|.P.u.} ",
+" .I.6. X X XT f.H.b ].*.E D.D.D.D.5.5..X.XM.M.I.I.a.a.l.l.z.z.T.T.T.d.XXx.c.v.b.U.oXOXR.+X@X ",
+" E.E.E.W.W.W.K.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { ).).#X_._. ",
+" & % $ e '.= H f.H.b 8.W *.E E E .X.X.XI.I.I.I.a.a.l.l.z.z.T.T.T.C.XXXXc.v.$X%X&XY.*X=X2 @X-X ",
+" {.{.{.{.{.#X~.Z.W.~.{.{./././././././././.(.(.(.(.(.(.(.{ { { { { { ).).).w.w.3.}.;X%.:X} } ",
+" & & % $ e >XV.f.S.C K X.W t. . .l.l.t.t.t.t.A.A.A.,X,X,X,X,X<X;X1X1X2X3X%X&X4XoX*X5Xo.6X-X-X ",
+" & & % $ $ >X7X` Z.Z D ! =.=.s.t.t.t.A.A.s.A.,X,X,X,X<X<X<X<X;X1X2X2X3X%X&X4XoXOX8X5X<.@X-X-X ",
+" 8 & & $ e K 9XJ f.^. XK X.=.=.s.s.s.s.s.C.C.C.C.<X0X0X0X1X1X1X2X2X3X%X&X4XqXOX*X8X=X<.-X-XwX ",
+" 8 & eXK k.@.M. Xg.E.B.rX~ -.d.d.C.C.C.C.C.tX0X0X0XyXyX1X1XuX2X2X3X%X&X4XqXoXOX8XiX6XeX-X-XwX ",
+" 6XQ h.Y N.K e pXB.f./.9Xo.;.-.x.d.tXtXtXtXtX0X0XyXyXyXuXuX2X2X3X%X&X4XqXoXOX*XiX=X_ aX-XaXwX ",
+" Y Y .R.@X% sX= 7XT Z.V P :.;.c.x.x.x.tXdXdXdXyXyXuXuX2X2X3X3X%X&X4XqXoXOX*X8X*XfXaXaXaXwXwX ",
+" gXhX& * & 5 5 sXjXa ] S.9X/ ~ v.c.dXdXdXdXdXuXuXuXkX2X2X3X%X%X&X4XqXoXOX*X8XiX<.hXwXwXaXwXwX ",
+" 8 lXlXjX= * 5 5 = zX9X] H.D 7.b.v.v.kXc.kXkXkXkXkX2X$X3X%X&X&X4XqXoXOX*X8XiXxXhXwXcXcXwXwXwX ",
+" zXzXlXlXjX= = f f sXD Y ] ~.D 7.n.b.v.v.kXkXkXkX$X$X%X%X&X4XqXoXoXOX*X8X5XgXu cXvXvXcXcXwXwX ",
+" bXbXzXlXlX- = * @XX.h.e D T S.D n.m.b.$X$X$X$X$X%X%X&X&X4XqXoXOX*X8X8X*X<.hXvX; ; vXvXvXcXwX ",
+" nXbXzXzXlXlX- -XX.Y R.pXpXP J K.Z mXm.n.U.U.U.U.U.4X4XY.oXOX*X8X8X8X=X,.aXvX; > > > t t t cX ",
+" nXbXbXzXzXlXaXXXY +Xf = f = 7XtXR R mXn.Y.[.[.[.[.OX*X*X8X5X*X=X,.u vXvX; > > MXMX, 7 t t ",
+" nXnXnXbXzXvX-.Y +XcX6 6 = = = d L B.G H `.X.:.7.m.=X=X=X=X=X6X,.u cXvXNX: BX> MXVXCXVX7 7 7 ",
+" ZXZXnXbXAXgX@.+XvX; - - - - * @XR.>.sX>.R.i 0 x eXeXeXeXO hXaXcXvXNX: BXMXMXMXVXCXCXCXVX7 7 ",
+" SXZXZXAXgXN.aXNX: : NXNXNX- * +X+X* 6 6 6 * * * * * * * vXvX- NX: DXBXMXMXFXCXCXCXCXGXVXVX7 ",
+" SXSXHXgX0.JXKXLXKXKXDX: : NX* @X-X- - - - - - - - - - - NX: DXDXDXMXMXFXFXCXCXCXCXGXGXGXVXVX ",
+" SXHXPX3.JXnXnXnXnXbXLXKXKXNXaX-XvX: : NX: : : : : : : BXDXDXLXMXMXFXFXCXCXCXCXGXGXGXGXGXGXGX ",
+" IXUX$.AXZXZXZXZXnXnXnXLXLXNXJXvXBXDXBXBXBXBXDXDXDXDXLXDXLXLXFXFXFXFXCXCXCXCXGXGXGXGXGXGXGXGX ",
+" "};
diff --git a/demos/org.eclipse.fx.demo.e4/icons/alt_window_16.gif b/demos/org.eclipse.fx.demo.e4/icons/alt_window_16.gif
new file mode 100755
index 000000000..05626b17d
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/alt_window_16.gif
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/alt_window_32.gif b/demos/org.eclipse.fx.demo.e4/icons/alt_window_32.gif
new file mode 100755
index 000000000..b432f8833
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/alt_window_32.gif
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/document-save.png b/demos/org.eclipse.fx.demo.e4/icons/document-save.png
new file mode 100755
index 000000000..cc380a03a
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/document-save.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/list-add-user.png b/demos/org.eclipse.fx.demo.e4/icons/list-add-user.png
new file mode 100755
index 000000000..6231f051f
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/list-add-user.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/icons/list-remove-user.png b/demos/org.eclipse.fx.demo.e4/icons/list-remove-user.png
new file mode 100755
index 000000000..5bc6e0864
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/icons/list-remove-user.png
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/plugin.xml b/demos/org.eclipse.fx.demo.e4/plugin.xml
new file mode 100755
index 000000000..8546b3346
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/plugin.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ id="product"
+ point="org.eclipse.core.runtime.products">
+ <product
+ application="org.eclipse.fx.ui.workbench.fx.application"
+ name="Hello JavaFX e4">
+ <property
+ name="windowImages"
+ value="icons/alt_window_16.gif,icons/alt_window_32.gif">
+ </property>
+ <property
+ name="applicationXMI"
+ value="org.eclipse.fx.demo.e4/Application.e4xmi">
+ </property>
+ <property
+ name="appName"
+ value="Hello JavaFX e4">
+ </property>
+ </product>
+ </extension>
+ <extension
+ point="org.eclipse.fx.ui.theme">
+ <theme
+ basestylesheet="css/default.css"
+ id="org.eclipse.fx.demo.e4.default">
+ </theme>
+ </extension>
+
+</plugin>
diff --git a/demos/org.eclipse.fx.demo.e4/splash.bmp b/demos/org.eclipse.fx.demo.e4/splash.bmp
new file mode 100755
index 000000000..d7d2e3032
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/splash.bmp
Binary files differ
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/Activator.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/Activator.java
new file mode 100755
index 000000000..9acb7d01c
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/Activator.java
@@ -0,0 +1,30 @@
+package org.eclipse.fx.demo.e4;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+}
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/DecorationController.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/DecorationController.java
new file mode 100755
index 000000000..2cd84117b
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/DecorationController.java
@@ -0,0 +1,79 @@
+package org.eclipse.fx.demo.e4;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+import javafx.application.Platform;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.geometry.Rectangle2D;
+import javafx.scene.control.ToolBar;
+import javafx.scene.input.MouseEvent;
+import javafx.stage.Screen;
+import javafx.stage.Stage;
+
+public class DecorationController implements Initializable {
+ private double mouseDragOffsetX = 0;
+ private double mouseDragOffsetY = 0;
+
+ @FXML
+ private ToolBar decorationArea;
+
+ private Rectangle2D backupWindowBounds;
+
+ public DecorationController() {
+ }
+
+ public void initialize(URL location, ResourceBundle resources) {
+ decorationArea.setOnMousePressed(new EventHandler<MouseEvent>() {
+ public void handle(MouseEvent event) {
+ mouseDragOffsetX = event.getSceneX();
+ mouseDragOffsetY = event.getSceneY();
+ }
+ });
+ decorationArea.setOnMouseDragged(new EventHandler<MouseEvent>() {
+ public void handle(MouseEvent event) {
+ Stage w = getStage();
+ w.setX(event.getScreenX() - mouseDragOffsetX);
+ w.setY(event.getScreenY() - mouseDragOffsetY);
+ }
+ });
+ }
+
+ public void handleClose(ActionEvent event) {
+ Platform.exit();
+ }
+
+ public void handleMin(ActionEvent event) {
+ getStage().setIconified(true);
+ }
+
+ public void handleMax(ActionEvent event) {
+ Stage stage = getStage();
+ final double stageY = stage.getY();
+ final Screen screen = Screen.getScreensForRectangle(stage.getX(), stageY, 1, 1).get(0);
+ Rectangle2D bounds = screen.getVisualBounds();
+ if (bounds.getMinX() == stage.getX() && bounds.getMinY() == stageY &&
+ bounds.getWidth() == stage.getWidth() && bounds.getHeight() == stage.getHeight()) {
+ if (backupWindowBounds != null) {
+ stage.setX(backupWindowBounds.getMinX());
+ stage.setY(backupWindowBounds.getMinY());
+ stage.setWidth(backupWindowBounds.getWidth());
+ stage.setHeight(backupWindowBounds.getHeight());
+ }
+ } else {
+ backupWindowBounds = new Rectangle2D(stage.getX(), stage.getY(), stage.getWidth(), stage.getHeight());
+ final double newStageY = screen.getVisualBounds().getMinY();
+ stage.setX(screen.getVisualBounds().getMinX());
+ stage.setY(newStageY);
+ stage.setWidth(screen.getVisualBounds().getWidth());
+ stage.setHeight(screen.getVisualBounds().getHeight());
+ }
+ }
+
+ Stage getStage() {
+ return (Stage) decorationArea.getScene().getWindow();
+ }
+}
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/DeletePersonAction.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/DeletePersonAction.java
new file mode 100755
index 000000000..2e434e75e
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/DeletePersonAction.java
@@ -0,0 +1,13 @@
+
+package org.eclipse.fx.demo.e4.actions;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+
+@SuppressWarnings("restriction")
+public class DeletePersonAction {
+ @Execute
+ public void execute() {
+ System.err.println("Delete person");
+ }
+
+} \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/NewPersonAction.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/NewPersonAction.java
new file mode 100755
index 000000000..3acaaef89
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/NewPersonAction.java
@@ -0,0 +1,14 @@
+
+package org.eclipse.fx.demo.e4.actions;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+
+@SuppressWarnings("restriction")
+public class NewPersonAction {
+
+ @Execute
+ public void execute() {
+ System.err.println("Create new person");
+ }
+
+} \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/SaveAction.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/SaveAction.java
new file mode 100755
index 000000000..c5896dd30
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/actions/SaveAction.java
@@ -0,0 +1,13 @@
+
+package org.eclipse.fx.demo.e4.actions;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+
+@SuppressWarnings("restriction")
+public class SaveAction {
+ @Execute
+ public void execute() {
+ System.err.println("Save everything");
+ }
+
+} \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/model/Person.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/model/Person.java
new file mode 100755
index 000000000..dbfb237b7
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/model/Person.java
@@ -0,0 +1,68 @@
+package org.eclipse.fx.demo.e4.model;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+
+public class Person {
+ private String firstname;
+ private String lastname;
+ private String street;
+ private String zip;
+ private String city;
+
+ private PropertyChangeSupport changesupport = new PropertyChangeSupport(this);
+
+ public Person(String firstname, String lastname) {
+ this.firstname = firstname;
+ this.lastname = lastname;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ changesupport.addPropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ changesupport.removePropertyChangeListener(listener);
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ changesupport.firePropertyChange("firstname", this.firstname, this.firstname = firstname);
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ changesupport.firePropertyChange("lastname", this.lastname, this.lastname = lastname);
+ }
+
+ public String getStreet() {
+ return street;
+ }
+
+ public void setStreet(String street) {
+ changesupport.firePropertyChange("street", this.street, this.street = street);
+ }
+
+ public String getZip() {
+ return zip;
+ }
+
+ public void setZip(String zip) {
+ changesupport.firePropertyChange("zip", this.zip, this.zip = zip);
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ changesupport.firePropertyChange("city", this.city, this.city = city);
+ }
+
+}
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonDetailPart.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonDetailPart.java
new file mode 100755
index 000000000..e21627bfe
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonDetailPart.java
@@ -0,0 +1,25 @@
+package org.eclipse.fx.demo.e4.parts;
+
+import java.io.IOException;
+
+import javafx.scene.Node;
+import javafx.scene.layout.BorderPane;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.fx.ui.di.FXMLBuilder;
+import org.eclipse.fx.ui.di.FXMLLoader;
+import org.eclipse.fx.ui.di.FXMLLoaderFactory;
+
+public class PersonDetailPart {
+
+ @PostConstruct
+ void init(BorderPane parent, @FXMLLoader FXMLLoaderFactory factory) {
+ try {
+ FXMLBuilder<Node> builder = factory.loadRequestorRelative("personform.fxml");
+ parent.setCenter(builder.load());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonListPart.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonListPart.java
new file mode 100755
index 000000000..160d9dd3d
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/PersonListPart.java
@@ -0,0 +1,77 @@
+package org.eclipse.fx.demo.e4.parts;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.scene.control.ListCell;
+import javafx.scene.control.ListView;
+import javafx.scene.layout.BorderPane;
+import javafx.util.Callback;
+
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.fx.demo.e4.model.Person;
+
+@SuppressWarnings("restriction")
+public class PersonListPart {
+ @Inject
+ public PersonListPart(BorderPane parent, final MApplication application) {
+ ListView<Person> view = new ListView<Person>();
+ view.setCellFactory(new Callback<ListView<Person>, ListCell<Person>>() {
+
+ public ListCell<Person> call(ListView<Person> arg0) {
+ return new PersonCell();
+ }
+ });
+ view.setId("detail-list");
+ view.getItems().addAll(createList());
+
+ view.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Person>() {
+
+ public void changed(ObservableValue<? extends Person> arg0, Person arg1, Person arg2) {
+ application.getContext().set(Person.class, arg2);
+ }
+ });
+
+ parent.setCenter(view);
+ }
+
+ static class PersonCell extends ListCell<Person> {
+ @Override
+ protected void updateItem(Person arg0, boolean arg1) {
+ super.updateItem(arg0, arg1);
+ if( arg0 == null ) {
+ setText("");
+ } else {
+ setText(arg0.getFirstname() + ", " + arg0.getLastname());
+ }
+
+ }
+ }
+
+ private List<Person> createList() {
+ List<Person> rv = new ArrayList<Person>();
+
+ {
+ Person p = new Person("Tom","Schindl");
+ p.setStreet("Bahnhofstrasse 1");
+ p.setZip("6020");
+ p.setCity("Innsbruck");
+ rv.add(p);
+ }
+
+ {
+ Person p = new Person("John","Doe");
+ p.setStreet("Mainstreet 1");
+ p.setZip("E10E4");
+ p.setCity("San Francisco");
+ rv.add(p);
+ }
+
+ return rv;
+ }
+}
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/controllers/PersonDetailPartController.java b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/controllers/PersonDetailPartController.java
new file mode 100755
index 000000000..740a73e12
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/controllers/PersonDetailPartController.java
@@ -0,0 +1,89 @@
+package org.eclipse.fx.demo.e4.parts.controllers;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+import javafx.animation.FadeTransition;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.util.Duration;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.BeanProperties;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.fx.core.databinding.IJFXBeanValueProperty;
+import org.eclipse.fx.core.databinding.JFXBeanProperties;
+import org.eclipse.fx.demo.e4.model.Person;
+
+
+@SuppressWarnings("restriction")
+public class PersonDetailPartController implements Initializable {
+ private IObservableValue master = new WritableValue();
+
+ @FXML
+ GridPane personroot;
+
+ @FXML
+ TextField firstname;
+
+ @FXML
+ TextField lastname;
+
+ @FXML
+ TextField street;
+
+ @FXML
+ TextField zip;
+
+ @FXML
+ TextField city;
+
+ private FadeTransition fadeOutTransition;
+
+ private FadeTransition fadeInTransition;
+
+ public void initialize(URL location, ResourceBundle resources) {
+ IJFXBeanValueProperty uiProp = JFXBeanProperties.value("text");
+
+ DataBindingContext ctx = new DataBindingContext();
+ ctx.bindValue(uiProp.observe(firstname), BeanProperties.value("firstname").observeDetail(master));
+ ctx.bindValue(uiProp.observe(lastname), BeanProperties.value("lastname").observeDetail(master));
+ ctx.bindValue(uiProp.observe(street), BeanProperties.value("street").observeDetail(master));
+ ctx.bindValue(uiProp.observe(zip), BeanProperties.value("zip").observeDetail(master));
+ ctx.bindValue(uiProp.observe(city), BeanProperties.value("city").observeDetail(master));
+
+ fadeOutTransition = new FadeTransition(Duration.millis(500), personroot);
+ fadeOutTransition.setFromValue(1.0f);
+ fadeOutTransition.setToValue(0.0f);
+ fadeOutTransition.setAutoReverse(true);
+
+ fadeInTransition = new FadeTransition(Duration.millis(500), personroot);
+ fadeInTransition.setFromValue(0.0f);
+ fadeInTransition.setToValue(1.0f);
+ fadeInTransition.setAutoReverse(true);
+ }
+
+ @Inject
+ public void setPerson(@Optional final Person person) {
+ if( fadeOutTransition != null ) {
+ fadeOutTransition.setOnFinished(new EventHandler<ActionEvent>() {
+
+ public void handle(ActionEvent arg0) {
+ master.setValue(person);
+ fadeOutTransition.setOnFinished(null);
+ fadeInTransition.playFromStart();
+ }
+ });
+
+ fadeOutTransition.playFromStart();
+ }
+ }
+}
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxgraph b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxgraph
new file mode 100755
index 000000000..86daa8863
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxgraph
@@ -0,0 +1,60 @@
+package org.eclipse.fx.demo.e4.parts
+
+import javafx.scene.layout.*
+import javafx.scene.control.*
+
+component PersonDetail controlledby org.eclipse.fx.demo.e4.parts.controllers.PersonDetailPartController {
+ GridPane id personroot {
+ vgap : 10,
+ hgap : 10,
+ children : [
+ Label {
+ text : "Firstname",
+ call GridPane#columnIndex : 0,
+ call GridPane#rowIndex : 0
+ },
+ TextField id firstname {
+ call GridPane#columnIndex : 1,
+ call GridPane#rowIndex : 0,
+ call GridPane#columnSpan : 2,
+ call GridPane#hgrow : "ALWAYS"
+ },
+ Label {
+ text : "Lastname",
+ call GridPane#columnIndex : 0,
+ call GridPane#rowIndex : 1
+ },
+ TextField id lastname {
+ call GridPane#columnIndex : 1,
+ call GridPane#rowIndex : 1,
+ call GridPane#columnSpan : 2,
+ call GridPane#hgrow : "ALWAYS"
+ },
+ Label {
+ text : "Street",
+ call GridPane#columnIndex : 0,
+ call GridPane#rowIndex : 2
+ },
+ TextField id street {
+ call GridPane#columnIndex : 1,
+ call GridPane#rowIndex: 2,
+ call GridPane#columnSpan : 2,
+ call GridPane#hgrow: "ALWAYS"
+ },
+ Label {
+ text : "ZIP/City",
+ call GridPane#columnIndex : 0,
+ call GridPane#rowIndex: 3
+ },
+ TextField id zip {
+ call GridPane#columnIndex : 1,
+ call GridPane#rowIndex: 3
+ },
+ TextField id city {
+ call GridPane#columnIndex : 2,
+ call GridPane#rowIndex: 3,
+ call GridPane#hgrow: "ALWAYS"
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxml b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxml
new file mode 100644
index 000000000..fa3fe5dd3
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/org/eclipse/fx/demo/e4/parts/personform.fxml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Do not edit this file it is generated by e(fx)clipse from ../src/org/eclipse/fx/demo/e4/parts/personform.fxgraph
+-->
+
+<?import java.lang.*?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.GridPane?>
+
+<GridPane xmlns:fx="http://javafx.com/fxml" fx:id="personroot" fx:controller="org.eclipse.fx.demo.e4.parts.controllers.PersonDetailPartController" vgap="10" hgap="10">
+
+ <children>
+ <Label text="Firstname" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
+ <TextField fx:id="firstname" GridPane.columnIndex="1" GridPane.rowIndex="0" GridPane.columnSpan="2" GridPane.hgrow="ALWAYS"/>
+ <Label text="Lastname" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
+ <TextField fx:id="lastname" GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.columnSpan="2" GridPane.hgrow="ALWAYS"/>
+ <Label text="Street" GridPane.columnIndex="0" GridPane.rowIndex="2"/>
+ <TextField fx:id="street" GridPane.columnIndex="1" GridPane.rowIndex="2" GridPane.columnSpan="2" GridPane.hgrow="ALWAYS"/>
+ <Label text="ZIP/City" GridPane.columnIndex="0" GridPane.rowIndex="3"/>
+ <TextField fx:id="zip" GridPane.columnIndex="1" GridPane.rowIndex="3"/>
+ <TextField fx:id="city" GridPane.columnIndex="2" GridPane.rowIndex="3" GridPane.hgrow="ALWAYS"/>
+ </children>
+</GridPane>
diff --git a/demos/org.eclipse.fx.demo.e4/src/topdecoration.fxgraph b/demos/org.eclipse.fx.demo.e4/src/topdecoration.fxgraph
new file mode 100755
index 000000000..43501c518
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/topdecoration.fxgraph
@@ -0,0 +1,28 @@
+import javafx.scene.layout.*
+import javafx.scene.control.*
+
+component DecorationArea controlledby org.eclipse.fx.demo.e4.DecorationController {
+ ToolBar id decorationArea {
+ prefHeight : 66,
+ minHeight : 66,
+ maxHeight : 66,
+ items : [
+ Region {
+ call HBox#hgrow : "ALWAYS"
+ },
+ VBox {
+ children : [
+ Button id window_close {
+ onAction : controllermethod handleClose
+ },
+ Button id window_min {
+ onAction : controllermethod handleMin
+ },
+ Button id window_max {
+ onAction : controllermethod handleMax
+ }
+ ]
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/demos/org.eclipse.fx.demo.e4/src/topdecoration.fxml b/demos/org.eclipse.fx.demo.e4/src/topdecoration.fxml
new file mode 100755
index 000000000..cfc6e85e1
--- /dev/null
+++ b/demos/org.eclipse.fx.demo.e4/src/topdecoration.fxml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Do not edit this file it is generated by e(fx)clipse from ../src/topdecoration.fxgraph
+-->
+
+<?import java.lang.*?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ToolBar?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.Region?>
+<?import javafx.scene.layout.VBox?>
+
+<ToolBar xmlns:fx="http://javafx.com/fxml" fx:id="decorationArea" fx:controller="org.eclipse.fx.demo.e4.DecorationController" prefHeight="66" minHeight="66" maxHeight="66">
+
+ <items>
+ <Region HBox.hgrow="ALWAYS"/>
+ <VBox>
+ <children>
+ <Button fx:id="window_close" onAction="#handleClose"/>
+ <Button fx:id="window_min" onAction="#handleMin"/>
+ <Button fx:id="window_max" onAction="#handleMax"/>
+ </children>
+ </VBox>
+ </items>
+</ToolBar>

Back to the top