Reflect rwt and related version change
diff --git a/bundles/org.eclipse.rap.draw2d.compatibility/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.draw2d.compatibility/META-INF/MANIFEST.MF
index 4ac3aad..6500f08 100644
--- a/bundles/org.eclipse.rap.draw2d.compatibility/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.draw2d.compatibility/META-INF/MANIFEST.MF
@@ -13,5 +13,5 @@
  org.eclipse.swt.printing,
  org.eclipse.swt.widgets,
  org.eclipse.ui.presentations
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.rap.jface;bundle-version="[2.0.0,3.0.0)"
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="[2.0.0,4.0.0)",
+ org.eclipse.rap.jface;bundle-version="[2.0.0,4.0.0)"
diff --git a/bundles/org.eclipse.rap.draw2d/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.draw2d/META-INF/MANIFEST.MF
index 2b9b481..a212bdd 100644
--- a/bundles/org.eclipse.rap.draw2d/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.draw2d/META-INF/MANIFEST.MF
@@ -16,8 +16,8 @@
  org.eclipse.draw2d.widgets
 Require-Bundle: org.eclipse.core.jobs;bundle-version="3.5.100",
  org.eclipse.core.runtime;bundle-version="3.6.100",
- org.eclipse.rap.rwt;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.rap.ui;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.rap.rwt;bundle-version="[2.0.0,4.0.0)",
+ org.eclipse.rap.ui;bundle-version="[2.0.0,4.0.0)",
  org.eclipse.rap.draw2d.compatibility;bundle-version="0.1.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.rap.gef.demo/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.gef.demo/META-INF/MANIFEST.MF
index dc604a1..0b984ae 100644
--- a/bundles/org.eclipse.rap.gef.demo/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.gef.demo/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.rap.gef.demo;singleton:=true
 Bundle-Version: 0.1.0.qualifier
-Require-Bundle: org.eclipse.rap.ui;bundle-version="[2.0.0,3.0.0)",
+Require-Bundle: org.eclipse.rap.ui;bundle-version="[2.0.0,4.0.0)",
  org.eclipse.rap.draw2d;bundle-version="0.1.0",
  org.eclipse.rap.draw2d.compatibility;bundle-version="0.1.0",
  org.eclipse.rap.gef;bundle-version="0.1.0",
- org.eclipse.rap.ui.views;bundle-version="[2.1.0,3.0.0)"
+ org.eclipse.rap.ui.views;bundle-version="[2.1.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: javax.servlet;version="2.4.0",
  javax.servlet.http;version="2.4.0"
diff --git a/bundles/org.eclipse.rap.gef.demo/RAP GEF Demo.launch b/bundles/org.eclipse.rap.gef.demo/RAP GEF Demo.launch
index b8d305f..6e8498b 100644
--- a/bundles/org.eclipse.rap.gef.demo/RAP GEF Demo.launch
+++ b/bundles/org.eclipse.rap.gef.demo/RAP GEF Demo.launch
@@ -18,7 +18,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console -consolelog"/>
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true -Dosgi.noShutdown=true"/>
-<stringAttribute key="org.eclipse.rap.launch.browserMode" value="INTERNAL"/>
+<stringAttribute key="org.eclipse.rap.launch.browserMode" value="EXTERNAL"/>
 <stringAttribute key="org.eclipse.rap.launch.contextpath" value="/"/>
 <stringAttribute key="org.eclipse.rap.launch.dataLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.rap.tools.launch/RAPGEFDemo"/>
 <booleanAttribute key="org.eclipse.rap.launch.developmentMode" value="true"/>
diff --git a/bundles/org.eclipse.rap.gef.demo/src/org/eclipse/rap/gef/demo/EditorView.java b/bundles/org.eclipse.rap.gef.demo/src/org/eclipse/rap/gef/demo/EditorView.java
index 3a0f363..7c01d8d 100644
--- a/bundles/org.eclipse.rap.gef.demo/src/org/eclipse/rap/gef/demo/EditorView.java
+++ b/bundles/org.eclipse.rap.gef.demo/src/org/eclipse/rap/gef/demo/EditorView.java
@@ -22,7 +22,7 @@
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.rap.rwt.lifecycle.UICallBack;
+import org.eclipse.rap.rwt.service.ServerPushSession;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IActionBars;
@@ -61,6 +61,7 @@
 public class EditorView extends ViewPart {
 
   protected EditorPart editor;
+  private ServerPushSession serverPushSession;
   
   /**
    * returns the editor wrapped by this view
@@ -78,7 +79,8 @@
   }
   
   public void createPartControl(Composite parent) {
-    UICallBack.activate(getSite().getId()+getViewSite().getSecondaryId());
+    serverPushSession = new ServerPushSession();
+    serverPushSession.start();
     if (editor != null) 
       editor.createPartControl(parent); 
   }
@@ -92,7 +94,9 @@
   
   public void dispose() {
     if (editor != null) deactivateOutlineHooks();
-    UICallBack.deactivate(getSite().getId()+getViewSite().getSecondaryId());
+    if(serverPushSession!=null){
+      serverPushSession.stop();
+    }
     super.dispose();
   }
   
diff --git a/bundles/org.eclipse.rap.gef/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.gef/META-INF/MANIFEST.MF
index cbb806b..e826ca1 100644
--- a/bundles/org.eclipse.rap.gef/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.gef/META-INF/MANIFEST.MF
@@ -39,9 +39,9 @@
 Require-Bundle: org.eclipse.rap.draw2d;bundle-version="0.1.0",
  org.eclipse.rap.draw2d.compatibility;bundle-version="0.1.0",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.rap.jface;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.rap.ui.workbench;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.rap.ui.views;bundle-version="[2.1.0,3.0.0)"
+ org.eclipse.rap.jface;bundle-version="[2.0.0,4.0.0)",
+ org.eclipse.rap.ui.workbench;bundle-version="[2.0.0,4.0.0)",
+ org.eclipse.rap.ui.views;bundle-version="[2.1.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 
diff --git a/bundles/org.eclipse.rap.zest.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.zest.core/META-INF/MANIFEST.MF
index 21c573b..fb035c4 100644
--- a/bundles/org.eclipse.rap.zest.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.zest.core/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
 Bundle-Localization: plugin
 Bundle-Version: 0.1.0.qualifier
 Require-Bundle: org.eclipse.rap.zest.layouts;bundle-version="0.1.0",
- org.eclipse.rap.ui;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.rap.ui;bundle-version="[2.0.0,4.0.0)",
  org.eclipse.rap.draw2d;bundle-version="0.1.0";visibility:=reexport,
  org.eclipse.rap.draw2d.compatibility;bundle-version="0.1.0"
 Eclipse-LazyStart: false
diff --git a/bundles/org.eclipse.rap.zest.layouts/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.zest.layouts/META-INF/MANIFEST.MF
index c52120d..a26509d 100644
--- a/bundles/org.eclipse.rap.zest.layouts/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.zest.layouts/META-INF/MANIFEST.MF
@@ -13,8 +13,8 @@
  org.eclipse.zest.layouts.exampleStructures,
  org.eclipse.zest.layouts.exampleUses,
  org.eclipse.zest.layouts.progress
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="[2.0.0,3.0.0)",
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="[2.0.0,4.0.0)",
  org.eclipse.core.runtime,
- org.eclipse.rap.jface;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.rap.jface;bundle-version="[2.0.0,4.0.0)",
  org.eclipse.rap.draw2d;bundle-version="0.1.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/tests/org.eclipse.draw2d.test/META-INF/MANIFEST.MF b/tests/org.eclipse.draw2d.test/META-INF/MANIFEST.MF
index e57f8c6..3690f58 100644
--- a/tests/org.eclipse.draw2d.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.draw2d.test/META-INF/MANIFEST.MF
@@ -8,9 +8,9 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",

  org.junit,

  org.eclipse.rap.draw2d;bundle-version="0.1.0",

- org.eclipse.rap.rwt;bundle-version="[2.1.0,3.0.0)",

+ org.eclipse.rap.rwt;bundle-version="[2.1.0,4.0.0)",

  org.eclipse.rap.draw2d.compatibility;bundle-version="0.1.0",

- org.eclipse.rap.jface;bundle-version="[2.1.0,3.0.0)",

- org.eclipse.rap.rwt.testfixture;bundle-version="[2.1.0,3.0.0)"

+ org.eclipse.rap.jface;bundle-version="[2.1.0,4.0.0)",

+ org.eclipse.rap.rwt.testfixture;bundle-version="[2.1.0,4.0.0)"

 Bundle-RequiredExecutionEnvironment: J2SE-1.4

 

diff --git a/tests/org.eclipse.draw2d.test/src/org/eclipse/draw2d/test/ImageUtilitiesTest.java b/tests/org.eclipse.draw2d.test/src/org/eclipse/draw2d/test/ImageUtilitiesTest.java
index 8884557..12ea427 100644
--- a/tests/org.eclipse.draw2d.test/src/org/eclipse/draw2d/test/ImageUtilitiesTest.java
+++ b/tests/org.eclipse.draw2d.test/src/org/eclipse/draw2d/test/ImageUtilitiesTest.java
@@ -12,7 +12,6 @@
 
 import org.eclipse.draw2d.ImageUtilities;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.rap.rwt.internal.application.ApplicationContextHelper;
 import org.eclipse.swt.graphics.Image;
 
 /**
@@ -53,11 +52,6 @@
 		}
 	}
 
-	protected void setUp() throws Exception {
-		super.setUp();
-		ApplicationContextHelper.fakeResourceManager(null);
-	}
-
 	public void testRotatingImagesWithDifferentDepths() {
 		Image result1 = null, result2 = null, result3 = null, result4 = null;
 		Image img1 = ImageDescriptor.createFromFile(getClass(),
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.log b/tests/org.eclipse.draw2d.test/workspace/.metadata/.log
deleted file mode 100644
index 9587288..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.log
+++ /dev/null
@@ -1,1193 +0,0 @@
-!SESSION 2013-11-29 20:55:41.120 -----------------------------------------------
-eclipse.buildId=unknown
-java.version=1.7.0_25
-java.vendor=Oracle Corporation
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Framework arguments:  -version 3 -port 43730 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -testNameFile /tmp/testNames8627090809047336625.txt -testpluginname org.eclipse.rap.draw2d.test
-Command-line arguments:  -dev file:/home/amergey/workspace_rapgef/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog -console -version 3 -port 43730 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -testNameFile /tmp/testNames8627090809047336625.txt -testpluginname org.eclipse.rap.draw2d.test
-
-!ENTRY org.eclipse.zest.layouts 4 0 2013-11-29 20:55:43.877
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.zest.layouts_1.1.0.qualifier [51]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.swt; bundle-version="0.0.0"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-11-29 20:55:45.634
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchAtHttpService(ApplicationLauncherImpl.java:141)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addHttpService(ApplicationLauncherImpl.java:49)
-	at org.eclipse.rap.rwt.osgi.internal.HttpTracker.addingService(HttpTracker.java:30)
-	at org.eclipse.rap.rwt.osgi.internal.HttpTracker.addingService(HttpTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
-	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
-	at org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81)
-	at org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40)
-	at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.init(HttpServerManager.java:363)
-	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:519)
-	at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:331)
-	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
-	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:742)
-	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
-	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
-	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
-	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
-	at org.eclipse.jetty.server.Server.doStart(Server.java:280)
-	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
-	at org.eclipse.equinox.http.jetty.internal.HttpServerManager.updated(HttpServerManager.java:113)
-	at org.eclipse.equinox.http.jetty.internal.Activator.start(Activator.java:62)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 54 more
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-11-29 20:55:46.363
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchWithConfiguration(ApplicationLauncherImpl.java:151)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addConfiguration(ApplicationLauncherImpl.java:66)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:35)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
-	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
-	at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
-	at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:260)
-	at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
-	at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
-	at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
-	at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
-	at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
-	at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 31 more
-
-!ENTRY org.eclipse.zest.tests 4 0 2013-11-29 20:55:46.396
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.zest.tests_1.1.0.qualifier [109]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.ui; bundle-version="0.0.0"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.gef.test 4 0 2013-11-29 20:55:46.401
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.gef.test_3.8.1.qualifier [111]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.jface; bundle-version="[3.2.0,4.0.0)"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.zest.core 4 0 2013-11-29 20:55:46.406
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.zest.core_1.5.0.qualifier [119]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.zest.layouts; bundle-version="0.0.0"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 20:55:46.436
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.layouts/ was not resolved.
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 20:55:46.437
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.tests/ was not resolved.
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 20:55:46.438
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.gef.test/ was not resolved.
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 20:55:46.439
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.core/ was not resolved.
-
-!ENTRY org.eclipse.osgi 2 0 2013-11-29 20:55:46.513
-!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.514
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.layouts/ was not resolved.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 20:55:46.515
-!MESSAGE Missing required bundle org.eclipse.swt_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 20:55:46.516
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 20:55:46.516
-!MESSAGE Missing required bundle org.eclipse.jface_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.517
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.gef.test/ was not resolved.
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.517
-!MESSAGE Missing required bundle org.eclipse.draw2d_[3.8.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.517
-!MESSAGE Missing required bundle org.eclipse.jface_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.517
-!MESSAGE Missing required bundle org.eclipse.gef_[3.8.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.518
-!MESSAGE Missing required bundle org.eclipse.ui_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.518
-!MESSAGE Missing required bundle org.eclipse.core.resources_[3.2.0,4.0.0).
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.518
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.core/ was not resolved.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 20:55:46.518
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 20:55:46.518
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.519
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.tests/ was not resolved.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.519
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.519
-!MESSAGE Missing required bundle org.eclipse.jdt.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.520
-!MESSAGE Missing required bundle org.eclipse.jdt_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.520
-!MESSAGE Missing required bundle org.eclipse.pde.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.520
-!MESSAGE Missing required bundle org.eclipse.jdt.core_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.520
-!MESSAGE Missing required bundle org.eclipse.core.resources_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.521
-!MESSAGE Missing required bundle org.eclipse.pde_0.0.0.
-
-!ENTRY org.eclipse.osgi 2 0 2013-11-29 20:55:46.527
-!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.528
-!MESSAGE Bundle org.eclipse.zest.layouts_1.1.0.qualifier [51] was not resolved.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 20:55:46.528
-!MESSAGE Missing required bundle org.eclipse.swt_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 20:55:46.528
-!MESSAGE Missing required bundle org.eclipse.jface_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 20:55:46.528
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.529
-!MESSAGE Bundle org.eclipse.zest.tests_1.1.0.qualifier [109] was not resolved.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.529
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.529
-!MESSAGE Missing required bundle org.eclipse.pde_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.529
-!MESSAGE Missing required bundle org.eclipse.pde.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.530
-!MESSAGE Missing required bundle org.eclipse.jdt_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.530
-!MESSAGE Missing required bundle org.eclipse.jdt.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.530
-!MESSAGE Missing required bundle org.eclipse.core.resources_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.530
-!MESSAGE Missing required bundle org.eclipse.jdt.core_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.531
-!MESSAGE Missing required bundle org.eclipse.zest.core_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 20:55:46.531
-!MESSAGE Missing required bundle org.eclipse.zest.layouts_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.531
-!MESSAGE Bundle org.eclipse.gef.test_3.8.1.qualifier [111] was not resolved.
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.531
-!MESSAGE Missing required bundle org.eclipse.jface_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.531
-!MESSAGE Missing required bundle org.eclipse.core.resources_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.532
-!MESSAGE Missing required bundle org.eclipse.ui_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.532
-!MESSAGE Missing required bundle org.eclipse.draw2d_[3.8.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 20:55:46.532
-!MESSAGE Missing required bundle org.eclipse.gef_[3.8.0,4.0.0).
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 20:55:46.532
-!MESSAGE Bundle org.eclipse.zest.core_1.5.0.qualifier [119] was not resolved.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 20:55:46.533
-!MESSAGE Missing required bundle org.eclipse.zest.layouts_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 20:55:46.533
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 20:55:46.533
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-
-!ENTRY org.eclipse.rap.ui 4 0 2013-11-29 20:55:50.032
-!MESSAGE Unhandled event loop exception
-!STACK 0
-org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function)
-	at org.eclipse.swt.SWT.error(SWT.java:3582)
-	at org.eclipse.swt.SWT.error(SWT.java:3505)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:186)
-	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1189)
-	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1169)
-	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1161)
-	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
-	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
-	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
-	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
-	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
-	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
-	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunEmptyWorkbench(Application.java:67)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunWorkbench(Application.java:54)
-	at org.eclipse.rap.internal.junit.runtime.Application.createUI(Application.java:44)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:186)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:298)
-	at java.lang.Thread.run(Thread.java:724)
-	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
-Caused by: java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function
-	at org.eclipse.draw2d.Graphics.throwNotImplemented(Graphics.java:1228)
-	at org.eclipse.draw2d.Graphics.setLineAttributes(Graphics.java:1087)
-	at org.eclipse.draw2d.Shape.paintOutline(Shape.java:159)
-	at org.eclipse.draw2d.Shape.paintFigure(Shape.java:148)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1115)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Viewport.paintClientArea(Viewport.java:160)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.DeferredUpdateManager.paint(DeferredUpdateManager.java:165)
-	at org.eclipse.draw2d.LightweightSystem.paint(LightweightSystem.java:204)
-	at org.eclipse.draw2d.LightweightSystem$2.handleEvent(LightweightSystem.java:111)
-	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:85)
-	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:700)
-	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:602)
-	at org.eclipse.swt.widgets.Canvas.repaint(Canvas.java:191)
-	at org.eclipse.swt.widgets.Canvas.internalSetRedraw(Canvas.java:178)
-	at org.eclipse.swt.widgets.Control.redraw(Control.java:2045)
-	at org.eclipse.draw2d.NativeGraphicsSource.getGraphics(NativeGraphicsSource.java:47)
-	at org.eclipse.draw2d.DeferredUpdateManager.getGraphics(DeferredUpdateManager.java:147)
-	at org.eclipse.draw2d.DeferredUpdateManager.repairDamage(DeferredUpdateManager.java:310)
-	at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:192)
-	at org.eclipse.draw2d.DeferredUpdateManager$UpdateRequest.run(DeferredUpdateManager.java:44)
-	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:180)
-	... 17 more
-
-!ENTRY org.eclipse.rap.ui 4 0 2013-11-29 20:55:50.034
-!MESSAGE Unhandled event loop exception
-!STACK 0
-org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function)
-	at org.eclipse.swt.SWT.error(SWT.java:3582)
-	at org.eclipse.swt.SWT.error(SWT.java:3505)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:186)
-	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1189)
-	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1169)
-	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1161)
-	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
-	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
-	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
-	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
-	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
-	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
-	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunEmptyWorkbench(Application.java:67)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunWorkbench(Application.java:54)
-	at org.eclipse.rap.internal.junit.runtime.Application.createUI(Application.java:44)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:186)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:298)
-	at java.lang.Thread.run(Thread.java:724)
-	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
-Caused by: java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function
-	at org.eclipse.draw2d.Graphics.throwNotImplemented(Graphics.java:1228)
-	at org.eclipse.draw2d.Graphics.setLineAttributes(Graphics.java:1087)
-	at org.eclipse.draw2d.Shape.paintOutline(Shape.java:159)
-	at org.eclipse.draw2d.Shape.paintFigure(Shape.java:148)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1115)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Viewport.paintClientArea(Viewport.java:160)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.DeferredUpdateManager.paint(DeferredUpdateManager.java:165)
-	at org.eclipse.draw2d.LightweightSystem.paint(LightweightSystem.java:204)
-	at org.eclipse.draw2d.LightweightSystem$2.handleEvent(LightweightSystem.java:111)
-	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:85)
-	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:700)
-	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:602)
-	at org.eclipse.swt.widgets.Canvas.repaint(Canvas.java:191)
-	at org.eclipse.swt.widgets.Canvas.internalSetRedraw(Canvas.java:178)
-	at org.eclipse.swt.widgets.Control.redraw(Control.java:2045)
-	at org.eclipse.draw2d.NativeGraphicsSource.getGraphics(NativeGraphicsSource.java:47)
-	at org.eclipse.draw2d.DeferredUpdateManager.getGraphics(DeferredUpdateManager.java:147)
-	at org.eclipse.draw2d.DeferredUpdateManager.repairDamage(DeferredUpdateManager.java:310)
-	at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:192)
-	at org.eclipse.draw2d.DeferredUpdateManager$UpdateRequest.run(DeferredUpdateManager.java:44)
-	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:180)
-	... 17 more
-
-!ENTRY org.eclipse.rap.ui 4 0 2013-11-29 20:55:50.036
-!MESSAGE Unhandled event loop exception
-!STACK 0
-org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function)
-	at org.eclipse.swt.SWT.error(SWT.java:3582)
-	at org.eclipse.swt.SWT.error(SWT.java:3505)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:186)
-	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1189)
-	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1169)
-	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1161)
-	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
-	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
-	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
-	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
-	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
-	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
-	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunEmptyWorkbench(Application.java:67)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunWorkbench(Application.java:54)
-	at org.eclipse.rap.internal.junit.runtime.Application.createUI(Application.java:44)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:186)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:298)
-	at java.lang.Thread.run(Thread.java:724)
-	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
-Caused by: java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function
-	at org.eclipse.draw2d.Graphics.throwNotImplemented(Graphics.java:1228)
-	at org.eclipse.draw2d.Graphics.setLineAttributes(Graphics.java:1087)
-	at org.eclipse.draw2d.ScaledGraphics.setLineAttributes(ScaledGraphics.java:842)
-	at org.eclipse.draw2d.Shape.paintOutline(Shape.java:159)
-	at org.eclipse.draw2d.Shape.paintFigure(Shape.java:148)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1115)
-	at org.eclipse.draw2d.parts.Thumbnail$ThumbnailUpdater.run(Thumbnail.java:165)
-	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:180)
-	... 17 more
-
-!ENTRY org.eclipse.rap.ui 4 0 2013-11-29 20:55:50.037
-!MESSAGE Unhandled event loop exception
-!STACK 0
-org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function)
-	at org.eclipse.swt.SWT.error(SWT.java:3582)
-	at org.eclipse.swt.SWT.error(SWT.java:3505)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:186)
-	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1189)
-	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1169)
-	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1161)
-	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
-	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
-	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
-	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
-	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
-	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
-	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunEmptyWorkbench(Application.java:67)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunWorkbench(Application.java:54)
-	at org.eclipse.rap.internal.junit.runtime.Application.createUI(Application.java:44)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:186)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:298)
-	at java.lang.Thread.run(Thread.java:724)
-	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
-Caused by: java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function
-	at org.eclipse.draw2d.Graphics.throwNotImplemented(Graphics.java:1228)
-	at org.eclipse.draw2d.Graphics.setLineAttributes(Graphics.java:1087)
-	at org.eclipse.draw2d.Shape.paintOutline(Shape.java:159)
-	at org.eclipse.draw2d.Shape.paintFigure(Shape.java:148)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1115)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Viewport.paintClientArea(Viewport.java:160)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.DeferredUpdateManager.paint(DeferredUpdateManager.java:165)
-	at org.eclipse.draw2d.LightweightSystem.paint(LightweightSystem.java:204)
-	at org.eclipse.draw2d.LightweightSystem$2.handleEvent(LightweightSystem.java:111)
-	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:85)
-	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:700)
-	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:602)
-	at org.eclipse.swt.widgets.Canvas.repaint(Canvas.java:191)
-	at org.eclipse.swt.widgets.Canvas.internalSetRedraw(Canvas.java:178)
-	at org.eclipse.swt.widgets.Control.redraw(Control.java:2045)
-	at org.eclipse.draw2d.NativeGraphicsSource.getGraphics(NativeGraphicsSource.java:47)
-	at org.eclipse.draw2d.DeferredUpdateManager.getGraphics(DeferredUpdateManager.java:147)
-	at org.eclipse.draw2d.DeferredUpdateManager.repairDamage(DeferredUpdateManager.java:310)
-	at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:192)
-	at org.eclipse.draw2d.DeferredUpdateManager$UpdateRequest.run(DeferredUpdateManager.java:44)
-	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:180)
-	... 17 more
-
-!ENTRY org.eclipse.rap.ui 4 0 2013-11-29 20:55:50.039
-!MESSAGE Unhandled event loop exception
-!STACK 0
-org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function)
-	at org.eclipse.swt.SWT.error(SWT.java:3582)
-	at org.eclipse.swt.SWT.error(SWT.java:3505)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:186)
-	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1189)
-	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1169)
-	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1161)
-	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
-	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
-	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
-	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
-	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
-	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
-	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunEmptyWorkbench(Application.java:67)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunWorkbench(Application.java:54)
-	at org.eclipse.rap.internal.junit.runtime.Application.createUI(Application.java:44)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:186)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:298)
-	at java.lang.Thread.run(Thread.java:724)
-	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
-Caused by: java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function
-	at org.eclipse.draw2d.Graphics.throwNotImplemented(Graphics.java:1228)
-	at org.eclipse.draw2d.Graphics.setLineAttributes(Graphics.java:1087)
-	at org.eclipse.draw2d.Shape.paintOutline(Shape.java:159)
-	at org.eclipse.draw2d.Shape.paintFigure(Shape.java:148)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1115)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Viewport.paintClientArea(Viewport.java:160)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1167)
-	at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1202)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1117)
-	at org.eclipse.draw2d.DeferredUpdateManager.paint(DeferredUpdateManager.java:165)
-	at org.eclipse.draw2d.LightweightSystem.paint(LightweightSystem.java:204)
-	at org.eclipse.draw2d.LightweightSystem$2.handleEvent(LightweightSystem.java:111)
-	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:85)
-	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:700)
-	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:602)
-	at org.eclipse.swt.widgets.Canvas.repaint(Canvas.java:191)
-	at org.eclipse.swt.widgets.Canvas.internalSetRedraw(Canvas.java:178)
-	at org.eclipse.swt.widgets.Control.redraw(Control.java:2045)
-	at org.eclipse.draw2d.NativeGraphicsSource.getGraphics(NativeGraphicsSource.java:47)
-	at org.eclipse.draw2d.DeferredUpdateManager.getGraphics(DeferredUpdateManager.java:147)
-	at org.eclipse.draw2d.DeferredUpdateManager.repairDamage(DeferredUpdateManager.java:310)
-	at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:192)
-	at org.eclipse.draw2d.DeferredUpdateManager$UpdateRequest.run(DeferredUpdateManager.java:44)
-	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:180)
-	... 17 more
-
-!ENTRY org.eclipse.rap.ui 4 0 2013-11-29 20:55:50.040
-!MESSAGE Unhandled event loop exception
-!STACK 0
-org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function)
-	at org.eclipse.swt.SWT.error(SWT.java:3582)
-	at org.eclipse.swt.SWT.error(SWT.java:3505)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:186)
-	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1189)
-	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1169)
-	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1161)
-	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
-	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
-	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
-	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
-	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
-	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
-	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunEmptyWorkbench(Application.java:67)
-	at org.eclipse.rap.internal.junit.runtime.Application.createAndRunWorkbench(Application.java:54)
-	at org.eclipse.rap.internal.junit.runtime.Application.createUI(Application.java:44)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:186)
-	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:298)
-	at java.lang.Thread.run(Thread.java:724)
-	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
-Caused by: java.lang.RuntimeException: The class: class org.eclipse.draw2d.SWTGraphics has not implemented this new graphics function
-	at org.eclipse.draw2d.Graphics.throwNotImplemented(Graphics.java:1228)
-	at org.eclipse.draw2d.Graphics.setLineAttributes(Graphics.java:1087)
-	at org.eclipse.draw2d.ScaledGraphics.setLineAttributes(ScaledGraphics.java:842)
-	at org.eclipse.draw2d.Shape.paintOutline(Shape.java:159)
-	at org.eclipse.draw2d.Shape.paintFigure(Shape.java:148)
-	at org.eclipse.draw2d.Figure.paint(Figure.java:1115)
-	at org.eclipse.draw2d.parts.Thumbnail$ThumbnailUpdater.run(Thumbnail.java:165)
-	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
-	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:180)
-	... 17 more
-!SESSION 2013-11-29 21:08:50.967 -----------------------------------------------
-eclipse.buildId=unknown
-java.version=1.7.0_25
-java.vendor=Oracle Corporation
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Framework arguments:  -version 3 -port 41156 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -classNames org.eclipse.draw2d.test.ColorConstantTest -testpluginname org.eclipse.rap.draw2d.test
-Command-line arguments:  -dev file:/home/amergey/workspace_rapgef/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog -console -version 3 -port 41156 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -classNames org.eclipse.draw2d.test.ColorConstantTest -testpluginname org.eclipse.rap.draw2d.test
-
-!ENTRY org.eclipse.zest.layouts 4 0 2013-11-29 21:08:52.633
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.zest.layouts_1.1.0.qualifier [48]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.swt; bundle-version="0.0.0"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-11-29 21:08:54.036
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchAtHttpService(ApplicationLauncherImpl.java:141)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addHttpService(ApplicationLauncherImpl.java:49)
-	at org.eclipse.rap.rwt.osgi.internal.HttpTracker.addingService(HttpTracker.java:30)
-	at org.eclipse.rap.rwt.osgi.internal.HttpTracker.addingService(HttpTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
-	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
-	at org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81)
-	at org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40)
-	at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.init(HttpServerManager.java:363)
-	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:519)
-	at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:331)
-	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
-	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:742)
-	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
-	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
-	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
-	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
-	at org.eclipse.jetty.server.Server.doStart(Server.java:280)
-	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
-	at org.eclipse.equinox.http.jetty.internal.HttpServerManager.updated(HttpServerManager.java:113)
-	at org.eclipse.equinox.http.jetty.internal.Activator.start(Activator.java:62)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 54 more
-
-!ENTRY org.eclipse.gef.test 4 0 2013-11-29 21:08:54.120
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.gef.test_3.8.1.qualifier [86]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.jface; bundle-version="[3.2.0,4.0.0)"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.zest.core 4 0 2013-11-29 21:08:54.133
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.zest.core_1.5.0.qualifier [109]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.zest.layouts; bundle-version="0.0.0"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 21:08:55.147
-!MESSAGE An unexpected runtime error has occurred.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.startApplication(HttpServiceTracker.java:75)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.addingService(HttpServiceTracker.java:46)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.addingService(HttpServiceTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.access$6(HttpServiceTracker.java:1)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$ApplicationLauncherTracker.addingService(HttpServiceTracker.java:125)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$ApplicationLauncherTracker.addingService(HttpServiceTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$HttpContextTracker.addingService(HttpServiceTracker.java:99)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$HttpContextTracker.addingService(HttpServiceTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
-	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)
-	at org.eclipse.equinox.http.registry.internal.HttpServiceTracker.open(HttpServiceTracker.java:43)
-	at org.eclipse.equinox.http.registry.internal.Activator.addingService(Activator.java:59)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.equinox.http.registry.internal.Activator.start(Activator.java:37)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 63 more
-
-!ENTRY org.eclipse.rap.ui.workbench 4 0 2013-11-29 21:08:55.150
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.startApplication(HttpServiceTracker.java:75)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.addingService(HttpServiceTracker.java:46)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.addingService(HttpServiceTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.access$6(HttpServiceTracker.java:1)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$ApplicationLauncherTracker.addingService(HttpServiceTracker.java:125)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$ApplicationLauncherTracker.addingService(HttpServiceTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$HttpContextTracker.addingService(HttpServiceTracker.java:99)
-	at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$HttpContextTracker.addingService(HttpServiceTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
-	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
-	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)
-	at org.eclipse.equinox.http.registry.internal.HttpServiceTracker.open(HttpServiceTracker.java:43)
-	at org.eclipse.equinox.http.registry.internal.Activator.addingService(Activator.java:59)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.equinox.http.registry.internal.Activator.start(Activator.java:37)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 63 more
-
-!ENTRY org.eclipse.zest.tests 4 0 2013-11-29 21:08:55.155
-!MESSAGE FrameworkEvent ERROR
-!STACK 0
-org.osgi.framework.BundleException: The bundle "org.eclipse.zest.tests_1.1.0.qualifier [115]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.ui; bundle-version="0.0.0"
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 21:08:55.164
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.layouts/ was not resolved.
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 21:08:55.165
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.gef.test/ was not resolved.
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 21:08:55.165
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.core/ was not resolved.
-
-!ENTRY org.eclipse.osgi 4 0 2013-11-29 21:08:55.166
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.tests/ was not resolved.
-
-!ENTRY org.eclipse.osgi 2 0 2013-11-29 21:08:55.197
-!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.198
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.tests/ was not resolved.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.199
-!MESSAGE Missing required bundle org.eclipse.pde.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.200
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.201
-!MESSAGE Missing required bundle org.eclipse.jdt.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.202
-!MESSAGE Missing required bundle org.eclipse.pde_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.203
-!MESSAGE Missing required bundle org.eclipse.core.resources_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.203
-!MESSAGE Missing required bundle org.eclipse.jdt.core_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.204
-!MESSAGE Missing required bundle org.eclipse.jdt_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.205
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.core/ was not resolved.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 21:08:55.206
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 21:08:55.207
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.208
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.gef.test/ was not resolved.
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.208
-!MESSAGE Missing required bundle org.eclipse.jface_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.209
-!MESSAGE Missing required bundle org.eclipse.gef_[3.8.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.210
-!MESSAGE Missing required bundle org.eclipse.core.resources_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.211
-!MESSAGE Missing required bundle org.eclipse.draw2d_[3.8.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.212
-!MESSAGE Missing required bundle org.eclipse.ui_[3.2.0,4.0.0).
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.213
-!MESSAGE Bundle initial@reference:file:../../../../../git/org.eclipse.gef/org.eclipse.zest.layouts/ was not resolved.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 21:08:55.213
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 21:08:55.214
-!MESSAGE Missing required bundle org.eclipse.jface_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 21:08:55.215
-!MESSAGE Missing required bundle org.eclipse.swt_0.0.0.
-
-!ENTRY org.eclipse.osgi 2 0 2013-11-29 21:08:55.222
-!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.223
-!MESSAGE Bundle org.eclipse.zest.layouts_1.1.0.qualifier [48] was not resolved.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 21:08:55.224
-!MESSAGE Missing required bundle org.eclipse.swt_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 21:08:55.225
-!MESSAGE Missing required bundle org.eclipse.jface_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.layouts 2 0 2013-11-29 21:08:55.226
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.227
-!MESSAGE Bundle org.eclipse.gef.test_3.8.1.qualifier [86] was not resolved.
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.228
-!MESSAGE Missing required bundle org.eclipse.jface_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.228
-!MESSAGE Missing required bundle org.eclipse.core.resources_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.229
-!MESSAGE Missing required bundle org.eclipse.ui_[3.2.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.230
-!MESSAGE Missing required bundle org.eclipse.draw2d_[3.8.0,4.0.0).
-!SUBENTRY 2 org.eclipse.gef.test 2 0 2013-11-29 21:08:55.230
-!MESSAGE Missing required bundle org.eclipse.gef_[3.8.0,4.0.0).
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.230
-!MESSAGE Bundle org.eclipse.zest.core_1.5.0.qualifier [109] was not resolved.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 21:08:55.230
-!MESSAGE Missing required bundle org.eclipse.zest.layouts_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 21:08:55.231
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.core 2 0 2013-11-29 21:08:55.231
-!MESSAGE Missing required bundle org.eclipse.draw2d_0.0.0.
-!SUBENTRY 1 org.eclipse.osgi 2 0 2013-11-29 21:08:55.231
-!MESSAGE Bundle org.eclipse.zest.tests_1.1.0.qualifier [115] was not resolved.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.231
-!MESSAGE Missing required bundle org.eclipse.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.231
-!MESSAGE Missing required bundle org.eclipse.pde_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.232
-!MESSAGE Missing required bundle org.eclipse.pde.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.232
-!MESSAGE Missing required bundle org.eclipse.jdt_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.232
-!MESSAGE Missing required bundle org.eclipse.jdt.ui_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.232
-!MESSAGE Missing required bundle org.eclipse.core.resources_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.232
-!MESSAGE Missing required bundle org.eclipse.jdt.core_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.233
-!MESSAGE Missing required bundle org.eclipse.zest.core_0.0.0.
-!SUBENTRY 2 org.eclipse.zest.tests 2 0 2013-11-29 21:08:55.233
-!MESSAGE Missing required bundle org.eclipse.zest.layouts_0.0.0.
-!SESSION 2013-12-02 12:39:17.732 -----------------------------------------------
-eclipse.buildId=unknown
-java.version=1.7.0_25
-java.vendor=Oracle Corporation
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Framework arguments:  -version 3 -port 19687 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -testNameFile /tmp/testNames8637851957776914820.txt -testpluginname org.eclipse.rap.draw2d.test
-Command-line arguments:  -dev file:/home/amergey/workspace_rapgef/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog -console -version 3 -port 19687 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -testNameFile /tmp/testNames8637851957776914820.txt -testpluginname org.eclipse.rap.draw2d.test
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-12-02 12:39:24.243
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchWithConfiguration(ApplicationLauncherImpl.java:151)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addConfiguration(ApplicationLauncherImpl.java:66)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:35)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.openConfiguratorTracker(Activator.java:55)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.start(Activator.java:28)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 32 more
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-12-02 12:39:24.713
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchWithConfiguration(ApplicationLauncherImpl.java:151)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addConfiguration(ApplicationLauncherImpl.java:66)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:35)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.openConfiguratorTracker(Activator.java:55)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.start(Activator.java:28)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 32 more
-!SESSION 2013-12-02 12:48:42.982 -----------------------------------------------
-eclipse.buildId=unknown
-java.version=1.7.0_25
-java.vendor=Oracle Corporation
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Framework arguments:  -version 3 -port 46962 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -testNameFile /tmp/testNames1489849326515011265.txt -testpluginname org.eclipse.rap.draw2d.test
-Command-line arguments:  -dev file:/home/amergey/workspace_rapgef/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog -console -version 3 -port 46962 -testLoaderClass org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader -loaderpluginname org.eclipse.rap.junit.runtime -testNameFile /tmp/testNames1489849326515011265.txt -testpluginname org.eclipse.rap.draw2d.test
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-12-02 12:48:46.848
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchWithConfiguration(ApplicationLauncherImpl.java:151)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addConfiguration(ApplicationLauncherImpl.java:66)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:35)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.openConfiguratorTracker(Activator.java:55)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.start(Activator.java:28)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 32 more
-
-!ENTRY org.eclipse.rap.rwt.osgi 4 0 2013-12-02 12:48:47.333
-!MESSAGE Unable to start RWT application.
-!STACK 0
-java.lang.RuntimeException: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:194)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.startRWTApplication(ApplicationReferenceImpl.java:79)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.start(ApplicationReferenceImpl.java:63)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.doLaunch(ApplicationLauncherImpl.java:105)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:87)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launch(ApplicationLauncherImpl.java:164)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.launchWithConfiguration(ApplicationLauncherImpl.java:151)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationLauncherImpl.addConfiguration(ApplicationLauncherImpl.java:66)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:35)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationConfigurationTracker.addingService(ApplicationConfigurationTracker.java:1)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
-	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
-	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
-	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
-	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.openConfiguratorTracker(Activator.java:55)
-	at org.eclipse.rap.rwt.osgi.internal.Activator.start(Activator.java:28)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
-	at java.security.AccessController.doPrivileged(Native Method)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
-	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
-	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
-	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
-	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
-	at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
-	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
-	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
-Caused by: org.osgi.service.http.NamespaceException: The alias '/rwt-resources' is already in use.
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerServlet(ProxyServlet.java:169)
-	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.registerResources(ProxyServlet.java:199)
-	at org.eclipse.equinox.http.servlet.internal.HttpServiceImpl.registerResources(HttpServiceImpl.java:78)
-	at org.eclipse.rap.rwt.osgi.internal.ApplicationReferenceImpl.registerResourceDirectory(ApplicationReferenceImpl.java:190)
-	... 32 more
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/33f171dc.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/33f171dc.png
deleted file mode 100644
index da0099f..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/33f171dc.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/523a2988.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/523a2988.png
deleted file mode 100644
index e279e9a..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/523a2988.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/5d76e4ff.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/5d76e4ff.png
deleted file mode 100644
index ce9529d..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/5d76e4ff.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/90970f9f.gif b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/90970f9f.gif
deleted file mode 100644
index 8990637..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/90970f9f.gif
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/95fb343e.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/95fb343e.png
deleted file mode 100644
index ce31f84..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/95fb343e.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/a07b7efb.bmp b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/a07b7efb.bmp
deleted file mode 100644
index c7f16ff..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/a07b7efb.bmp
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/cb52ad0b.gif b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/cb52ad0b.gif
deleted file mode 100644
index dc47edf..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/cb52ad0b.gif
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/d5b62d8.gif b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/d5b62d8.gif
deleted file mode 100644
index 84443be..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/d5b62d8.gif
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/da1a81d5.bmp b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/da1a81d5.bmp
deleted file mode 100644
index f586513..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/da1a81d5.bmp
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/da7aed0d.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/da7aed0d.png
deleted file mode 100644
index 4d23bd9..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/da7aed0d.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/e2454b8f.jpg b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/e2454b8f.jpg
deleted file mode 100644
index 2db27a6..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/e2454b8f.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/ed95f37d.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/ed95f37d.png
deleted file mode 100644
index b2043a0..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/ed95f37d.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/f89a8c53.gif b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/f89a8c53.gif
deleted file mode 100644
index b484d9b..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/generated/f89a8c53.gif
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/icons/favicon2.ico b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/icons/favicon2.ico
deleted file mode 100644
index e30e75f..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/icons/favicon2.ico
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/img/business/favicon.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/img/business/favicon.png
deleted file mode 100644
index 3edf78e..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/img/business/favicon.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/img/fancy/favicon.png b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/img/fancy/favicon.png
deleted file mode 100644
index 8e74c4d..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/img/fancy/favicon.png
+++ /dev/null
Binary files differ
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/org/eclipse/rap/demo/resources/eclipse.svg b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/org/eclipse/rap/demo/resources/eclipse.svg
deleted file mode 100644
index 56316be..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/org/eclipse/rap/demo/resources/eclipse.svg
+++ /dev/null
@@ -1,1623 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2254"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   width="48"
-   height="48"
-   version="1.0"
-   sodipodi:docbase="/home/matt/eclipse33"
-   sodipodi:docname="eclipse-icon-clean.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/matt/eclipse33/eclipse-icon-ubuntu.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <metadata
-     id="metadata2259">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <defs
-     id="defs2257">
-    <linearGradient
-       id="linearGradient4373">
-      <stop
-         style="stop-color:#8ea6d6;stop-opacity:0.73762375;"
-         offset="0"
-         id="stop4375" />
-      <stop
-         style="stop-color:#bbc9e6;stop-opacity:1;"
-         offset="1"
-         id="stop4377" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4035">
-      <stop
-         style="stop-color:#7474bb;stop-opacity:1;"
-         offset="0"
-         id="stop4037" />
-      <stop
-         style="stop-color:#070553;stop-opacity:1;"
-         offset="1"
-         id="stop4039" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4003">
-      <stop
-         style="stop-color:#494991;stop-opacity:1;"
-         offset="0"
-         id="stop4005" />
-      <stop
-         style="stop-color:#695ae8;stop-opacity:1;"
-         offset="1"
-         id="stop4007" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3987">
-      <stop
-         style="stop-color:#414083;stop-opacity:1;"
-         offset="0"
-         id="stop3989" />
-      <stop
-         style="stop-color:#5649b9;stop-opacity:1;"
-         offset="1"
-         id="stop3991" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_8_"
-       gradientUnits="userSpaceOnUse"
-       x1="36.2495"
-       y1="18.1187"
-       x2="92.7495"
-       y2="18.1187"
-       gradientTransform="translate(-142.55625,-33.100248)">
-      <stop
-         offset="0"
-         style="stop-color:#FEE8BD"
-         id="stop264" />
-      <stop
-         offset="0.0483"
-         style="stop-color:#FEEBC6"
-         id="stop266" />
-      <stop
-         offset="0.2334"
-         style="stop-color:#FFF6E5"
-         id="stop268" />
-      <stop
-         offset="0.3905"
-         style="stop-color:#FFFDF8"
-         id="stop270" />
-      <stop
-         offset="0.5"
-         style="stop-color:#FFFFFF"
-         id="stop272" />
-      <stop
-         offset="0.6094"
-         style="stop-color:#FFFDF9"
-         id="stop274" />
-      <stop
-         offset="0.7588"
-         style="stop-color:#FFF7E7"
-         id="stop276" />
-      <stop
-         offset="0.9306"
-         style="stop-color:#FEEDCB"
-         id="stop278" />
-      <stop
-         offset="1"
-         style="stop-color:#FEE8BD"
-         id="stop280" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_7_"
-       gradientUnits="userSpaceOnUse"
-       x1="45.416"
-       y1="107.0176"
-       x2="83.3354"
-       y2="107.0176"
-       gradientTransform="translate(-142.55625,-33.100248)">
-      <stop
-         offset="0"
-         style="stop-color:#A86E45"
-         id="stop205" />
-      <stop
-         offset="0.1124"
-         style="stop-color:#E8A06C"
-         id="stop207" />
-      <stop
-         offset="0.1609"
-         style="stop-color:#E59E6B"
-         id="stop209" />
-      <stop
-         offset="0.2012"
-         style="stop-color:#DA9969"
-         id="stop211" />
-      <stop
-         offset="0.2387"
-         style="stop-color:#C99066"
-         id="stop213" />
-      <stop
-         offset="0.2743"
-         style="stop-color:#B18461"
-         id="stop215" />
-      <stop
-         offset="0.3084"
-         style="stop-color:#92745A"
-         id="stop217" />
-      <stop
-         offset="0.3315"
-         style="stop-color:#786755"
-         id="stop219" />
-      <stop
-         offset="0.4068"
-         style="stop-color:#B5ACA2"
-         id="stop221" />
-      <stop
-         offset="0.478"
-         style="stop-color:#EAE8E5"
-         id="stop223" />
-      <stop
-         offset="0.5112"
-         style="stop-color:#FFFFFF"
-         id="stop225" />
-      <stop
-         offset="0.5376"
-         style="stop-color:#FDFCFC"
-         id="stop227" />
-      <stop
-         offset="0.5589"
-         style="stop-color:#F5F3F2"
-         id="stop229" />
-      <stop
-         offset="0.5783"
-         style="stop-color:#E8E4E1"
-         id="stop231" />
-      <stop
-         offset="0.5966"
-         style="stop-color:#D6CEC9"
-         id="stop233" />
-      <stop
-         offset="0.6142"
-         style="stop-color:#BFB3AA"
-         id="stop235" />
-      <stop
-         offset="0.6312"
-         style="stop-color:#A39185"
-         id="stop237" />
-      <stop
-         offset="0.6475"
-         style="stop-color:#816959"
-         id="stop239" />
-      <stop
-         offset="0.6517"
-         style="stop-color:#785E4C"
-         id="stop241" />
-      <stop
-         offset="0.671"
-         style="stop-color:#83654F"
-         id="stop243" />
-      <stop
-         offset="0.7414"
-         style="stop-color:#A87958"
-         id="stop245" />
-      <stop
-         offset="0.807"
-         style="stop-color:#C3895F"
-         id="stop247" />
-      <stop
-         offset="0.8652"
-         style="stop-color:#D39263"
-         id="stop249" />
-      <stop
-         offset="0.9101"
-         style="stop-color:#D99564"
-         id="stop251" />
-      <stop
-         offset="0.9278"
-         style="stop-color:#C48557"
-         id="stop253" />
-      <stop
-         offset="0.9557"
-         style="stop-color:#AA7045"
-         id="stop255" />
-      <stop
-         offset="0.9807"
-         style="stop-color:#9A633B"
-         id="stop257" />
-      <stop
-         offset="1"
-         style="stop-color:#945F37"
-         id="stop259" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_6_"
-       gradientUnits="userSpaceOnUse"
-       x1="-34.5078"
-       y1="-100.6235"
-       x2="-20.9253"
-       y2="-100.6235"
-       gradientTransform="matrix(2.7917,-0.3987,0,2.7907,-0.8029473,335.99965)">
-      <stop
-         offset="0"
-         style="stop-color:#A86E45"
-         id="stop146" />
-      <stop
-         offset="0.1124"
-         style="stop-color:#E8A06C"
-         id="stop148" />
-      <stop
-         offset="0.1609"
-         style="stop-color:#E59E6B"
-         id="stop150" />
-      <stop
-         offset="0.2012"
-         style="stop-color:#DA9969"
-         id="stop152" />
-      <stop
-         offset="0.2387"
-         style="stop-color:#C99066"
-         id="stop154" />
-      <stop
-         offset="0.2743"
-         style="stop-color:#B18461"
-         id="stop156" />
-      <stop
-         offset="0.3084"
-         style="stop-color:#92745A"
-         id="stop158" />
-      <stop
-         offset="0.3315"
-         style="stop-color:#786755"
-         id="stop160" />
-      <stop
-         offset="0.4068"
-         style="stop-color:#B5ACA2"
-         id="stop162" />
-      <stop
-         offset="0.478"
-         style="stop-color:#EAE8E5"
-         id="stop164" />
-      <stop
-         offset="0.5112"
-         style="stop-color:#FFFFFF"
-         id="stop166" />
-      <stop
-         offset="0.5376"
-         style="stop-color:#FDFCFC"
-         id="stop168" />
-      <stop
-         offset="0.5589"
-         style="stop-color:#F5F3F2"
-         id="stop170" />
-      <stop
-         offset="0.5783"
-         style="stop-color:#E8E4E1"
-         id="stop172" />
-      <stop
-         offset="0.5966"
-         style="stop-color:#D6CEC9"
-         id="stop174" />
-      <stop
-         offset="0.6142"
-         style="stop-color:#BFB3AA"
-         id="stop176" />
-      <stop
-         offset="0.6312"
-         style="stop-color:#A39185"
-         id="stop178" />
-      <stop
-         offset="0.6475"
-         style="stop-color:#816959"
-         id="stop180" />
-      <stop
-         offset="0.6517"
-         style="stop-color:#785E4C"
-         id="stop182" />
-      <stop
-         offset="0.671"
-         style="stop-color:#83654F"
-         id="stop184" />
-      <stop
-         offset="0.7414"
-         style="stop-color:#A87958"
-         id="stop186" />
-      <stop
-         offset="0.807"
-         style="stop-color:#C3895F"
-         id="stop188" />
-      <stop
-         offset="0.8652"
-         style="stop-color:#D39263"
-         id="stop190" />
-      <stop
-         offset="0.9101"
-         style="stop-color:#D99564"
-         id="stop192" />
-      <stop
-         offset="0.9278"
-         style="stop-color:#C48557"
-         id="stop194" />
-      <stop
-         offset="0.9557"
-         style="stop-color:#AA7045"
-         id="stop196" />
-      <stop
-         offset="0.9807"
-         style="stop-color:#9A633B"
-         id="stop198" />
-      <stop
-         offset="1"
-         style="stop-color:#945F37"
-         id="stop200" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_5_"
-       gradientUnits="userSpaceOnUse"
-       x1="44.7505"
-       y1="94.7715"
-       x2="83.3739"
-       y2="89.1356"
-       gradientTransform="translate(-142.55625,-33.100248)">
-      <stop
-         offset="0"
-         style="stop-color:#A86E45"
-         id="stop87" />
-      <stop
-         offset="0.1124"
-         style="stop-color:#E8A06C"
-         id="stop89" />
-      <stop
-         offset="0.1609"
-         style="stop-color:#E59E6B"
-         id="stop91" />
-      <stop
-         offset="0.2012"
-         style="stop-color:#DA9969"
-         id="stop93" />
-      <stop
-         offset="0.2387"
-         style="stop-color:#C99066"
-         id="stop95" />
-      <stop
-         offset="0.2743"
-         style="stop-color:#B18461"
-         id="stop97" />
-      <stop
-         offset="0.3084"
-         style="stop-color:#92745A"
-         id="stop99" />
-      <stop
-         offset="0.3315"
-         style="stop-color:#786755"
-         id="stop101" />
-      <stop
-         offset="0.4068"
-         style="stop-color:#B5ACA2"
-         id="stop103" />
-      <stop
-         offset="0.478"
-         style="stop-color:#EAE8E5"
-         id="stop105" />
-      <stop
-         offset="0.5112"
-         style="stop-color:#FFFFFF"
-         id="stop107" />
-      <stop
-         offset="0.5376"
-         style="stop-color:#FDFCFC"
-         id="stop109" />
-      <stop
-         offset="0.5589"
-         style="stop-color:#F5F3F2"
-         id="stop111" />
-      <stop
-         offset="0.5783"
-         style="stop-color:#E8E4E1"
-         id="stop113" />
-      <stop
-         offset="0.5966"
-         style="stop-color:#D6CEC9"
-         id="stop115" />
-      <stop
-         offset="0.6142"
-         style="stop-color:#BFB3AA"
-         id="stop117" />
-      <stop
-         offset="0.6312"
-         style="stop-color:#A39185"
-         id="stop119" />
-      <stop
-         offset="0.6475"
-         style="stop-color:#816959"
-         id="stop121" />
-      <stop
-         offset="0.6517"
-         style="stop-color:#785E4C"
-         id="stop123" />
-      <stop
-         offset="0.671"
-         style="stop-color:#83654F"
-         id="stop125" />
-      <stop
-         offset="0.7414"
-         style="stop-color:#A87958"
-         id="stop127" />
-      <stop
-         offset="0.807"
-         style="stop-color:#C3895F"
-         id="stop129" />
-      <stop
-         offset="0.8652"
-         style="stop-color:#D39263"
-         id="stop131" />
-      <stop
-         offset="0.9101"
-         style="stop-color:#D99564"
-         id="stop133" />
-      <stop
-         offset="0.9278"
-         style="stop-color:#C48557"
-         id="stop135" />
-      <stop
-         offset="0.9557"
-         style="stop-color:#AA7045"
-         id="stop137" />
-      <stop
-         offset="0.9807"
-         style="stop-color:#9A633B"
-         id="stop139" />
-      <stop
-         offset="1"
-         style="stop-color:#945F37"
-         id="stop141" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_2_"
-       gradientUnits="userSpaceOnUse"
-       x1="44.8901"
-       y1="95.7324"
-       x2="83.5847"
-       y2="90.0861"
-       gradientTransform="translate(-142.55625,-33.100248)">
-      <stop
-         offset="0"
-         style="stop-color:#A86E45"
-         id="stop60" />
-      <stop
-         offset="0.5787"
-         style="stop-color:#785E4C"
-         id="stop62" />
-      <stop
-         offset="1"
-         style="stop-color:#945F37"
-         id="stop64" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_1_"
-       gradientUnits="userSpaceOnUse"
-       x1="47.9995"
-       y1="100.5"
-       x2="81.9995"
-       y2="100.5"
-       gradientTransform="translate(-142.55625,-33.100248)">
-      <stop
-         offset="0.0056"
-         style="stop-color:#9C6137"
-         id="stop47" />
-      <stop
-         offset="0.1685"
-         style="stop-color:#C98452"
-         id="stop49" />
-      <stop
-         offset="0.5337"
-         style="stop-color:#CD8D5F"
-         id="stop51" />
-      <stop
-         offset="0.809"
-         style="stop-color:#C47D4A"
-         id="stop53" />
-      <stop
-         offset="1"
-         style="stop-color:#9C6137"
-         id="stop55" />
-    </linearGradient>
-    <radialGradient
-       id="light_1_"
-       cx="-27.6724"
-       cy="-109.9067"
-       r="9"
-       gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
-       gradientUnits="userSpaceOnUse">
-      <stop
-         offset="0.264"
-         style="stop-color:#FFFFFF;"
-         id="stop37" />
-      <stop
-         offset="2.5"
-         style="stop-color:#FFF18F;stop-opacity:0"
-         id="stop39" />
-    </radialGradient>
-    <radialGradient
-       id="XMLID_10_"
-       cx="-27.6128"
-       cy="-86.5356"
-       r="6.2114"
-       gradientTransform="matrix(2.7917,0,0,2.7907,-0.8029473,317.89685)"
-       gradientUnits="userSpaceOnUse">
-      <stop
-         offset="0.3427"
-         style="stop-color:#FFFFFF"
-         id="stop8" />
-      <stop
-         offset="0.3754"
-         style="stop-color:#ECECEC"
-         id="stop10" />
-      <stop
-         offset="0.4665"
-         style="stop-color:#BCBCBC"
-         id="stop12" />
-      <stop
-         offset="0.5531"
-         style="stop-color:#979797"
-         id="stop14" />
-      <stop
-         offset="0.6331"
-         style="stop-color:#7C7C7C"
-         id="stop16" />
-      <stop
-         offset="0.704"
-         style="stop-color:#6C6C6C"
-         id="stop18" />
-      <stop
-         offset="0.7584"
-         style="stop-color:#666666"
-         id="stop20" />
-    </radialGradient>
-    <linearGradient
-       id="XMLID_4_"
-       gradientUnits="userSpaceOnUse"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)">
-      <stop
-         offset="0"
-         style="stop-color:#FCB462"
-         id="stop40" />
-      <stop
-         offset="1"
-         style="stop-color:#FCAF55"
-         id="stop42" />
-    </linearGradient>
-    <linearGradient
-       id="XMLID_3_"
-       gradientUnits="userSpaceOnUse"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)">
-      <stop
-         offset="0"
-         style="stop-color:#F99D77"
-         id="stop33" />
-      <stop
-         offset="1"
-         style="stop-color:#F7804E"
-         id="stop35" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4035"
-       id="linearGradient4041"
-       x1="-43.03101"
-       y1="8.6383018"
-       x2="-15.677965"
-       y2="37.492428"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4035"
-       id="linearGradient4189"
-       gradientUnits="userSpaceOnUse"
-       x1="-43.03101"
-       y1="8.6383018"
-       x2="-15.677965"
-       y2="37.492428" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4181">
-      <g
-         id="g4183"
-         transform="matrix(0.7925926,0,0,0.8907563,4.6132029,-3.2693226)">
-        <path
-           transform="translate(-15.844752,8.8397036)"
-           d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1  -50.036055,23.982693 A 20.014421 20.014421 0 1 1  -10.007212 23.982693 z"
-           sodipodi:ry="20.014421"
-           sodipodi:rx="20.014421"
-           sodipodi:cy="23.982693"
-           sodipodi:cx="-30.021633"
-           id="path4185"
-           style="opacity:1;fill:#c88cbb;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           sodipodi:type="arc" />
-        <path
-           transform="translate(-13.843309,8.8397036)"
-           d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1  -50.036055,23.982693 A 20.014421 20.014421 0 1 1  -10.007212 23.982693 z"
-           sodipodi:ry="20.014421"
-           sodipodi:rx="20.014421"
-           sodipodi:cy="23.982693"
-           sodipodi:cx="-30.021633"
-           id="path4187"
-           style="opacity:1;fill:url(#linearGradient4189);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           sodipodi:type="arc" />
-      </g>
-    </mask>
-    <filter
-       inkscape:collect="always"
-       x="-0.42083731"
-       width="1.8416746"
-       y="-0.42480746"
-       height="1.8496149"
-       id="filter4267">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.12931"
-         id="feGaussianBlur4269" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4035"
-       id="linearGradient4301"
-       gradientUnits="userSpaceOnUse"
-       x1="-43.03101"
-       y1="8.6383018"
-       x2="-15.677965"
-       y2="37.492428" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask4297">
-      <path
-         sodipodi:type="arc"
-         style="opacity:1;fill:url(#linearGradient4301);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="path4299"
-         sodipodi:cx="-30.021633"
-         sodipodi:cy="23.982693"
-         sodipodi:rx="20.014421"
-         sodipodi:ry="20.014421"
-         d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1  -50.036055,23.982693 A 20.014421 20.014421 0 1 1  -10.007212 23.982693 z"
-         transform="translate(3.5679857,1.3974438)" />
-    </mask>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4003"
-       id="linearGradient4368"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9683099,0,0,0.9683099,47.162254,-1.0174889)"
-       x1="-47.534256"
-       y1="2.9675496"
-       x2="-0.16679382"
-       y2="49.50108" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4003"
-       id="linearGradient4371"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0105249,0,0,1.0105249,3.4549308e-2,-50.022066)"
-       x1="-47.534256"
-       y1="2.9675496"
-       x2="-0.16679382"
-       y2="49.50108" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4423">
-      <path
-         transform="translate(4.9557997,-4.7430601e-2)"
-         d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1  -50.036055,23.982693 A 20.014421 20.014421 0 1 1  -10.007212 23.982693 z"
-         sodipodi:ry="20.014421"
-         sodipodi:rx="20.014421"
-         sodipodi:cy="23.982693"
-         sodipodi:cx="-30.021633"
-         id="path4425"
-         style="opacity:1;fill:url(#linearGradient4427);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </clipPath>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4035"
-       id="linearGradient4427"
-       gradientUnits="userSpaceOnUse"
-       x1="-43.03101"
-       y1="8.6383018"
-       x2="-15.677965"
-       y2="37.492428" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4373"
-       id="linearGradient4429"
-       gradientUnits="userSpaceOnUse"
-       x1="-46.468069"
-       y1="19.312662"
-       x2="-6.439226"
-       y2="19.312662" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4373"
-       id="linearGradient4431"
-       gradientUnits="userSpaceOnUse"
-       x1="-46.468067"
-       y1="22.481251"
-       x2="-6.4392262"
-       y2="22.481251" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4373"
-       id="linearGradient4433"
-       gradientUnits="userSpaceOnUse"
-       x1="-46.468067"
-       y1="25.482334"
-       x2="-6.4392262"
-       y2="25.482334" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4373"
-       id="linearGradient4435"
-       gradientUnits="userSpaceOnUse"
-       x1="-46.468067"
-       y1="28.481611"
-       x2="-6.4392262"
-       y2="28.481611" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_10_"
-       id="radialGradient4753"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,0,0,2.7907,-0.8029473,317.89685)"
-       cx="-27.6128"
-       cy="-86.5356"
-       r="6.2114" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#light_1_"
-       id="radialGradient4755"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
-       cx="-27.6724"
-       cy="-109.9067"
-       r="9" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient4757"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="47.9995"
-       y1="100.5"
-       x2="81.9995"
-       y2="100.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient4759"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="44.8901"
-       y1="95.7324"
-       x2="83.5847"
-       y2="90.0861" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient4761"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_4_"
-       id="linearGradient4763"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_5_"
-       id="linearGradient4765"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="44.7505"
-       y1="94.7715"
-       x2="83.3739"
-       y2="89.1356" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_6_"
-       id="linearGradient4767"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,-0.3987,0,2.7907,-0.8029473,335.99965)"
-       x1="-34.5078"
-       y1="-100.6235"
-       x2="-20.9253"
-       y2="-100.6235" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_7_"
-       id="linearGradient4769"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="45.416"
-       y1="107.0176"
-       x2="83.3354"
-       y2="107.0176" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_8_"
-       id="linearGradient4771"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="36.2495"
-       y1="18.1187"
-       x2="92.7495"
-       y2="18.1187" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_10_"
-       id="radialGradient4817"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,0,0,2.7907,-0.8029473,317.89685)"
-       cx="-27.6128"
-       cy="-86.5356"
-       r="6.2114" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#light_1_"
-       id="radialGradient4819"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
-       cx="-27.6724"
-       cy="-109.9067"
-       r="9" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient4821"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="47.9995"
-       y1="100.5"
-       x2="81.9995"
-       y2="100.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient4823"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="44.8901"
-       y1="95.7324"
-       x2="83.5847"
-       y2="90.0861" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient4825"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_4_"
-       id="linearGradient4827"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_5_"
-       id="linearGradient4829"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="44.7505"
-       y1="94.7715"
-       x2="83.3739"
-       y2="89.1356" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_6_"
-       id="linearGradient4831"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,-0.3987,0,2.7907,-0.8029473,335.99965)"
-       x1="-34.5078"
-       y1="-100.6235"
-       x2="-20.9253"
-       y2="-100.6235" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_7_"
-       id="linearGradient4833"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="45.416"
-       y1="107.0176"
-       x2="83.3354"
-       y2="107.0176" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_8_"
-       id="linearGradient4835"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-142.55625,-33.100248)"
-       x1="36.2495"
-       y1="18.1187"
-       x2="92.7495"
-       y2="18.1187" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7503">
-      <g
-         id="g7505"
-         transform="matrix(7.4511206,0,0,7.4511206,305.77432,266.76067)">
-        <path
-           id="path7507"
-           d="M -29.775161,-22.982238 C -29.796903,-23.107991 -29.878636,-23.210123 -29.986136,-23.268906 L -29.986136,-23.560406 C -29.836092,-23.636636 -29.745233,-23.799162 -29.775161,-23.971619 C -29.797037,-24.097641 -29.879038,-24.200041 -29.986942,-24.25869 C -29.991505,-24.402695 -30.109876,-24.519188 -30.254687,-24.519188 L -34.370443,-24.519188 C -34.518072,-24.519188 -34.638859,-24.398401 -34.638859,-24.250772 L -34.638859,-23.677033 L -34.648925,-23.675691 C -34.872381,-23.643481 -35.024305,-23.439619 -34.986727,-23.22247 C -34.956396,-23.047329 -34.811048,-22.917013 -34.638994,-22.889232 L -34.638994,-22.687786 L -34.649059,-22.686175 C -34.872516,-22.654234 -35.024439,-22.450237 -34.986861,-22.233223 C -34.95653,-22.058082 -34.811182,-21.927632 -34.639128,-21.89985 L -34.639128,-21.69827 L -34.649193,-21.696928 C -34.87265,-21.664718 -35.024573,-21.460856 -34.986995,-21.243708 C -34.954785,-21.057829 -34.793199,-20.921072 -34.607186,-20.905503 C -34.562092,-20.820281 -34.473381,-20.761364 -34.370846,-20.761364 L -34.129003,-20.761364 C -33.83294,-20.026441 -33.162303,-19.419284 -32.381347,-19.419284 C -31.600256,-19.419284 -30.929753,-20.026441 -30.63369,-20.761364 L -30.255089,-20.761364 C -30.10746,-20.761364 -29.986673,-20.882151 -29.986673,-21.02978 L -29.986673,-21.581509 C -29.836629,-21.657739 -29.74577,-21.820265 -29.775698,-21.992722 C -29.79744,-22.118475 -29.879173,-22.220608 -29.986673,-22.279391 L -29.986673,-22.570756 C -29.836226,-22.647121 -29.745367,-22.809781 -29.775161,-22.982238 z "
-           style="opacity:0.2;fill:#141414" />
-        <path
-           id="path7509"
-           d="M -29.775161,-22.84803 C -29.796903,-22.973783 -29.878636,-23.075915 -29.986136,-23.134698 L -29.986136,-23.426198 C -29.836092,-23.502428 -29.745233,-23.664954 -29.775161,-23.837411 C -29.797037,-23.963433 -29.879038,-24.065833 -29.986942,-24.124482 C -29.991505,-24.268487 -30.109876,-24.38498 -30.254687,-24.38498 L -34.370443,-24.38498 C -34.518072,-24.38498 -34.638859,-24.264193 -34.638859,-24.116564 L -34.638859,-23.542825 L -34.648925,-23.541483 C -34.872381,-23.509273 -35.024305,-23.305411 -34.986727,-23.088262 C -34.956396,-22.913121 -34.811048,-22.782805 -34.638994,-22.755024 L -34.638994,-22.553578 L -34.649059,-22.551967 C -34.872516,-22.520026 -35.024439,-22.316029 -34.986861,-22.099015 C -34.95653,-21.923874 -34.811182,-21.793424 -34.639128,-21.765642 L -34.639128,-21.564062 L -34.649193,-21.56272 C -34.87265,-21.53051 -35.024573,-21.326648 -34.986995,-21.1095 C -34.954785,-20.923621 -34.793199,-20.786864 -34.607186,-20.771295 C -34.562092,-20.686073 -34.473381,-20.627156 -34.370846,-20.627156 L -34.129003,-20.627156 C -33.83294,-19.892233 -33.162303,-19.285076 -32.381347,-19.285076 C -31.600256,-19.285076 -30.929753,-19.892233 -30.63369,-20.627156 L -30.255089,-20.627156 C -30.10746,-20.627156 -29.986673,-20.747943 -29.986673,-20.895572 L -29.986673,-21.447301 C -29.836629,-21.523531 -29.74577,-21.686057 -29.775698,-21.858514 C -29.79744,-21.984267 -29.879173,-22.0864 -29.986673,-22.145183 L -29.986673,-22.436548 C -29.836226,-22.512913 -29.745367,-22.675573 -29.775161,-22.84803 z "
-           style="opacity:0.2;fill:#141414" />
-        <path
-           id="path7511"
-           d="M -30.507669,-21.694512 C -30.507669,-20.66044 -31.346469,-19.553492 -32.381078,-19.553492 C -33.415553,-19.553492 -34.254353,-20.66044 -34.254353,-21.694512 C -34.254353,-22.728719 -33.415553,-23.298835 -32.381078,-23.298835 C -31.346469,-23.298835 -30.507669,-22.728719 -30.507669,-21.694512 z "
-           style="fill:url(#radialGradient7547)" />
-        <path
-           id="path7513"
-           d="M -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.031465 -27.884976,-30.452926 C -27.884976,-27.874388 -30.519882,-25.378656 -30.519882,-24.634607 L -34.242141,-24.634607 C -34.242141,-25.557018 -36.876912,-27.874388 -36.876912,-30.452926 C -36.876912,-33.031465 -34.86406,-35.12162 -32.380944,-35.12162 z "
-           style="opacity:0.4;fill:#ffbf61" />
-        <path
-           id="path7515"
-           d="M -32.380944,-35.926868 C -35.304128,-35.926868 -37.68216,-33.482538 -37.68216,-30.477889 C -37.68216,-28.627429 -36.56045,-26.960163 -35.741378,-25.742494 C -35.544227,-25.449384 -35.083893,-24.765325 -35.046315,-24.59515 C -35.036652,-24.159511 -34.680061,-23.807751 -34.242006,-23.807751 L -30.519882,-23.807751 C -30.10075,-23.807751 -29.759459,-24.130656 -29.722015,-24.540124 C -29.679203,-24.679969 -29.267184,-25.29585 -29.111906,-25.527761 C -28.301826,-26.738451 -27.079728,-28.56462 -27.079728,-30.477889 C -27.079728,-33.482538 -29.457894,-35.926868 -32.380944,-35.926868 z M -29.722015,-24.541198 C -29.721747,-24.54254 -29.721612,-24.544016 -29.721478,-24.545493 C -29.72121,-24.546566 -29.720405,-24.547372 -29.72027,-24.548445 C -29.72027,-24.54858 -29.721478,-24.543077 -29.722015,-24.541198 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-           style="opacity:0.2;fill:#ff8b17" />
-        <path
-           id="path7517"
-           d="M -32.380944,-35.658452 C -35.156097,-35.658452 -37.413744,-33.334506 -37.413744,-30.477889 C -37.413744,-28.709296 -36.318338,-27.08095 -35.518459,-25.892136 C -35.223872,-25.454215 -34.778838,-24.792972 -34.778838,-24.613134 C -34.778838,-24.317205 -34.538069,-24.076302 -34.242006,-24.076302 L -30.519882,-24.076302 C -30.223953,-24.076302 -29.98305,-24.317205 -29.98305,-24.613134 L -29.984123,-24.597834 C -29.955805,-24.749489 -29.566334,-25.331683 -29.333483,-25.67955 C -28.542864,-26.860983 -27.348144,-28.646218 -27.348144,-30.477889 C -27.348144,-33.334506 -29.605925,-35.658452 -32.380944,-35.658452 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-           style="opacity:0.2;fill:#ff8b17" />
-        <path
-           id="path7519"
-           d="M -32.380944,-35.390036 C -35.008066,-35.390036 -37.145328,-33.186475 -37.145328,-30.477889 C -37.145328,-28.791163 -36.076227,-27.202006 -35.295673,-26.041912 C -34.891841,-25.4416 -34.510422,-24.874705 -34.510422,-24.613134 C -34.510422,-24.464968 -34.390172,-24.344718 -34.242006,-24.344718 L -30.519882,-24.344718 C -30.371716,-24.344718 -30.251466,-24.464968 -30.251466,-24.613134 C -30.251466,-24.790288 -29.882125,-25.342151 -29.556402,-25.828924 C -28.784035,-26.983113 -27.61656,-28.727817 -27.61656,-30.477889 C -27.61656,-33.186475 -29.753957,-35.390036 -32.380944,-35.390036 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-           style="opacity:0.4;fill:#ff8b17" />
-        <path
-           id="path7521"
-           d="M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-           style="opacity:0.2;fill:#ffbf61" />
-        <path
-           id="path7523"
-           d="M -31.631661,-29.235257 L -31.631661,-27.362519 C -31.631661,-27.156778 -31.800494,-26.988078 -32.006369,-26.988078 L -32.755653,-26.988078 C -32.961662,-26.988078 -33.130361,-27.156778 -33.130361,-27.362519 L -33.130361,-29.235257 L -33.50507,-29.235257 L -33.50507,-27.362519 C -33.50507,-26.950634 -33.16794,-26.613504 -32.621579,-26.613504 L -32.621579,-24.366191 L -32.140712,-24.366191 L -32.140712,-26.61337 C -31.594351,-26.61337 -31.25722,-26.9505 -31.25722,-27.362384 L -31.25722,-29.235257 L -31.631661,-29.235257 z "
-           style="fill:#cba572" />
-        <path
-           id="path7525"
-           d="M -32.380944,-35.255828 C -34.934117,-35.255828 -37.01112,-33.112392 -37.01112,-30.477889 C -37.01112,-28.831694 -35.955037,-27.278102 -35.184012,-26.14391 C -34.750655,-25.506154 -34.376214,-24.928657 -34.376214,-24.626554 L -34.24308,-24.626554 C -34.267506,-25.553261 -36.876912,-27.924984 -36.876912,-30.477889 C -36.876912,-33.042604 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.927534 -30.489282,-25.382682 -30.518674,-24.626554 L -30.385808,-24.626554 C -30.385808,-24.843971 -30.053375,-25.362551 -29.668466,-25.931996 C -28.859058,-27.128863 -27.750768,-28.768213 -27.750768,-30.477889 C -27.750768,-33.112392 -29.827905,-35.255828 -32.380944,-35.255828 z "
-           style="fill:#9e8c68" />
-        <path
-           id="path7527"
-           d="M -30.032304,-21.163988 C -30.032304,-21.016359 -30.153091,-20.895572 -30.30072,-20.895572 L -34.32696,-20.895572 C -34.474589,-20.895572 -34.595376,-21.016359 -34.595376,-21.163988 L -34.595376,-24.38498 C -34.595376,-24.532609 -34.474589,-24.653396 -34.32696,-24.653396 L -30.30072,-24.653396 C -30.153091,-24.653396 -30.032304,-24.532609 -30.032304,-24.38498 L -30.032304,-21.163988 z "
-           style="fill:#966746" />
-        <path
-           id="path7529"
-           d="M -30.032304,-21.298196 C -30.032304,-21.076753 -30.213485,-20.895572 -30.434928,-20.895572 L -34.192752,-20.895572 C -34.414195,-20.895572 -34.595376,-21.076753 -34.595376,-21.298196 L -34.595376,-24.116564 C -34.595376,-24.338007 -34.414195,-24.519188 -34.192752,-24.519188 L -30.434928,-24.519188 C -30.213485,-24.519188 -30.032304,-24.338007 -30.032304,-24.116564 L -30.032304,-21.298196 z "
-           style="fill:url(#linearGradient7549)" />
-        <path
-           id="path7531"
-           d="M -29.825355,-24.105827 C -29.788582,-23.888813 -29.937553,-23.684817 -30.156581,-23.652741 L -34.470965,-23.020353 C -34.689993,-22.988412 -34.899491,-23.139664 -34.936399,-23.356678 C -34.973306,-23.573827 -34.824201,-23.777689 -34.605173,-23.809899 L -30.290789,-24.442153 C -30.071761,-24.474094 -29.862262,-24.322842 -29.825355,-24.105827 z "
-           style="fill:url(#linearGradient7551)" />
-        <path
-           id="path7533"
-           d="M -29.825355,-23.116446 C -29.788582,-22.899297 -29.937553,-22.695435 -30.156581,-22.66336 L -34.470965,-22.031106 C -34.689993,-21.998896 -34.899491,-22.150283 -34.936399,-22.367431 C -34.973306,-22.584445 -34.824201,-22.788442 -34.605173,-22.820383 L -30.290789,-23.452637 C -30.071761,-23.484847 -29.862262,-23.33346 -29.825355,-23.116446 z "
-           style="fill:url(#linearGradient7553)" />
-        <path
-           id="path7535"
-           d="M -29.825355,-22.127065 C -29.788582,-21.91005 -29.937553,-21.706054 -30.156581,-21.673978 L -34.470965,-21.04159 C -34.689993,-21.009649 -34.899491,-21.160901 -34.936399,-21.377916 C -34.973306,-21.595064 -34.824201,-21.798926 -34.605173,-21.831136 L -30.290789,-22.46339 C -30.071761,-22.495331 -29.862262,-22.344079 -29.825355,-22.127065 z "
-           style="fill:url(#linearGradient7555)" />
-        <path
-           id="path7537"
-           d="M -34.887815,-23.22341 L -34.936533,-23.356678 C -34.97344,-23.573827 -34.824335,-23.777689 -34.605307,-23.809899 L -30.290923,-24.442153 C -30.071895,-24.474094 -29.882528,-24.396656 -29.845755,-24.179642 L -34.887815,-23.22341 z "
-           style="fill:url(#linearGradient7557)" />
-        <path
-           id="path7539"
-           d="M -34.880031,-22.220339 L -29.853136,-23.208244 C -29.889909,-23.425259 -30.071761,-23.484847 -30.290789,-23.452503 L -34.605173,-22.820249 C -34.824201,-22.788307 -34.973306,-22.584311 -34.936399,-22.367297 L -34.880031,-22.220339 z "
-           style="fill:url(#linearGradient7559)" />
-        <path
-           id="path7541"
-           d="M -34.853592,-21.194185 L -29.853002,-22.218594 C -29.889909,-22.435609 -30.071761,-22.495466 -30.290789,-22.46339 L -34.605173,-21.831136 C -34.824201,-21.798926 -34.973306,-21.595064 -34.936399,-21.377916 L -34.853592,-21.194185 z "
-           style="fill:url(#linearGradient7561)" />
-        <path
-           id="path7543"
-           d="M -28.589568,-32.601596 C -29.364217,-34.00152 -30.787895,-34.925676 -32.380944,-34.925676 C -33.973993,-34.925676 -35.397671,-34.00152 -36.17232,-32.601596 C -35.153681,-33.183656 -33.826767,-33.537429 -32.380944,-33.537429 C -30.935121,-33.537295 -29.608207,-33.183656 -28.589568,-32.601596 z "
-           style="fill:url(#linearGradient7563)" />
-        <path
-           id="path7545"
-           d="M -34.042707,-20.761364 L -30.719449,-20.761364 C -30.706297,-20.805384 -30.69462,-20.85021 -30.684823,-20.895572 L -34.077199,-20.895572 C -34.067402,-20.85021 -34.055726,-20.805384 -34.042707,-20.761364 z "
-           style="fill:#3f3f3f" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_10_"
-       id="radialGradient7547"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3746685,0,0,0.3745343,-41.145122,6.4690164)"
-       cx="-27.6128"
-       cy="-86.5356"
-       r="6.2114" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient7549"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="47.9995"
-       y1="100.5"
-       x2="81.9995"
-       y2="100.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient7551"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="44.8901"
-       y1="95.7324"
-       x2="83.5847"
-       y2="90.0861" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient7553"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_4_"
-       id="linearGradient7555"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_5_"
-       id="linearGradient7557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="44.7505"
-       y1="94.7715"
-       x2="83.3739"
-       y2="89.1356" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_6_"
-       id="linearGradient7559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3746685,-5.350873e-2,0,0.3745343,-41.145122,8.898557)"
-       x1="-34.5078"
-       y1="-100.6235"
-       x2="-20.9253"
-       y2="-100.6235" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_7_"
-       id="linearGradient7561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="45.416"
-       y1="107.0176"
-       x2="83.3354"
-       y2="107.0176" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_8_"
-       id="linearGradient7563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="36.2495"
-       y1="18.1187"
-       x2="92.7495"
-       y2="18.1187" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#light_1_"
-       id="radialGradient7653"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
-       cx="-27.6724"
-       cy="-109.9067"
-       r="9" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_10_"
-       id="radialGradient8092"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3746685,0,0,0.3745343,-41.145122,6.4690164)"
-       cx="-27.6128"
-       cy="-86.5356"
-       r="6.2114" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient8094"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="47.9995"
-       y1="100.5"
-       x2="81.9995"
-       y2="100.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient8096"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="44.8901"
-       y1="95.7324"
-       x2="83.5847"
-       y2="90.0861" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient8098"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_4_"
-       id="linearGradient8100"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_5_"
-       id="linearGradient8102"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="44.7505"
-       y1="94.7715"
-       x2="83.3739"
-       y2="89.1356" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_6_"
-       id="linearGradient8104"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3746685,-5.350873e-2,0,0.3745343,-41.145122,8.898557)"
-       x1="-34.5078"
-       y1="-100.6235"
-       x2="-20.9253"
-       y2="-100.6235" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_7_"
-       id="linearGradient8106"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="45.416"
-       y1="107.0176"
-       x2="83.3354"
-       y2="107.0176" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_8_"
-       id="linearGradient8108"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
-       x1="36.2495"
-       y1="18.1187"
-       x2="92.7495"
-       y2="18.1187" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#light_1_"
-       id="radialGradient8110"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
-       cx="-27.6724"
-       cy="-109.9067"
-       r="9" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask8044">
-      <g
-         id="g8046"
-         transform="translate(8.8639968,22.032387)">
-        <g
-           id="g8048">
-          <path
-             style="opacity:0.2;fill:#141414"
-             d="M -29.775161,-22.982238 C -29.796903,-23.107991 -29.878636,-23.210123 -29.986136,-23.268906 L -29.986136,-23.560406 C -29.836092,-23.636636 -29.745233,-23.799162 -29.775161,-23.971619 C -29.797037,-24.097641 -29.879038,-24.200041 -29.986942,-24.25869 C -29.991505,-24.402695 -30.109876,-24.519188 -30.254687,-24.519188 L -34.370443,-24.519188 C -34.518072,-24.519188 -34.638859,-24.398401 -34.638859,-24.250772 L -34.638859,-23.677033 L -34.648925,-23.675691 C -34.872381,-23.643481 -35.024305,-23.439619 -34.986727,-23.22247 C -34.956396,-23.047329 -34.811048,-22.917013 -34.638994,-22.889232 L -34.638994,-22.687786 L -34.649059,-22.686175 C -34.872516,-22.654234 -35.024439,-22.450237 -34.986861,-22.233223 C -34.95653,-22.058082 -34.811182,-21.927632 -34.639128,-21.89985 L -34.639128,-21.69827 L -34.649193,-21.696928 C -34.87265,-21.664718 -35.024573,-21.460856 -34.986995,-21.243708 C -34.954785,-21.057829 -34.793199,-20.921072 -34.607186,-20.905503 C -34.562092,-20.820281 -34.473381,-20.761364 -34.370846,-20.761364 L -34.129003,-20.761364 C -33.83294,-20.026441 -33.162303,-19.419284 -32.381347,-19.419284 C -31.600256,-19.419284 -30.929753,-20.026441 -30.63369,-20.761364 L -30.255089,-20.761364 C -30.10746,-20.761364 -29.986673,-20.882151 -29.986673,-21.02978 L -29.986673,-21.581509 C -29.836629,-21.657739 -29.74577,-21.820265 -29.775698,-21.992722 C -29.79744,-22.118475 -29.879173,-22.220608 -29.986673,-22.279391 L -29.986673,-22.570756 C -29.836226,-22.647121 -29.745367,-22.809781 -29.775161,-22.982238 z "
-             id="path8050" />
-          <path
-             style="opacity:0.2;fill:#141414"
-             d="M -29.775161,-22.84803 C -29.796903,-22.973783 -29.878636,-23.075915 -29.986136,-23.134698 L -29.986136,-23.426198 C -29.836092,-23.502428 -29.745233,-23.664954 -29.775161,-23.837411 C -29.797037,-23.963433 -29.879038,-24.065833 -29.986942,-24.124482 C -29.991505,-24.268487 -30.109876,-24.38498 -30.254687,-24.38498 L -34.370443,-24.38498 C -34.518072,-24.38498 -34.638859,-24.264193 -34.638859,-24.116564 L -34.638859,-23.542825 L -34.648925,-23.541483 C -34.872381,-23.509273 -35.024305,-23.305411 -34.986727,-23.088262 C -34.956396,-22.913121 -34.811048,-22.782805 -34.638994,-22.755024 L -34.638994,-22.553578 L -34.649059,-22.551967 C -34.872516,-22.520026 -35.024439,-22.316029 -34.986861,-22.099015 C -34.95653,-21.923874 -34.811182,-21.793424 -34.639128,-21.765642 L -34.639128,-21.564062 L -34.649193,-21.56272 C -34.87265,-21.53051 -35.024573,-21.326648 -34.986995,-21.1095 C -34.954785,-20.923621 -34.793199,-20.786864 -34.607186,-20.771295 C -34.562092,-20.686073 -34.473381,-20.627156 -34.370846,-20.627156 L -34.129003,-20.627156 C -33.83294,-19.892233 -33.162303,-19.285076 -32.381347,-19.285076 C -31.600256,-19.285076 -30.929753,-19.892233 -30.63369,-20.627156 L -30.255089,-20.627156 C -30.10746,-20.627156 -29.986673,-20.747943 -29.986673,-20.895572 L -29.986673,-21.447301 C -29.836629,-21.523531 -29.74577,-21.686057 -29.775698,-21.858514 C -29.79744,-21.984267 -29.879173,-22.0864 -29.986673,-22.145183 L -29.986673,-22.436548 C -29.836226,-22.512913 -29.745367,-22.675573 -29.775161,-22.84803 z "
-             id="path8052" />
-          <path
-             style="fill:url(#radialGradient8092)"
-             d="M -30.507669,-21.694512 C -30.507669,-20.66044 -31.346469,-19.553492 -32.381078,-19.553492 C -33.415553,-19.553492 -34.254353,-20.66044 -34.254353,-21.694512 C -34.254353,-22.728719 -33.415553,-23.298835 -32.381078,-23.298835 C -31.346469,-23.298835 -30.507669,-22.728719 -30.507669,-21.694512 z "
-             id="path8054" />
-          <path
-             style="opacity:0.4;fill:#ffbf61"
-             d="M -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.031465 -27.884976,-30.452926 C -27.884976,-27.874388 -30.519882,-25.378656 -30.519882,-24.634607 L -34.242141,-24.634607 C -34.242141,-25.557018 -36.876912,-27.874388 -36.876912,-30.452926 C -36.876912,-33.031465 -34.86406,-35.12162 -32.380944,-35.12162 z "
-             id="path8056" />
-          <path
-             style="opacity:0.2;fill:#ff8b17"
-             d="M -32.380944,-35.926868 C -35.304128,-35.926868 -37.68216,-33.482538 -37.68216,-30.477889 C -37.68216,-28.627429 -36.56045,-26.960163 -35.741378,-25.742494 C -35.544227,-25.449384 -35.083893,-24.765325 -35.046315,-24.59515 C -35.036652,-24.159511 -34.680061,-23.807751 -34.242006,-23.807751 L -30.519882,-23.807751 C -30.10075,-23.807751 -29.759459,-24.130656 -29.722015,-24.540124 C -29.679203,-24.679969 -29.267184,-25.29585 -29.111906,-25.527761 C -28.301826,-26.738451 -27.079728,-28.56462 -27.079728,-30.477889 C -27.079728,-33.482538 -29.457894,-35.926868 -32.380944,-35.926868 z M -29.722015,-24.541198 C -29.721747,-24.54254 -29.721612,-24.544016 -29.721478,-24.545493 C -29.72121,-24.546566 -29.720405,-24.547372 -29.72027,-24.548445 C -29.72027,-24.54858 -29.721478,-24.543077 -29.722015,-24.541198 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-             id="path8058" />
-          <path
-             style="opacity:0.2;fill:#ff8b17"
-             d="M -32.380944,-35.658452 C -35.156097,-35.658452 -37.413744,-33.334506 -37.413744,-30.477889 C -37.413744,-28.709296 -36.318338,-27.08095 -35.518459,-25.892136 C -35.223872,-25.454215 -34.778838,-24.792972 -34.778838,-24.613134 C -34.778838,-24.317205 -34.538069,-24.076302 -34.242006,-24.076302 L -30.519882,-24.076302 C -30.223953,-24.076302 -29.98305,-24.317205 -29.98305,-24.613134 L -29.984123,-24.597834 C -29.955805,-24.749489 -29.566334,-25.331683 -29.333483,-25.67955 C -28.542864,-26.860983 -27.348144,-28.646218 -27.348144,-30.477889 C -27.348144,-33.334506 -29.605925,-35.658452 -32.380944,-35.658452 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-             id="path8060" />
-          <path
-             style="opacity:0.4;fill:#ff8b17"
-             d="M -32.380944,-35.390036 C -35.008066,-35.390036 -37.145328,-33.186475 -37.145328,-30.477889 C -37.145328,-28.791163 -36.076227,-27.202006 -35.295673,-26.041912 C -34.891841,-25.4416 -34.510422,-24.874705 -34.510422,-24.613134 C -34.510422,-24.464968 -34.390172,-24.344718 -34.242006,-24.344718 L -30.519882,-24.344718 C -30.371716,-24.344718 -30.251466,-24.464968 -30.251466,-24.613134 C -30.251466,-24.790288 -29.882125,-25.342151 -29.556402,-25.828924 C -28.784035,-26.983113 -27.61656,-28.727817 -27.61656,-30.477889 C -27.61656,-33.186475 -29.753957,-35.390036 -32.380944,-35.390036 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-             id="path8062" />
-          <path
-             style="opacity:0.2;fill:#ffbf61"
-             d="M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
-             id="path8064" />
-          <path
-             style="fill:#cba572"
-             d="M -31.631661,-29.235257 L -31.631661,-27.362519 C -31.631661,-27.156778 -31.800494,-26.988078 -32.006369,-26.988078 L -32.755653,-26.988078 C -32.961662,-26.988078 -33.130361,-27.156778 -33.130361,-27.362519 L -33.130361,-29.235257 L -33.50507,-29.235257 L -33.50507,-27.362519 C -33.50507,-26.950634 -33.16794,-26.613504 -32.621579,-26.613504 L -32.621579,-24.366191 L -32.140712,-24.366191 L -32.140712,-26.61337 C -31.594351,-26.61337 -31.25722,-26.9505 -31.25722,-27.362384 L -31.25722,-29.235257 L -31.631661,-29.235257 z "
-             id="path8066" />
-          <path
-             style="fill:#9e8c68"
-             d="M -32.380944,-35.255828 C -34.934117,-35.255828 -37.01112,-33.112392 -37.01112,-30.477889 C -37.01112,-28.831694 -35.955037,-27.278102 -35.184012,-26.14391 C -34.750655,-25.506154 -34.376214,-24.928657 -34.376214,-24.626554 L -34.24308,-24.626554 C -34.267506,-25.553261 -36.876912,-27.924984 -36.876912,-30.477889 C -36.876912,-33.042604 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.927534 -30.489282,-25.382682 -30.518674,-24.626554 L -30.385808,-24.626554 C -30.385808,-24.843971 -30.053375,-25.362551 -29.668466,-25.931996 C -28.859058,-27.128863 -27.750768,-28.768213 -27.750768,-30.477889 C -27.750768,-33.112392 -29.827905,-35.255828 -32.380944,-35.255828 z "
-             id="path8068" />
-          <path
-             style="fill:#966746"
-             d="M -30.032304,-21.163988 C -30.032304,-21.016359 -30.153091,-20.895572 -30.30072,-20.895572 L -34.32696,-20.895572 C -34.474589,-20.895572 -34.595376,-21.016359 -34.595376,-21.163988 L -34.595376,-24.38498 C -34.595376,-24.532609 -34.474589,-24.653396 -34.32696,-24.653396 L -30.30072,-24.653396 C -30.153091,-24.653396 -30.032304,-24.532609 -30.032304,-24.38498 L -30.032304,-21.163988 z "
-             id="path8070" />
-          <path
-             style="fill:url(#linearGradient8094)"
-             d="M -30.032304,-21.298196 C -30.032304,-21.076753 -30.213485,-20.895572 -30.434928,-20.895572 L -34.192752,-20.895572 C -34.414195,-20.895572 -34.595376,-21.076753 -34.595376,-21.298196 L -34.595376,-24.116564 C -34.595376,-24.338007 -34.414195,-24.519188 -34.192752,-24.519188 L -30.434928,-24.519188 C -30.213485,-24.519188 -30.032304,-24.338007 -30.032304,-24.116564 L -30.032304,-21.298196 z "
-             id="path8072" />
-          <path
-             style="fill:url(#linearGradient8096)"
-             d="M -29.825355,-24.105827 C -29.788582,-23.888813 -29.937553,-23.684817 -30.156581,-23.652741 L -34.470965,-23.020353 C -34.689993,-22.988412 -34.899491,-23.139664 -34.936399,-23.356678 C -34.973306,-23.573827 -34.824201,-23.777689 -34.605173,-23.809899 L -30.290789,-24.442153 C -30.071761,-24.474094 -29.862262,-24.322842 -29.825355,-24.105827 z "
-             id="path8074" />
-          <path
-             style="fill:url(#linearGradient8098)"
-             d="M -29.825355,-23.116446 C -29.788582,-22.899297 -29.937553,-22.695435 -30.156581,-22.66336 L -34.470965,-22.031106 C -34.689993,-21.998896 -34.899491,-22.150283 -34.936399,-22.367431 C -34.973306,-22.584445 -34.824201,-22.788442 -34.605173,-22.820383 L -30.290789,-23.452637 C -30.071761,-23.484847 -29.862262,-23.33346 -29.825355,-23.116446 z "
-             id="path8076" />
-          <path
-             style="fill:url(#linearGradient8100)"
-             d="M -29.825355,-22.127065 C -29.788582,-21.91005 -29.937553,-21.706054 -30.156581,-21.673978 L -34.470965,-21.04159 C -34.689993,-21.009649 -34.899491,-21.160901 -34.936399,-21.377916 C -34.973306,-21.595064 -34.824201,-21.798926 -34.605173,-21.831136 L -30.290789,-22.46339 C -30.071761,-22.495331 -29.862262,-22.344079 -29.825355,-22.127065 z "
-             id="path8078" />
-          <path
-             style="fill:url(#linearGradient8102)"
-             d="M -34.887815,-23.22341 L -34.936533,-23.356678 C -34.97344,-23.573827 -34.824335,-23.777689 -34.605307,-23.809899 L -30.290923,-24.442153 C -30.071895,-24.474094 -29.882528,-24.396656 -29.845755,-24.179642 L -34.887815,-23.22341 z "
-             id="path8080" />
-          <path
-             style="fill:url(#linearGradient8104)"
-             d="M -34.880031,-22.220339 L -29.853136,-23.208244 C -29.889909,-23.425259 -30.071761,-23.484847 -30.290789,-23.452503 L -34.605173,-22.820249 C -34.824201,-22.788307 -34.973306,-22.584311 -34.936399,-22.367297 L -34.880031,-22.220339 z "
-             id="path8082" />
-          <path
-             style="fill:url(#linearGradient8106)"
-             d="M -34.853592,-21.194185 L -29.853002,-22.218594 C -29.889909,-22.435609 -30.071761,-22.495466 -30.290789,-22.46339 L -34.605173,-21.831136 C -34.824201,-21.798926 -34.973306,-21.595064 -34.936399,-21.377916 L -34.853592,-21.194185 z "
-             id="path8084" />
-          <path
-             style="fill:url(#linearGradient8108)"
-             d="M -28.589568,-32.601596 C -29.364217,-34.00152 -30.787895,-34.925676 -32.380944,-34.925676 C -33.973993,-34.925676 -35.397671,-34.00152 -36.17232,-32.601596 C -35.153681,-33.183656 -33.826767,-33.537429 -32.380944,-33.537429 C -30.935121,-33.537295 -29.608207,-33.183656 -28.589568,-32.601596 z "
-             id="path8086" />
-          <path
-             style="fill:#3f3f3f"
-             d="M -34.042707,-20.761364 L -30.719449,-20.761364 C -30.706297,-20.805384 -30.69462,-20.85021 -30.684823,-20.895572 L -34.077199,-20.895572 C -34.067402,-20.85021 -34.055726,-20.805384 -34.042707,-20.761364 z "
-             id="path8088" />
-        </g>
-        <ellipse
-           clip-path="url(#clipPath7503)"
-           transform="matrix(0.134208,0,0,0.134208,-41.03736,-36.195284)"
-           ry="60.116001"
-           rx="60.125"
-           cy="44.278999"
-           cx="64.5"
-           id="ellipse8090"
-           style="fill:url(#radialGradient8110)"
-           sodipodi:cx="64.5"
-           sodipodi:cy="44.278999"
-           sodipodi:rx="60.125"
-           sodipodi:ry="60.116001" />
-      </g>
-    </mask>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient8386"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_4_"
-       id="linearGradient8388"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient8470"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="75.5039"
-       y1="11.96"
-       x2="85.5969"
-       y2="36.3307" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_4_"
-       id="linearGradient8472"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-2.6725931e-2,-44.465488)"
-       x1="37.6743"
-       y1="25.6035"
-       x2="37.6743"
-       y2="47.5006" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask8432">
-      <g
-         style="overflow:visible"
-         id="g8434"
-         transform="matrix(0.1570828,0,0,0.1570828,-28.616402,11.0008)">
-        <path
-           id="path8436"
-           d="M 51.868,84.936 C 45.459,79.297 41.784,71.221 41.784,62.78 C 41.784,54.276 45.498,46.164 51.974,40.523 C 52.339,40.204 52.419,39.667 52.16,39.256 L 42.036,23.192 C 41.888,22.958 41.648,22.796 41.375,22.748 C 41.102,22.7 40.819,22.769 40.602,22.937 C 32.334,29.305 26.119,38.265 23.1,48.167 C 22.982,48.554 23.112,48.974 23.431,49.226 C 27.586,52.517 30.066,57.583 30.066,62.779 C 30.066,67.975 27.585,73.043 23.429,76.334 C 23.112,76.585 22.98,77.004 23.098,77.392 C 26.093,87.211 32.238,96.12 40.404,102.474 C 40.623,102.645 40.903,102.715 41.177,102.667 C 41.45,102.62 41.691,102.459 41.84,102.226 L 52.049,86.204 C 52.309,85.794 52.232,85.256 51.868,84.936 z M 12.803,50.223 C 5.732,50.223 0,55.951 0,63.016 C 0,70.081 5.732,75.81 12.803,75.81 C 19.874,75.81 25.606,70.081 25.606,63.016 C 25.606,55.951 19.874,50.223 12.803,50.223 z M 58.779,35.162 C 59.036,35.57 59.551,35.732 59.996,35.545 C 63.75,33.958 67.65,33.153 71.586,33.153 C 86.064,33.153 98.693,43.887 100.963,58.122 C 101.039,58.6 101.451,58.951 101.934,58.951 L 121.014,58.98 C 121.292,58.98 121.557,58.863 121.744,58.657 C 121.931,58.451 122.021,58.178 121.995,57.9 C 120.967,47.338 116.471,37.15 109.336,29.215 C 109.014,28.855 108.477,28.783 108.07,29.046 C 105.193,30.904 101.925,31.888 98.623,31.888 C 88.99,31.888 81.154,24.098 81.153,14.524 C 81.154,14.519 81.172,14.158 81.172,14.142 C 81.172,13.665 80.829,13.254 80.356,13.172 C 77.344,12.65 74.394,12.284 71.586,12.284 C 63.875,12.284 56.084,14.221 49.054,17.695 C 48.804,17.819 48.618,18.043 48.543,18.311 C 48.467,18.579 48.509,18.866 48.657,19.102 L 58.779,35.162 z M 98,27.5 C 104.908,27.5 110.51,21.902 110.51,15 C 110.51,8.096 104.908,2.5 98,2.5 C 91.092,2.5 85.49,8.096 85.49,15 C 85.49,21.902 91.092,27.5 98,27.5 z M 120.994,66.733 L 101.916,66.795 C 101.435,66.796 101.024,67.147 100.947,67.621 C 98.646,81.75 86.024,92.405 71.586,92.405 C 67.604,92.405 63.66,91.581 59.864,89.955 C 59.42,89.766 58.906,89.925 58.645,90.33 L 48.442,106.345 C 48.293,106.58 48.25,106.867 48.324,107.136 C 48.398,107.404 48.583,107.629 48.832,107.753 C 55.917,111.3 63.786,113.174 71.586,113.174 C 74.479,113.174 77.492,112.901 80.541,112.36 C 80.969,112.285 81.297,111.936 81.348,111.505 C 82.364,102.73 89.791,96.112 98.623,96.112 C 101.361,96.112 104.147,96.81 106.679,98.13 C 107.064,98.331 107.533,98.257 107.838,97.946 C 115.823,89.803 120.846,79.104 121.978,67.817 C 122.006,67.54 121.915,67.264 121.727,67.057 C 121.539,66.85 121.272,66.732 120.994,66.733 z M 98.486,100.545 C 91.415,100.545 85.682,106.242 85.682,113.273 C 85.682,120.302 91.414,126.001 98.486,126.001 C 105.556,126.001 111.289,120.303 111.289,113.273 C 111.289,106.242 105.557,100.545 98.486,100.545 z "
-           style="opacity:0.2;fill:#141414;fill-rule:evenodd" />
-        <path
-           id="path8438"
-           d="M 51.868,85.936 C 45.459,80.297 41.784,72.221 41.784,63.78 C 41.784,55.276 45.498,47.164 51.974,41.523 C 52.339,41.204 52.419,40.667 52.16,40.256 L 42.036,24.192 C 41.888,23.958 41.648,23.796 41.375,23.748 C 41.102,23.7 40.819,23.769 40.602,23.937 C 32.334,30.305 26.119,39.265 23.1,49.167 C 22.982,49.554 23.112,49.974 23.431,50.226 C 27.586,53.517 30.066,58.583 30.066,63.779 C 30.066,68.975 27.585,74.043 23.429,77.334 C 23.112,77.585 22.98,78.004 23.098,78.392 C 26.093,88.211 32.238,97.12 40.404,103.474 C 40.623,103.645 40.903,103.715 41.177,103.667 C 41.45,103.62 41.691,103.459 41.84,103.226 L 52.049,87.204 C 52.309,86.794 52.232,86.256 51.868,85.936 z M 12.803,51.223 C 5.732,51.223 0,56.951 0,64.016 C 0,71.081 5.732,76.81 12.803,76.81 C 19.874,76.81 25.606,71.081 25.606,64.016 C 25.606,56.951 19.874,51.223 12.803,51.223 z M 58.779,36.162 C 59.036,36.57 59.551,36.732 59.996,36.545 C 63.75,34.958 67.65,34.153 71.586,34.153 C 86.064,34.153 98.693,44.887 100.963,59.122 C 101.039,59.6 101.451,59.951 101.934,59.951 L 121.014,59.98 C 121.292,59.98 121.557,59.863 121.744,59.657 C 121.931,59.451 122.021,59.178 121.995,58.9 C 120.967,48.338 116.471,38.15 109.336,30.215 C 109.014,29.855 108.477,29.783 108.07,30.046 C 105.193,31.904 101.925,32.888 98.623,32.888 C 88.99,32.888 81.154,25.098 81.153,15.524 C 81.154,15.519 81.172,15.158 81.172,15.142 C 81.172,14.665 80.829,14.254 80.356,14.172 C 77.344,13.65 74.394,13.284 71.586,13.284 C 63.875,13.284 56.084,15.221 49.054,18.695 C 48.804,18.819 48.618,19.043 48.543,19.311 C 48.467,19.579 48.509,19.866 48.657,20.102 L 58.779,36.162 z M 98,28.5 C 104.908,28.5 110.51,22.902 110.51,16 C 110.51,9.096 104.908,3.5 98,3.5 C 91.092,3.5 85.49,9.096 85.49,16 C 85.49,22.902 91.092,28.5 98,28.5 z M 120.994,67.733 L 101.916,67.795 C 101.435,67.796 101.024,68.147 100.947,68.621 C 98.646,82.75 86.024,93.405 71.586,93.405 C 67.604,93.405 63.66,92.581 59.864,90.955 C 59.42,90.766 58.906,90.925 58.645,91.33 L 48.442,107.345 C 48.293,107.58 48.25,107.867 48.324,108.136 C 48.398,108.404 48.583,108.629 48.832,108.753 C 55.917,112.3 63.786,114.174 71.586,114.174 C 74.479,114.174 77.492,113.901 80.541,113.36 C 80.969,113.285 81.297,112.936 81.348,112.505 C 82.364,103.73 89.791,97.112 98.623,97.112 C 101.361,97.112 104.147,97.81 106.679,99.13 C 107.064,99.331 107.533,99.257 107.838,98.946 C 115.823,90.803 120.846,80.104 121.978,68.817 C 122.006,68.54 121.915,68.264 121.727,68.057 C 121.539,67.85 121.272,67.732 120.994,67.733 z M 98.486,101.545 C 91.415,101.545 85.682,107.242 85.682,114.273 C 85.682,121.302 91.414,127.001 98.486,127.001 C 105.556,127.001 111.289,121.303 111.289,114.273 C 111.289,107.242 105.557,101.545 98.486,101.545 z "
-           style="opacity:0.2;fill:#141414;fill-rule:evenodd" />
-        <path
-           id="path8440"
-           d="M 51.868,86.936 C 45.459,81.297 41.784,73.221 41.784,64.78 C 41.784,56.276 45.498,48.164 51.974,42.523 C 52.339,42.204 52.419,41.667 52.16,41.256 L 42.036,25.192 C 41.888,24.958 41.648,24.796 41.375,24.748 C 41.102,24.7 40.819,24.769 40.602,24.937 C 32.334,31.305 26.119,40.265 23.1,50.167 C 22.982,50.554 23.112,50.974 23.431,51.226 C 27.586,54.517 30.066,59.583 30.066,64.779 C 30.066,69.975 27.585,75.043 23.429,78.334 C 23.112,78.585 22.98,79.004 23.098,79.392 C 26.093,89.211 32.238,98.12 40.404,104.474 C 40.623,104.645 40.903,104.715 41.177,104.667 C 41.45,104.62 41.691,104.459 41.84,104.226 L 52.049,88.204 C 52.309,87.794 52.232,87.256 51.868,86.936 z M 12.803,52.223 C 5.732,52.223 0,57.951 0,65.016 C 0,72.081 5.732,77.81 12.803,77.81 C 19.874,77.81 25.606,72.081 25.606,65.016 C 25.606,57.951 19.874,52.223 12.803,52.223 z M 58.779,37.162 C 59.036,37.57 59.551,37.732 59.996,37.545 C 63.75,35.958 67.65,35.153 71.586,35.153 C 86.064,35.153 98.693,45.887 100.963,60.122 C 101.039,60.6 101.451,60.951 101.934,60.951 L 121.014,60.98 C 121.292,60.98 121.557,60.863 121.744,60.657 C 121.931,60.451 122.021,60.178 121.995,59.9 C 120.967,49.338 116.471,39.15 109.336,31.215 C 109.014,30.855 108.477,30.783 108.07,31.046 C 105.193,32.904 101.925,33.888 98.623,33.888 C 88.99,33.888 81.154,26.098 81.153,16.524 C 81.154,16.519 81.172,16.158 81.172,16.142 C 81.172,15.665 80.829,15.254 80.356,15.172 C 77.344,14.65 74.394,14.284 71.586,14.284 C 63.875,14.284 56.084,16.221 49.054,19.695 C 48.804,19.819 48.618,20.043 48.543,20.311 C 48.467,20.579 48.509,20.866 48.657,21.102 L 58.779,37.162 z M 98,29.5 C 104.908,29.5 110.51,23.902 110.51,17 C 110.51,10.096 104.908,4.5 98,4.5 C 91.092,4.5 85.49,10.096 85.49,17 C 85.49,23.902 91.092,29.5 98,29.5 z M 120.994,68.733 L 101.916,68.795 C 101.435,68.796 101.024,69.147 100.947,69.621 C 98.646,83.75 86.024,94.405 71.586,94.405 C 67.604,94.405 63.66,93.581 59.864,91.955 C 59.42,91.766 58.906,91.925 58.645,92.33 L 48.442,108.345 C 48.293,108.58 48.25,108.867 48.324,109.136 C 48.398,109.404 48.583,109.629 48.832,109.753 C 55.917,113.3 63.786,115.174 71.586,115.174 C 74.479,115.174 77.492,114.901 80.541,114.36 C 80.969,114.285 81.297,113.936 81.348,113.505 C 82.364,104.73 89.791,98.112 98.623,98.112 C 101.361,98.112 104.147,98.81 106.679,100.13 C 107.064,100.331 107.533,100.257 107.838,99.946 C 115.823,91.803 120.846,81.104 121.978,69.817 C 122.006,69.54 121.915,69.264 121.727,69.057 C 121.539,68.85 121.272,68.732 120.994,68.733 z M 98.486,102.545 C 91.415,102.545 85.682,108.242 85.682,115.273 C 85.682,122.302 91.414,128.001 98.486,128.001 C 105.556,128.001 111.289,122.303 111.289,115.273 C 111.289,108.242 105.557,102.545 98.486,102.545 z "
-           style="opacity:0.2;fill:#141414;fill-rule:evenodd" />
-        <path
-           id="path8442"
-           d="M 40.602,21.938 C 32.334,28.306 26.119,37.266 23.1,47.168 C 22.982,47.555 23.112,47.975 23.431,48.227 C 27.586,51.518 30.066,56.584 30.066,61.78 C 30.066,66.976 27.585,72.044 23.429,75.335 C 23.112,75.586 22.98,76.005 23.098,76.393 C 26.093,86.212 32.238,95.121 40.404,101.475 C 40.623,101.646 40.903,101.716 41.177,101.668 C 41.45,101.621 41.691,101.46 41.84,101.227 L 52.049,85.205 C 52.31,84.796 52.234,84.258 51.869,83.937 C 45.46,78.298 41.785,70.222 41.785,61.781 C 41.785,53.277 45.499,45.165 51.975,39.524 C 52.34,39.205 52.42,38.668 52.161,38.257 L 42.036,22.192 C 41.888,21.958 41.648,21.796 41.375,21.748 C 41.102,21.7 40.819,21.769 40.602,21.938 z "
-           style="fill:#f97a00" />
-        <path
-           id="path8444"
-           d="M 24.042,47.455 C 28.431,50.932 31.051,56.219 31.051,61.779 C 31.051,67.339 28.43,72.628 24.04,76.104 C 26.991,85.785 32.981,94.45 41.008,100.697 C 42.028,99.097 50.449,85.879 51.217,84.674 C 44.602,78.854 40.799,70.574 40.799,61.779 C 40.799,52.92 44.642,44.603 51.327,38.78 C 50.565,37.572 42.215,24.322 41.203,22.717 C 33.076,28.978 27.018,37.694 24.042,47.455 z "
-           style="fill:#fb8b00" />
-        <ellipse
-           id="ellipse8446"
-           ry="12.794"
-           rx="12.803"
-           cy="62.015999"
-           cx="12.803"
-           style="fill:#f83011;fill-rule:evenodd"
-           sodipodi:cx="12.803"
-           sodipodi:cy="62.015999"
-           sodipodi:rx="12.803"
-           sodipodi:ry="12.794" />
-        <path
-           id="path8448"
-           d="M 0.984,62.016 C 0.984,68.528 6.286,73.827 12.802,73.827 C 19.318,73.827 24.62,68.528 24.62,62.016 C 24.62,55.504 19.318,50.206 12.802,50.206 C 6.286,50.206 0.984,55.504 0.984,62.016 z "
-           style="fill:#f83011;fill-rule:evenodd" />
-        <path
-           id="path8450"
-           d="M 49.054,16.696 C 48.804,16.82 48.618,17.044 48.543,17.312 C 48.467,17.58 48.509,17.867 48.657,18.103 L 58.779,34.162 C 59.036,34.57 59.551,34.732 59.996,34.545 C 63.75,32.958 67.65,32.153 71.586,32.153 C 86.064,32.153 98.693,42.887 100.963,57.122 C 101.039,57.6 101.451,57.951 101.934,57.951 L 121.014,57.98 C 121.292,57.98 121.557,57.863 121.744,57.657 C 121.931,57.451 122.021,57.178 121.995,56.9 C 120.967,46.338 116.471,36.15 109.336,28.215 C 109.014,27.855 108.477,27.783 108.07,28.046 C 105.193,29.904 101.925,30.888 98.623,30.888 C 88.99,30.888 81.154,23.098 81.153,13.524 C 81.154,13.519 81.172,13.158 81.172,13.142 C 81.172,12.665 80.829,12.254 80.356,12.172 C 77.344,11.65 74.394,11.284 71.586,11.284 C 63.875,11.285 56.084,13.222 49.054,16.696 z "
-           style="fill:#f13b00" />
-        <path
-           id="path8452"
-           d="M 49.491,17.578 C 50.527,19.223 58.856,32.437 59.613,33.639 C 63.439,32.022 67.458,31.17 71.587,31.17 C 86.704,31.17 99.583,42.205 101.937,56.968 C 103.373,56.97 119.109,56.993 121.017,56.996 C 120.004,46.605 115.636,36.693 108.606,28.873 C 105.609,30.81 102.191,31.872 98.625,31.872 C 88.449,31.872 80.17,23.641 80.17,13.523 C 80.17,13.523 80.18,13.313 80.189,13.142 C 77.356,12.65 74.471,12.268 71.588,12.268 C 63.928,12.269 56.327,14.199 49.491,17.578 z "
-           style="fill:#f13b00" />
-        <ellipse
-           id="ellipse8454"
-           ry="12.5"
-           rx="12.51"
-           cy="14"
-           cx="98"
-           style="fill:#e00916;fill-rule:evenodd"
-           sodipodi:cx="98"
-           sodipodi:cy="14"
-           sodipodi:rx="12.51"
-           sodipodi:ry="12.5" />
-        <path
-           id="path8456"
-           d="M 86.992,14 C 86.992,20.065 91.93,25 98,25 C 104.07,25 109.008,20.065 109.008,14 C 109.008,7.935 104.07,3 98,3 C 91.93,3 86.992,7.935 86.992,14 z "
-           style="fill:#e56363;fill-rule:evenodd" />
-        <path
-           id="path8458"
-           d="M 120.994,65.733 L 101.916,65.795 C 101.435,65.796 101.024,66.147 100.947,66.621 C 98.646,80.75 86.024,91.405 71.586,91.405 C 67.604,91.405 63.66,90.581 59.864,88.955 C 59.42,88.766 58.906,88.925 58.645,89.33 L 48.442,105.345 C 48.293,105.58 48.25,105.867 48.324,106.136 C 48.398,106.404 48.583,106.629 48.832,106.753 C 55.917,110.3 63.786,112.174 71.586,112.174 C 74.479,112.174 77.492,111.901 80.541,111.36 C 80.969,111.285 81.297,110.936 81.348,110.505 C 82.364,101.73 89.791,95.112 98.623,95.112 C 101.361,95.112 104.147,95.81 106.679,97.13 C 107.064,97.331 107.533,97.257 107.838,96.946 C 115.823,88.803 120.846,78.104 121.978,66.817 C 122.006,66.54 121.915,66.264 121.727,66.057 C 121.539,65.85 121.272,65.732 120.994,65.733 z "
-           style="fill:#d40000" />
-        <ellipse
-           id="ellipse8460"
-           ry="12.728"
-           rx="12.803"
-           cy="112.272"
-           cx="98.486"
-           style="fill:#ff7516;fill-rule:evenodd"
-           sodipodi:cx="98.486"
-           sodipodi:cy="112.272"
-           sodipodi:rx="12.803"
-           sodipodi:ry="12.728" />
-        <path
-           id="path8462"
-           d="M 86.844,112.272 C 86.844,118.651 92.067,123.841 98.487,123.841 C 104.907,123.841 110.13,118.651 110.13,112.272 C 110.13,105.893 104.907,100.703 98.487,100.703 C 92.067,100.703 86.844,105.894 86.844,112.272 z "
-           style="fill:#fb9200;fill-rule:evenodd" />
-        <path
-           id="path8464"
-           d="M 49.785,17.67 C 50.008,18.024 59.527,33.127 59.695,33.395 C 63.548,31.791 67.547,30.969 71.586,30.969 C 78.265,30.969 84.635,33.086 90.02,37.08 C 90.155,37.07 103.667,36.099 103.667,36.099 C 103.667,36.099 112.654,35.447 113.294,35.4 C 111.865,33.167 110.392,31.264 108.67,29.337 C 105.639,31.256 102.097,32.173 98.623,32.173 C 88.337,32.173 79.969,23.752 79.969,13.525 C 79.969,13.519 79.973,13.418 79.979,13.318 C 77.094,12.827 74.27,12.47 71.586,12.47 C 64.13,12.469 56.6,14.34 49.785,17.67 z "
-           style="fill:url(#linearGradient8470);fill-rule:evenodd" />
-        <path
-           id="path8466"
-           d="M 24.274,47.396 C 26.599,49.268 28.451,51.682 29.658,54.398 C 34.14,51.488 38.459,49.95 43.889,47.772 C 45.598,44.761 48.481,41.04 51.074,38.755 C 50.915,38.503 41.39,23.39 41.155,23.017 C 33.202,29.201 27.214,37.844 24.274,47.396 z "
-           style="fill:url(#linearGradient8472);fill-rule:evenodd" />
-        <path
-           id="path8468"
-           d="M 23.732,58.691 C 22.313,53.996 17.948,50.566 12.794,50.566 C 6.493,50.566 1.367,55.689 1.367,61.985 C 1.367,66.015 3.469,69.565 6.633,71.597 C 11.926,67.035 17.919,62.755 23.732,58.691 z "
-           style="fill:#f88657;fill-rule:evenodd" />
-      </g>
-    </mask>
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-height="627"
-     inkscape:window-width="910"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="7.2055766"
-     inkscape:cx="35.602016"
-     inkscape:cy="22.962506"
-     inkscape:window-x="238"
-     inkscape:window-y="96"
-     inkscape:current-layer="svg2254"
-     showguides="true"
-     inkscape:guide-bbox="true">
-    <sodipodi:guide
-       orientation="horizontal"
-       position="0"
-       id="guide4273" />
-    <sodipodi:guide
-       orientation="horizontal"
-       position="48"
-       id="guide4275" />
-    <sodipodi:guide
-       orientation="vertical"
-       position="0"
-       id="guide4437" />
-    <sodipodi:guide
-       orientation="vertical"
-       position="48"
-       id="guide4439" />
-  </sodipodi:namedview>
-  <rect
-     style="fill:url(#linearGradient4371);fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-     id="rect4011"
-     width="47.866001"
-     height="47.866001"
-     x="-48"
-     y="-47.866001"
-     transform="scale(-1,-1)"
-     inkscape:export-filename="/home/matt/eclipse33/eclipse-icon-bulb.png"
-     inkscape:export-xdpi="90"
-     inkscape:export-ydpi="90" />
-  <rect
-     style="fill:url(#linearGradient4368);fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-     id="rect3016"
-     width="45.866379"
-     height="45.866383"
-     x="1.1343775"
-     y="1.048512" />
-  <path
-     sodipodi:type="arc"
-     style="opacity:1;fill:#c88cbb;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-     id="path4033"
-     sodipodi:cx="-30.021633"
-     sodipodi:cy="23.982693"
-     sodipodi:rx="20.014421"
-     sodipodi:ry="20.014421"
-     d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1  -50.036055,23.982693 A 20.014421 20.014421 0 1 1  -10.007212 23.982693 z"
-     transform="translate(53.070541,-2.5560054e-2)" />
-  <path
-     sodipodi:type="arc"
-     style="opacity:1;fill:url(#linearGradient4041);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-     id="path4031"
-     sodipodi:cx="-30.021633"
-     sodipodi:cy="23.982693"
-     sodipodi:rx="20.014421"
-     sodipodi:ry="20.014421"
-     d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1  -50.036055,23.982693 A 20.014421 20.014421 0 1 1  -10.007212 23.982693 z"
-     transform="translate(55.071984,-2.5560054e-2)" />
-  <path
-     sodipodi:type="arc"
-     style="opacity:1;fill:#fffffa;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4267)"
-     id="path4043"
-     sodipodi:cx="-38.944729"
-     sodipodi:cy="15.643351"
-     sodipodi:rx="8.9230967"
-     sodipodi:ry="8.8397036"
-     d="M -30.021632 15.643351 A 8.9230967 8.8397036 0 1 1  -47.867826,15.643351 A 8.9230967 8.8397036 0 1 1  -30.021632 15.643351 z"
-     transform="matrix(1.2616822,0,0,1.1226415,62.529072,-5.2595765)"
-     mask="url(#mask4181)" />
-  <g
-     id="g4417"
-     clip-path="url(#clipPath4423)"
-     transform="translate(50.116184,2.1870546e-2)">
-    <path
-       transform="translate(1.387814,-0.4734046)"
-       clip-path="none"
-       id="path4279"
-       d="M -47.32329,19.312662 L -6.0456207,19.312662"
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4429);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       transform="translate(1.387814,-0.4734046)"
-       clip-path="none"
-       id="path4281"
-       d="M -47.32329,22.48125 L -6.045621,22.48125"
-       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4431);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       transform="translate(1.387814,-0.4734046)"
-       clip-path="none"
-       id="path4283"
-       d="M -47.32329,25.482334 L -6.0456207,25.482334"
-       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4433);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       transform="translate(1.387814,-0.4734046)"
-       clip-path="none"
-       id="path4285"
-       d="M -47.32329,28.481612 L -6.0456207,28.481612"
-       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4435);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-  </g>
-</svg>
diff --git a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/rap-client.js b/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/rap-client.js
deleted file mode 100644
index 58cddd6..0000000
--- a/tests/org.eclipse.draw2d.test/workspace/.metadata/.plugins/org.eclipse.rap.ui/context/rwt-resources/rap-client.js
+++ /dev/null
@@ -1,74778 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2012 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-/*global qxsettings:true, qxvariants:true*/
-
-if( typeof qxsettings === "undefined" ) {
-  qxsettings = {};
-  qxvariants = {};
-  qxvariants[ "qx.debug" ] = "on";
-}
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/*global rwt:true, namespace:true*/
-
-rwt = {};
-
-rwt.qx = {
-
-  /**
-   * Bootstrap rwt.qx.Class to create myself later
-   * This is needed for the API browser etc. to let them detect me
-   */
-  Class : {
-
-    /**
-     * Create namespace.
-     * Replaced after bootstrapping phase by {@link rwt.qx.Class#createNamespace}.
-     *
-     * @type map
-     * @param name {var} TODOC
-     * @param object {var} TODOC
-     * @return {var} TODOC
-     */
-    createNamespace : function( name, object ) {
-      var splits = name.split( "." );
-      var parent = window;
-      var part = splits[ 0 ];
-
-      for( var i = 0, len = splits.length - 1; i < len; i++, part = splits[ i ] ) {
-        if( !parent[ part ] ) {
-          parent = parent[ part ] = {};
-        } else {
-          parent = parent[ part ];
-        }
-      }
-
-      // store object
-      parent[ part ] = object;
-
-      // return last part name (e.g. classname)
-      return part;
-    },
-
-    /**
-     * Define class.
-     * Replaced after bootstrapping phase by {@link rwt.qx.Class#define}.
-     *
-     * @type map
-     * @param name {var} TODOC
-     * @param config {var} TODOC
-     * @return {void}
-     */
-    define : function (name, config ) {
-      if( !config ) {
-        var config = { statics : {} };
-      }
-
-      this.createNamespace( name, config.statics );
-
-      if( config.defer ) {
-        config.defer( config.statics );
-      }
-
-      // Store class reference in global class registry
-      rwt.runtime.Bootstrap.__registry[ name ] = config.statics;
-    }
-  }
-};
-
-/**
- * Internal class that is responsible for bootstrapping the qooxdoo
- * framework at load time.
- *
- * Automatically loads JavaScript language fixes, core logging possibilities
- * and language addons for arrays, strings, etc.
- */
-rwt.qx.Class.define( "rwt.runtime.Bootstrap", {
-
-  statics : {
-
-    /** Timestamp of qooxdoo based application startup */
-    LOADSTART : new Date(),
-
-    /**
-     * Returns the current timestamp
-     *
-     * @type static
-     * @return {Integer} Current timestamp (milliseconds)
-     */
-    time : function() {
-      return new Date().getTime();
-    },
-
-    /**
-     * Returns the time since initialisation
-     *
-     * @type static
-     * @return {Integer} milliseconds since load
-     */
-    since : function() {
-      return this.time() - this.LOADSTART;
-    },
-
-    /** Stores all defined classes */
-    __registry : {}
-  }
-} );
-
-var namespace = function( value ) {
-  rwt.qx.Class.createNamespace( value, {} );
-};
-
-/*******************************************************************************
- *  Copyright: 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                        and EclipseSource
- *
- * 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-if (!Error.prototype.toString || Error.prototype.toString() == "[object Error]")
-{
-  /**
-   * Some browsers (e.g. Internet Explorer) do not support to stringify
-   * error objects like other browsers usually do. This feature is added to
-   * those browsers.
-   *
-   * @type member
-   * @return {var} TODOC
-   */
-  Error.prototype.toString = function() {
-    return this.message;
-  };
-}
-
-if (!Array.prototype.indexOf)
-{
-  /**
-   * Returns the first index at which a given element can be found in the array,
-   * or <code>-1</code> if it is not present. It compares <code>searchElement</code> to elements of the Array
-   * using strict equality (the same method used by the <code>===</code>, or
-   * triple-equals, operator).
-   *
-   * Natively supported in Gecko since version 1.8.
-   * http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:indexOf
-   *
-   * @type member
-   * @param searchElement {var} Element to locate in the array.
-   * @param fromIndex {Integer} The index at which to begin the search. Defaults to 0, i.e. the whole
-   *         array will be searched. If the index is greater than or equal to the length of the array,
-   *         <code>-1</code> is returned, i.e. the array will not be searched. If negative, it is taken as the
-   *         offset from the end of the array. Note that even when the index is negative, the array is still
-   *         searched from front to back. If the calculated index is less than 0, the whole array will be searched.
-   * @return {var} TODOC
-   */
-  Array.prototype.indexOf = function(searchElement, fromIndex)
-  {
-    if (fromIndex == null) {
-      fromIndex = 0;
-    } else if (fromIndex < 0) {
-      fromIndex = Math.max(0, this.length + fromIndex);
-    }
-
-    for (var i=fromIndex; i<this.length; i++)
-    {
-      if (this[i] === searchElement) {
-        return i;
-      }
-    }
-
-    return -1;
-  };
-}
-
-if( /iPad|iPhone|iPod/.test( navigator.userAgent ) && /Version\/6/.test( navigator.userAgent ) ) {
-
-// From https://gist.github.com/ronkorving/3755461:
-(function (window) {
-
-        // This library re-implements setTimeout, setInterval, clearTimeout, clearInterval for iOS6.
-        // iOS6 suffers from a bug that kills timers that are created while a page is scrolling.
-        // This library fixes that problem by recreating timers after scrolling finishes (with interval correction).
-    // This code is free to use by anyone (MIT, blabla).
-    // Author: rkorving@wizcorp.jp
-
-        var timeouts = {};
-        var intervals = {};
-        var orgSetTimeout = window.setTimeout;
-        var orgSetInterval = window.setInterval;
-        var orgClearTimeout = window.clearTimeout;
-        var orgClearInterval = window.clearInterval;
-
-
-        function createTimer(set, map, args) {
-                var id, cb = args[0], repeat = (set === orgSetInterval);
-
-                function callback() {
-                        if (cb) {
-                                cb.apply(window, arguments);
-
-                                if (!repeat) {
-                                        delete map[id];
-                                        cb = null;
-                                }
-                        }
-                }
-
-                args[0] = callback;
-
-                id = set.apply(window, args);
-
-                map[id] = { args: args, created: Date.now(), cb: cb, id: id };
-
-                return id;
-        }
-
-
-        function resetTimer(set, clear, map, virtualId, correctInterval) {
-                var timer = map[virtualId];
-
-                if (!timer) {
-                        return;
-                }
-
-                var repeat = (set === orgSetInterval);
-
-                // cleanup
-
-                clear(timer.id);
-
-                // reduce the interval (arg 1 in the args array)
-
-                if (!repeat) {
-                        var interval = timer.args[1];
-
-                        var reduction = Date.now() - timer.created;
-                        if (reduction < 0) {
-                                reduction = 0;
-                        }
-
-                        interval -= reduction;
-                        if (interval < 0) {
-                                interval = 0;
-                        }
-
-                        timer.args[1] = interval;
-                }
-
-                // recreate
-
-                function callback() {
-                        if (timer.cb) {
-                                timer.cb.apply(window, arguments);
-                                if (!repeat) {
-                                        delete map[virtualId];
-                                        timer.cb = null;
-                                }
-                        }
-                }
-
-                timer.args[0] = callback;
-                timer.created = Date.now();
-                timer.id = set.apply(window, timer.args);
-        }
-
-
-        window.setTimeout = function () {
-                return createTimer(orgSetTimeout, timeouts, arguments);
-        };
-
-
-        window.setInterval = function () {
-                return createTimer(orgSetInterval, intervals, arguments);
-        };
-
-        window.clearTimeout = function (id) {
-                var timer = timeouts[id];
-
-                if (timer) {
-                        delete timeouts[id];
-                        orgClearTimeout(timer.id);
-                }
-        };
-
-        window.clearInterval = function (id) {
-                var timer = intervals[id];
-
-                if (timer) {
-                        delete intervals[id];
-                        orgClearInterval(timer.id);
-                }
-        };
-
-        window.addEventListener('scroll', function () {
-                // recreate the timers using adjusted intervals
-                // we cannot know how long the scroll-freeze lasted, so we cannot take that into account
-
-                var virtualId;
-
-                for (virtualId in timeouts) {
-                        resetTimer(orgSetTimeout, orgClearTimeout, timeouts, virtualId);
-                }
-
-                for (virtualId in intervals) {
-                        resetTimer(orgSetInterval, orgClearInterval, intervals, virtualId);
-                }
-        });
-
-}(window));
-
-}
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Helper functions for arrays.
- *
- * The native JavaScript Array is not modified by this class. However,
- * there are modifications to the native Array in {@link qx.lang.Core} for
- * browsers that do not support certain JavaScript 1.6 features natively .
- *
- * The string/array generics introduced in JavaScript 1.6 are supported by
- * {@link qx.lang.Generics}.
- */
-rwt.qx.Class.define("rwt.util.Arrays",
-{
-  statics :
-  {
-    /**
-     * Convert an arguments object into an array
-     *
-     * @type static
-     * @param args {arguments} arguments object
-     * @return {Array} a newly created array (copy) with the content of the arguments object.
-     */
-    fromArguments : function(args) {
-      return Array.prototype.slice.call(args, 0);
-    },
-
-    /**
-     * Expand shorthand definition to a four element list.
-     * This is an utility function for padding/margin and all other shorthand handling.
-     *
-     * @type static
-     * @param input {Array} array with one to four elements
-     * @return {Array} an array with four elements
-     */
-    fromShortHand : function( input ) {
-      var len = input.length;
-      if( len === 0 || len > 4 ) {
-        throw new Error( "Invalid number of arguments!" );
-      }
-      var result = rwt.util.Arrays.copy(input);
-      if( len === 1 ) {
-        result[1] = result[2] = result[3] = result[0];
-      } else if( len === 2 ) {
-        result[2] = result[0];
-        result[3] = result[1];
-      } else if( len === 3 ) {
-        result[3] = result[1];
-      }
-      return result;
-    },
-
-
-    /**
-     * Return a copy of the given array
-     *
-     * @type static
-     * @param arr {Array} the array to copy
-     * @return {Array} copy of the array
-     */
-    copy : function(arr) {
-      return arr.concat();
-    },
-
-    /**
-     * Return the last element of an array
-     *
-     * @type static
-     * @param arr {Array} the array
-     * @return {var} the last element of the array
-     */
-    getLast : function(arr) {
-      return arr[arr.length - 1];
-    },
-
-
-    /**
-     * Return the first element of an array
-     *
-     * @type static
-     * @param arr {Array} the array
-     * @return {var|null} the first element of the array
-     */
-    getFirst : function(arr) {
-      return arr[0];
-    },
-
-
-    /**
-     * Insert an element at a given position into the array
-     *
-     * @type static
-     * @param arr {Array} the array
-     * @param obj {var} the element to insert
-     * @param i {Integer} position where to insert the element into the array
-     * @return {Array} the array
-     */
-    insertAt : function(arr, obj, i)
-    {
-      arr.splice(i, 0, obj);
-
-      return arr;
-    },
-
-    /**
-     * Remove an element from the array at the given index
-     *
-     * @type static
-     * @param arr {Array} the array
-     * @param i {Integer} index of the element to be removed
-     * @return {var} The removed element.
-     */
-    removeAt : function(arr, i) {
-      return arr.splice(i, 1)[0];
-    },
-
-
-    /**
-     * Remove an element from the array
-     *
-     * @type static
-     * @param arr {Array} the array
-     * @param obj {var} element to be removed from the array
-     * @return {Array} the removed element
-     */
-    remove : function(arr, obj)
-    {
-      var i = arr.indexOf(obj);
-
-      if (i != -1)
-      {
-        arr.splice(i, 1);
-        return obj;
-      }
-    },
-
-
-    /**
-     * Whether the array contains the given element
-     *
-     * @type static
-     * @param arr {Array} the array
-     * @param obj {var} object to look for
-     * @return {Boolean} whether the array contains the element
-     */
-    contains : function(arr, obj) {
-      return arr.indexOf(obj) != -1;
-    }
-
-
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Manage variants of source code. May it be for different debug options,
- * browsers or other environment flags.
- *
- * Variants enable the selection and removal of code from the build version.
- * A variant consists of a collection of states from which exactly one is active
- * at load time of the framework. The global map <code>qxvariants</code> can be
- * used to select a variant before the Framework is loades.
- *
- * Depending on the selected variant a specific code
- * path can be choosen using the <code>select</code> method. The generator is
- * able to set a variant and remove all code paths which are
- * not selected by the variant.
- *
- * Variants are used to implement browser optimized builds and to remove
- * debugging code from the build version. It is very similar to conditional
- * compilation in C/C++.
- */
-
-/*global qxvariants:false*/
-
-rwt.qx.Class.define("rwt.util.Variant",
-{
-  statics :
-  {
-    /** {Map} stored variants */
-    __variants : {},
-
-
-    /** {Map} cached results */
-    __cache : {},
-
-
-    /**
-     * Pseudo function as replacement for isSet() which will only be handled by the optimizer
-     *
-     * @return {Boolean}
-     */
-    compilerIsSet : function() {
-      return true;
-    },
-
-
-    /**
-     * Define a variant
-     *
-     * @param key {String} An Unique key for the variant. The key must be prefixed with a
-     *   namespace identifier (e.g. <code>"qx.debug"</code>)
-     * @param allowedValues {String[]} An array of all allowed values for this variant.
-     * @param defaultValue {String} Default value for the variant. Must be one of the values
-     *   defined in <code>defaultValues</code>.
-     */
-    define : function(key, allowedValues, defaultValue)
-    {
-      if (rwt.util.Variant.compilerIsSet("qx.debug", "on"))
-      {
-        if (!this.__isValidArray(allowedValues)) {
-          throw new Error('Allowed values of variant "' + key + '" must be defined!');
-        }
-
-        if (defaultValue === undefined) {
-          throw new Error('Default value of variant "' + key + '" must be defined!');
-        }
-      }
-
-      if (!this.__variants[key])
-      {
-        this.__variants[key] = {};
-      }
-      else if (rwt.util.Variant.compilerIsSet("qx.debug", "on"))
-      {
-        if (this.__variants[key].defaultValue !== undefined) {
-          throw new Error('Variant "' + key + '" is already defined!');
-        }
-      }
-
-      this.__variants[key].allowedValues = allowedValues;
-      this.__variants[key].defaultValue = defaultValue;
-    },
-
-
-    /**
-     * Get the current value of a variant.
-     *
-     * @param key {String} name of the variant
-     * @return {String} current value of the variant
-     */
-    get : function(key)
-    {
-      var data = this.__variants[key];
-
-      if (rwt.util.Variant.compilerIsSet("qx.debug", "on"))
-      {
-        if (data === undefined) {
-          throw new Error('Variant "' + key + '" is not defined.');
-        }
-      }
-
-      if (data.value !== undefined) {
-        return data.value;
-      }
-
-      return data.defaultValue;
-    },
-
-
-    /**
-     * Import settings from global qxvariants into current environment
-     *
-     * @return {void}
-     */
-    __init : function()
-    {
-      if (window.qxvariants)
-      {
-        for (var key in qxvariants)
-        {
-          if (rwt.util.Variant.compilerIsSet("qx.debug", "on"))
-          {
-            if ((key.split(".")).length < 2) {
-              throw new Error('Malformed settings key "' + key + '". Must be following the schema "namespace.key".');
-            }
-          }
-
-          if (!this.__variants[key]) {
-            this.__variants[key] = {};
-          }
-
-          this.__variants[key].value = qxvariants[key];
-        }
-
-        window.qxvariants = undefined;
-
-        try {
-          delete window.qxvariants;
-        } catch( ex ) {
-        }
-      }
-    },
-
-    /**
-     * Select a function depending on the value of the variant.
-     *
-     * Example:
-     *
-     * <pre class='javascript'>
-     * var f = qx.Variant.select("qx.client", {
-     *   "gecko": fucntion() { ... },
-     *   "mshtml|opera": function() { ... },
-     *   "default": function() { ... }
-     * });
-     * </pre>
-     *
-     * Depending on the value of the <code>"qx.client"</code> variant whit will select the
-     * corresponding function. The first case is selected if the variant is "gecko", the second
-     * is selected if the variant is "mshtml" or "opera" and the third function is selected if
-     * none of the other keys match the variant. "default" is the default case.
-     *
-     * @param key {String} name of the variant. To enable the generator to optimize
-     *   this selection, the key must be a string literal.
-     * @param variantFunctionMap {Map} map with variant names as keys and functions as values.
-     * @return {Function} The selected function from the map.
-     */
-    select : function(key, variantFunctionMap)
-    {
-      if (rwt.util.Variant.compilerIsSet("qx.debug", "on"))
-      {
-        // WARINING: all changes to this function must be duplicated in the generator!!
-        // modules/variantoptimizer.py (processVariantSelect)
-        if (!this.__isValidObject(this.__variants[key])) {
-          throw new Error("Variant \"" + key + "\" is not defined");
-        }
-
-        if (!this.__isValidObject(variantFunctionMap)) {
-          throw new Error("the second parameter must be a map!");
-        }
-      }
-
-      for (var variant in variantFunctionMap)
-      {
-        if (this.isSet(key, variant)) {
-          return variantFunctionMap[variant];
-        }
-      }
-
-      if (variantFunctionMap["default"] !== undefined) {
-        return variantFunctionMap["default"];
-      }
-
-      if (rwt.util.Variant.compilerIsSet("qx.debug", "on"))
-      {
-        throw new Error('No match for variant "' + key +
-          '" in variants [' + rwt.util.Objects.getKeysAsString(variantFunctionMap) +
-          '] found, and no default ("default") given');
-      }
-    },
-
-
-    /**
-     * Check whether a variant is set to a given value. To enable the generator to optimize
-     * this selection, both parameters must be string literals.
-     *
-     * This method is meant to be used in if statements to select code paths. If the condition of
-     * an if statement is only this method, the generator is able to optimize the if
-     * statement.
-     *
-     * Example:
-     *
-     * <pre class='javascript'>
-     * if (rwt.util.Variant.isSet("qx.client", "mshtml")) {
-     *   // some Internet Explorer specific code
-     * } else if(rwt.util.Variant.isSet("qx.client", "opera")){
-     *   // Opera specific code
-     * } else {
-     *   // common code for all other browsers
-     * }
-     * </pre>
-     *
-     * @param key {String} name of the variant
-     * @param variants {String} value to check for. Several values can be "or"-combined by separating
-     *   them with a "|" character. A value of "mshtml|opera" would for example check if the variant is
-     *   set to "mshtml" or "opera"
-     * @return {Boolean} whether the variant is set to the given value
-     */
-    isSet : function(key, variants)
-    {
-      var access = key + "$" + variants;
-      if (this.__cache[access] !== undefined) {
-        return this.__cache[access];
-      }
-
-      var retval = false;
-
-      // fast path
-      if (variants.indexOf("|") < 0)
-      {
-        retval = this.get(key) === variants;
-      }
-      else
-      {
-        var keyParts = variants.split("|");
-
-        for (var i=0, l=keyParts.length; i<l; i++)
-        {
-          if (this.get(key) === keyParts[i])
-          {
-            retval = true;
-            break;
-          }
-        }
-      }
-
-      this.__cache[access] = retval;
-      return retval;
-    },
-
-
-    /**
-     * Whether a value is a valid array. Valid arrays are:
-     *
-     * * type is object
-     * * instance is Array
-     *
-     * @type static
-     * @name __isValidArray
-     * @param v {var} the value to validate.
-     * @return {Boolean} whether the variable is valid
-     */
-    __isValidArray : function(v) {
-      return typeof v === "object" && v !== null && v instanceof Array;
-    },
-
-
-    /**
-     * Whether a value is a valid object. Valid object are:
-     *
-     * * type is object
-     * * instance != Array
-     *
-     * @type static
-     * @name __isValidObject
-     * @param v {var} the value to validate.
-     * @return {Boolean} whether the variable is valid
-     */
-    __isValidObject : function(v) {
-      return typeof v === "object" && v !== null && !(v instanceof Array);
-    },
-
-
-    /**
-     * Whether the array contains the given element
-     *
-     * @type static
-     * @name __arrayContains
-     * @param arr {Array} the array
-     * @param obj {var} object to look for
-     * @return {Boolean} whether the array contains the element
-     */
-    __arrayContains : function(arr, obj)
-    {
-      for (var i=0, l=arr.length; i<l; i++)
-      {
-        if (arr[i] == obj) {
-          return true;
-        }
-      }
-
-      return false;
-    }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     DEFER
-  *****************************************************************************
-  */
-
-  defer : function(statics)
-  {
-    statics.define("qx.debug", [ "on", "off" ], "on");
-    statics.define("qx.compatibility", [ "on", "off" ], "on");
-    statics.define("qx.eventMonitorNoListeners", [ "on", "off" ], "off");
-    statics.define("qx.aspects", [ "on", "off" ], "off");
-    statics.define("qx.deprecationWarnings", [ "on", "off" ], "on");
-
-    statics.__init();
-  }
-});
-
-/*******************************************************************************
- * Copyright: 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                       and EclipseSource
- *
- * 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Basic client detection implementation.
- *
- * Version names follow the wikipedia scheme: major.minor[.revision[.build]] at
- * http://en.wikipedia.org/wiki/Software_version
- */
-rwt.qx.Class.define( "rwt.client.Client", {
-
-  statics : {
-
-    __init : function() {
-      this._engineName = null;
-      this._browserName = null;
-      this._engineVersion = null;
-      this._engineVersionMajor = 0;
-      this._engineVersionMinor = 0;
-      this._engineVersionRevision = 0;
-      this._engineVersionBuild = 0;
-      this._browserPlatform = null;
-      this._runsLocally = window.location.protocol === "file:";
-      this._engineQuirksMode = document.compatMode !== "CSS1Compat";
-      this._defaultLocale = "en";
-      // NOTE: Order is important!
-      this._initOpera();
-      this._initKonqueror();
-      this._initWebkit();
-      this._initGecko();
-      this._initMshtml();
-      this._initBoxSizing();
-      this._initLocale();
-      this._initPlatform();
-    },
-
-    getRunsLocally : function() {
-      return this._runsLocally;
-    },
-
-    getEngine : function() {
-      return this._engineName;
-    },
-
-    getBrowser : function() {
-      return this._browserName;
-    },
-
-    getVersion : function() {
-      return this._engineVersion;
-    },
-
-    getMajor : function() {
-      return this._engineVersionMajor;
-    },
-
-    getMinor : function() {
-      return this._engineVersionMinor;
-    },
-
-    getRevision : function() {
-      return this._engineVersionRevision;
-    },
-
-    getBuild : function() {
-      return this._engineVersionBuild;
-    },
-
-    isMshtml : function() {
-      return this._engineName === "mshtml";
-    },
-
-    isNewMshtml : function() {
-      return this._engineName === "newmshtml";
-    },
-
-    isGecko : function() {
-      return this._engineName === "gecko";
-    },
-
-    isOpera : function() {
-      return this._engineName === "opera";
-    },
-
-    isWebkit : function() {
-      return this._engineName === "webkit";
-    },
-
-    isInQuirksMode : function() {
-      return this._engineQuirksMode;
-    },
-
-    getTimezoneOffset : function() {
-      return ( new Date() ).getTimezoneOffset();
-    },
-
-    getLocale : function() {
-      return this._browserLocale;
-    },
-
-    getLanguage : function() {
-      var locale = this.getLocale();
-      var language;
-      var pos = locale.indexOf( "_" );
-      if( pos == -1 ) {
-        language = locale;
-      } else {
-        language = locale.substring( 0, pos );
-      }
-      return language;
-    },
-
-    getTerritory : function() {
-      return this.getLocale().split( "_" )[ 1 ] || "";
-    },
-
-    getDefaultLocale : function() {
-      return this._defaultLocale;
-    },
-
-    usesDefaultLocale : function() {
-      return this._browserLocale === this._defaultLocale;
-    },
-
-    getEngineBoxSizingAttributes : function() {
-      return this._engineBoxSizingAttributes;
-    },
-
-    getPlatform : function() {
-      return this._browserPlatform;
-    },
-
-    isMobileSafari : function() {
-      return this.getPlatform() === "ios" && this.getBrowser() === "safari";
-    },
-
-    isMobileChrome : function() {
-      return this.getPlatform() === "android" && this.getBrowser() === "chrome";
-    },
-
-    isAndroidBrowser : function() {
-      return this.getPlatform() === "android" && this.getBrowser() === "android";
-    },
-
-    isMobileFirefox : function() {
-      return this.getPlatform() === "android" && this.getBrowser() === "firefox";
-    },
-
-    supportsVml : function() {
-      return ( this.getEngine() === "mshtml" ) && ( this.getVersion() >= 5.5 );
-    },
-
-    supportsTouch : function() {
-      return    this.isMobileSafari()
-             || this.isAndroidBrowser()
-             || this.isMobileChrome()
-             || this.isMobileFirefox();
-    },
-
-    supportsSvg : function() {
-      // NOTE: IE9 supports SVG, but not in quirksmode.
-      var engine = rwt.client.Client.getEngine();
-      var version = rwt.client.Client.getVersion();
-      var result =    engine === "gecko" && version >= 1.8
-                   || engine === "webkit" && version >= 523
-                   || engine === "opera" && version >= 9
-                   || engine === "newmshtml";
-      if( this.isAndroidBrowser() ) {
-        result = version >= 534; // only Android 3+ supports SVG
-      }
-      return result;
-    },
-
-    // NOTE: This returns true if the browser sufficiently implements
-    // border-radius, drop-shadow and linear-gradient. IE9 and opera (currently) ignored.
-    supportsCss3 : function() {
-      var engine = rwt.client.Client.getEngine();
-      var version = rwt.client.Client.getVersion();
-      var result =    engine === "webkit" && version >= 522
-                   || engine === "gecko" && version >= 2 // firefox 4+
-                   || engine === "newmshtml" && version >= 10; // IE10 +
-      return result;
-    },
-
-    // NOTE [tb] : only works in IE right now.
-    // Inspired by https://github.com/yonran/detect-zoom
-    isZoomed : function() {
-      var result = false;
-      if( this._engineName === "mshtml" || this._engineName === "newmshtml" ) {
-        if( this._engineVersionMajor >= 8 ) {
-          result = ( screen.deviceXDPI / screen.logicalXDPI ) !== 1;
-        } else {
-          try {
-            var rect = document.body.getBoundingClientRect();
-            var zoom = ( rect.right - rect.left ) / document.body.offsetWidth;
-            result = zoom !== 1;
-          } catch( ex ) { // only happens in tests due to different bootstrap
-            result = false;
-          }
-        }
-      }
-      return result;
-    },
-
-    //////////
-    // Helper
-
-    _initOpera : function() {
-      if( this._engineName === null ) {
-        var isOpera =    window.opera
-                      && /Opera[\s\/]([0-9\.]*)/.test( navigator.userAgent );
-        if( isOpera ) {
-          this._browserName = "opera";
-          this._engineName = "opera";
-          var version = RegExp.$1;
-          version = version.substring( 0, 3 ) + "." + version.substring( 3 );
-          ( /Version[\s\/]([0-9\.]*)/ ).test( navigator.userAgent );
-          if( RegExp.$1 ) { // Newer Opera note the "real" version after "Version/".
-            version = RegExp.$1;
-          }
-          this._parseVersion( version );
-        }
-      }
-    },
-
-    _initKonqueror : function() {
-      if( this._engineName === null ) {
-        var vendor = navigator.vendor;
-        var isKonqueror =    typeof vendor === "string" && vendor === "KDE"
-                          && /KHTML\/([0-9\-\.]*)/.test( navigator.userAgent );
-        if( isKonqueror ) {
-          this._engineName = "webkit";
-          this._browserName = "konqueror";
-          // Howto translate KDE Version to Webkit Version? Currently emulate Safari 3.0.x for all versions.
-          // this._engineVersion = RegExp.$1;
-          this._parseVersion( "420" );
-        }
-      }
-    },
-
-    _initWebkit : function() {
-      if( this._engineName === null ) {
-        var userAgent = navigator.userAgent;
-        var isWebkit =    userAgent.indexOf( "AppleWebKit" ) != -1
-                       && /AppleWebKit\/([^ ]+)/.test( userAgent );
-        if( isWebkit ) {
-          this._engineName = "webkit";
-          var version = RegExp.$1;
-          var invalidCharacter = /[^\.0-9]/.exec( version );
-          if( invalidCharacter ) {
-            version = version.slice( 0, invalidCharacter.index );
-          }
-          this._parseVersion( version );
-          if( userAgent.indexOf( "Chrome" ) != -1 ) {
-            this._browserName = "chrome";
-          } else if( userAgent.indexOf( "Safari" ) != -1 ) {
-            if( userAgent.indexOf( "Android" ) != -1 ) {
-              this._browserName = "android";
-            } else {
-              this._browserName = "safari";
-            }
-          } else if( userAgent.indexOf( "OmniWeb" ) != -1 ) {
-            this._browserName = "omniweb";
-          } else if( userAgent.indexOf( "Shiira" ) != -1 ) {
-            this._browserName = "shiira";
-          } else if( userAgent.indexOf( "NetNewsWire" ) != -1 ) {
-            this._browserName = "netnewswire";
-          } else if( userAgent.indexOf( "RealPlayer" ) != -1 ) {
-            this._browserName = "realplayer";
-          } else if( userAgent.indexOf( "Mobile" ) != -1 ) {
-            // iPad reports this in fullscreen mode
-            this._browserName = "safari";
-          } else {
-            this._browserName = "other webkit";
-          }
-        }
-      }
-    },
-
-    _initGecko : function() {
-      if( this._engineName === null ) {
-        var product = navigator.product;
-        var userAgent = navigator.userAgent;
-        var isGecko =    window.controllers
-                      && typeof product === "string"
-                      && product === "Gecko"
-                      && /rv\:([^\);]+)(\)|;)/.test( userAgent );
-        if( isGecko ) {
-          // http://www.mozilla.org/docs/dom/domref/dom_window_ref13.html
-          this._engineName = "gecko";
-          this._parseVersion( RegExp.$1 );
-          if( userAgent.indexOf( "Firefox" ) != -1) {
-            this._browserName = "firefox";
-          } else if ( userAgent.indexOf( "Camino" ) != -1) {
-            this._browserName = "camino";
-          } else if ( userAgent.indexOf( "Galeon" ) != -1) {
-            this._browserName = "galeon";
-          } else {
-            this._browserName = "other gecko";
-          }
-        }
-      }
-    },
-
-    _initMshtml : function() {
-      if( this._engineName === null ) {
-        var isMshtml = /MSIE\s+([^\);]+)(\)|;)/.test( navigator.userAgent );
-        if( isMshtml ) {
-          this._parseVersion( RegExp.$1 );
-          if( this._engineVersion >= 9 ) {
-            this._engineName = "newmshtml";
-          } else {
-            this._engineName = "mshtml";
-          }
-          this._browserName = "explorer";
-        }
-      }
-    },
-
-    _parseVersion : function( versionStr ) {
-      if( typeof versionStr === "string" ) {
-        var versionArr = versionStr.split( "." );
-        this._engineVersion = parseFloat( versionStr );
-        this._engineVersionMajor = parseInt( versionArr[ 0 ] || 0, 10 );
-        this._engineVersionMinor = parseFloat( versionArr[ 1 ] || 0 );
-        this._engineVersionRevision = parseFloat( versionArr[ 2 ] || 0 );
-        this._engineVersionBuild = parseInt( versionArr[ 3 ] || 0, 10 );
-      }
-    },
-
-    _initBoxSizing : function() {
-      var vEngineBoxSizingAttr = [];
-      switch( this._engineName ) {
-        case "gecko":
-          vEngineBoxSizingAttr.push( "-moz-box-sizing" );
-        break;
-        case "webkit":
-          vEngineBoxSizingAttr.push( "-khtml-box-sizing" );
-          vEngineBoxSizingAttr.push( "-webkit-box-sizing" );
-        break;
-        default:
-          vEngineBoxSizingAttr.push( "box-sizing" );
-      }
-      this._engineBoxSizingAttributes = vEngineBoxSizingAttr;
-    },
-
-    _initLocale : function() {
-      var language =   ( this._engineName.indexOf( "mshtml" ) !== -1 )
-                     ? navigator.userLanguage
-                     : navigator.language;
-      var browserLocale = language.toLowerCase();
-      var browserLocaleVariantIndex = browserLocale.indexOf( "-" );
-      if( browserLocaleVariantIndex != -1 ) {
-        browserLocale = browserLocale.substr( 0, browserLocaleVariantIndex );
-      }
-      this._browserLocale = browserLocale;
-    },
-
-    _initPlatform : function() {
-      var platformStr = navigator.platform;
-      if(    platformStr.indexOf( "Windows" ) != -1
-          || platformStr.indexOf( "Win32" ) != -1
-          || platformStr.indexOf( "Win64" ) != -1 )
-      {
-        this._browserPlatform = "win";
-      } else if(    platformStr.indexOf( "Macintosh" ) != -1
-                 || platformStr.indexOf( "MacPPC" ) != -1
-                 || platformStr.indexOf( "MacIntel" ) != -1 )
-      {
-        this._browserPlatform = "mac";
-      } else if(   platformStr.indexOf( "X11" ) != -1
-                || platformStr.indexOf( "Linux" ) != -1
-                || platformStr.indexOf( "BSD" ) != -1 )
-      {
-        if( navigator.userAgent.indexOf( "Android" ) != -1 ) {
-          this._browserPlatform = "android";
-        } else {
-          this._browserPlatform = "unix";
-        }
-      } else if(    platformStr.indexOf( "iPhone" ) != -1
-                 || platformStr.indexOf( "iPod" ) != -1
-                 || platformStr.indexOf( "iPad" ) != -1 )
-      {
-        this._browserPlatform = "ios";
-      } else {
-        this._browserPlatform = "other";
-      }
-    }
-
-  },
-
-  defer : function( statics, members, properties ) {
-    statics.__init();
-    rwt.util.Variant.define( "qx.client",
-                            [ "gecko", "mshtml", "opera", "webkit" ],
-                            rwt.client.Client.getEngine() );
-  }
-
-} );
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Helper functions to handle Object as a Hash map.
- */
-rwt.qx.Class.define("rwt.util.Objects",
-{
-  statics :
-  {
-    /**
-     * Check if the hash has any keys
-     *
-     * @type static
-     * @param map {Object} the map to check
-     * @return {Boolean} whether the map has any keys
-     */
-    isEmpty : function(map)
-    {
-      for (var key in map) {
-        return false;
-      }
-
-      return true;
-    },
-
-
-    /**
-     * Check whether the number of objects in the maps is at least "length"
-     *
-     * @type static
-     * @param map {Object} the map to check
-     * @param length {Integer} minimum number of objects in the map
-     * @return {Boolean} whether the map contains at least "length" objects.
-     */
-    hasMinLength : function(map, length)
-    {
-      var i = 0;
-
-      for (var key in map)
-      {
-        if ((++i) >= length) {
-          return true;
-        }
-      }
-
-      return false;
-    },
-
-
-    /**
-     * Get the number of objects in the map
-     *
-     * @type static
-     * @param map {Object} the map
-     * @return {Integer} number of objects in the map
-     */
-    getLength : function(map)
-    {
-      var i = 0;
-
-      for (var key in map) {
-        i++;
-      }
-
-      return i;
-    },
-
-
-    _shadowedKeys :
-    [
-      "isPrototypeOf",
-      "hasOwnProperty",
-      "toLocaleString",
-      "toString",
-      "valueOf"
-    ],
-
-
-    /**
-     * Get the keys of a map as array as returned by a "for ... in" statement.
-     *
-     * @type static
-     * @param map {Object} the map
-     * @return {Array} array of the keys of the map
-     * @signature function(map)
-     */
-    getKeys : rwt.util.Variant.select("qx.client",
-    {
-      "mshtml" : function(map)
-      {
-        var arr = [];
-        for (var key in map) {
-          arr.push(key);
-        }
-
-        // IE does not return "shadowed" keys even if they are defined directly
-        // in the object. This is incompatible to the ECMA standard!!
-        // This is why this checks are needed.
-        for (var i=0, a=this._shadowedKeys, l=a.length; i<l; i++)
-        {
-          if (map.hasOwnProperty(a[i])) {
-            arr.push(a[i]);
-          }
-        }
-
-        return arr;
-      },
-
-      "default" : function(map)
-      {
-        var arr = [];
-
-        for (var key in map) {
-          arr.push(key);
-        }
-
-        return arr;
-      }
-    }),
-
-
-    /**
-     * Get the keys of a map as string
-     *
-     * @type static
-     * @param map {Object} the map
-     * @return {String} String of the keys of the map
-     *         The keys are separated by ", "
-     */
-    getKeysAsString : function(map)
-    {
-      var keys = rwt.util.Objects.getKeys(map);
-      if (keys.length === 0) {
-        return "";
-      }
-
-      return '"' + keys.join('\", "') + '"';
-    },
-
-
-    /**
-     * Get the values of a map as array
-     *
-     * TODO: Rename to values() like in prototype and python
-     *
-     * @type static
-     * @param map {Object} the map
-     * @return {Array} array of the values of the map
-     */
-    getValues : function(map)
-    {
-      var arr = [];
-
-      for (var key in map) {
-        arr.push(map[key]);
-      }
-
-      return arr;
-    },
-
-
-    /**
-     * Inserts all keys of the source object into the
-     * target objects. Attention: The target map gets modified.
-     *
-     * @type static
-     * @param target {Object} target object
-     * @param source {Object} object to be merged
-     * @param overwrite {Boolean ? true} If enabled existing keys will be overwritten
-     * @return {Object} Target with merged values from the source object
-     */
-    mergeWith : function(target, source, overwrite)
-    {
-      if (overwrite === undefined) {
-        overwrite = true;
-      }
-
-      for (var key in source)
-      {
-        if (overwrite || target[key] === undefined) {
-          target[key] = source[key];
-        }
-      }
-
-      return target;
-    },
-
-
-    /**
-     * Inserts all keys of the source object into the
-     * target objects.
-     *
-     * @type static
-     * @param target {Object} target object
-     * @param source {Object} object to be merged
-     * @return {Object} target with merged values from source
-     * @deprecated
-     */
-    carefullyMergeWith : function(target, source)
-    {
-      return rwt.util.Objects.mergeWith(target, source, false);
-    },
-
-
-    /**
-     * Merge a number of objects.
-     *
-     * @type static
-     * @param target {Object} target object
-     * @param varargs {Object} variable number of objects to merged with target
-     * @return {Object} target with merged values from the other objects
-     */
-    merge : function(target, varargs)
-    {
-      var len = arguments.length;
-
-      for (var i=1; i<len; i++) {
-        rwt.util.Objects.mergeWith(target, arguments[i]);
-      }
-
-      return target;
-    },
-
-
-    /**
-     * Return a copy of an Object
-     *
-     * TODO: Rename to clone() like in prototype and python
-     *
-     * @type static
-     * @param source {Object} Object to copy
-     * @return {Object} copy of vObject
-     */
-    copy : function(source)
-    {
-      var clone = {};
-
-      for (var key in source) {
-        clone[key] = source[key];
-      }
-
-      return clone;
-    },
-
-
-    /**
-     * Inverts a Map by exchanging the keys with the values.
-     * If the map has the same values for different keys, information will get lost.
-     * The values will be converted to Strings using the toString methos.
-     *
-     * @type static
-     * @param map {Object} Map to invert
-     * @return {Object} inverted Map
-     */
-    invert : function(map)
-    {
-      var result = {};
-
-      for (var key in map) {
-        result[map[key].toString()] = key;
-      }
-
-      return result;
-    },
-
-
-    /**
-     * Get the key of the given value from a map.
-     * If the map has more than one key matching the value the fist match is returned.
-     * If the map does not contain the value <code>null</code> is returned.
-     *
-     * @param obj {Object} Map to search for the key
-     * @param value {var} Value to look for
-     * @return {String|null} Name of the key (null if not found).
-     */
-    getKeyFromValue: function(obj, value)
-    {
-      for (var key in obj)
-      {
-        if (obj[key] === value) {
-          return key;
-        }
-      }
-
-      return null;
-    },
-
-
-    /**
-    * Selects the value with the given key from the map.
-    *
-    * @param key {String} name of the key to get the value from
-    * @param map {Object} map to get the value from
-    * @return {var} value for the given key from the map
-    */
-    select: function(key, map) {
-      return map[key];
-    },
-
-
-    /**
-    * Convert an array into a map.
-    *
-    * All elements of the array become keys of the returned map by
-    * calling "toString" on the array elements. The values of the
-    * map are set to "true"
-    *
-    * @param array {Array} array to convert
-    * @return {Map} the array converted to a map.
-    */
-    fromArray: function(array)
-    {
-      var obj = {};
-
-      for (var i=0, l=array.length; i<l; i++)
-      {
-        obj[array[i].toString()] = true;
-      }
-
-      return obj;
-    }
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * This class is one of the most important parts of qooxdoo's
- * object-oriented features.
- *
- * Its {@link #define} method is used to create qooxdoo classes.
- *
- * Each instance of a class defined by {@link #define} has
- * the following keys attached to the constructor and the prototype:
- *
- * <table>
- * <tr><th><code>classname</code></th><td>The fully-qualified name of the class (e.g. <code>"qx.ui.core.Widget"</code>).</td></tr>
- * <tr><th><code>basename</code></th><td>The namespace part of the class name (e.g. <code>"qx.ui.core"</code>).</td></tr>
- * <tr><th><code>constructor</code></th><td>A reference to the constructor of the class.</td></tr>
- * <tr><th><code>superclass</code></th><td>A reference to the constructor of the super class.</td></tr>
- * </table>
- *
- * Each method may access static members of the same class by using
- * <code>this.self(arguments)</code> ({@link rwt.qx.Object#self}):
- * <pre class='javascript'>
- * statics : { FOO : "bar" },
- * members: {
- *   baz: function(x) {
- *     this.self(arguments).FOO;
- *     ...
- *   }
- * }
- * </pre>
- *
- * Each overriding method may call the overridden method by using
- * <code>this.base(arguments [, ...])</code> ({@link rwt.qx.Object#base}). This is also true for calling
- * the constructor of the superclass.
- * <pre class='javascript'>
- * members: {
- *   foo: function(x) {
- *     this.base(arguments, x);
- *     ...
- *   }
- * }
- * </pre>
- */
-
-/*global alert:false */
-
-rwt.qx.Class.define( "rwt.qx.Class", {
-
-  statics : {
-
-    _normalizeConfig : function( config ) {
-      if( !config ) {
-        var config = {};
-      }
-      if( config.include && !( config.include instanceof Array ) ) {
-        config.include = [ config.include ];
-      }
-      if( config.implement && !( config.implement instanceof Array ) ) {
-        config.implement = [ config.implement ];
-      }
-      if( !config.hasOwnProperty( "extend" ) && !config.type ) {
-        config.type = "static";
-      }
-      return config;
-    },
-
-    /**
-     * Define a new class using the qooxdoo class system. This sets up the
-     * namespace for the class and generates the class from the definition map.
-     *
-     * Example:
-     * <pre class='javascript'>
-     * rwt.qx.Class.define("name",
-     * {
-     *   extend : Object, // superclass
-     *   implement : [Interfaces],
-     *   include : [Mixins],
-     *
-     *   statics:
-     *   {
-     *     CONSTANT : 3.141,
-     *
-     *     publicMethod: function() {},
-     *     _protectedMethod: function() {},
-     *     __privateMethod: function() {}
-     *   },
-     *
-     *   properties:
-     *   {
-     *     "tabIndexOld": { type: "number", defaultValue : -1, _legacy : true }
-     *     "tabIndex": { check: "Number", init : -1 }
-     *   },
-     *
-     *   members:
-     *   {
-     *     publicField: "foo",
-     *     publicMethod: function() {},
-     *
-     *     _protectedField: "bar",
-     *     _protectedMethod: function() {},
-     *
-     *     __privateField: "baz",
-     *     __privateMethod: function() {}
-     *   }
-     * });
-     * </pre>
-     *
-     * @type static
-     * @param name {String} Name of the class
-     * @param config {Map ? null} Class definition structure. The configuration map has the following keys:
-     *     <table>
-     *       <tr><th>Name</th><th>Type</th><th>Description</th></tr>
-     *       <tr><th>type</th><td>String</td><td>
-     *           Type of the class. Valid types are "abstract", "static" and "singleton".
-     *           If unset it defaults to a regular non-static class.
-     *       </td></tr>
-     *       <tr><th>extend</th><td>Class</td><td>The super class the current class inherits from.</td></tr>
-     *       <tr><th>implement</th><td>Interface | Interface[]</td><td>Single interface or array of interfaces the class implements.</td></tr>
-     *       <tr><th>include</th><td>Mixin | Mixin[]</td><td>Single mixin or array of mixins, which will be merged into the class.</td></tr>
-     *       <tr><th>construct</th><td>Function</td><td>The constructor of the class.</td></tr>
-     *       <tr><th>statics</th><td>Map</td><td>Map of static members of the class.</td></tr>
-     *       <tr><th>properties</th><td>Map</td><td>Map of property definitions. For a description of the format of a property definition see
-     *           {@link rwt.qx.Property} or the legacy version {@link rwt.qx.LegacyProperty}.</td></tr>
-     *       <tr><th>members</th><td>Map</td><td>Map of instance members of the class.</td></tr>
-     *       <tr><th>settings</th><td>Map</td><td>Map of settings for this class. For a description of the format of a setting see
-     *           {@link rwt.qx.Setting}.</td></tr>
-     *       <tr><th>variants</th><td>Map</td><td>Map of settings for this class. For a description of the format of a setting see
-     *           {@link rwt.util.Variant}</td></tr>
-     *       <tr><th>events</th><td>Map</td><td>
-     *           Map of events the class fires. The keys are the names of the events and the values are the
-     *           corresponding event type class names.
-     *       </td></tr>
-     *       <tr><th>defer</th><td>Function</td><td>Function that is called at the end of processing the class declaration. It allows access to the declared statics, members and properties.</td></tr>
-     *       <tr><th>destruct</th><td>Function</td><td>The destructor of the class.</td></tr>
-     *     </table>
-     * @return {void}
-     * @throws TODOC
-     */
-    define : function( name, config ) {
-      if( this._stopLoading ) {
-        throw new Error( "Stop loading " + name );
-      }
-      try {
-        config = this._normalizeConfig( config );
-        this.__validateConfig( name, config );
-        var clazz;
-        if( !config.extend ) {
-          clazz = config.statics || {};
-        } else {
-          if( !config.construct ) {
-            config.construct = this.__createDefaultConstructor();
-          }
-          clazz = this.__wrapConstructor(config.construct, name, config.type);
-          if( config.statics ) {
-            var key;
-            for( var i = 0, a = rwt.util.Objects.getKeys( config.statics ), l = a.length; i < l; i++ ) {
-              key = a[ i ];
-              clazz[ key ] = config.statics[ key ];
-            }
-          }
-        }
-        var basename = this.createNamespace( name, clazz, false );
-        clazz.name = clazz.classname = name;
-        clazz.basename = basename;
-        this.__registry[ name ] = clazz;
-
-        // Attach toString
-        if( !clazz.hasOwnProperty( "toString" ) ) {
-          clazz.toString = this.genericToString;
-        }
-
-        if( config.extend ) {
-          var superproto = config.extend.prototype;
-          var Helper = this.__createEmptyFunction();
-          Helper.prototype = superproto;
-          var proto = new Helper();
-          clazz.prototype = proto;
-          proto.name = proto.classname = name;
-          proto.basename = basename;
-          config.construct.base = clazz.superclass = config.extend;
-          config.construct.self = clazz.constructor = proto.constructor = clazz;
-          if( config.destruct ) {
-            clazz.$$destructor = config.destruct;
-          }
-          var that = this;
-          clazz.$$initializer = function() {
-            //console.log( "init " + name );
-            if( config.properties ) {
-              that.__addProperties(clazz, config.properties, true);
-            }
-            if( config.members ) {
-              that.__addMembers(clazz, config.members, true, true, false);
-            }
-            if( config.events ) {
-              that.__addEvents(clazz, config.events, true);
-            }
-            if( config.include ) {
-              for (var i=0, l=config.include.length; i<l; i++) {
-                that.__addMixin(clazz, config.include[i], false);
-              }
-            }
-          };
-        }
-        if( config.variants ) {
-          for (var key in config.variants) {
-            rwt.util.Variant.define(key, config.variants[key].allowedValues, config.variants[key].defaultValue);
-          }
-        }
-        if( config.defer ) {
-          this.__initializeClass( clazz );
-          config.defer.self = clazz;
-          config.defer(clazz, clazz.prototype, {
-            add : function( name, config ) {
-              var properties = {};
-              properties[name] = config;
-              rwt.qx.Class.__addProperties(clazz, properties, true);
-            }
-          } );
-        }
-      } catch( ex ) {
-        // Use alert here since ErrorHandler.js might not be parsed yet. In case of a class loader
-        // error, this is the only way to be sure the user sees the message.
-        alert( "Error loading class " + name + ": " + ( ex.message ? ex.message : ex ) );
-        this._stopLoading = true;
-        throw ex;
-      }
-    },
-
-
-    /**
-     * Creates a namespace and assigns the given object to it.
-     *
-     * @type static
-     * @param name {String} The complete namespace to create. Typically, the last part is the class name itself
-     * @param object {Object} The object to attach to the namespace
-     * @return {Object} last part of the namespace (typically the class name)
-     * @throws TODOC
-     */
-    createNamespace : function(name, object)
-    {
-      var splits = name.split(".");
-      var parent = window;
-      var part = splits[0];
-
-      for (var i=0, l=splits.length-1; i<l; i++, part=splits[i])
-      {
-        if (!parent[part]) {
-          parent = parent[part] = {};
-        } else {
-          parent = parent[part];
-        }
-      }
-      if (parent[part] === undefined) {
-        parent[part] = object;
-      }
-      // return last part name (i.e. classname)
-      return part;
-    },
-
-
-    /**
-     * Whether the given class exists
-     *
-     * @type static
-     * @param name {String} class name to check
-     * @return {Boolean} true if class exists
-     */
-    isDefined : function(name) {
-      return this.getByName(name) !== undefined;
-    },
-
-
-    /**
-     * Determine the total number of classes
-     *
-     * @type static
-     * @return {Number} the total number of classes
-     */
-    getTotalNumber : function() {
-      return rwt.util.Objects.getLength(this.__registry);
-    },
-
-
-    /**
-     * Find a class by its name
-     *
-     * @type static
-     * @param name {String} class name to resolve
-     * @return {Class} the class
-     */
-    getByName : function(name) {
-      return this.__registry[name];
-    },
-
-
-    /**
-     * Include all features of the given mixin into the class. The mixin must
-     * not include any methods or properties that are already available in the
-     * class. This would only be possible using the {@link #patch} method.
-     *
-     * @type static
-     * @param clazz {Class} An existing class which should be modified by including the mixin.
-     * @param mixin {Mixin} The mixin to be included.
-     */
-    include : function(clazz, mixin)
-    {
-      rwt.qx.Class.__addMixin(clazz, mixin, false);
-    },
-
-
-    /**
-     * Include all features of the given mixin into the class. The mixin may
-     * include features which are already defined in the target class. Existing
-     * features of equal name will be overwritten.
-     * Please keep in mind that this functionality is not intented for regular
-     * use, but as a formalized way (and a last resort) in order to patch
-     * existing classes.
-     *
-     * <b>WARNING</b>: You may break working classes and features.
-     *
-     * @type static
-     * @param clazz {Class} An existing class which should be modified by including the mixin.
-     * @param mixin {Mixin} The mixin to be included.
-     */
-    patch : function(clazz, mixin)
-    {
-      rwt.qx.Class.__addMixin(clazz, mixin, true);
-    },
-
-
-    /**
-     * Whether a class is a direct or indirect sub class of another class,
-     * or both classes coincide.
-     *
-     * @type static
-     * @param clazz {Class} the class to check.
-     * @param superClass {Class} the potential super class
-     * @return {Boolean} whether clazz is a sub class of superClass.
-     */
-    isSubClassOf : function(clazz, superClass)
-    {
-      if (!clazz) {
-        return false;
-      }
-
-      if (clazz == superClass) {
-        return true;
-      }
-
-      if (clazz.prototype instanceof superClass) {
-        return true;
-      }
-
-      return false;
-    },
-
-
-    /**
-     * Returns the definition of the given property. Returns null
-     * if the property does not exist.
-     *
-     * TODO: Correctly support refined properties?
-     *
-     * @type member
-     * @param clazz {Class} class to check
-     * @param name {String} name of the event to check for
-     * @return {Map|null} whether the object support the given event.
-     */
-    getPropertyDefinition : function(clazz, name)
-    {
-      while (clazz)
-      {
-        if (clazz.$$properties && clazz.$$properties[name]) {
-          return clazz.$$properties[name];
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return null;
-    },
-
-
-    /**
-     * Returns the class or one of its superclasses which contains the
-     * declaration for the given property in its class definition. Returns null
-     * if the property is not specified anywhere.
-     *
-     * @param clazz {Class} class to look for the property
-     * @param name {String} name of the property
-     * @return {Class | null} The class which includes the property
-     */
-    getByProperty : function(clazz, name)
-    {
-      while (clazz)
-      {
-        if (clazz.$$properties && clazz.$$properties[name]) {
-          return clazz;
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return null;
-    },
-
-
-    /**
-     * Whether a class has the given property
-     *
-     * @type member
-     * @param clazz {Class} class to check
-     * @param name {String} name of the property to check for
-     * @return {Boolean} whether the class includes the given property.
-     */
-    hasProperty : function(clazz, name) {
-      return !!this.getPropertyDefinition(clazz, name);
-    },
-
-
-    /**
-     * Returns the event type of the given event. Returns null if
-     * the event does not exist.
-     *
-     * @type member
-     * @param clazz {Class} class to check
-     * @param name {String} name of the event
-     * @return {Map|null} Event type of the given event.
-     */
-    getEventType : function(clazz, name)
-    {
-      var clazz = clazz.constructor;
-
-      while (clazz.superclass)
-      {
-        if (clazz.$$events && clazz.$$events[name] !== undefined) {
-          return clazz.$$events[name];
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return null;
-    },
-
-
-    /**
-     * Whether a class supports the given event type
-     *
-     * @type member
-     * @param clazz {Class} class to check
-     * @param name {String} name of the event to check for
-     * @return {Boolean} whether the class supports the given event.
-     */
-    supportsEvent : function(clazz, name) {
-      return !!this.getEventType(clazz, name);
-    },
-
-
-    /**
-     * Whether a class directly includes a mixin.
-     *
-     * @type static
-     * @param clazz {Class} class to check
-     * @param mixin {Mixin} the mixin to check for
-     * @return {Boolean} whether the class includes the mixin directly.
-     */
-    hasOwnMixin: function(clazz, mixin) {
-      return clazz.$$includes && clazz.$$includes.indexOf(mixin) !== -1;
-    },
-
-
-    /**
-     * Returns the class or one of its superclasses which contains the
-     * declaration for the given mixin. Returns null if the mixin is not
-     * specified anywhere.
-     *
-     * @param clazz {Class} class to look for the mixin
-     * @param mixin {Mixin} mixin to look for
-     * @return {Class | null} The class which directly includes the given mixin
-     */
-    getByMixin : function(clazz, mixin)
-    {
-      var list, i, l;
-
-      while (clazz)
-      {
-        if (clazz.$$includes)
-        {
-          list = clazz.$$flatIncludes;
-
-          for (i=0, l=list.length; i<l; i++)
-          {
-            if (list[i] === mixin) {
-              return clazz;
-            }
-          }
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return null;
-    },
-
-
-    /**
-     * Returns a list of all mixins available in a given class.
-     *
-     * @param clazz {Class} class which should be inspected
-     * @return {Mixin[]} array of mixins this class uses
-     */
-    getMixins : function(clazz)
-    {
-      var list = [];
-
-      while (clazz)
-      {
-        if (clazz.$$includes) {
-          list.push.apply(list, clazz.$$flatIncludes);
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return list;
-    },
-
-
-    /**
-     * Whether a given class or any of its superclasses includes a given mixin.
-     *
-     * @type static
-     * @param clazz {Class} class to check
-     * @param mixin {Mixin} the mixin to check for
-     * @return {Boolean} whether the class includes the mixin.
-     */
-    hasMixin: function(clazz, mixin) {
-      return !!this.getByMixin(clazz, mixin);
-    },
-
-
-    /**
-     * Whether a given class directly includes a interface.
-     *
-     * This function will only return "true" if the interface was defined
-     * in the class declaration (@link rwt.qx.Class#define}) using the "implement"
-     * key.
-     *
-     * @type static
-     * @param clazz {Class} class or instance to check
-     * @param iface {Interface} the interface to check for
-     * @return {Boolean} whether the class includes the mixin directly.
-     */
-    hasOwnInterface : function(clazz, iface) {
-      return clazz.$$implements && clazz.$$implements.indexOf(iface) !== -1;
-    },
-
-
-    /**
-     * Returns the class or one of its superclasses which contains the
-     * declaration of the given interface. Returns null if the interface is not
-     * specified anywhere.
-     *
-     * @param clazz {Class} class to look for the interface
-     * @param iface {Interface} interface to look for
-     * @return {Class | null} the class which directly implements the given interface
-     */
-    getByInterface : function(clazz, iface)
-    {
-      var list, i, l;
-
-      while (clazz)
-      {
-        if (clazz.$$implements)
-        {
-          list = clazz.$$flatImplements;
-
-          for (i=0, l=list.length; i<l; i++)
-          {
-            if (list[i] === iface) {
-              return clazz;
-            }
-          }
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return null;
-    },
-
-
-    /**
-     * Returns a list of all mixins available in a class.
-     *
-     * @param clazz {Class} class which should be inspected
-     * @return {Mixin[]} array of mixins this class uses
-     */
-    getInterfaces : function(clazz)
-    {
-      var list = [];
-
-      while (clazz)
-      {
-        if (clazz.$$implements) {
-          list.push.apply(list, clazz.$$flatImplements);
-        }
-
-        clazz = clazz.superclass;
-      }
-
-      return list;
-    },
-
-
-    /**
-     * Whether a given class or any of its superclasses includes a given interface.
-     *
-     * This function will return "true" if the interface was defined
-     * in the class declaration (@link rwt.qx.Class#define}) of the class
-     * or any of its super classes using the "implement"
-     * key.
-     *
-     * @type static
-     * @param clazz {Class|Object} class or instance to check
-     * @param iface {Interface} the interface to check for
-     * @return {Boolean} whether the class includes the interface.
-     */
-    hasInterface : function(clazz, iface) {
-      return !!this.getByInterface(clazz, iface);
-    },
-
-
-    /**
-     * Whether a given class conforms to an interface.
-     *
-     * Checks whether all methods defined in the interface are
-     * implemented in the class. The class does not need to implement
-     * the interface explicitly.
-     *
-     * @type static
-     * @param clazz {Class} class to check
-     * @param iface {Interface} the interface to check for
-     * @return {Boolean} whether the class conforms to the interface.
-     */
-    implementsInterface : function(clazz, iface)
-    {
-      return false;
-    },
-
-
-    /**
-     * Helper method to handle singletons
-     *
-     * @type static
-     * @internal
-     * @return {var} TODOC
-     */
-    getInstance : function() {
-      if( !this.$$instance ) {
-        this.$$allowconstruct = true;
-        var Constructor = this;
-        this.$$instance = new Constructor();
-        delete this.$$allowconstruct;
-      }
-      return this.$$instance;
-    },
-
-    /**
-     * This method will be attached to all classes to return
-     * a nice identifier for them.
-     *
-     * @internal
-     * @return {String} The class identifier
-     */
-    genericToString : function() {
-      return "[Class " + this.classname + "]";
-    },
-
-
-    /** Stores all defined classes */
-    __registry : rwt.runtime.Bootstrap.__registry,
-
-
-    /** {Map} allowed keys in non-static class definition */
-    __allowedKeys : rwt.util.Variant.select("qx.debug",
-    {
-      "on":
-      {
-        "type"       : "string",    // String
-        "extend"     : "function",  // Function
-        "implement"  : "object",    // Interface[]
-        "include"    : "object",    // Mixin[]
-        "construct"  : "function",  // Function
-        "statics"    : "object",    // Map
-        "properties" : "object",    // Map
-        "members"    : "object",    // Map
-        "settings"   : "object",    // Map
-        "variants"   : "object",    // Map
-        "events"     : "object",    // Map
-        "defer"      : "function",  // Function
-        "destruct"   : "function"   // Function
-      },
-
-      "default" : null
-    }),
-
-
-    /** {Map} allowed keys in static class definition */
-    __staticAllowedKeys : rwt.util.Variant.select("qx.debug",
-    {
-      "on":
-      {
-        "type"       : "string",    // String
-        "statics"    : "object",    // Map
-        "settings"   : "object",    // Map
-        "variants"   : "object",    // Map
-        "defer"      : "function"   // Function
-      },
-
-      "default" : null
-    }),
-
-
-    /**
-     * Validates an incoming configuration and checks for proper keys and values
-     *
-     * @type static
-     * @param name {String} The name of the class
-     * @param config {Map} Configuration map
-     * @return {void}
-     * @throws TODOC
-     */
-    __validateConfig : rwt.util.Variant.select("qx.debug",
-    {
-      "on": function(name, config)
-      {
-        // Validate type
-        if (config.type && !(config.type === "static" || config.type === "abstract" || config.type === "singleton")) {
-          throw new Error('Invalid type "' + config.type + '" definition for class "' + name + '"!');
-        }
-
-        // Validate keys
-        var allowed = config.type === "static" ? this.__staticAllowedKeys : this.__allowedKeys;
-        for (var key in config)
-        {
-          if (!allowed[key]) {
-            throw new Error('The configuration key "' + key + '" in class "' + name + '" is not allowed!');
-          }
-
-          if (config[key] == null) {
-            throw new Error('Invalid key "' + key + '" in class "' + name + '"! The value is undefined/null!');
-          }
-
-          if (typeof config[key] !== allowed[key]) {
-            throw new Error('Invalid type of key "' + key + '" in class "' + name + '"! The type of the key must be "' + allowed[key] + '"!');
-          }
-        }
-
-        // Validate maps
-        var maps = [ "statics", "properties", "members", "settings", "variants", "events" ];
-        for (var i=0, l=maps.length; i<l; i++)
-        {
-          var key = maps[i];
-
-          if (config[key] !== undefined && (config[key] instanceof Array || config[key] instanceof RegExp || config[key] instanceof Date || config[key].classname !== undefined)) {
-            throw new Error('Invalid key "' + key + '" in class "' + name + '"! The value needs to be a map!');
-          }
-        }
-
-        // Validate include definition
-        if (config.include)
-        {
-          if (config.include instanceof Array)
-          {
-            for (var i=0, a=config.include, l=a.length; i<l; i++)
-            {
-              if (a[i] == null || a[i].$$type !== "Mixin") {
-                throw new Error('The include definition in class "' + name + '" contains an invalid mixin at position ' + i + ': ' + a[i]);
-              }
-            }
-          }
-          else
-          {
-            throw new Error('Invalid include definition in class "' + name + '"! Only mixins and arrays of mixins are allowed!');
-          }
-        }
-
-        // Validate implement definition
-        if (config.implement)
-        {
-          if (config.implement instanceof Array)
-          {
-            for (var i=0, a=config.implement, l=a.length; i<l; i++)
-            {
-              if (a[i] == null || a[i].$$type !== "Interface") {
-                throw new Error('The implement definition in class "' + name + '" contains an invalid interface at position ' + i + ': ' + a[i]);
-              }
-            }
-          }
-          else
-          {
-            throw new Error('Invalid implement definition in class "' + name + '"! Only interfaces and arrays of interfaces are allowed!');
-          }
-        }
-
-        // Check mixin compatibility
-        if (config.include)
-        {
-          try {
-            rwt.qx.Mixin.checkCompatibility(config.include);
-          } catch(ex) {
-            throw new Error('Error in include definition of class "' + name + '"! ' + ex.message);
-          }
-        }
-
-        // Validate variants
-        if (config.variants)
-        {
-          for (var key in config.variants)
-          {
-            if (key.substr(0, key.indexOf(".")) != name.substr(0, name.indexOf("."))) {
-              throw new Error('Forbidden variant "' + key + '" found in "' + name + '". It is forbidden to define a variant for an external namespace!');
-            }
-          }
-        }
-      },
-
-      "default" : function() {}
-    }),
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-       PRIVATE ADD HELPERS
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Attach events to the class
-     *
-     * @param clazz {Class} class to add the events to
-     * @param events {Map} map of event names the class fires.
-     * @param patch {Boolean ? false} Enable redefinition of event type?
-     */
-    __addEvents : function(clazz, events, patch)
-    {
-
-      if (clazz.$$events)
-      {
-        for (var key in events) {
-          clazz.$$events[key] = events[key];
-        }
-      }
-      else
-      {
-        clazz.$$events = events;
-      }
-    },
-
-
-    /**
-     * Attach properties to classes
-     *
-     * @type static
-     * @param clazz {Class} class to add the properties to
-     * @param properties {Map} map of properties
-     * @param patch {Boolean ? false} Overwrite property with the limitations of a property
-               which means you are able to refine but not to replace (esp. for new properties)
-     */
-    __addProperties : function(clazz, properties, patch)
-    {
-      var config;
-
-      if (patch === undefined) {
-        patch = false;
-      }
-
-      var attach = !!clazz.$$propertiesAttached;
-
-      for (var name in properties)
-      {
-        config = properties[name];
-
-        // Store name into configuration
-        config.name = name;
-
-        // Add config to local registry
-        if (!config.refine)
-        {
-          if (clazz.$$properties === undefined) {
-            clazz.$$properties = {};
-          }
-
-          clazz.$$properties[name] = config;
-        }
-
-        // Store init value to prototype. This makes it possible to
-        // overwrite this value in derived classes.
-        if (config.init !== undefined) {
-          clazz.prototype["__init$" + name] = config.init;
-        }
-
-        // register event name
-        if (config.event !== undefined) {
-          var event = {};
-          event[config.event] = "rwt.event.ChangeEvent";
-          this.__addEvents(clazz, event, patch);
-        }
-
-        // Remember inheritable properties
-        if (config.inheritable) {
-          rwt.qx.Property.$$inheritable[name] = true;
-        }
-
-        // If instances of this class were already created, we
-        // need to attach the new style properties functions, directly.
-        if (attach) {
-          rwt.qx.Property.attachMethods(clazz, name, config);
-        }
-
-        // Create old style properties
-        if (config._fast) {
-          rwt.qx.LegacyProperty.addFastProperty(config, clazz.prototype);
-        } else if (config._cached) {
-          rwt.qx.LegacyProperty.addCachedProperty(config, clazz.prototype);
-        } else if (config._legacy) {
-          rwt.qx.LegacyProperty.addProperty(config, clazz.prototype);
-        }
-      }
-    },
-
-    /**
-     *
-     * @param clazz {Class} class to add property to
-     * @param name {String} name of the property
-     * @param config {Map} configuration map
-     * @param patch {Boolean ? false} enable refine/patch?
-     */
-    __validateProperty : rwt.util.Variant.select("qx.debug",
-    {
-      "on": function(clazz, name, config, patch)
-      {
-        var has = this.hasProperty(clazz, name);
-        var compat = config._legacy || config._fast || config._cached;
-
-        if (has)
-        {
-          var existingProperty = this.getPropertyDefinition(clazz, name);
-          var existingCompat = existingProperty._legacy || existingProperty._fast || existingProperty._cached;
-
-          if (compat != existingCompat) {
-            throw new Error("Could not redefine existing property '" + name + "' of class '" + clazz.classname + "'.");
-          }
-
-          if (config.refine && existingProperty.init === undefined) {
-            throw new Error("Could not refine a init value if there was previously no init value defined. Property '" + name + "' of class '" + clazz.classname + "'.");
-          }
-        }
-
-        if (!has && config.refine) {
-          throw new Error("Could not refine non-existent property: " + name + "!");
-        }
-
-        if (has && !patch) {
-          throw new Error("Class " + clazz.classname + " already has a property: " + name + "!");
-        }
-
-        if (has && patch && !compat)
-        {
-          if (!config.refine) {
-            throw new Error('Could not refine property "' + name + '" without a "refine" flag in the property definition! This class: ' + clazz.classname + ', original class: ' + this.getByProperty(clazz, name).classname + '.');
-          }
-
-          for (var key in config)
-          {
-            if (key !== "init" && key !== "refine") {
-              throw new Error("Class " + clazz.classname + " could not refine property: " + name + "! Key: " + key + " could not be refined!");
-            }
-          }
-        }
-
-        if (compat) {
-          return;
-        }
-
-        // Check 0.7 keys
-        var allowed = config.group ? rwt.qx.Property.$$allowedGroupKeys : rwt.qx.Property.$$allowedKeys;
-        for (var key in config)
-        {
-          if (allowed[key] === undefined) {
-            throw new Error('The configuration key "' + key + '" of property "' + name + '" in class "' + clazz.classname + '" is not allowed!');
-          }
-
-          if (config[key] === undefined) {
-            throw new Error('Invalid key "' + key + '" of property "' + name + '" in class "' + clazz.classname + '"! The value is undefined: ' + config[key]);
-          }
-
-          if (allowed[key] !== null && typeof config[key] !== allowed[key]) {
-            throw new Error('Invalid type of key "' + key + '" of property "' + name + '" in class "' + clazz.classname + '"! The type of the key must be "' + allowed[key] + '"!');
-          }
-        }
-
-        if( config.transform != null ) {
-          if( typeof config.transform !== "string" ) {
-            throw new Error( 'Invalid transform definition of property "' + name + '" in class "' + clazz.classname + '"! Needs to be a String.' );
-          }
-        }
-
-        if (config.check != null)
-        {
-          if (!(typeof config.check == "string" ||config.check instanceof Array || config.check instanceof Function)) {
-            throw new Error('Invalid check definition of property "' + name + '" in class "' + clazz.classname + '"! Needs to be a String, Array or Function.');
-          }
-        }
-
-        if (config.event != null && !this.isSubClassOf(clazz, rwt.qx.Target))
-        {
-          throw new Error("Invalid property '"+name+"' in class '"+clazz.classname+"': Properties defining an event can only be defined in sub classes of 'rwt.qx.Target'!");
-        }
-      },
-
-      "default" : null
-    }),
-
-
-    /**
-     * Attach members to a class
-     *
-     * @param clazz {Class} clazz to add members to
-     * @param members {Map} The map of members to attach
-     * @param patch {Boolean ? false} Enable patching of
-     * @param base (Boolean ? true) Attach base flag to mark function as members
-     *     of this class
-     * @param wrap {Boolean ? false} Whether the member method should be wrapped.
-     *     this is needed to allow base calls in patched mixin members.
-     * @return {void}
-     */
-    __addMembers : function( clazz, members, patch, base, wrap ) {
-      var proto = clazz.prototype;
-      var key, member;
-      for( var i = 0, a = rwt.util.Objects.getKeys( members ), l = a.length; i < l; i++ ) {
-        key = a[ i ];
-        member = members[ key ];
-        // Added helper stuff to functions
-        // Hint: Could not use typeof function because RegExp objects are functions, too
-        if( base !== false && member instanceof Function ) {
-          if( wrap === true ) {
-            // wrap "patched" mixin member
-            member = this.__mixinMemberWrapper( member, proto[ key ] );
-          } else {
-            // Configure extend (named base here)
-            // Hint: proto[key] is not yet overwritten here
-            if( proto[ key ] ) {
-              member.base = proto[ key ];
-            }
-            member.self = clazz;
-          }
-        }
-        // Attach member
-        proto[ key ] = member;
-      }
-    },
-
-
-    /**
-     * Wraps a member function of a mixin, which is included using "patch". This
-     * allows "base" calls in the mixin member function.
-     *
-     * @param member {Function} The mixin method to wrap
-     * @param base {Function} The overwritten method
-     * @return {Function} the wrapped mixin member
-     */
-    __mixinMemberWrapper : function( member, base ) {
-      if( base ) {
-        return function() {
-          var oldBase = member.base;
-          member.base = base;
-          var retval = member.apply(this, arguments);
-          member.base = oldBase;
-          return retval;
-        };
-      } else {
-        return member;
-      }
-    },
-
-
-    /**
-     * Include all features of the mixin into the given class (recursive).
-     *
-     * @param clazz {Class} A class previously defined where the mixin should be attached.
-     * @param mixin {Mixin} Include all features of this mixin
-     * @param patch {Boolean} Overwrite existing fields, functions and properties
-     */
-    __addMixin : function(clazz, mixin, patch)
-    {
-
-      // Attach content
-      var list = rwt.qx.Mixin.flatten([mixin]);
-      var entry;
-
-      for (var i=0, l=list.length; i<l; i++)
-      {
-        entry = list[i];
-
-        // Attach events
-        if (entry.$$events) {
-          this.__addEvents(clazz, entry.$$events, patch);
-        }
-
-        // Attach properties (Properties are already readonly themselve, no patch handling needed)
-        if (entry.$$properties) {
-          this.__addProperties(clazz, entry.$$properties, patch);
-        }
-
-        // Attach members (Respect patch setting, but dont apply base variables)
-        if (entry.$$members) {
-          this.__addMembers(clazz, entry.$$members, patch, patch, patch);
-        }
-      }
-
-      // Store mixin reference
-      if (clazz.$$includes)
-      {
-        clazz.$$includes.push(mixin);
-        clazz.$$flatIncludes.push.apply(clazz.$$flatIncludes, list);
-      }
-      else
-      {
-        clazz.$$includes = [mixin];
-        clazz.$$flatIncludes = list;
-      }
-    },
-
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-       PRIVATE FUNCTION HELPERS
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Returns the default constructor.
-     * This constructor just calles the constructor of the base class.
-     *
-     * @type static
-     * @return {Function} The default constructor.
-     */
-    __createDefaultConstructor : function() {
-      function defaultConstructor() {
-        arguments.callee.base.apply( this, arguments );
-      }
-      return defaultConstructor;
-    },
-
-
-    /**
-     * Returns an empty function. This is needed to get an empty function with an empty closure.
-     *
-     * @type static
-     * @return {Function} empty function
-     */
-    __createEmptyFunction : function() {
-      return function() {};
-    },
-
-    __initializeClass : function( clazz ) {
-      if( clazz.$$initializer ) {
-        var inits = [];
-        var target = clazz;
-        while( target.$$initializer ) {
-          inits.push( target );
-          target = target.superclass;
-        }
-        while( inits.length > 0 ) {
-          target = inits.pop();
-          target.$$initializer();
-          delete target.$$initializer;
-        }
-      }
-    },
-
-
-    /**
-     * Generate a wrapper of the original class constructor in order to enable
-     * some of the advanced OO features (e.g. abstract class, singleton, mixins)
-     *
-     * @param construct {Function} the original constructor
-     * @param name {String} name of the class
-     * @param type {String} the user specified class type
-     */
-    __wrapConstructor : function(construct, name, type)
-    {
-      var init = this.__initializeClass;
-      var wrapper = function() {
-
-        // We can access the class/statics using arguments.callee
-        var clazz=arguments.callee.constructor;
-        init( clazz );
-
-        // Attach local properties
-        if( !clazz.$$propertiesAttached ) {
-          rwt.qx.Property.attach( clazz );
-        }
-
-        // Execute default constructor
-        var retval=clazz.$$original.apply(this,arguments);
-
-        // Initialize local mixins
-        if(clazz.$$includes){var mixins=clazz.$$flatIncludes;
-        for(var i=0,l=mixins.length;i<l;i++){
-        if(mixins[i].$$constructor){mixins[i].$$constructor.apply(this,arguments);}}}
-
-        // Mark instance as initialized
-        if( this.classname === ', name, ' . classname ) {
-          this.$$initialized = true;
-        }
-
-        // Return optional return value
-        return retval;
-      };
-
-      // Add singleton getInstance()
-      if( type === "singleton" ) {
-        wrapper.getInstance = this.getInstance;
-      }
-
-      // Store original constructor
-      wrapper.$$original = construct;
-
-      // Store wrapper into constructor (needed for base calls etc.)
-      construct.wrapper = wrapper;
-
-      // Return generated wrapper
-      return wrapper;
-    }
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * This class is used to define mixins (similar to mixins in Ruby).
- *
- * Mixins are collections of code and variables, which can be merged into
- * other classes. They are similar to classes but don't support inheritance.
- *
- * See the description of the {@link #define} method how a mixin is defined.
- */
-rwt.qx.Class.define("rwt.qx.Mixin",
-{
-  statics :
-  {
-    /*
-    ---------------------------------------------------------------------------
-       PUBLIC API
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Define a new mixin.
-     *
-     * Example:
-     * <pre class='javascript'>
-     * rwt.qx.Mixin.define("name",
-     * {
-     *   includes: [SuperMixins],
-     *
-     *   properties: {
-     *     tabIndex: {type: "number", init: -1}
-     *   },
-     *
-     *   members:
-     *   {
-     *     prop1: "foo",
-     *     meth1: function() {},
-     *     meth2: function() {}
-     *   }
-     * });
-     * </pre>
-     *
-     * @type static
-     * @param name {String} name of the mixin
-     * @param config {Map ? null} Mixin definition structure. The configuration map has the following keys:
-     *   <table>
-     *     <tr><th>Name</th><th>Type</th><th>Description</th></tr>
-     *     <tr><th>construct</th><td>Function</td><td>An optional mixin constructor. It is called on instantiation each
-     *         class including this mixin. The constructor takes no parameters.</td></tr>
-     *     <tr><th>destruct</th><td>Function</td><td>An optional mixin destructor.</td></tr>
-     *     <tr><th>include</th><td>Mixin[]</td><td>Array of mixins, which will be merged into the mixin.</td></tr>
-     *     <tr><th>statics</th><td>Map</td><td>
-     *         Map of statics of the mixin. The statics will not get copied into the target class. They remain
-     *         acceccible from the mixin. This is the same behaviour as statics in interfaces ({@link qx.Interface#define}).
-     *     </td></tr>
-     *     <tr><th>members</th><td>Map</td><td>Map of members of the mixin.</td></tr>
-     *     <tr><th>properties</th><td>Map</td><td>Map of property definitions. Format of the map: TODOC</td></tr>
-     *     <tr><th>events</th><td>Map</td><td>
-     *         Map of events the mixin fires. The keys are the names of the events and the values are
-     *         corresponding event type classes.
-     *     </td></tr>
-     *   </table>
-     */
-    define : function(name, config)
-    {
-      if (config)
-      {
-        // Normalize include
-        if (config.include && !(config.include instanceof Array)) {
-          config.include = [config.include];
-        }
-
-        // Create Interface from statics
-        var mixin = config.statics ? config.statics : {};
-        for(var key in mixin) {
-          mixin[key].mixin = mixin;
-        }
-
-        // Attach configuration
-        if (config.construct) {
-          mixin.$$constructor = config.construct;
-        }
-
-        if (config.include) {
-          mixin.$$includes = config.include;
-        }
-
-        if (config.properties) {
-          mixin.$$properties = config.properties;
-        }
-
-        if (config.members) {
-          mixin.$$members = config.members;
-        }
-
-        for(var key in mixin.$$members)
-        {
-          if (mixin.$$members[key] instanceof Function) {
-            mixin.$$members[key].mixin = mixin;
-          }
-        }
-
-        if (config.events) {
-          mixin.$$events = config.events;
-        }
-
-        if (config.destruct) {
-          mixin.$$destructor = config.destruct;
-        }
-      }
-      else
-      {
-        var mixin = {};
-      }
-
-      // Add basics
-      mixin.$$type = "Mixin";
-      mixin.name = name;
-
-      // Attach toString
-      mixin.toString = this.genericToString;
-
-      // Assign to namespace
-      mixin.basename = rwt.qx.Class.createNamespace(name, mixin);
-
-      // Store class reference in global mixin registry
-      this.__registry[name] = mixin;
-
-      // Return final mixin
-      return mixin;
-    },
-
-
-    /**
-     * Check compatiblity between mixins (including their includes)
-     *
-     * @param mixins {Mixin[]} an array of mixins
-     * @throws an exception when there is a conflict between the mixins
-     */
-    checkCompatibility : function(mixins)
-    {
-      var list = this.flatten(mixins);
-      var len = list.length;
-
-      if (len < 2) {
-        return true;
-      }
-
-      var properties = {};
-      var members = {};
-      var events = {};
-      var mixin;
-
-      for (var i=0; i<len; i++)
-      {
-        mixin = list[i];
-
-        for (var key in mixin.events)
-        {
-          if(events[key]) {
-            throw new Error('Conflict between mixin "' + mixin.name + '" and "' + events[key] + '" in member "' + key + '"!');
-          }
-
-          events[key] = mixin.name;
-        }
-
-        for (var key in mixin.properties)
-        {
-          if(properties[key]) {
-            throw new Error('Conflict between mixin "' + mixin.name + '" and "' + properties[key] + '" in property "' + key + '"!');
-          }
-
-          properties[key] = mixin.name;
-        }
-
-        for (var key in mixin.members)
-        {
-          if(members[key]) {
-            throw new Error('Conflict between mixin "' + mixin.name + '" and "' + members[key] + '" in member "' + key + '"!');
-          }
-
-          members[key] = mixin.name;
-        }
-      }
-
-      return true;
-    },
-
-
-    /**
-     * Checks if a class is compatible to the given mixin (no conflicts)
-     *
-     * @param mixin {Mixin} mixin to check
-     * @param clazz {Class} class to check
-     * @throws an exception when the given mixin is incompatible to the class
-     * @return {Boolean} true if the mixin is compatible to the given class
-     */
-    isCompatible : function(mixin, clazz)
-    {
-      var list = rwt.qx.Class.getMixins(clazz);
-      list.push(mixin);
-      return rwt.qx.Mixin.checkCompatibility(list);
-    },
-
-
-    /**
-     * Returns a mixin by name
-     *
-     * @type static
-     * @param name {String} class name to resolve
-     * @return {Class} the class
-     */
-    getByName : function(name) {
-      return this.__registry[name];
-    },
-
-
-    /**
-     * Determine if mixin exists
-     *
-     * @type static
-     * @name isDefined
-     * @param name {String} mixin name to check
-     * @return {Boolean} true if mixin exists
-     */
-    isDefined : function(name) {
-      return this.getByName(name) !== undefined;
-    },
-
-
-    /**
-     * Determine the number of mixins which are defined
-     *
-     * @type static
-     * @return {Number} the number of classes
-     */
-    getTotalNumber : function() {
-      return rwt.util.Objects.getLength(this.__registry);
-    },
-
-
-    /**
-     * Generates a list of all mixins given plus all the
-     * mixins these includes plus... (deep)
-     *
-     * @param mixins {Mixin[] ? []} List of mixins
-     * @returns {Array} List of all mixins
-     */
-    flatten : function(mixins)
-    {
-      if (!mixins) {
-        return [];
-      }
-
-      // we need to create a copy and not to modify the existing array
-      var list = mixins.concat();
-
-      for (var i=0, l=mixins.length; i<l; i++)
-      {
-        if (mixins[i].$$includes) {
-          list.push.apply(list, this.flatten(mixins[i].$$includes));
-        }
-      }
-
-      // console.log("Flatten: " + mixins + " => " + list);
-
-      return list;
-    },
-
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-       PRIVATE/INTERNAL API
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * This method will be attached to all mixins to return
-     * a nice identifier for them.
-     *
-     * @internal
-     * @return {String} The mixin identifier
-     */
-    genericToString : function() {
-      return "[Mixin " + this.name + "]";
-    },
-
-
-    /** Registers all defined mixins */
-    __registry : {},
-
-
-    /** {Map} allowed keys in mixin definition */
-    __allowedKeys : rwt.util.Variant.select("qx.debug",
-    {
-      "on":
-      {
-        "include"    : "object",   // Mixin | Mixin[]
-        "statics"    : "object",   // Map
-        "members"    : "object",   // Map
-        "properties" : "object",   // Map
-        "events"     : "object",   // Map
-        "destruct"   : "function", // Function
-        "construct"  : "function"  // Function
-      },
-
-      "default" : null
-    }),
-
-
-    /**
-     * Validates incoming configuration and checks keys and values
-     *
-     * @type static
-     * @param name {String} The name of the class
-     * @param config {Map} Configuration map
-     */
-    __validateConfig : rwt.util.Variant.select("qx.debug",
-    {
-      "on": function(name, config)
-      {
-        // Validate keys
-        var allowed = this.__allowedKeys;
-        for (var key in config)
-        {
-          if (!allowed[key]) {
-            throw new Error('The configuration key "' + key + '" in mixin "' + name + '" is not allowed!');
-          }
-
-          if (config[key] == null) {
-            throw new Error('Invalid key "' + key + '" in mixin "' + name + '"! The value is undefined/null!');
-          }
-
-          if (allowed[key] !== null && typeof config[key] !== allowed[key]) {
-            throw new Error('Invalid type of key "' + key + '" in mixin "' + name + '"! The type of the key must be "' + allowed[key] + '"!');
-          }
-        }
-
-        // Validate maps
-        var maps = [ "statics", "members", "properties", "events" ];
-        for (var i=0, l=maps.length; i<l; i++)
-        {
-          var key = maps[i];
-
-          if (config[key] !== undefined && (config[key] instanceof Array || config[key] instanceof RegExp || config[key] instanceof Date || config[key].classname !== undefined)) {
-            throw new Error('Invalid key "' + key + '" in mixin "' + name + '"! The value needs to be a map!');
-          }
-        }
-
-        // Validate includes
-        if (config.include)
-        {
-          for (var i=0, a=config.include, l=a.length; i<l; i++)
-          {
-            if (a[i] == null) {
-              throw new Error("Includes of mixins must be mixins. The include number '" + (i+1) + "' in mixin '" + name + "'is undefined/null!");
-            }
-
-            if (a[i].$$type !== "Mixin") {
-              throw new Error("Includes of mixins must be mixins. The include number '" + (i+1) + "' in mixin '" + name + "'is not a mixin!");
-            }
-          }
-
-          this.checkCompatibility(config.include);
-        }
-      },
-
-      "default" : function() {}
-    })
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Internal class for handling dynamic properties.
- *
- * WARNING: This is a legacy class to support the old-style dynamic properties
- * in 0.6.x. Its much improved successor is {@link rwt.qx.Property}.
- *
- * @deprecated This class is supposed to be removed in qooxdoo 0.7
- */
-rwt.qx.Class.define("rwt.qx.LegacyProperty",
-{
-  statics :
-  {
-    /**
-     * Converts the property name to the setter name
-     *
-     * @type static
-     * @param name {String} name of a property
-     * @return {String} name of the setter for this property
-     */
-    getSetterName : function(name) {
-      return rwt.qx.Property.$$method.set[name];
-    },
-
-
-    /**
-     * Converts the property name to the getter name
-     *
-     * @type static
-     * @param name {String} name of a property
-     * @return {String} name of the setter for this property
-     */
-    getGetterName : function(name) {
-      return rwt.qx.Property.$$method.get[name];
-    },
-
-
-    /**
-     * Converts the property name to the resetter name
-     *
-     * @type static
-     * @param name {String} name of a property
-     * @return {String} name of the setter for this property
-     */
-    getResetterName : function(name) {
-      return rwt.qx.Property.$$method.reset[name];
-    },
-
-
-    /*
-    ---------------------------------------------------------------------------
-      OBJECT PROPERTY EXTENSION
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Adds a so-named fast property to a prototype.
-     *
-     * @deprecated
-     * @type static
-     * @param config {Map} Configuration structure
-     * @param proto {Object} Prototype where the methods should be attached
-     * @return {void}
-     */
-    addFastProperty : function(config, proto)
-    {
-      var vName = config.name;
-      var vUpName = rwt.util.Strings.toFirstUp(vName);
-
-      var vStorageField = "_value" + vUpName;
-      var vGetterName = "get" + vUpName;
-      var vSetterName = "set" + vUpName;
-      var vComputerName = "_compute" + vUpName;
-
-      proto[vStorageField] = typeof config.defaultValue !== "undefined" ? config.defaultValue : null;
-
-      if (config.noCompute)
-      {
-        proto[vGetterName] = function() {
-          return this[vStorageField];
-        };
-      }
-      else
-      {
-        proto[vGetterName] = function() {
-          return this[vStorageField] == null ? this[vStorageField] = this[vComputerName]() : this[vStorageField];
-        };
-      }
-
-      proto[vGetterName].self = proto.constructor;
-
-      if (config.setOnlyOnce)
-      {
-        proto[vSetterName] = function(vValue)
-        {
-          this[vStorageField] = vValue;
-          this[vSetterName] = null;
-
-          return vValue;
-        };
-      }
-      else
-      {
-        proto[vSetterName] = function(vValue) {
-          return this[vStorageField] = vValue;
-        };
-      }
-
-      proto[vSetterName].self = proto.constructor;
-
-      if (!config.noCompute)
-      {
-        proto[vComputerName] = function() {
-          return null;
-        };
-
-        proto[vComputerName].self = proto.constructor;
-      }
-    },
-
-
-    /**
-     * Adds a so-named cached property to a prototype
-     *
-     * @deprecated
-     * @type static
-     * @param config {Map} Configuration structure
-     * @param proto {Object} Prototype where the methods should be attached
-     * @return {void}
-     */
-    addCachedProperty : function(config, proto)
-    {
-      var vName = config.name;
-      var vUpName = rwt.util.Strings.toFirstUp(vName);
-
-      var vStorageField = "_cached" + vUpName;
-      var vComputerName = "_compute" + vUpName;
-      var vChangeName = "_change" + vUpName;
-
-      if (typeof config.defaultValue !== "undefined") {
-        proto[vStorageField] = config.defaultValue;
-      }
-
-      proto["get" + vUpName] = function()
-      {
-        if (this[vStorageField] == null) {
-          this[vStorageField] = this[vComputerName]();
-        }
-
-        return this[vStorageField];
-      };
-
-      proto["_invalidate" + vUpName] = function()
-      {
-        if (this[vStorageField] != null)
-        {
-          this[vStorageField] = null;
-
-          if (config.addToQueueRuntime) {
-            this.addToQueueRuntime(config.name);
-          }
-        }
-      };
-
-      proto["_recompute" + vUpName] = function()
-      {
-        var vOld = this[vStorageField];
-        var vNew = this[vComputerName]();
-
-        if (vNew != vOld)
-        {
-          this[vStorageField] = vNew;
-          this[vChangeName](vNew, vOld);
-
-          return true;
-        }
-
-        return false;
-      };
-
-      proto[vChangeName] = function(vNew, vOld) {};
-
-      proto[vComputerName] = function() {
-        return null;
-      };
-
-      proto["get" + vUpName].self = proto.constructor;
-      proto["_invalidate" + vUpName].self = proto.constructor;
-      proto["_recompute" + vUpName].self = proto.constructor;
-    },
-
-
-    /**
-     * Adds a property to a prototype
-     *
-     * @deprecated
-     * @type static
-     * @param config {Map} Configuration structure
-     * @param proto {Object} Prototype where the methods should be attached
-     * @return {void}
-     * @throws TODOC
-     */
-    addProperty : function(config, proto)
-    {
-      if (typeof config !== "object") {
-        throw new Error("AddProperty: Param should be an object!");
-      }
-
-      if (typeof config.name !== "string") {
-        throw new Error("AddProperty: Malformed input parameters: name needed!");
-      }
-
-      // Auto-detect dispose properties
-      if (config.dispose === undefined && (config.type == "function" || config.type == "object")) {
-        config.dispose = true;
-      }
-
-      config.method = rwt.util.Strings.toFirstUp(config.name);
-      config.implMethod = config.impl ? rwt.util.Strings.toFirstUp(config.impl) : config.method;
-
-      if (config.defaultValue === undefined) {
-        config.defaultValue = null;
-      }
-
-      config.allowNull = config.allowNull !== false;
-      config.allowMultipleArguments = config.allowMultipleArguments === true;
-
-      if (typeof config.type === "string") {
-        config.hasType = true;
-      } else if (typeof config.type !== "undefined") {
-        throw new Error("AddProperty: Invalid type definition for property " + config.name + ": " + config.type);
-      } else {
-        config.hasType = false;
-      }
-
-      if (typeof config.instance === "string") {
-        config.hasInstance = true;
-      } else if (typeof config.instance !== "undefined") {
-        throw new Error("AddProperty: Invalid instance definition for property " + config.name + ": " + config.instance);
-      } else {
-        config.hasInstance = false;
-      }
-
-      if (typeof config.classname === "string") {
-        config.hasClassName = true;
-      } else if (typeof config.classname !== "undefined") {
-        throw new Error("AddProperty: Invalid classname definition for property " + config.name + ": " + config.classname);
-      } else {
-        config.hasClassName = false;
-      }
-
-      config.hasConvert = config.convert != null;
-      config.hasPossibleValues = config.possibleValues != null;
-
-      config.addToQueue = config.addToQueue || false;
-      config.addToQueueRuntime = config.addToQueueRuntime || false;
-
-      // upper-case name
-      config.up = config.name.toUpperCase();
-
-      // new style keys (compatible to rwt.qx.Property)
-      var valueKey = rwt.qx.Property.$$store.user[config.name] = "__user$" + config.name;
-
-      // old style keys
-      var changeKey = "change" + config.method;
-      var modifyKey = "_modify" + config.implMethod;
-      var checkKey = "_check" + config.implMethod;
-
-      var method = rwt.qx.Property.$$method;
-      if (!method.set[config.name])
-      {
-        method.set[config.name] = "set" + config.method;
-        method.get[config.name] = "get" + config.method;
-        method.reset[config.name] = "reset" + config.method;
-      }
-
-      // apply default value
-      proto[valueKey] = config.defaultValue;
-
-      // building getFoo(): Returns current stored value
-      proto["get" + config.method] = function() {
-        return this[valueKey];
-      };
-
-      // building forceFoo(): Set (override) without do anything else
-      proto["force" + config.method] = function(newValue) {
-        return this[valueKey] = newValue;
-      };
-
-      // building resetFoo(): Reset value to default value
-      proto["reset" + config.method] = function() {
-        return this["set" + config.method](config.defaultValue);
-      };
-
-      // building toggleFoo(): Switching between two boolean values
-      if (config.type === "boolean")
-      {
-        proto["toggle" + config.method] = function(newValue) {
-          return this["set" + config.method](!this[valueKey]);
-        };
-      }
-
-      if (config.allowMultipleArguments || config.hasConvert || config.hasInstance || config.hasClassName || config.hasPossibleValues || config.hasUnitDetection || config.addToQueue || config.addToQueueRuntime || config.addToStateQueue)
-      {
-        // building setFoo(): Setup new value, do type and change detection, converting types, call unit detection, ...
-        proto["set" + config.method] = function(newValue)
-        {
-          // convert multiple arguments to array
-          if (config.allowMultipleArguments && arguments.length > 1) {
-            newValue = rwt.util.Arrays.fromArguments(arguments);
-          }
-
-          // support converter methods
-          if (config.hasConvert)
-          {
-            try {
-              newValue = config.convert.call(this, newValue, config);
-            } catch(ex) {
-              throw new Error("Attention! Could not convert new value for " + config.name + ": " + newValue + ": " + ex);
-            }
-          }
-
-          var oldValue = this[valueKey];
-
-          if (newValue === oldValue) {
-            return newValue;
-          }
-
-          if (!(config.allowNull && newValue == null))
-          {
-            if (config.hasType && typeof newValue !== config.type) {
-              throw new Error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + config.name + "\" which must be typeof \"" + config.type + "\" but is typeof \"" + typeof newValue + "\"!");
-            }
-
-            if (rwt.qx.Class.getByName(config.instance))
-            {
-              if (config.hasInstance && !(newValue instanceof rwt.qx.Class.getByName(config.instance))) {
-                throw new Error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + config.name + "\" which must be an instance of \"" + config.instance + "\"!");
-              }
-            }
-            else if (rwt.util.Variant.isSet("qx.compatibility", "on"))
-            {
-              if (config.hasInstance && !(newValue instanceof qx.OO.classes[config.instance])) {
-                throw new Error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + config.name + "\" which must be an instance of \"" + config.instance + "\"!");
-              }
-            }
-
-            if (config.hasClassName && newValue.classname != config.classname) {
-              throw new Error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + config.name + "\" which must be an object with the classname \"" + config.classname + "\"!");
-            }
-
-            if (config.hasPossibleValues && newValue != null && !rwt.util.Arrays.contains(config.possibleValues, newValue)) {
-              throw new Error("Failed to save value for " + config.name + ". '" + newValue + "' is not a possible value!");
-            }
-          }
-
-          // Allow to check and transform the new value before storage
-          if (this[checkKey])
-          {
-            try
-            {
-              newValue = this[checkKey](newValue, config);
-
-              // Don't do anything if new value is indentical to old value
-              if (newValue === oldValue) {
-                return newValue;
-              }
-            }
-            catch(ex)
-            {
-              throw new Error( "Failed to check property " + config.name + " " + ex );
-            }
-          }
-
-          // Store new value
-          this[valueKey] = newValue;
-
-          // Check if there is a modifier implementation
-          if (this[modifyKey])
-          {
-            try
-            {
-              this[modifyKey](newValue, oldValue, config);
-            }
-            catch(ex)
-            {
-              throw new Error( "Modification of property \"" + config.name + "\" failed with exception " + ex );
-            }
-          }
-
-          // Auto queue addition support
-          if (config.addToQueue) {
-            this.addToQueue(config.name);
-          }
-
-          if (config.addToQueueRuntime) {
-            this.addToQueueRuntime(config.name);
-          }
-
-          // Auto state queue addition support
-          if (config.addToStateQueue) {
-            this.addToStateQueue();
-          }
-
-          // Create Event
-          if (this.hasEventListeners && this.hasEventListeners(changeKey))
-          {
-            try {
-              this.createDispatchDataEvent(changeKey, newValue);
-            } catch(ex) {
-              throw new Error("Property " + config.name + " modified: Failed to dispatch change event: " + ex);
-            }
-          }
-
-          return newValue;
-        };
-      }
-      else
-      {
-        // building setFoo(): Setup new value, do type and change detection, converting types, call unit detection, ...
-        proto["set" + config.method] = function(newValue)
-        {
-          var oldValue = this[valueKey];
-
-          if (newValue === oldValue) {
-            return newValue;
-          }
-
-          if (!(config.allowNull && newValue == null))
-          {
-            if (config.hasType && typeof newValue !== config.type) {
-              throw new Error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + config.name + "\" which must be typeof \"" + config.type + "\" but is typeof \"" + typeof newValue + "\"!");
-            }
-          }
-
-          // Allow to check and transform the new value before storage
-          if (this[checkKey])
-          {
-            try
-            {
-              newValue = this[checkKey](newValue, config);
-
-              // Don't do anything if new value is indentical to old value
-              if (newValue === oldValue) {
-                return newValue;
-              }
-            }
-            catch(ex)
-            {
-              throw new Error( "Failed to check property " + config.name + " " + ex );
-            }
-          }
-
-          // Store new value
-          this[valueKey] = newValue;
-
-          // Check if there is a modifier implementation
-          if (this[modifyKey])
-          {
-            try
-            {
-              this[modifyKey](newValue, oldValue, config);
-            }
-            catch(ex)
-            {
-              throw new Error( "Setting property \"" + config.name + "\" to \"" + newValue + "\" failed with exception " + ex );
-            }
-          }
-
-          // Create Event
-          if (this.hasEventListeners && this.hasEventListeners(changeKey))
-          {
-            var vEvent = new rwt.event.DataEvent(changeKey, newValue, oldValue, false);
-
-            vEvent.setTarget(this);
-
-            try {
-              this.dispatchEvent(vEvent, true);
-            } catch(ex) {
-              throw new Error("Property " + config.name + " modified: Failed to dispatch change event: " + ex);
-            }
-          }
-
-          return newValue;
-        };
-      }
-
-      // Attach self to handle protected protection
-      proto["set" + config.method].self = proto.constructor;
-
-      // building user configured get alias for property
-      if (typeof config.getAlias === "string") {
-        proto[config.getAlias] = proto["get" + config.method];
-      }
-
-      // building user configured set alias for property
-      if (typeof config.setAlias === "string") {
-        proto[config.setAlias] = proto["set" + config.method];
-      }
-    }
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Internal class for handling of dynamic properties. Should only be used
- * through the methods provided by {@link rwt.qx.Class}.
- *
- * For a complete documentation of properties take a
- * look at http://qooxdoo.org/documentation/developer_manual/properties.
- *
- *
- * *Normal properties*
- *
- * The <code>properties</code> key in the class definition map of {@link rwt.qx.Class#define}
- * is used to generate the properties.
- *
- * Valid keys of a property definition are:
- *
- * <table>
- *   <tr><th>Name</th><th>Type</th><th>Description</th></tr>
- *   <tr><th>check</th><td>Array, String, Function</td><td>
- *     The check is used to validate the incoming value of a property. The check can be:
- *     <ul>
- *       <li>a custom check function. The function takes the incoming value as a parameter and must
- *           return a boolean value to indicate whether the values is valid.
- *       </li>
- *       <li>inline check code as a string e.g. <code>"value &gt; 0 && value &lt; 100"</code></li>
- *       <li>a class name e.g. <code>rwt.widgets.base.Button</code></li>
- *       <li>a name of an interface the value must implement, e.g. <code>qx.application.IAplpication</code></li>
- *       <li>an array of all valid values</li>
- *       <li>one of the predefined checks: Boolean, String, Number, Integer, Float, Double,
- *           Object, Array, Map, Class, Mixin, Interface, Theme, Error, RegExp, Function,
- *           Date, Node, Element, Document, Window, Event
- *       </li>
- *     <ul>
- *   </td></tr>
- *   <tr><th>init</th><td>var</td><td>
- *     Sets the default/initial value of the property. If no property value is set or the property
- *     gets reset, the getter will return the <code>init</code> value.
- *   </td></tr>
- *   <tr><th>apply</th><td>String</td><td>
- *     On change of the property value the method of the specified name will be called. The signature of
- *     the method is <code>function(newValue, oldValue)</code>.
- *   </td></tr>
- *   <tr><th>event</th><td>String</td><td>
- *     On change of the property value an event with the given name will be dispached. The event type is
- *     {@link rwt.event.ChangeEvent}.
- *   </td></tr>
- *   <tr><th>themeable</th><td>Boolean</td><td>
- *     Whether this property can be set using themes.
- *   </td></tr>
- *   <tr><th>inheritable</th><td>Boolean</td><td>
- *     Whether the property value should be inheritable. If the property does not have a user defined or an
- *     init value, the property will try to get the value from the parent of the current object.
- *   </td></tr>
- *   <tr><th>nullable</th><td>Boolean</td><td>
- *     Whether <code>null</code> is an allowed value of the property. This is complemental to the check
- *     defined using the <code>check</code> key.
- *   </td></tr>
- *   <tr><th>refine</th><td>Boolean</td><td>
- *     Whether the property definition is a refinemnet of a property in one of the super classes of the class.
- *     Only the <code>init</code> value can be changed using refine.
- *   </td></tr>
- *   <tr><th>transform</th><td>String</td><td>
- *     On setting of the property value the method of the specified name will
- *     be called. The signature of the method is <code>function(value)</code>.
- *     The parameter <code>value</code> is the value passed to the setter.
- *     The function must return the modified or unmodified value.
- *     Transformation occurs before the check function, so both may be
- *     specified if desired.  Alternatively, the transform function may throw
- *     an error if the value passed to it is invalid.
- *   </td></tr>
- * </table>
- *
- * *Property groups*
- *
- * Property groups are defined in a similar way but support a different set of keys:
- *
- * <table>
- *   <tr><th>Name</th><th>Type</th><th>Description</th></tr>
- *   <tr><th>group</th><td>String[]</td><td>
- *     A list of property names which should be set using the propery group.
- *   </td></tr>
- *   <tr><th>mode</th><td>String</td><td>
- *     If mode is set to <code>"shorthand"</code>, the properties can be set using a CSS like shorthand mode.
- *   </td></tr>
- *   <tr><th>themeable</th><td>Boolean</td><td>
- *     Whether this property can be set using themes.
- *   </td></tr>
- * </table>
- *
- * @internal
- */
-rwt.qx.Class.define( "rwt.qx.Property", {
-
-  statics : {
-
-    /**
-     * Built-in checks
-     * The keys could be used in the check of the properties
-     *
-     * @internal
-     */
-    __checks : {
-      "Boolean"   : 'typeof value === "boolean"',
-      "String"    : 'typeof value === "string"',
-      "NonEmptyString" : 'typeof value === "string" && value.length > 0',
-
-      "Number"    : 'typeof value === "number" && isFinite(value)',
-      "Integer"   : 'typeof value === "number" && isFinite(value) && value%1 === 0',
-      "Float"     : 'typeof value === "number" && isFinite(value)',
-      "Double"    : 'typeof value === "number" && isFinite(value)',
-
-      "Error"     : 'value instanceof Error',
-      "RegExp"    : 'value instanceof RegExp',
-
-      "Object"    : 'value !== null && typeof value === "object"',
-      "Array"     : 'value instanceof Array',
-      "Map"       : 'value !== null && typeof value === "object" && !(value instanceof Array) && !(value instanceof rwt.qx.Object)',
-
-      "Function"  : 'value instanceof Function',
-      "Date"      : 'value instanceof Date',
-      "Node"      : 'value !== null && value.nodeType !== undefined',
-      "Element"   : 'value !== null && value.nodeType === 1 && value.attributes',
-      "Document"  : 'value !== null && value.nodeType === 9 && value.documentElement',
-      "Window"    : 'value !== null && window.document',
-      "Event"     : 'value !== null && value.type !== undefined',
-
-      "Class"     : 'value !== null && value.$$type === "Class"',
-      "Mixin"     : 'value !== null && value.$$type === "Mixin"',
-      "Interface" : 'value !== null && value.$$type === "Interface"',
-      "Theme"     : 'value !== null && value.$$type === "Theme"',
-
-      "Color"     : 'typeof value === "string" && rwt.util.Colors.isValid(value)',
-      "Border"    : 'value !== null',
-      "Font"      : 'value !== null',
-      "Label"     : 'value !== null && typeof value === "string"'
-    },
-
-    /**
-     * Contains types from {@link #__checks} list which need to be disposed
-     *
-     * @internal
-     */
-    __dispose : {
-      "Object"    : true,
-      "Array"     : true,
-      "Map"       : true,
-      "Function"  : true,
-      "Date"      : true,
-      "Node"      : true,
-      "Element"   : true,
-      "Document"  : true,
-      "Window"    : true,
-      "Event"     : true,
-      "Class"     : true,
-      "Mixin"     : true,
-      "Interface" : true,
-      "Theme"     : true,
-      "Border"    : true,
-      "Font"      : true
-    },
-
-    /**
-     * Inherit value, used to override defaults etc. to force inheritance
-     * even if property value is not undefined (through multi-values)
-     *
-     * @internal
-     */
-    $$inherit : "inherit",
-
-    /**
-     * Used in build version for storage names
-     */
-    $$idcounter : 0,
-
-    /**
-     * Caching field names for each property created
-     *
-     * @internal
-     */
-    $$store : {
-      user    : {},
-      theme   : {},
-      inherit : {},
-      init    : {},
-      useinit : {}
-    },
-
-    /**
-     * Caching function names for each property created
-     *
-     * @internal
-     */
-    $$method : {
-      get     : {},
-      set     : {},
-      reset   : {},
-      init    : {},
-      refresh : {},
-      style   : {},
-      unstyle : {}
-    },
-
-    /**
-     * Supported keys for property defintions
-     *
-     * @internal
-     */
-    $$allowedKeys : {
-      name         : "string",   // String
-      dispose      : "boolean",  // Boolean
-      inheritable  : "boolean",  // Boolean
-      nullable     : "boolean",  // Boolean
-      themeable    : "boolean",  // Boolean
-      refine       : "boolean",  // Boolean
-      init         : null,       // var
-      apply        : "string",   // String
-      event        : "string",   // String
-      check        : null,       // Array, String, Function
-      transform    : "string",   // String
-      deferredInit : "boolean"   // Boolean
-    },
-
-    $$allowedGroupKeys : {
-      name        : "string",   // String
-      group       : "object",   // Array
-      mode        : "string",   // String
-      themeable   : "boolean"   // Boolean
-    },
-
-    /** Contains names of inheritable properties, filled by {@link rwt.qx.Class.define} */
-    $$inheritable : {},
-
-    /**
-     * Refreshes widget whose parent has changed (including the children)
-     *
-     * @type static
-     * @internal
-     * @param widget {rwt.widgets.base.Widget} the widget
-     * @return {void}
-     */
-    refresh : function( widget ) {
-      var parent = widget.getParent();
-
-      if( parent ) {
-        var clazz = widget.constructor;
-        var inherit = this.$$store.inherit;
-        var refresh = this.$$method.refresh;
-        var properties;
-        while( clazz ) {
-          properties = clazz.$$properties;
-          if( properties ) {
-            for( var name in this.$$inheritable ) {
-              // Whether the property is available in this class
-              // and whether it is inheritable in this class as well
-              if( properties[name] && widget[refresh[name]] ) {
-                widget[refresh[name]]( parent[inherit[name]] );
-              }
-            }
-          }
-          clazz = clazz.superclass;
-        }
-      }
-    },
-
-    /**
-     * Attach properties to class prototype
-     *
-     * @type static
-     * @internal
-     * @param clazz {Class} Class to attach properties to
-     * @return {void}
-     */
-    attach : function( clazz ) {
-      var properties = clazz.$$properties;
-      if( properties ) {
-        for( var name in properties ) {
-          this.attachMethods( clazz, name, properties[name] );
-        }
-      }
-      clazz.$$propertiesAttached = true;
-    },
-
-    /**
-     * Attach one property to class
-     *
-     * @type static
-     * @internal
-     * @param clazz {Class} Class to attach properties to
-     * @param name {String} Name of property
-     * @param config {Map} Configuration map of property
-     * @return {void}
-     */
-    attachMethods : function( clazz, name, config ) {
-      // Filter old properties
-      if( config._legacy || config._fast || config._cached ) {
-        return;
-      }
-
-      // Generate property method prefixes and postfixes
-      var prefix, postfix;
-
-      if( name.charAt(0) === "_" ) {
-        if( name.charAt(1) === "_" ) {
-          prefix = "__";
-          postfix = rwt.util.Strings.toFirstUp(name.substring(2));
-        } else {
-          prefix = "_";
-          postfix = rwt.util.Strings.toFirstUp(name.substring(1));
-        }
-      } else {
-        prefix = "";
-        postfix = rwt.util.Strings.toFirstUp(name);
-      }
-
-      // Attach methods
-      if( config.group ) {
-        this.__attachGroupMethods( clazz, config, prefix, postfix );
-      } else {
-        this.__attachPropertyMethods( clazz, config, prefix, postfix );
-      }
-    },
-
-    /**
-     * Attach group methods
-     *
-     * @type static
-     * @internal
-     * @param clazz {Class} Class to attach properties to
-     * @param config {Map} Property configuration
-     * @param prefix {String} Prefix of property e.g. "__" or "_" for private or protected properties
-     * @param postfix {String} Camelcase name of property e.g. name=width => postfix=Width
-     * @return {void}
-     */
-    __attachGroupMethods : function( clazz, config, prefix, postfix ) {
-      var members = clazz.prototype;
-      var name = config.name;
-      var themeable = config.themeable === true;
-
-      var setter = [];
-      var resetter = [];
-
-      if( themeable ) {
-        var styler = [];
-        var unstyler = [];
-      }
-
-      var argHandler = "var a=arguments[0] instanceof Array?arguments[0]:arguments;";
-
-      setter.push( argHandler );
-
-      if( themeable ) {
-        styler.push( argHandler );
-      }
-
-      if( config.mode == "shorthand" ) {
-        var shorthand = "a=rwt.util.Arrays.fromShortHand(rwt.util.Arrays.fromArguments(a));";
-        setter.push( shorthand );
-
-        if( themeable ) {
-          styler.push( shorthand );
-        }
-      }
-
-      for( var i=0, a=config.group, l=a.length; i<l; i++ ) {
-        if( rwt.util.Variant.isSet( "qx.debug", "on" ) ) {
-          if( !this.$$method.set[a[i]] || !this.$$method.reset[a[i]] ) {
-            throw new Error( "Cannot create property group '" + name + "' including non-existing property '" + a[i] + "'!" );
-          }
-        }
-
-        setter.push( "this.", this.$$method.set[a[i]], "(a[", i, "]);" );
-        resetter.push( "this.", this.$$method.reset[a[i]], "();" );
-
-        if( themeable ) {
-          if( rwt.util.Variant.isSet( "qx.debug", "on" ) ) {
-            if( !this.$$method.style[a[i]] ) {
-              throw new Error( "Cannot add the non themable property '" + a[i] + "' to the themable property group '"+ name +"'" );
-            }
-          }
-          styler.push("this.", this.$$method.style[a[i]], "(a[", i, "]);" );
-          unstyler.push("this.", this.$$method.unstyle[a[i]], "();" );
-        }
-      }
-
-      // Attach setter
-      this.$$method.set[name] = prefix + "set" + postfix;
-      members[this.$$method.set[name]] = new Function( setter.join( "" ) );
-
-      // Attach resetter
-      this.$$method.reset[name] = prefix + "reset" + postfix;
-      members[this.$$method.reset[name]] = new Function( resetter.join( "" ) );
-
-      if( themeable ) {
-        // Attach styler
-        this.$$method.style[name] = prefix + "style" + postfix;
-        members[this.$$method.style[name]] = new Function( styler.join( "" ) );
-
-        // Attach unstyler
-        this.$$method.unstyle[name] = prefix + "unstyle" + postfix;
-        members[this.$$method.unstyle[name]] = new Function( unstyler.join( "" ) );
-      }
-    },
-
-    /**
-     * Attach property methods
-     *
-     * @type static
-     * @internal
-     * @param clazz {Class} Class to attach properties to
-     * @param config {Map} Property configuration
-     * @param prefix {String} Prefix of property e.g. "__" or "_" for private or protected properties
-     * @param postfix {String} Camelcase name of property e.g. name=width => postfix=Width
-     * @return {void}
-     */
-    __attachPropertyMethods : function(clazz, config, prefix, postfix ) {
-      var members = clazz.prototype;
-      var name = config.name;
-
-      // Fill dispose value
-      if( config.dispose === undefined && typeof config.check === "string" ) {
-        config.dispose = this.__dispose[config.check] || rwt.qx.Class.isDefined( config.check );
-      }
-
-      var method = this.$$method;
-      var store = this.$$store;
-
-      store.user[name] = "__user$" + name;
-      store.theme[name] = "__theme$" + name;
-      store.init[name] = "__init$" + name;
-      store.inherit[name] = "__inherit$" + name;
-      store.useinit[name] = "__useinit$" + name;
-
-      method.get[name] = prefix + "get" + postfix;
-      members[method.get[name]] = function() {
-        return rwt.qx.Property.executeOptimizedGetter( this, clazz, name, "get" );
-      };
-
-      method.set[name] = prefix + "set" + postfix;
-      members[method.set[name]] = function( value ) {
-        return rwt.qx.Property.executeOptimizedSetter( this, clazz, name, "set", arguments );
-      };
-
-      method.reset[name] = prefix + "reset" + postfix;
-      members[method.reset[name]] = function() {
-        return rwt.qx.Property.executeOptimizedSetter( this, clazz, name, "reset" );
-      };
-
-      if( config.inheritable || config.apply || config.event || config.deferredInit ) {
-        method.init[name] = prefix + "init" + postfix;
-        members[method.init[name]] = function(value) {
-          return rwt.qx.Property.executeOptimizedSetter( this, clazz, name, "init", arguments );
-        };
-      }
-
-      if( config.inheritable ) {
-        method.refresh[name] = prefix + "refresh" + postfix;
-        members[method.refresh[name]] = function( value ) {
-          return rwt.qx.Property.executeOptimizedSetter( this, clazz, name, "refresh", arguments );
-        };
-      }
-
-      if( config.themeable ) {
-        method.style[name] = prefix + "style" + postfix;
-        members[method.style[name]] = function( value ) {
-          return rwt.qx.Property.executeOptimizedSetter( this, clazz, name, "style", arguments );
-        };
-
-        method.unstyle[name] = prefix + "unstyle" + postfix;
-        members[method.unstyle[name]] = function() {
-          return rwt.qx.Property.executeOptimizedSetter( this, clazz, name, "unstyle" );
-        };
-      }
-
-      if( config.check === "Boolean" ) {
-        members[prefix + "toggle" + postfix] = new Function("return this." + method.set[name] + "(!this." + method.get[name] + "())");
-        members[prefix + "is" + postfix] = new Function("return this." + method.get[name] + "()");
-      }
-    },
-
-    /** {Map} Internal data field for error messages used by {@link #error} */
-    __errors : {
-      0 : 'Could not change or apply init value after constructing phase!',
-      1 : 'Requires exactly one argument!',
-      2 : 'Undefined value is not allowed!',
-      3 : 'Does not allow any arguments!',
-      4 : 'Null value is not allowed!',
-      5 : 'Is invalid!'
-    },
-
-    /**
-     * Error method used by the property system to report errors.
-     *
-     * @type static
-     * @internal
-     * @param obj {rwt.qx.Object} Any qooxdoo object
-     * @param id {Integer} Numeric error identifier
-     * @param property {String} Name of the property
-     * @param variant {String} Name of the method variant e.g. "set", "reset", ...
-     * @param value {var} Incoming value
-     */
-    error : function(obj, id, property, variant, value ) {
-      var classname = obj.constructor.classname;
-      var msg = "Error in property " + property + " of class " + classname + " in method " + this.$$method[variant][property] + " with incoming value '" + value + "': ";
-
-      // Additional object error before throwing exception because gecko
-      // often has issues to throw the error correctly in the debug console otherwise
-
-      throw new Error( msg + ( this.__errors[id] || "Unknown reason: " + id ) );
-    },
-
-    /**
-     * Compiles a string builder object to a function, executes the function and
-     * returns the return value.
-     *
-     * @type static
-     * @internal
-     * @param instance {Object} Instance which have called the original method
-     * @param members {Object} Prototype members map where the new function should be stored
-     * @param name {String} Name of the property
-     * @param variant {String} Function variant e.g. get, set, reset, ...
-     * @param code {Array} Array which contains the code
-     * @param args {arguments} Incoming arguments of wrapper method
-     * @return {var} Return value of the generated function
-     */
-    __unwrapFunctionFromCode : function(instance, members, name, variant, code, args ) {
-      var store = this.$$method[variant][name];
-
-      // Output generate code
-      if( rwt.util.Variant.isSet( "qx.debug", "on" ) ) {
-
-        // Overriding temporary wrapper
-        try{
-          members[store] = new Function( "value", code.join( "" ) );
-          // eval("members[store] = function " + instance.classname.replace(/\./g, "_") + "$" + store + "(value) { " + code.join("") + "}");
-        } catch( ex ) {
-          throw new Error( "Malformed generated code to unwrap method: " + this.$$method[variant][name] + "\n" + code.join( "" ) );
-        }
-      }
-      else {
-        members[store] = new Function("value", code.join(""));
-        // eval("members[store] = function " + instance.classname.replace(/\./g, "_") + "$" + store + "(value) { " + code.join("") + "}");
-      }
-
-      // Executing new function
-      if( args === undefined ) {
-        return instance[store]();
-      } else if( rwt.util.Variant.isSet( "qx.debug", "on" ) ) {
-        return instance[store].apply( instance, args );
-      } else {
-        return instance[store]( args[0] );
-      }
-    },
-
-    /**
-     * Generates the optimized getter
-     * Supported variants: get
-     *
-     * @type static
-     * @internal
-     * @param instance {Object} the instance which calls the method
-     * @param clazz {Class} the class which originally defined the property
-     * @param name {String} name of the property
-     * @param variant {String} Method variant.
-     * @return {var} Execute return value of apply generated function, generally the incoming value
-     */
-    executeOptimizedGetter : function( instance, clazz, name, variant ) {
-      var config = clazz.$$properties[name];
-      var members = clazz.prototype;
-      var code = [];
-
-      if( config.inheritable ) {
-        code.push( 'if(this.', this.$$store.inherit[name], '!==undefined)' );
-        code.push( 'return this.', this.$$store.inherit[name], ';' );
-        code.push( 'else ' );
-      }
-
-      code.push( 'if(this.', this.$$store.user[name], '!==undefined)' );
-      code.push( 'return this.', this.$$store.user[name], ';' );
-
-      if( config.themeable ) {
-        code.push( 'else if(this.', this.$$store.theme[name], '!==undefined)' );
-        code.push( 'return this.', this.$$store.theme[name], ';' );
-      }
-
-      if( config.deferredInit && config.init === undefined ) {
-        code.push( 'else if(this.', this.$$store.init[name], '!==undefined)' );
-        code.push( 'return this.', this.$$store.init[name], ';' );
-      }
-
-      code.push( 'else ' );
-
-      if( config.init !== undefined ) {
-        code.push( 'return this.', this.$$store.init[name], ';' );
-      } else if( config.inheritable || config.nullable ) {
-        code.push( 'return null;' );
-      } else {
-        code.push( 'throw new Error("Property ', name, ' of an instance of ', clazz.classname, ' is not (yet) ready!");' );
-      }
-
-      return this.__unwrapFunctionFromCode( instance, members, name, variant, code );
-    },
-
-    /**
-     * Generates the optimized setter
-     * Supported variants: set, reset, init, refresh, style, unstyle
-     *
-     * @type static
-     * @internal
-     * @param instance {Object} the instance which calls the method
-     * @param clazz {Class} the class which originally defined the property
-     * @param name {String} name of the property
-     * @param variant {String} Method variant.
-     * @param args {arguments} Incoming arguments of wrapper method
-     * @return {var} Execute return value of apply generated function, generally the incoming value
-     */
-    executeOptimizedSetter : function( instance, clazz, name, variant, args ) {
-      var config = clazz.$$properties[name];
-      var members = clazz.prototype;
-      var code = [];
-
-      var incomingValue =    variant === "set"
-                          || variant === "style"
-                          || ( variant === "init" && config.init === undefined );
-      var resetValue = variant === "reset" || variant === "unstyle";
-      var hasCallback = config.apply || config.event || config.inheritable;
-      if( variant === "style" || variant === "unstyle" ) {
-        var store = this.$$store.theme[name];
-      } else if( variant === "init" ) {
-        var store = this.$$store.init[name];
-      } else {
-        var store = this.$$store.user[name];
-      }
-
-      // [1] INTEGRATE ERROR HELPER METHOD
-
-      // [2] PRE CONDITIONS
-
-      if( rwt.util.Variant.isSet( "qx.debug", "on" ) ) {
-        code.push( 'var prop=rwt.qx.Property;' );
-        if( variant === "init" ) {
-          code.push( 'if(this.$$initialized)prop.error(this,0,"' + name + '","' + variant + '",value);' );
-        }
-
-        if( variant === "refresh" ) {
-          // do nothing
-          // refresh() is internal => no arguments test
-          // also note that refresh() supports "undefined" values
-        }
-        else if( incomingValue ) {
-          // Check argument length
-          code.push( 'if(arguments.length!==1)prop.error(this,1,"' + name + '","' + variant + '",value);' );
-
-          // Undefined check
-          code.push( 'if(value===undefined)prop.error(this,2,"' + name + '","' + variant + '",value);' );
-        }
-        else {
-          // Check argument length
-          code.push( 'if(arguments.length!==0)prop.error(this,3,"' + name + '","' + variant + '",value);' );
-        }
-      }
-      else {
-        if( !config.nullable || config.check || config.inheritable ) {
-          code.push( 'var prop=rwt.qx.Property;' );
-        }
-
-        // Undefined check
-        // TODO [rh] unused: changed as in patch to http://bugzilla.qooxdoo.org/show_bug.cgi?id=599
-        if( rwt.util.Variant.isSet( "qx.debug", "on" ) && variant === "set" ) {
-          code.push( 'if(value===undefined)prop.error(this,2,"' + name + '","' + variant + '",value);' );
-        }
-      }
-
-      // [3] PREPROCESSING INCOMING VALUE
-
-      if( incomingValue ) {
-        // Call user-provided transform method, if one is provided.  Transform
-        // method should either throw an error or return the new value.
-        if( config.transform ) {
-          code.push( 'value=this.', config.transform, '(value);' );
-        }
-      }
-
-      // [4] COMPARING (LOCAL) NEW AND OLD VALUE
-
-      // Old/new comparision
-      if( hasCallback ) {
-        if( incomingValue ) {
-          code.push( 'if(this.', store, '===value)return value;' );
-        } else if( resetValue ) {
-          code.push( 'if(this.', store, '===undefined)return;' );
-        }
-      }
-
-      // [5] CHECKING VALUE
-
-      if( config.inheritable ) {
-        code.push( 'var inherit=prop.$$inherit;' );
-      }
-
-      // Generate checks only in debug mode
-
-      // TODO [rh] unused: changed as in patch to http://bugzilla.qooxdoo.org/show_bug.cgi?id=599
-      if( incomingValue && rwt.util.Variant.isSet( "qx.debug", "on" ) ) {
-        // Null check
-        if( !config.nullable ) {
-          code.push( 'if(value===null)prop.error(this,4,"'+name+'","'+variant+'",value);' );
-        }
-
-        // Processing check definition
-        if( config.check !== undefined ) {
-          // Accept "null"
-          if( config.nullable ) {
-            code.push( 'if(value!==null)' );
-          }
-
-          // Inheritable properties always accept "inherit" as value
-          if( config.inheritable ) {
-            code.push( 'if(value!==inherit)' );
-          }
-
-          code.push( 'if(' );
-
-          if( this.__checks[config.check] !== undefined ) {
-            code.push( '!(', this.__checks[config.check], ')' );
-          }
-          else if( rwt.qx.Class.isDefined( config.check ) ) {
-            code.push( '!(value instanceof ', config.check, ')' );
-          }
-          else if( typeof config.check === "function" ) {
-            code.push( '!', clazz.classname, '.$$properties.', name );
-            code.push( '.check.call(this, value)' );
-          }
-          else if( typeof config.check === "string" ) {
-            code.push( '!(', config.check, ')' );
-          }
-          else if( config.check instanceof Array ) {
-            // reconfigure for faster access trough map usage
-            config.checkMap = rwt.util.Objects.fromArray(config.check);
-
-            code.push(clazz.classname, '.$$properties.', name);
-            code.push( '.checkMap[value]===undefined' );
-          }
-          else {
-            throw new Error( "Could not add check to property " + name + " of class " + clazz.classname );
-          }
-
-          code.push( ')prop.error(this,5,"'+name+'","'+variant+'",value);' );
-        }
-      }
-
-      if( !hasCallback ) {
-        if( variant === "set" ) {
-          code.push( 'this.', this.$$store.user[name], '=value;' );
-        }
-        else if( variant === "reset" ) {
-          code.push( 'if(this.', this.$$store.user[name], '!==undefined)' );
-          code.push( 'delete this.', this.$$store.user[name], ';' );
-        }
-        // Store incoming value
-        else if( variant === "style" ) {
-          code.push( 'this.', this.$$store.theme[name], '=value;' );
-        }
-        else if( variant === "unstyle" ) {
-          code.push( 'if(this.', this.$$store.theme[name], '!==undefined)' );
-          code.push( 'delete this.', this.$$store.theme[name], ';' );
-        }
-        else if( variant === "init" && incomingValue ) {
-          code.push( 'this.', this.$$store.init[name], '=value;' );
-        }
-      }
-      else {
-        if( config.inheritable ) {
-          code.push( 'var computed, old=this.', this.$$store.inherit[name], ';' );
-        }
-        else {
-          code.push( 'var computed, old;' );
-        }
-
-        // OLD = USER VALUE
-
-        code.push( 'if(this.', this.$$store.user[name], '!==undefined){' );
-
-        if( variant === "set" ) {
-          if( !config.inheritable ) {
-            // Remember old value
-            code.push( 'old=this.', this.$$store.user[name], ';' );
-          }
-
-          // Replace it with new value
-          code.push( 'computed=this.', this.$$store.user[name], '=value;' );
-        }
-        else if( variant === "reset" ) {
-          if( !config.inheritable ) {
-            // Remember old value
-            code.push( 'old=this.', this.$$store.user[name], ';' );
-          }
-
-          // Delete field
-          code.push( 'delete this.', this.$$store.user[name], ';' );
-
-          // Complex compution of new value
-          code.push( 'if(this.', this.$$store.theme[name], '!==undefined)' );
-          code.push( 'computed=this.', this.$$store.theme[name], ';' );
-          code.push( 'else if(this.', this.$$store.init[name], '!==undefined){' );
-          code.push( 'computed=this.', this.$$store.init[name], ';' );
-          code.push( 'this.', this.$$store.useinit[name], '=true;' );
-          code.push( '}' );
-        }
-        else {
-          if( config.inheritable ) {
-            // Use user value where it has higher priority
-            code.push( 'computed=this.', this.$$store.user[name], ';' );
-          }
-          else {
-            // Use user value where it has higher priority
-            code.push( 'old=computed=this.', this.$$store.user[name], ';' );
-          }
-
-          // Store incoming value
-          if( variant === "style" ) {
-            code.push( 'this.', this.$$store.theme[name], '=value;' );
-          }
-          else if( variant === "unstyle" ) {
-            code.push( 'delete this.', this.$$store.theme[name], ';' );
-          }
-          else if( variant === "init" && incomingValue ) {
-            code.push( 'this.', this.$$store.init[name], '=value;' );
-          }
-        }
-
-        code.push( '}' );
-
-        // OLD = THEMED VALUE
-
-        if( config.themeable ) {
-          code.push( 'else if(this.', this.$$store.theme[name], '!==undefined){' );
-
-          if( !config.inheritable ) {
-            code.push( 'old=this.', this.$$store.theme[name], ';' );
-          }
-
-          if( variant === "set" ) {
-            code.push( 'computed=this.', this.$$store.user[name], '=value;' );
-          }
-
-          // reset() is impossible, because the user has higher priority than
-          // the themed value, so the themed value has no chance to ever get used,
-          // when there is a user value, too.
-
-          else if( variant === "style" ) {
-            code.push( 'computed=this.', this.$$store.theme[name], '=value;' );
-          }
-          else if( variant === "unstyle" ) {
-            // Delete entry
-            code.push( 'delete this.', this.$$store.theme[name], ';' );
-
-            // Fallback to init value
-            code.push( 'if(this.', this.$$store.init[name], '!==undefined){' );
-            code.push( 'computed=this.', this.$$store.init[name], ';' );
-            code.push( 'this.', this.$$store.useinit[name], '=true;' );
-            code.push( '}' );
-          }
-          else if( variant === "init" ) {
-            if( incomingValue ) {
-              code.push( 'this.', this.$$store.init[name], '=value;' );
-            }
-
-            code.push( 'computed=this.', this.$$store.theme[name], ';' );
-          }
-          else if( variant === "refresh" ) {
-            code.push( 'computed=this.', this.$$store.theme[name], ';' );
-          }
-
-          code.push( '}' );
-        }
-
-        // OLD = INIT VALUE
-
-        code.push( 'else if(this.', this.$$store.useinit[name], '){' );
-
-        if( !config.inheritable ) {
-          code.push( 'old=this.', this.$$store.init[name], ';' );
-        }
-
-        if( variant === "init" ) {
-          if( incomingValue ) {
-            code.push( 'computed=this.', this.$$store.init[name], '=value;' );
-          } else {
-            code.push( 'computed=this.', this.$$store.init[name], ';' );
-          }
-
-          // useinit flag is already initialized
-        }
-
-        // reset() and unstyle() are impossible, because the user and themed values have a
-        // higher priority than the init value, so the themed value has no chance to ever get used,
-        // when there is a user or themed value, too.
-
-        else if( variant === "set" || variant === "style" || variant === "refresh" ) {
-          code.push( 'delete this.', this.$$store.useinit[name], ';' );
-
-          if( variant === "set" ) {
-            code.push( 'computed=this.', this.$$store.user[name], '=value;' );
-          } else if( variant === "style" ) {
-            code.push( 'computed=this.', this.$$store.theme[name], '=value;' );
-          } else if( variant === "refresh" ) {
-            code.push( 'computed=this.', this.$$store.init[name], ';' );
-          }
-        }
-
-        code.push( '}' );
-
-        // OLD = NONE
-
-        // reset() and unstyle() are impossible because otherwise there
-        // is already an old value
-
-        if( variant === "set" || variant === "style" || variant === "init" ) {
-          code.push( 'else{' );
-
-          if( variant === "set" ) {
-            code.push( 'computed=this.', this.$$store.user[name], '=value;' );
-          } else if( variant === "style" ) {
-            code.push( 'computed=this.', this.$$store.theme[name], '=value;' );
-          } else if(  variant === "init" ) {
-            if( incomingValue ) {
-              code.push( 'computed=this.', this.$$store.init[name], '=value;' );
-            } else {
-              code.push( 'computed=this.', this.$$store.init[name], ';' );
-            }
-            code.push( 'this.', this.$$store.useinit[name], '=true;' );
-          }
-          // refresh() will work with the undefined value, later
-          code.push( '}' );
-        }
-      }
-
-      if( config.inheritable ) {
-        code.push( 'if(computed===undefined||computed===inherit){' );
-
-          if( variant === "refresh" ) {
-            code.push( 'computed=value;' );
-          } else {
-            code.push( 'var pa=this.getParent();if(pa)computed=pa.', this.$$store.inherit[name], ';' );
-          }
-
-          // Fallback to init value if inheritance was unsuccessful
-          code.push( 'if((computed===undefined||computed===inherit)&&' );
-          code.push( 'this.', this.$$store.init[name], '!==undefined&&' );
-          code.push( 'this.', this.$$store.init[name], '!==inherit){' );
-          code.push( 'computed=this.', this.$$store.init[name], ';' );
-          code.push( 'this.', this.$$store.useinit[name], '=true;' );
-          code.push( '}else{' );
-          code.push( 'delete this.', this.$$store.useinit[name], ';}' );
-
-        code.push( '}' );
-
-        // Compare old/new computed value
-        code.push( 'if(old===computed)return value;' );
-
-        // Note: At this point computed can be "inherit" or "undefined".
-
-        // Normalize "inherit" to undefined and delete inherited value
-        code.push( 'if(computed===inherit){' );
-        code.push( 'computed=undefined;delete this.', this.$$store.inherit[name], ';' );
-        code.push( '}' );
-
-        // Only delete inherited value
-        code.push( 'else if(computed===undefined)' );
-        code.push( 'delete this.', this.$$store.inherit[name], ';' );
-
-        // Store inherited value
-        code.push( 'else this.', this.$$store.inherit[name], '=computed;' );
-
-        // Protect against normalization
-        code.push( 'var backup=computed;' );
-
-        // After storage finally normalize computed and old value
-        code.push( 'if(computed===undefined)computed=null;' );
-        code.push( 'if(old===undefined)old=null;' );
-      }
-      else if( hasCallback ) {
-        // Properties which are not inheritable have no possiblity to get
-        // undefined at this position. (Hint: set() and style() only allow non undefined values)
-        if( variant !== "set" && variant !== "style" ) {
-          code.push( 'if(computed===undefined)computed=null;' );
-        }
-
-        // Compare old/new computed value
-        code.push( 'if(old===computed)return value;' );
-
-        // Normalize old value
-        code.push( 'if(old===undefined)old=null;' );
-      }
-
-      // [12] NOTIFYING DEPENDEND OBJECTS
-
-      if( hasCallback ) {
-        // Execute user configured setter
-        if( config.apply ) {
-          code.push( 'this.', config.apply, '(computed, old);' );
-        }
-
-        // Fire event
-        if( config.event ) {
-          code.push( 'this.createDispatchChangeEvent("', config.event, '", computed, old);' );
-        }
-
-        // Refresh children
-        // Require the parent/children interface
-        if( config.inheritable && members.getChildren ) {
-          code.push( 'var a=this.getChildren();if(a)for(var i=0,l=a.length;i<l;i++){' );
-          code.push( 'if(a[i].', this.$$method.refresh[name], ')a[i].', this.$$method.refresh[name], '(backup);' );
-          code.push( '}' );
-        }
-      }
-
-      // [13] RETURNING WITH ORIGINAL INCOMING VALUE
-
-      // Return value
-      if( incomingValue ) {
-        code.push( 'return value;' );
-      }
-
-      return this.__unwrapFunctionFromCode( instance, members, name, variant, code, args );
-    }
-  }
-
-} );
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * String helper functions
- *
- * The native JavaScript String is not modified by this class. However,
- * there are modifications to the native String in {@link qx.lang.Core} for
- * browsers that do not support certain features.
- *
- * The additions implemented here may be added directly to native String by
- * a setting in {@link qx.lang.Prototypes}. This feature is not enabled by
- * default.
- *
- * The string/array generics introduced in JavaScript 1.6 are supported by
- * {@link qx.lang.Generics}.
- */
-rwt.qx.Class.define("rwt.util.Strings",
-{
-  statics :
-  {
-
-    /**
-     * removes white space from the left and the right side of a string
-     *
-     * @type static
-     * @param str {String} the string to trim
-     * @return {String} TODOC
-     */
-    trim : function(str) {
-      return str.replace(/^\s+|\s+$/g, "");
-    },
-
-    /**
-     * Pad a string up to a given length. By default, padding characters are added to the
-     * left of the string.
-     *
-     * @type static
-     * @param str {String} the string to pad
-     * @param length {Integer} the final length of the string
-     * @param ch {String} character used to fill up the string
-     * @param addRight {Boolean} true to add the padding characters to the right of the string
-     * @return {String} paddded string
-     */
-    pad : function(str, length, ch, addRight)
-    {
-      if (typeof ch === "undefined") {
-        ch = "0";
-      }
-
-      var temp = "";
-
-      for (var i=str.length; i<length; i++) {
-        temp += ch;
-      }
-
-      if( addRight === true ){
-        return str + temp;
-      } else {
-        return temp + str;
-      }
-    },
-
-    /**
-     * Convert the first character of the string to upper case.
-     *
-     * @type static
-     * @param str {String} the string
-     * @return {String} the string with a upper case first character
-     */
-    toFirstUp : function(str) {
-      return str.charAt(0).toUpperCase() + str.substr(1);
-    },
-
-    /**
-     * Check whether the string contains a given substring
-     *
-     * @type static
-     * @param str {String} the string
-     * @param substring {String} substring to search for
-     * @return {Boolean} whether the string contains the substring
-     */
-    contains : function(str, substring) {
-      return str.indexOf(substring) != -1;
-    },
-
-
-    /**
-     * Print a list of arguments using a format string
-     * In the format string occurences of %n are replaced by the n'th element of the args list.
-     * Example:
-     * <pre class='javascript'>rwt.util.Strings.format("Hello %1, my name is %2", ["Egon", "Franz"]) == "Hello Egon, my name is Franz"</pre>
-     *
-     * @type static
-     * @param pattern {String} format string
-     * @param args {Array} array of arguments to insert into the format string
-     * @return {String} TODOC
-     */
-    format : function(pattern, args)
-    {
-      var str = pattern;
-
-      for (var i=0; i<args.length; i++) {
-        str = str.replace(new RegExp("%" + (i + 1), "g"), args[i]);
-      }
-
-      return str;
-    }
-
-
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/*global console: false */
-
-/**
- * The qooxdoo root class. All other classes are direct or indirect subclasses of this one.
- *
- * This class contains methods for:
- *
- * * object management (creation and destruction)
- * * generic setter support
- * * user friendly OO interfaces like {@link #self} or {@link #base}
- */
-rwt.qx.Class.define("rwt.qx.Object", {
-  extend : Object,
-
-
-
-
-  /*
-  *****************************************************************************
-     CONSTRUCTOR
-  *****************************************************************************
-  */
-
-
-  construct : function()
-  {
-    this._hashCode = rwt.qx.Object.__availableHashCode++;
-
-    if (this._autoDispose)
-    {
-      // try to get a re-usable key
-      this.__dbKey=rwt.qx.Object.__freeAvailableDbKeys.pop();
-
-      if (!this.__dbKey) {
-        // no re-usable key found ==> append to registry
-        this.__dbKey = rwt.qx.Object.__db.length;
-        rwt.qx.Object.__db.push(this);
-      } else {
-        // re-use key
-        rwt.qx.Object.__db[this.__dbKey] = this;
-      }
-    }
-  },
-
-  /*
-  *****************************************************************************
-     STATICS
-  *****************************************************************************
-  */
-
-  statics :
-  {
-    /** TODOC */
-    __availableHashCode : 0,
-
-    /** TODOC */
-    __freeAvailableDbKeys : [],
-
-
-    /** TODOC */
-    __db : [],
-
-
-    /** TODOC */
-    __disposeAll : false,
-
-
-    /** Internal type */
-    $$type : "Object",
-
-
-    /**
-     * Returns an unique identifier for the given object. If such an identifier
-     * does not yet exist, create it.
-     *
-     * @type static
-     * @param obj {Object} the Object to get the hashcode for
-     * @return {Integer} unique identifier for the given object
-     */
-    toHashCode : function(obj)
-    {
-      if (obj._hashCode != null) {
-        return obj._hashCode;
-      }
-
-      return obj._hashCode = this.__availableHashCode++;
-    },
-
-
-    /**
-     * Returns the database created, but not yet disposed elements.
-     * Please be sure to not modify the given array!
-     *
-     * @type static
-     * @internal
-     * @return {Array} The database
-     */
-    getDb : function() {
-      return this.__db;
-    },
-
-
-    /**
-     * Destructor. This method is called by qooxdoo on object destruction.
-     *
-     * Any class that holds resources like links to DOM nodes must override
-     * this method and free these resources.
-     *
-     * @type static
-     * @param unload {Boolean?false} Whether the dispose is fired through the page unload event
-     * @return {void}
-     */
-    dispose : function(unload)
-    {
-      if (this.__disposed) {
-        return;
-      }
-
-      this.__disposed = true;
-      this.__unload = unload || false;
-
-      // var vStart = (new Date).valueOf();
-      var vObject, vObjectDb = this.__db;
-
-      for (var i=vObjectDb.length - 1; i>=0; i--)
-      {
-        vObject = vObjectDb[i];
-
-        if (vObject && vObject.__disposed === false) {
-          vObject.dispose();
-        }
-      }
-    },
-
-
-    /**
-     * Returns whether a global dispose is currently taking place.
-     *
-     * @type static
-     * @return {Boolean} whether a global dispose is taking place.
-     */
-    inGlobalDispose : function() {
-      return this.__disposed || false;
-    },
-
-
-    /**
-     * Returns whether a global unload (page unload) is currently taking place.
-     *
-     * @type static
-     * @return {Boolean} whether a global unload is taking place.
-     */
-    isPageUnload : function() {
-      return this.__unload || false;
-    }
-  },
-
-
-
-
-
-
-  /*
-  *****************************************************************************
-     MEMBERS
-  *****************************************************************************
-  */
-
-  members :
-  {
-    /** If the object should automatically be disposed on application unload */
-    _autoDispose : true,
-
-    /**
-     * Store user defined data inside the object.
-     *
-     * @type member
-     * @param key {String} the key
-     * @param value {Object} the value of the user data
-     * @return {void}
-     */
-    setUserData : function(key, value)
-    {
-      if (!this.__userData) {
-        this.__userData = {};
-      }
-
-      this.__userData[key] = value;
-    },
-
-
-    /**
-     * Load user defined data from the object
-     *
-     * @type member
-     * @param key {String} the key
-     * @return {Object} the user data
-     */
-    getUserData : function(key)
-    {
-      if (!this.__userData) {
-        return null;
-      }
-      var data = this.__userData[key];
-      return data === undefined ? null : data;
-    },
-
-    /*
-    ---------------------------------------------------------------------------
-      BASICS
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Return unique hash code of object
-     *
-     * @type member
-     * @return {Integer} unique hash code of the object
-     */
-    toHashCode : function() {
-      return this._hashCode;
-    },
-
-
-    /**
-     * Returns a string represantation of the qooxdoo object.
-     *
-     * @type member
-     * @return {String} string representation of the object
-     */
-    toString : function()
-    {
-      if (this.classname) {
-        return "[object " + this.classname + "]";
-      }
-
-      return "[object Object]";
-    },
-
-
-    /**
-     * Call the same method of the super class.
-     *
-     * @type member
-     * @param args {arguments} the arguments variable of the calling method
-     * @param varags {var} variable number of arguments passed to the overwritten function
-     * @return {var} the return value of the method of the base class.
-     */
-    base : function(args, varags)
-    {
-      if (arguments.length === 1) {
-        return args.callee.base.call(this);
-      } else {
-        return args.callee.base.apply(this, Array.prototype.slice.call(arguments, 1));
-      }
-    },
-
-
-    /**
-     * Returns the static class (to access static members of this class)
-     *
-     * @type member
-     * @param args {arguments} the arguments variable of the calling method
-     * @return {var} the return value of the method of the base class.
-     */
-    self : function(args) {
-      return args.callee.self;
-    },
-
-
-    /**
-     * Returns the key of the object used in the objects DB
-     * received by {@link #getDb()}.
-     *
-     * @type member
-     * @internal
-     * @return {Integer} The key in the db for the current object.
-     */
-    getDbKey: function() {
-      return this.__dbKey;
-    },
-
-
-    /*
-    ---------------------------------------------------------------------------
-      COMMON SETTER/GETTER/RESETTER SUPPORT
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Sets multiple properties at once by using a property list or
-     * sets one property and its value by the first and second argument.
-     *
-     * @type member
-     * @param data {Map | String} a map of property values. The key is the name of the property.
-     * @param value {var?} the value, only used when <code>data</code> is a string.
-     * @return {Object} this instance.
-     * @throws an Exception if a property defined does not exist
-     */
-    set : function(data, value)
-    {
-      var setter = rwt.qx.Property.$$method.set;
-
-      if (typeof data === "string")
-      {
-        return this[setter[data]](value);
-      }
-      else
-      {
-        for (var prop in data)
-        {
-          this[setter[prop]](data[prop]);
-        }
-
-        return this;
-      }
-    },
-
-
-    /**
-     * Returns the value of the given property.
-     *
-     * @type member
-     * @param prop {String} Name of the property.
-     * @return {var} The value of the value
-     * @throws an Exception if a property defined does not exist
-     */
-    get : function(prop)
-    {
-      var getter = rwt.qx.Property.$$method.get;
-      return this[getter[prop]]();
-    },
-
-
-    /**
-     * Resets the value of the given property.
-     *
-     * @type member
-     * @param prop {String} Name of the property.
-     * @throws an Exception if a property defined does not exist
-     */
-    reset : function(prop)
-    {
-      var resetter = rwt.qx.Property.$$method.reset;
-      this[resetter[prop]]();
-    },
-
-
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-      DISPOSER
-    ---------------------------------------------------------------------------
-    */
-
-    /** TODOC */
-    __disposed : false,
-
-
-    /**
-     * Returns true if the object is disposed.
-     *
-     * @type member
-     * @return {Boolean} whether the object has been disposed
-     */
-    getDisposed : function() {
-      return this.__disposed;
-    },
-
-
-    /**
-     * Returns true if the object is disposed.
-     *
-     * @type member
-     * @return {Boolean} whether the object has been disposed
-     */
-    isDisposed : function() {
-      return this.__disposed;
-    },
-
-
-    /**
-     * Dispose this object
-     *
-     * @type member
-     * @return {void}
-     */
-    dispose : function()
-    {
-      // Check first
-      if (this.__disposed) {
-        return;
-      }
-
-      // Mark as disposed (directly, not at end, to omit recursions)
-      this.__disposed = true;
-
-      // Deconstructor support for classes
-      var clazz = this.constructor;
-      var mixins;
-
-      while (clazz.superclass)
-      {
-        // Processing this class...
-        if (clazz.$$destructor) {
-          clazz.$$destructor.call(this);
-        }
-
-        // Destructor support for mixins
-        if (clazz.$$includes)
-        {
-          mixins = clazz.$$flatIncludes;
-
-          for (var i=0, l=mixins.length; i<l; i++)
-          {
-            if (mixins[i].$$destructor) {
-              mixins[i].$$destructor.call(this);
-            }
-          }
-        }
-
-        // Jump up to next super class
-        clazz = clazz.superclass;
-      }
-
-    },
-
-    // Prevent old custom widgets using logging from crashing:
-    debug : rwt.util.Variant.select( "qx.debug", {
-      "on" : function( msg ) {
-        if( window.console && typeof console.log === "function" ) {
-          console.log( msg );
-        }
-      },
-      "default" : function( msg ) {
-      }
-    } ),
-
-    info : function( msg ) {
-      this.debug( "INFO: " + msg );
-    },
-
-    warn : function( msg ) {
-      this.debug( "WARN: " + msg );
-    },
-
-    error : function( msg ) {
-      this.debug( "ERROR: " + msg );
-    },
-
-    printStackTrace : rwt.util.Variant.select( "qx.debug", {
-      "on" : function() {
-        if( console && typeof console.trace === "function" ) {
-          this.debug( "Current stack trace:" );
-          console.trace();
-        }
-      },
-      "default" : function() {
-      }
-    } ),
-
-    /*
-    ---------------------------------------------------------------------------
-      DISPOSER UTILITIES
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Disconnects given fields from instance.
-     *
-     * @type member
-     * @param varargs {arguments} fields to dispose
-     */
-    _disposeFields : function(varargs)
-    {
-      var name;
-
-      for (var i=0, l=arguments.length; i<l; i++)
-      {
-        var name = arguments[i];
-
-        if (this[name] == null) {
-          continue;
-        }
-
-        if (!this.hasOwnProperty(name))
-        {
-          continue;
-        }
-
-        this[name] = null;
-      }
-    },
-
-
-    /**
-     * Disconnects and disposes given objects from instance.
-     * Only works with rwt.qx.Object based objects e.g. Widgets.
-     *
-     * @type member
-     * @param varargs {arguments} fields to dispose
-     */
-    _disposeObjects : function(varargs)
-    {
-      var name;
-
-      for (var i=0, l=arguments.length; i<l; i++)
-      {
-        var name = arguments[i];
-
-        if (this[name] == null) {
-          continue;
-        }
-
-        if (!this.hasOwnProperty(name))
-        {
-          continue;
-        }
-
-        if (!this[name].dispose) {
-          throw new Error(this.classname + "." + name + " is not a qooxdoo object. Use _disposeFields instead of _disposeObjects.");
-        }
-
-        this[name].dispose();
-        this[name] = null;
-      }
-    },
-
-
-    /**
-     * Disconnects and disposes given objects (deeply) from instance.
-     * Works with arrays, maps and qooxdoo objects.
-     *
-     * @type member
-     * @param name {String} field name to dispose
-     * @param deep {Number} how deep to following sub objects. Deep=0 means
-     *   just the object and all its keys. Deep=1 also dispose deletes the
-     *   objects object content.
-     */
-    _disposeObjectDeep : function(name, deep)
-    {
-      var name;
-
-      if (this[name] == null) {
-        return;
-      }
-
-      if (!this.hasOwnProperty(name))
-      {
-        return;
-      }
-
-      this.__disposeObjectsDeepRecurser(this[name], deep || 0);
-      this[name] = null;
-    },
-
-
-    /**
-     * Helper method for _disposeObjectDeep. Do the recursive work.
-     *
-     * @type member
-     * @param obj {Object} object to dispose
-     * @param deep {Number} how deep to following sub objects. Deep=0 means
-     *   just the object and all its keys. Deep=1 also dispose deletes the
-     *   objects object content.
-     */
-    __disposeObjectsDeepRecurser : function(obj, deep)
-    {
-      // qooxdoo
-      if (obj instanceof rwt.qx.Object)
-      {
-        obj.dispose();
-      }
-
-      // Array
-      else if (obj instanceof Array)
-      {
-        for (var i=0, l=obj.length; i<l; i++)
-        {
-          var entry = obj[i];
-
-          if (entry == null) {
-            continue;
-          }
-
-          if (typeof entry == "object")
-          {
-            if (deep > 0)
-            {
-              this.__disposeObjectsDeepRecurser(entry, deep-1);
-            }
-            obj[i] = null;
-          }
-          else if (typeof entry == "function")
-          {
-            obj[i] = null;
-          }
-        }
-      }
-
-      // Map
-      else if (obj instanceof Object)
-      {
-        for (var key in obj)
-        {
-          if (obj[key] == null || !obj.hasOwnProperty(key)) {
-            continue;
-          }
-
-          var entry = obj[key];
-
-          if (typeof entry == "object")
-          {
-            if (deep > 0)
-            {
-              this.__disposeObjectsDeepRecurser(entry, deep-1);
-            }
-            obj[key] = null;
-          }
-          else if (typeof entry == "function")
-          {
-            obj[key] = null;
-          }
-        }
-      }
-    }
-  },
-
-  /*
-  *****************************************************************************
-     DESTRUCTOR
-  *****************************************************************************
-  */
-
-  destruct : function()
-  {
-    // Cleanup properties
-    var clazz = this.constructor;
-    var properties;
-    var store = rwt.qx.Property.$$store;
-    var storeUser = store.user;
-    var storeTheme = store.theme;
-    var storeInherit = store.inherit;
-    var storeUseinit = store.useinit;
-    var storeInit = store.init;
-
-    while(clazz)
-    {
-      properties = clazz.$$properties;
-      if (properties)
-      {
-        for (var name in properties)
-        {
-          if (properties[name].dispose) {
-            this[storeUser[name]] = this[storeTheme[name]] = this[storeInherit[name]] = this[storeUseinit[name]] = this[storeInit[name]] = undefined;
-          }
-        }
-      }
-
-      clazz = clazz.superclass;
-    }
-    this._disposeFields("__userData");
-
-    // Delete Entry from Object DB
-    if (this.__dbKey != null)
-    {
-      if (rwt.qx.Object.__disposeAll) {
-        rwt.qx.Object.__db[this.__dbKey] = null;
-      } else {
-        delete rwt.qx.Object.__db[this.__dbKey];
-      }
-      rwt.qx.Object.__freeAvailableDbKeys.push(this.__dbKey);
-    }
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Collection of helper methods operating on functions.
- */
-rwt.qx.Class.define("rwt.util.Functions",
-{
-  statics :
-  {
-
-    /**
-     * Simply return true.
-     *
-     * @type static
-     * @return {Boolean} Always returns true.
-     */
-    returnTrue : function() {
-      return true;
-    },
-
-
-    /**
-     * Simply return false.
-     *
-     * @type static
-     * @return {Boolean} Always returns false.
-     */
-    returnFalse : function() {
-      return false;
-    },
-
-
-    /**
-     * Simply return null.
-     *
-     * @type static
-     * @return {var} Always returns null.
-     */
-    returnNull : function() {
-      return null;
-    },
-
-
-    /**
-     * Return "this".
-     *
-     * @type static
-     * @return {Object} Always returns "this".
-     */
-    returnThis : function() {
-      return this;
-    },
-
-
-    /**
-     * Simply return 0.
-     *
-     * @type static
-     * @return {Number} Always returns 0.
-     */
-    returnZero : function() {
-      return 0;
-    },
-
-
-    /**
-     * Simply return a negative index (-1).
-     *
-     * @type static
-     * @return {Number} Always returns -1.
-     */
-    returnNegativeIndex : function() {
-      return -1;
-    },
-
-
-    /**
-     * Bind a function to an object. Each time the bound method is called the
-     * 'this' variable is guaranteed to be 'self'.
-     *
-     * @param fcn {Function} function to bind
-     * @param self {Object} object, which shuold act as the 'this' variable inside the bound function
-     * @param varargs {arguments} multiple arguments which should be static arguments for the given function
-     * @return {Function} the bound function
-     */
-    bind: function( fcn, self, varargs ) {
-      // Create wrapper method
-      if( arguments.length > 2 ) {
-        // Static arguments
-        var args = Array.prototype.slice.call( arguments, 2 );
-        var wrap = function() {
-          fcn.context = self;
-          var ret = fcn.apply(self, args.concat(rwt.util.Arrays.fromArguments(arguments)));
-          fcn.context = null;
-          return ret;
-        };
-      } else {
-        var wrap = function() {
-          fcn.context = self;
-          var ret = fcn.apply(self, arguments);
-          fcn.context = null;
-          return ret;
-        };
-      }
-
-      // Correcting self
-      wrap.self = fcn.self ? fcn.self.constructor : self;
-
-      // Return wrapper method
-      return wrap;
-    },
-
-
-    /**
-     * Bind a function which works as an event listener to an object. Each time
-     * the bound method is called the 'this' variable is guaranteed to be 'self'.
-     *
-     * @param fcn {Function} function to bind
-     * @param self {Object} object, which shuold act as the 'this' variable inside the bound function
-     * @return {Function} the bound function
-     */
-    bindEvent: function( fcn, self ) {
-      // Create wrapper method
-      var wrap = function( event ) {
-        fcn.context = self;
-        var ret = fcn.call( self, event || window.event );
-        fcn.context = null;
-        return ret;
-      };
-
-      // Correcting self
-      wrap.self = fcn.self ? fcn.self.constructor : self;
-
-      // Return wrapper method
-      return wrap;
-    },
-
-
-    /**
-     * Extract the caller of a function from the arguments variable.
-     * This will not work in Opera.
-     *
-     * @param args {arguments} The local arguments variable
-     * @return {Function|undefined} A reference to the calling function or "undefined" if caller is not supported.
-     */
-    getCaller: function(args) {
-      return args.caller ? args.caller.callee : args.callee.caller;
-    }
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- *
- * This class contains code based on the following work:
- *
- *  * Yahoo! UI Library, version 2.2.0
- *    http://developer.yahoo.com/yui
- *    Copyright (c) 2007, Yahoo! Inc.
- *    License: BSD, http://developer.yahoo.com/yui/license.txt
- ******************************************************************************/
-
-/**
- * Includes library functions to work with the client's viewport (window).
- */
-rwt.qx.Class.define("rwt.html.Viewport",
-{
-  statics :
-  {
-    /**
-     * Returns the current width of the viewport (excluding a eventually visible scrollbar).
-     *
-     * <code>clientWidth</code> is the inner width of an element in pixels. It includes padding
-     * but not the vertical scrollbar (if present, if rendered), border or margin.
-     *
-     * The property <code>innerWidth</code> is not useable as defined by the standard as it includes the scrollbars
-     * which is not the indented behavior of this method. We can decrement the size by the scrollbar
-     * size but there are easier possibilities to work around this.
-     *
-     * Safari 2 and 3 beta (3.0.2) do not correctly implement <code>clientWidth</code> on documentElement/body,
-     * but <code>innerWidth</code> works there. Interesting is that webkit do not correctly implement
-     * <code>innerWidth</code>, too. It calculates the size excluding the scroll bars and this
-     * differs from the behavior of all other browsers - but this is exactly what we want to have
-     * in this case.
-     *
-     * Opera as of 9.21 only works well using <code>body.clientWidth</code>.
-     *
-     * Verified to correctly work with:
-     *
-     * * Mozilla Firefox 2.0.0.4
-     * * Opera 9.2.1
-     * * Safari 3.0 beta (3.0.2)
-     * * Internet Explorer 7.0
-     *
-     * @type static
-     * @signature function(win)
-     * @param win {Window?window} The window to query
-     * @return {Integer} The width of the viewable area of the page (excludes scrollbars).
-     */
-    getWidth : rwt.util.Variant.select("qx.client",
-    {
-      "opera" : function(win) {
-        return (win||window).document.body.clientWidth;
-      },
-
-      "webkit" : function(win) {
-        return (win||window).innerWidth;
-      },
-
-      "default" : function(win)
-      {
-        var doc = (win||window).document;
-        return doc.compatMode === "CSS1Compat" ? doc.documentElement.clientWidth : doc.body.clientWidth;
-      }
-    }),
-
-
-    /**
-     * Returns the current height of the viewport (excluding a eventually visible scrollbar).
-     *
-     * <code>clientHeight</code> is the inner height of an element in pixels. It includes padding
-     * but not the vertical scrollbar (if present, if rendered), border or margin.
-     *
-     * The property <code>innerHeight</code> is not useable as defined by the standard as it includes the scrollbars
-     * which is not the indented behavior of this method. We can decrement the size by the scrollbar
-     * size but there are easier possibilities to work around this.
-     *
-     * Safari 2 and 3 beta (3.0.2) do not correctly implement <code>clientHeight</code> on documentElement/body,
-     * but <code>innerHeight</code> works there. Interesting is that webkit do not correctly implement
-     * <code>innerHeight</code>, too. It calculates the size excluding the scroll bars and this
-     * differs from the behavior of all other browsers - but this is exactly what we want to have
-     * in this case.
-     *
-     * Opera as of 9.21 only works well using <code>body.clientHeight</code>.
-     *
-     * Verified to correctly work with:
-     *
-     * * Mozilla Firefox 2.0.0.4
-     * * Opera 9.2.1
-     * * Safari 3.0 beta (3.0.2)
-     * * Internet Explorer 7.0
-     *
-     * @type static
-     * @signature function(win)
-     * @param win {Window?window} The window to query
-     * @return {Integer} The Height of the viewable area of the page (excludes scrollbars).
-     */
-    getHeight : rwt.util.Variant.select("qx.client",
-    {
-      "opera" : function(win) {
-        return (win||window).document.body.clientHeight;
-      },
-
-      "webkit" : function(win) {
-        return (win||window).innerHeight;
-      },
-
-      "default" : function(win)
-      {
-        var doc = (win||window).document;
-        return doc.compatMode === "CSS1Compat" ? doc.documentElement.clientHeight : doc.body.clientHeight;
-      }
-    }),
-
-
-    /**
-     * Returns the scroll position of the viewport
-     *
-     * All clients except MSHTML supports the non-standard property <code>pageXOffset</code>.
-     * As this is easier to evaluate we prefer this property over <code>scrollLeft</code>.
-     *
-     * For MSHTML the access method differs between standard and quirks mode;
-     * as this can differ from document to document this test must be made on
-     * each query.
-     *
-     * Verified to correctly work with:
-     *
-     * * Mozilla Firefox 2.0.0.4
-     * * Opera 9.2.1
-     * * Safari 3.0 beta (3.0.2)
-     * * Internet Explorer 7.0
-     *
-     * @type static
-     * @signature function(win)
-     * @param win {Window?window} The window to query
-     * @return {Integer} Scroll position from left edge, always a positive integer
-     */
-    getScrollLeft : rwt.util.Variant.select("qx.client",
-    {
-      "mshtml" : function(win)
-      {
-        var doc = (win||window).document;
-        return doc.documentElement.scrollLeft || doc.body.scrollLeft;
-      },
-
-      "default" : function(win) {
-        return (win||window).pageXOffset;
-      }
-    }),
-
-
-    /**
-     * Returns the scroll position of the viewport
-     *
-     * All clients except MSHTML supports the non-standard property <code>pageYOffset</code>.
-     * As this is easier to evaluate we prefer this property over <code>scrollTop</code>.
-     *
-     * For MSHTML the access method differs between standard and quirks mode;
-     * as this can differ from document to document this test must be made on
-     * each query.
-     *
-     * Verified to correctly work with:
-     *
-     * * Mozilla Firefox 2.0.0.4
-     * * Opera 9.2.1
-     * * Safari 3.0 beta (3.0.2)
-     * * Internet Explorer 7.0
-     *
-     * @type static
-     * @signature function(win)
-     * @param win {Window?window} The window to query
-     * @return {Integer} Scroll position from left edge, always a positive integer
-     */
-    getScrollTop : rwt.util.Variant.select("qx.client",
-    {
-      "mshtml" : function(win)
-      {
-        var doc = (win||window).document;
-        return doc.documentElement.scrollTop || doc.body.scrollTop;
-      },
-
-      "default" : function(win) {
-        return (win||window).pageYOffset;
-      }
-    })
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * This is the main constructor for all objects that need to be connected to rwt.event.Event objects.
- *
- * In objects created with this constructor, you find functions to addEventListener or
- * removeEventListener to or from the created object. Each event to connect to has a type in
- * form of an identification string. This type could be the name of a regular dom event like "click" or
- * something self-defined like "ready".
- */
-rwt.qx.Class.define("rwt.qx.Target",
-{
-  extend : rwt.qx.Object,
-
-
-
-
-  /*
-  *****************************************************************************
-     CONSTRUCTOR
-  *****************************************************************************
-  */
-
-  construct : function() {
-    this.base(arguments);
-  },
-
-
-
-
-
-  /*
-  *****************************************************************************
-     MEMBERS
-  *****************************************************************************
-  */
-
-  members :
-  {
-    /**
-     * Add event listener to an object.
-     *
-     * @type member
-     * @param type {String} name of the event type
-     * @param func {Function} event callback function
-     * @param obj {Object ? window} reference to the 'this' variable inside the callback
-     * @return {void}
-     * @throws TODOC
-     */
-    addEventListener : function(type, func, obj)
-    {
-      if (this.getDisposed()) {
-        return;
-      }
-
-      // If this is the first event of given type, we need to create a subobject
-      // that contains all the actions that will be assigned to this type
-      if (this.__listeners === undefined) {
-        this.__listeners = {};
-      }
-
-      if (this.__listeners[type] === undefined) {
-        this.__listeners[type] = {};
-      }
-
-      // Create a special key string to allow identification of each bound action
-      var key = "event" + rwt.qx.Object.toHashCode(func) + (obj ? "$" + rwt.qx.Object.toHashCode(obj) : "");
-
-      // Finally set up the listeners object
-      this.__listeners[type][key] =
-      {
-        handler : func,
-        object  : obj
-      };
-    },
-
-
-    /**
-     * Remove event listener from object
-     *
-     * @type member
-     * @param type {String} name of the event type
-     * @param func {Function} event callback function
-     * @param obj {Object ? window} reference to the 'this' variable inside the callback
-     * @return {void}
-     * @throws TODOC
-     */
-    removeEventListener : function(type, func, obj)
-    {
-      if (this.getDisposed()) {
-        return;
-      }
-
-      var listeners = this.__listeners;
-
-      if (!listeners || listeners[type] === undefined) {
-        return;
-      }
-
-      if (typeof func !== "function") {
-        throw new Error("rwt.qx.Target: removeEventListener(" + type + "): '" + func + "' is not a function!");
-      }
-
-      // Create a special key string to allow identification of each bound action
-      var key = "event" + rwt.qx.Object.toHashCode(func) + (obj ? "$" + rwt.qx.Object.toHashCode(obj) : "");
-
-      // Delete object entry for this action
-      delete this.__listeners[type][key];
-    },
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-      EVENT CONNECTION UTILITIES
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Check if there are one or more listeners for an event type.
-     *
-     * @type member
-     * @param type {String} name of the event type
-     * @return {var} TODOC
-     */
-    hasEventListeners : function(type) {
-      return this.__listeners && this.__listeners[type] !== undefined && !rwt.util.Objects.isEmpty(this.__listeners[type]);
-    },
-
-
-    /**
-     * Checks if the event is registered. If so it creates an event object and dispatches it.
-     *
-     * @type member
-     * @param type {String} name of the event type
-     * @return {void}
-     */
-    createDispatchEvent : function(type)
-    {
-      if (this.hasEventListeners(type)) {
-        this.dispatchEvent(new rwt.event.Event(type), true);
-      }
-    },
-
-
-    /**
-     * Checks if the event is registered. If so it creates an event object and dispatches it.
-     *
-     * @type member
-     * @param type {String} name of the event type
-     * @param data {Object} user defined data attached to the event object
-     * @return {void}
-     */
-    createDispatchDataEvent : function(type, data)
-    {
-      if (this.hasEventListeners(type)) {
-        this.dispatchEvent(new rwt.event.DataEvent(type, data), true);
-      }
-    },
-
-
-    /**
-     * Checks if the event is registered. If so it creates an event object and dispatches it.
-     *
-     * @type member
-     * @param type {String} name of the event type
-     * @param value {Object} property value attached to the event object
-     * @param old {Object} old property value attached to the event object
-     * @return {void}
-     */
-    createDispatchChangeEvent : function(type, value, old)
-    {
-      if (this.hasEventListeners(type)) {
-        this.dispatchEvent(new rwt.event.ChangeEvent(type, value, old), true);
-      }
-    },
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-      EVENT DISPATCH
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Dispatch an event
-     *
-     * @type member
-     * @param evt {rwt.event.Event} event to dispatch
-     * @param dispose {Boolean} whether the event object should be disposed after all event handlers run.
-     * @return {Boolean} whether the event default was prevented or not. Returns true, when the event was NOT prevented.
-     */
-    dispatchEvent : function( evt, dispose ) {
-      // Ignore event if eventTarget is disposed
-      if( this.getDisposed() ) {
-        return;
-      }
-      if( evt.getTarget() == null ) {
-        evt.setTarget(this);
-      }
-      if( evt.getCurrentTarget() == null ) {
-        evt.setCurrentTarget(this);
-      }
-      // Dispatch Event
-      this._dispatchEvent( evt, dispose );
-      // Read default prevented
-      var defaultPrevented = evt.getDefaultPrevented();
-      // enable dispose for event?
-      if( dispose ) {
-        evt.dispose();
-      }
-      return !defaultPrevented;
-    },
-
-
-    dispatchSimpleEvent : function( type, data, bubbles ) {
-      var listeners = this.__listeners;
-      var propagate = bubbles === true;
-      var result = true;
-      if( listeners ) {
-        var typeListeners = listeners[ type ];
-        if( typeListeners ) {
-          var func;
-          var obj;
-          for( var hashCode in typeListeners ) {
-            // Shortcuts for handler and object
-            func = typeListeners[ hashCode ].handler;
-            obj = typeListeners[ hashCode ].object || this;
-            result = func.call( obj, data ) && result !== false;
-            if( result === false ) {
-              propagate = false;
-            }
-          }
-        }
-      }
-      if( propagate && typeof( this.getParent ) === "function" ) {
-        var parent = this.getParent();
-        if( parent && !parent.getDisposed() && parent.getEnabled() ) {
-          parent.dispatchSimpleEvent( type, data, bubbles );
-        }
-      }
-      return result !== false;
-    },
-
-    /**
-     * Internal event dispatch method
-     *
-     * @type member
-     * @param evt {rwt.event.Event} event to dispatch
-     * @return {void}
-     */
-    _dispatchEvent : function(evt)
-    {
-      var listeners = this.__listeners;
-
-      if( listeners && this._allowDispatch( evt ) ) {
-        // Setup current target
-        evt.setCurrentTarget(this);
-
-        // Shortcut for listener data
-        var typeListeners = listeners[evt.getType()];
-
-        if (typeListeners)
-        {
-          var func, obj;
-
-          // Handle all events for the specified type
-          for (var vHashCode in typeListeners)
-          {
-            // Shortcuts for handler and object
-            func = typeListeners[vHashCode].handler;
-            obj = typeListeners[vHashCode].object || this;
-
-            // Call object function
-            func.call(obj, evt);
-          }
-        }
-      }
-
-      // Bubble event to parents
-      // TODO: Move this to Parent or Widget?
-      if (evt.getBubbles() && !evt.getPropagationStopped() && typeof(this.getParent) == "function")
-      {
-        var parent = this.getParent();
-
-        if (parent && !parent.getDisposed() ) {
-          parent._dispatchEvent(evt);
-        }
-      }
-    },
-
-    _allowDispatch : function( event ) {
-      var result = true;
-      if( this.getEnabled && event instanceof rwt.event.DomEvent ) {
-        result = this.getEnabled();
-      }
-      return result;
-    }
-
-  },
-
-
-  /*
-  *****************************************************************************
-     DESTRUCT
-  *****************************************************************************
-  */
-
-  destruct : function()
-  {
-    this._disposeObjectDeep("__listeners", 2);
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * The qooxdoo core event object. Each event object for rwt.qx.Targets should extend this class.
- */
-rwt.qx.Class.define("rwt.event.Event",
-{
-  extend : rwt.qx.Object,
-
-
-
-
-  /*
-  *****************************************************************************
-     CONSTRUCTOR
-  *****************************************************************************
-  */
-
-  construct : function(vType)
-  {
-    this.base(arguments);
-
-    this.setType(vType);
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     PROPERTIES
-  *****************************************************************************
-  */
-
-  properties :
-  {
-    type :
-    {
-      _fast       : true,
-      setOnlyOnce : true
-    },
-
-    originalTarget :
-    {
-      _fast       : true,
-      setOnlyOnce : true
-    },
-
-    target :
-    {
-      _fast       : true,
-      setOnlyOnce : true
-    },
-
-    relatedTarget :
-    {
-      _fast       : true,
-      setOnlyOnce : true
-    },
-
-    currentTarget : { _fast : true },
-
-    bubbles :
-    {
-      _fast        : true,
-      defaultValue : false,
-      noCompute    : true
-    },
-
-    propagationStopped :
-    {
-      _fast        : true,
-      defaultValue : true,
-      noCompute    : true
-    },
-
-    defaultPrevented :
-    {
-      _fast        : true,
-      defaultValue : false,
-      noCompute    : true
-    }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     MEMBERS
-  *****************************************************************************
-  */
-
-  members :
-  {
-    _autoDispose : false,
-
-
-    /*
-    ---------------------------------------------------------------------------
-      SHORTCUTS
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * TODOC
-     *
-     * @type member
-     * @return {void}
-     */
-    preventDefault : function() {
-      this.setDefaultPrevented(true);
-    },
-
-
-    /**
-     * TODOC
-     *
-     * @type member
-     * @return {void}
-     */
-    stopPropagation : function() {
-      this.setPropagationStopped(true);
-    }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     DESTRUCTOR
-  *****************************************************************************
-  */
-
-  destruct : function() {
-    this._disposeFields("_valueOriginalTarget", "_valueTarget", "_valueRelatedTarget", "_valueCurrentTarget");
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/** Event object for data transfers. */
-rwt.qx.Class.define("rwt.event.DataEvent",
-{
-  extend : rwt.event.Event,
-
-
-
-
-  /*
-  *****************************************************************************
-     CONSTRUCTOR
-  *****************************************************************************
-  */
-
- /**
-  * @param vType {String} the type name of the event
-  * @param vData {var} additional data which should be passed to the event listener
-  */
-  construct : function(vType, vData)
-  {
-    this.base(arguments, vType);
-
-    this.setData(vData);
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     PROPERTIES
-  *****************************************************************************
-  */
-
-  properties :
-  {
-    propagationStopped :
-    {
-      _fast        : true,
-      defaultValue : false
-    },
-
-    data : { _fast : true }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     DESTRUCTOR
-  *****************************************************************************
-  */
-
-  destruct : function() {
-    this._disposeFields("_valueData");
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/** Event object for property changes. */
-rwt.qx.Class.define("rwt.event.ChangeEvent",
-{
-  extend : rwt.event.Event,
-
-
-
-
-  /*
-  *****************************************************************************
-     CONSTRUCTOR
-  *****************************************************************************
-  */
-
- /**
-  * @param type {String} the type name of the event
-  * @param value {var} additional value which should be passed to the event listener
-  * @param old {var} additional old value which should be passed to the event listener
-  */
-  construct : function(type, value, old)
-  {
-    this.base(arguments, type);
-
-    this.setValue(value);
-    this.setOldValue(old);
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     PROPERTIES
-  *****************************************************************************
-  */
-
-  properties :
-  {
-    value : { _fast : true },
-    oldValue : { _fast : true }
-  },
-
-
-
-
-
-  /*
-  *****************************************************************************
-     MEMBERS
-  *****************************************************************************
-  */
-
-  members :
-  {
-    /**
-     * Returns the event data
-     *
-     * @deprecated use {@link #getValue} instead
-     */
-    getData : function() {
-      return this.getValue();
-    }
-  },
-
-
-
-
-
-  /*
-  *****************************************************************************
-     DESTRUCTOR
-  *****************************************************************************
-  */
-
-  destruct : function() {
-    this._disposeFields("_valueValue", "_valueOldValue");
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * Global timer support.
- *
- * This class can be used to periodically fire an event. This event can be
- * used to simulate e.g. a background task. The static method
- * {@link #once} is a special case. It will call a function deferred after a
- * given timeout.
- */
-rwt.qx.Class.define("rwt.client.Timer",
-{
-  extend : rwt.qx.Target,
-
-
-
-
-  /*
-  *****************************************************************************
-     CONSTRUCTOR
-  *****************************************************************************
-  */
-
-  /**
-   * @param interval {Number} initial interval in milliseconds of the timer.
-   */
-  construct : function(interval)
-  {
-    this.base(arguments);
-
-    this.setEnabled(false);
-
-    if (interval != null) {
-      this.setInterval(interval);
-    }
-
-    this.__oninterval = rwt.util.Functions.bind(this._oninterval, this);
-
-    //Event instance to dispatch when interval fires
-    this.__event = new rwt.event.Event("interval");
-
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     EVENTS
-  *****************************************************************************
-  */
-
-  events :
-  {
-    /** This event if fired each time the interval time has elapsed */
-    "interval" : "rwt.event.Event"
-  },
-
-
-
-
-
-  /*
-  *****************************************************************************
-     STATICS
-  *****************************************************************************
-  */
-
-  statics :
-  {
-    /**
-     * Start a function after a given timeout.
-     *
-     * @type static
-     * @param func {Function} Function to call
-     * @param obj {Object} context (this), the function is called with
-     * @param timeout {Number} Number of milliseconds to wait before the function is called.
-     */
-    once : function(func, obj, timeout)
-    {
-      // Create time instance
-      var timer = new rwt.client.Timer(timeout);
-
-      // Add event listener to interval
-      timer.addEventListener("interval", function(e)
-      {
-        timer.dispose();
-        func.call(obj, e);
-
-        obj = null;
-      },
-      obj);
-
-      // Directly start timer
-      timer.start();
-    }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     PROPERTIES
-  *****************************************************************************
-  */
-
-  properties :
-  {
-    /**
-     * With the enabled property the Timer can be started and suspended.
-     * Setting it to "true" is equivalent to {@link #start}, setting it
-     * to "false" is equivalent to {@link #stop}.
-     */
-    enabled :
-    {
-      init : true,
-      check : "Boolean",
-      apply : "_applyEnabled"
-    },
-
-    /**
-     * Time in milliseconds between two callback calls.
-     * This property can be set to modify the interval of
-     * a running timer.
-     */
-    interval :
-    {
-      check : "Integer",
-      init : 1000,
-      apply : "_applyInterval"
-    }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     MEMBERS
-  *****************************************************************************
-  */
-
-  members :
-  {
-    __intervalHandler : null,
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-      APPLY ROUTINES
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Apply the interval of the timer.
-     *
-     * @type member
-     * @param value {var} Current value
-     * @param old {var} Previous value
-     */
-    _applyInterval : function(value, old)
-    {
-      if (this.getEnabled()) {
-        this.restart();
-      }
-    },
-
-
-    /**
-     * Apply the enabled state of the timer.
-     *
-     * @type member
-     * @param value {var} Current value
-     * @param old {var} Previous value
-     */
-    _applyEnabled : function(value, old)
-    {
-      if (old)
-      {
-        window.clearInterval(this.__intervalHandler);
-        this.__intervalHandler = null;
-      }
-      else if (value)
-      {
-        this.__intervalHandler = window.setInterval(this.__oninterval, this.getInterval());
-      }
-    },
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-      USER-ACCESS
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * Start the timer
-     *
-     * @type member
-     */
-    start : function() {
-      this.setEnabled(true);
-    },
-
-
-    /**
-     * Start the timer with a given interval
-     *
-     * @type member
-     * @param interval {Integer} Time in milliseconds between two callback calls.
-     */
-    startWith : function(interval)
-    {
-      this.setInterval(interval);
-      this.start();
-    },
-
-
-    /**
-     * Stop the timer.
-     *
-     * @type member
-     */
-    stop : function() {
-      this.setEnabled(false);
-    },
-
-
-    /**
-     * Restart the timer.
-     * This makes it possible to change the interval of a running timer.
-     *
-     * @type member
-     */
-    restart : function()
-    {
-      this.stop();
-      this.start();
-    },
-
-
-    /**
-     * Restart the timer. with a given interval.
-     *
-     * @type member
-     * @param interval {Integer} Time in milliseconds between two callback calls.
-     */
-    restartWith : function(interval)
-    {
-      this.stop();
-      this.startWith(interval);
-    },
-
-
-
-
-    /*
-    ---------------------------------------------------------------------------
-      EVENT-MAPPER
-    ---------------------------------------------------------------------------
-    */
-
-    /**
-     * timer callback
-     *
-     * @type member
-     */
-    _oninterval : function() {
-      try {
-        if (this.getEnabled() && this.hasEventListeners("interval")) {
-          this.dispatchEvent(this.__event, false);
-        }
-      } catch( ex ) {
-        rwt.runtime.ErrorHandler.processJavaScriptError( ex );
-      }
-    }
-  },
-
-
-
-
-  /*
-  *****************************************************************************
-     DESTRUCTOR
-  *****************************************************************************
-  */
-
-  destruct : function()
-  {
-    if (this.__intervalHandler) {
-      window.clearInterval(this.__intervalHandler);
-    }
-
-    this._disposeFields("__intervalHandler", "__oninterval", "__event");
-  }
-});
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * A Collection of utility functions to escape and unescape strings.
- */
-rwt.qx.Class.define( "rwt.html.Entity", {
-
-  statics : {
-
-    /** Mapping of HTML entity names to the corresponding char code */
-    TO_CHARCODE : {
-      "quot"     : 34, // " - double-quote
-      "amp"      : 38, // &
-      "lt"       : 60, // <
-      "gt"       : 62, // >
-
-      // http://www.w3.org/TR/REC-html40/sgml/entities.html
-      // ISO 8859-1 characters
-      "nbsp"     : 160, // no-break space
-      "iexcl"    : 161, // inverted exclamation mark
-      "cent"     : 162, // cent sign
-      "pound"    : 163, // pound sterling sign
-      "curren"   : 164, // general currency sign
-      "yen"      : 165, // yen sign
-      "brvbar"   : 166, // broken (vertical) bar
-      "sect"     : 167, // section sign
-      "uml"      : 168, // umlaut (dieresis)
-      "copy"     : 169, // copyright sign
-      "ordf"     : 170, // ordinal indicator, feminine
-      "laquo"    : 171, // angle quotation mark, left
-      "not"      : 172, // not sign
-      "shy"      : 173, // soft hyphen
-      "reg"      : 174, // registered sign
-      "macr"     : 175, // macron
-      "deg"      : 176, // degree sign
-      "plusmn"   : 177, // plus-or-minus sign
-      "sup2"     : 178, // superscript two
-      "sup3"     : 179, // superscript three
-      "acute"    : 180, // acute accent
-      "micro"    : 181, // micro sign
-      "para"     : 182, // pilcrow (paragraph sign)
-      "middot"   : 183, // middle dot
-      "cedil"    : 184, // cedilla
-      "sup1"     : 185, // superscript one
-      "ordm"     : 186, // ordinal indicator, masculine
-      "raquo"    : 187, // angle quotation mark, right
-      "frac14"   : 188, // fraction one-quarter
-      "frac12"   : 189, // fraction one-half
-      "frac34"   : 190, // fraction three-quarters
-      "iquest"   : 191, // inverted question mark
-      "Agrave"   : 192, // capital A, grave accent
-      "Aacute"   : 193, // capital A, acute accent
-      "Acirc"    : 194, // capital A, circumflex accent
-      "Atilde"   : 195, // capital A, tilde
-      "Auml"     : 196, // capital A, dieresis or umlaut mark
-      "Aring"    : 197, // capital A, ring
-      "AElig"    : 198, // capital AE diphthong (ligature)
-      "Ccedil"   : 199, // capital C, cedilla
-      "Egrave"   : 200, // capital E, grave accent
-      "Eacute"   : 201, // capital E, acute accent
-      "Ecirc"    : 202, // capital E, circumflex accent
-      "Euml"     : 203, // capital E, dieresis or umlaut mark
-      "Igrave"   : 204, // capital I, grave accent
-      "Iacute"   : 205, // capital I, acute accent
-      "Icirc"    : 206, // capital I, circumflex accent
-      "Iuml"     : 207, // capital I, dieresis or umlaut mark
-      "ETH"      : 208, // capital Eth, Icelandic
-      "Ntilde"   : 209, // capital N, tilde
-      "Ograve"   : 210, // capital O, grave accent
-      "Oacute"   : 211, // capital O, acute accent
-      "Ocirc"    : 212, // capital O, circumflex accent
-      "Otilde"   : 213, // capital O, tilde
-      "Ouml"     : 214, // capital O, dieresis or umlaut mark
-      "times"    : 215, // multiply sign
-      "Oslash"   : 216, // capital O, slash
-      "Ugrave"   : 217, // capital U, grave accent
-      "Uacute"   : 218, // capital U, acute accent
-      "Ucirc"    : 219, // capital U, circumflex accent
-      "Uuml"     : 220, // capital U, dieresis or umlaut mark
-      "Yacute"   : 221, // capital Y, acute accent
-      "THORN"    : 222, // capital THORN, Icelandic
-      "szlig"    : 223, // small sharp s, German (sz ligature)
-      "agrave"   : 224, // small a, grave accent
-      "aacute"   : 225, // small a, acute accent
-      "acirc"    : 226, // small a, circumflex accent
-      "atilde"   : 227, // small a, tilde
-      "auml"     : 228, // small a, dieresis or umlaut mark
-      "aring"    : 229, // small a, ring
-      "aelig"    : 230, // small ae diphthong (ligature)
-      "ccedil"   : 231, // small c, cedilla
-      "egrave"   : 232, // small e, grave accent
-      "eacute"   : 233, // small e, acute accent
-      "ecirc"    : 234, // small e, circumflex accent
-      "euml"     : 235, // small e, dieresis or umlaut mark
-      "igrave"   : 236, // small i, grave accent
-      "iacute"   : 237, // small i, acute accent
-      "icirc"    : 238, // small i, circumflex accent
-      "iuml"     : 239, // small i, dieresis or umlaut mark
-      "eth"      : 240, // small eth, Icelandic
-      "ntilde"   : 241, // small n, tilde
-      "ograve"   : 242, // small o, grave accent
-      "oacute"   : 243, // small o, acute accent
-      "ocirc"    : 244, // small o, circumflex accent
-      "otilde"   : 245, // small o, tilde
-      "ouml"     : 246, // small o, dieresis or umlaut mark
-      "divide"   : 247, // divide sign
-      "oslash"   : 248, // small o, slash
-      "ugrave"   : 249, // small u, grave accent
-      "uacute"   : 250, // small u, acute accent
-      "ucirc"    : 251, // small u, circumflex accent
-      "uuml"     : 252, // small u, dieresis or umlaut mark
-      "yacute"   : 253, // small y, acute accent
-      "thorn"    : 254, // small thorn, Icelandic
-      "yuml"     : 255, // small y, dieresis or umlaut mark
-
-      // Latin Extended-B
-      "fnof"     : 402, // latin small f with hook = function= florin, U+0192 ISOtech
-
-      // Greek
-      "Alpha"    : 913, // greek capital letter alpha, U+0391
-      "Beta"     : 914, // greek capital letter beta, U+0392
-      "Gamma"    : 915, // greek capital letter gamma,U+0393 ISOgrk3
-      "Delta"    : 916, // greek capital letter delta,U+0394 ISOgrk3
-      "Epsilon"  : 917, // greek capital letter epsilon, U+0395
-      "Zeta"     : 918, // greek capital letter zeta, U+0396
-      "Eta"      : 919, // greek capital letter eta, U+0397
-      "Theta"    : 920, // greek capital letter theta,U+0398 ISOgrk3
-      "Iota"     : 921, // greek capital letter iota, U+0399
-      "Kappa"    : 922, // greek capital letter kappa, U+039A
-      "Lambda"   : 923, // greek capital letter lambda,U+039B ISOgrk3
-      "Mu"       : 924, // greek capital letter mu, U+039C
-      "Nu"       : 925, // greek capital letter nu, U+039D
-      "Xi"       : 926, // greek capital letter xi, U+039E ISOgrk3
-      "Omicron"  : 927, // greek capital letter omicron, U+039F
-      "Pi"       : 928, // greek capital letter pi, U+03A0 ISOgrk3
-      "Rho"      : 929, // greek capital letter rho, U+03A1
-
-      // there is no Sigmaf, and no U+03A2 character either
-      "Sigma"    : 931, // greek capital letter sigma,U+03A3 ISOgrk3
-      "Tau"      : 932, // greek capital letter tau, U+03A4
-      "Upsilon"  : 933, // greek capital letter upsilon,U+03A5 ISOgrk3
-      "Phi"      : 934, // greek capital letter phi,U+03A6 ISOgrk3
-      "Chi"      : 935, // greek capital letter chi, U+03A7
-      "Psi"      : 936, // greek capital letter psi,U+03A8 ISOgrk3
-      "Omega"    : 937, // greek capital letter omega,U+03A9 ISOgrk3
-      "alpha"    : 945, // greek small letter alpha,U+03B1 ISOgrk3
-      "beta"     : 946, // greek small letter beta, U+03B2 ISOgrk3
-      "gamma"    : 947, // greek small letter gamma,U+03B3 ISOgrk3
-      "delta"    : 948, // greek small letter delta,U+03B4 ISOgrk3
-      "epsilon"  : 949, // greek small letter epsilon,U+03B5 ISOgrk3
-      "zeta"     : 950, // greek small letter zeta, U+03B6 ISOgrk3
-      "eta"      : 951, // greek small letter eta, U+03B7 ISOgrk3
-      "theta"    : 952, // greek small letter theta,U+03B8 ISOgrk3
-      "iota"     : 953, // greek small letter iota, U+03B9 ISOgrk3
-      "kappa"    : 954, // greek small letter kappa,U+03BA ISOgrk3
-      "lambda"   : 955, // greek small letter lambda,U+03BB ISOgrk3
-      "mu"       : 956, // greek small letter mu, U+03BC ISOgrk3
-      "nu"       : 957, // greek small letter nu, U+03BD ISOgrk3
-      "xi"       : 958, // greek small letter xi, U+03BE ISOgrk3
-      "omicron"  : 959, // greek small letter omicron, U+03BF NEW
-      "pi"       : 960, // greek small letter pi, U+03C0 ISOgrk3
-      "rho"      : 961, // greek small letter rho, U+03C1 ISOgrk3
-      "sigmaf"   : 962, // greek small letter final sigma,U+03C2 ISOgrk3
-      "sigma"    : 963, // greek small letter sigma,U+03C3 ISOgrk3
-      "tau"      : 964, // greek small letter tau, U+03C4 ISOgrk3
-      "upsilon"  : 965, // greek small letter upsilon,U+03C5 ISOgrk3
-      "phi"      : 966, // greek small letter phi, U+03C6 ISOgrk3
-      "chi"      : 967, // greek small letter chi, U+03C7 ISOgrk3
-      "psi"      : 968, // greek small letter psi, U+03C8 ISOgrk3
-      "omega"    : 969, // greek small letter omega,U+03C9 ISOgrk3
-      "thetasym" : 977, // greek small letter theta symbol,U+03D1 NEW
-      "upsih"    : 978, // greek upsilon with hook symbol,U+03D2 NEW
-      "piv"      : 982, // greek pi symbol, U+03D6 ISOgrk3
-
-      // General Punctuation
-      "bull"     : 8226, // bullet = black small circle,U+2022 ISOpub
-
-      // bullet is NOT the same as bullet operator, U+2219
-      "hellip"   : 8230, // horizontal ellipsis = three dot leader,U+2026 ISOpub
-      "prime"    : 8242, // prime = minutes = feet, U+2032 ISOtech
-      "Prime"    : 8243, // double prime = seconds = inches,U+2033 ISOtech
-      "oline"    : 8254, // overline = spacing overscore,U+203E NEW
-      "frasl"    : 8260, // fraction slash, U+2044 NEW
-
-      // Letterlike Symbols
-      "weierp"   : 8472, // script capital P = power set= Weierstrass p, U+2118 ISOamso
-      "image"    : 8465, // blackletter capital I = imaginary part,U+2111 ISOamso
-      "real"     : 8476, // blackletter capital R = real part symbol,U+211C ISOamso
-      "trade"    : 8482, // trade mark sign, U+2122 ISOnum
-      "alefsym"  : 8501, // alef symbol = first transfinite cardinal,U+2135 NEW
-
-      // alef symbol is NOT the same as hebrew letter alef,U+05D0 although the same glyph could be used to depict both characters
-      // Arrows
-      "larr"     : 8592, // leftwards arrow, U+2190 ISOnum
-      "uarr"     : 8593, // upwards arrow, U+2191 ISOnum-->
-      "rarr"     : 8594, // rightwards arrow, U+2192 ISOnum
-      "darr"     : 8595, // downwards arrow, U+2193 ISOnum
-      "harr"     : 8596, // left right arrow, U+2194 ISOamsa
-      "crarr"    : 8629, // downwards arrow with corner leftwards= carriage return, U+21B5 NEW
-      "lArr"     : 8656, // leftwards double arrow, U+21D0 ISOtech
-
-      // ISO 10646 does not say that lArr is the same as the 'is implied by' arrowbut also does not have any other character for that function. So ? lArr canbe used for 'is implied by' as ISOtech suggests
-      "uArr"     : 8657, // upwards double arrow, U+21D1 ISOamsa
-      "rArr"     : 8658, // rightwards double arrow,U+21D2 ISOtech
-
-      // ISO 10646 does not say this is the 'implies' character but does not have another character with this function so ?rArr can be used for 'implies' as ISOtech suggests
-      "dArr"     : 8659, // downwards double arrow, U+21D3 ISOamsa
-      "hArr"     : 8660, // left right double arrow,U+21D4 ISOamsa
-
-      // Mathematical Operators
-      "forall"   : 8704, // for all, U+2200 ISOtech
-      "part"     : 8706, // partial differential, U+2202 ISOtech
-      "exist"    : 8707, // there exists, U+2203 ISOtech
-      "empty"    : 8709, // empty set = null set = diameter,U+2205 ISOamso
-      "nabla"    : 8711, // nabla = backward difference,U+2207 ISOtech
-      "isin"     : 8712, // element of, U+2208 ISOtech
-      "notin"    : 8713, // not an element of, U+2209 ISOtech
-      "ni"       : 8715, // contains as member, U+220B ISOtech
-
-      // should there be a more memorable name than 'ni'?
-      "prod"     : 8719, // n-ary product = product sign,U+220F ISOamsb
-
-      // prod is NOT the same character as U+03A0 'greek capital letter pi' though the same glyph might be used for both
-      "sum"      : 8721, // n-ary summation, U+2211 ISOamsb
-
-      // sum is NOT the same character as U+03A3 'greek capital letter sigma' though the same glyph might be used for both
-      "minus"    : 8722, // minus sign, U+2212 ISOtech
-      "lowast"   : 8727, // asterisk operator, U+2217 ISOtech
-      "radic"    : 8730, // square root = radical sign,U+221A ISOtech
-      "prop"     : 8733, // proportional to, U+221D ISOtech
-      "infin"    : 8734, // infinity, U+221E ISOtech
-      "ang"      : 8736, // angle, U+2220 ISOamso
-      "and"      : 8743, // logical and = wedge, U+2227 ISOtech
-      "or"       : 8744, // logical or = vee, U+2228 ISOtech
-      "cap"      : 8745, // intersection = cap, U+2229 ISOtech
-      "cup"      : 8746, // union = cup, U+222A ISOtech
-      "int"      : 8747, // integral, U+222B ISOtech
-      "there4"   : 8756, // therefore, U+2234 ISOtech
-      "sim"      : 8764, // tilde operator = varies with = similar to,U+223C ISOtech
-
-      // tilde operator is NOT the same character as the tilde, U+007E,although the same glyph might be used to represent both
-      "cong"     : 8773, // approximately equal to, U+2245 ISOtech
-      "asymp"    : 8776, // almost equal to = asymptotic to,U+2248 ISOamsr
-      "ne"       : 8800, // not equal to, U+2260 ISOtech
-      "equiv"    : 8801, // identical to, U+2261 ISOtech
-      "le"       : 8804, // less-than or equal to, U+2264 ISOtech
-      "ge"       : 8805, // greater-than or equal to,U+2265 ISOtech
-      "sub"      : 8834, // subset of, U+2282 ISOtech
-      "sup"      : 8835, // superset of, U+2283 ISOtech
-
-      // note that nsup, 'not a superset of, U+2283' is not covered by the Symbol font encoding and is not included. Should it be, for symmetry?It is in ISOamsn  --> <!ENTITY nsub": 8836,  //not a subset of, U+2284 ISOamsn
-      "sube"     : 8838, // subset of or equal to, U+2286 ISOtech
-      "supe"     : 8839, // superset of or equal to,U+2287 ISOtech
-      "oplus"    : 8853, // circled plus = direct sum,U+2295 ISOamsb
-      "otimes"   : 8855, // circled times = vector product,U+2297 ISOamsb
-      "perp"     : 8869, // up tack = orthogonal to = perpendicular,U+22A5 ISOtech
-      "sdot"     : 8901, // dot operator, U+22C5 ISOamsb
-
-      // dot operator is NOT the same character as U+00B7 middle dot
-      // Miscellaneous Technical
-      "lceil"    : 8968, // left ceiling = apl upstile,U+2308 ISOamsc
-      "rceil"    : 8969, // right ceiling, U+2309 ISOamsc
-      "lfloor"   : 8970, // left floor = apl downstile,U+230A ISOamsc
-      "rfloor"   : 8971, // right floor, U+230B ISOamsc
-      "lang"     : 9001, // left-pointing angle bracket = bra,U+2329 ISOtech
-
-      // lang is NOT the same character as U+003C 'less than' or U+2039 'single left-pointing angle quotation mark'
-      "rang"     : 9002, // right-pointing angle bracket = ket,U+232A ISOtech
-
-      // rang is NOT the same character as U+003E 'greater than' or U+203A 'single right-pointing angle quotation mark'
-      // Geometric Shapes
-      "loz"      : 9674, // lozenge, U+25CA ISOpub
-
-      // Miscellaneous Symbols
-      "spades"   : 9824, // black spade suit, U+2660 ISOpub
-
-      // black here seems to mean filled as opposed to hollow
-      "clubs"    : 9827, // black club suit = shamrock,U+2663 ISOpub
-      "hearts"   : 9829, // black heart suit = valentine,U+2665 ISOpub
-      "diams"    : 9830, // black diamond suit, U+2666 ISOpub
-
-      // Latin Extended-A
-      "OElig"    : 338, //  -- latin capital ligature OE,U+0152 ISOlat2
-      "oelig"    : 339, //  -- latin small ligature oe, U+0153 ISOlat2
-
-      // ligature is a misnomer, this is a separate character in some languages
-      "Scaron"   : 352, //  -- latin capital letter S with caron,U+0160 ISOlat2
-      "scaron"   : 353, //  -- latin small letter s with caron,U+0161 ISOlat2
-      "Yuml"     : 376, //  -- latin capital letter Y with diaeresis,U+0178 ISOlat2
-
-      // Spacing Modifier Letters
-      "circ"     : 710, //  -- modifier letter circumflex accent,U+02C6 ISOpub
-      "tilde"    : 732, // small tilde, U+02DC ISOdia
-
-      // General Punctuation
-      "ensp"     : 8194, // en space, U+2002 ISOpub
-      "emsp"     : 8195, // em space, U+2003 ISOpub
-      "thinsp"   : 8201, // thin space, U+2009 ISOpub
-      "zwnj"     : 8204, // zero width non-joiner,U+200C NEW RFC 2070
-      "zwj"      : 8205, // zero width joiner, U+200D NEW RFC 2070
-      "lrm"      : 8206, // left-to-right mark, U+200E NEW RFC 2070
-      "rlm"      : 8207, // right-to-left mark, U+200F NEW RFC 2070
-      "ndash"    : 8211, // en dash, U+2013 ISOpub
-      "mdash"    : 8212, // em dash, U+2014 ISOpub
-      "lsquo"    : 8216, // left single quotation mark,U+2018 ISOnum
-      "rsquo"    : 8217, // right single quotation mark,U+2019 ISOnum
-      "sbquo"    : 8218, // single low-9 quotation mark, U+201A NEW
-      "ldquo"    : 8220, // left double quotation mark,U+201C ISOnum
-      "rdquo"    : 8221, // right double quotation mark,U+201D ISOnum
-      "bdquo"    : 8222, // double low-9 quotation mark, U+201E NEW
-      "dagger"   : 8224, // dagger, U+2020 ISOpub
-      "Dagger"   : 8225, // double dagger, U+2021 ISOpub
-      "permil"   : 8240, // per mille sign, U+2030 ISOtech
-      "lsaquo"   : 8249, // single left-pointing angle quotation mark,U+2039 ISO proposed
-      // lsaquo is proposed but not yet ISO standardized
-      "rsaquo"   : 8250, // single right-pointing angle quotation mark,U+203A ISO proposed
-      // rsaquo is proposed but not yet ISO standardized
-      "euro"     : 8364 //  -- euro sign, U+20AC NEW
-    }
-  }
-
-} );
-
-/*******************************************************************************
- * Copyright (c) 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                          EclipseSource 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-rwt.qx.Class.define("rwt.html.EventRegistration",
-{
-  /*
-  *****************************************************************************
-     STATICS
-  *****************************************************************************
-  */
-
-  statics :
-  {
-    /**
-     * Assign a function to an event.
-     *
-     * @type static
-     * @param vElement {Element} DOM Element
-     * @param vType {String} Name of the event
-     * @param vFunction {Function} The pointer to the function to assign
-     * @return {void}
-     * @signature function(vElement, vType, vFunction)
-     */
-    addEventListener : rwt.util.Variant.select("qx.client",
-    {
-      "mshtml" : function(vElement, vType, vFunction) {
-        vElement.attachEvent("on" + vType, vFunction);
-      },
-
-      "default" : function(vElement, vType, vFunction) {
-        vElement.addEventListener(vType, vFunction, false);
-      }
-    }),
-
-
-    /**
-     * Unassign a function from an event.
-     *
-     * @type static
-     * @param vElement {Element} DOM Element
-     * @param vType {String} Name of the event
-     * @param vFunction {Function} The pointer to the function to assign
-     * @signature function(vElement, vType, vFunction)
-     */
-    removeEventListener : rwt.util.Variant.select("qx.client",
-    {
-      "mshtml" : function(vElement, vType, vFunction) {
-        vElement.detachEvent("on" + vType, vFunction);
-      },
-
-      "default" :  function(vElement, vType, vFunction) {
-        vElement.removeEventListener(vType, vFunction, false);
-      }
-    })
-  }
-});
-
-/*******************************************************************************
- *  Copyright: 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                        and EclipseSource
- *
- * 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-rwt.qx.Class.define( "rwt.event.EventHandlerUtil", {
-  type : "static",
-
-  statics : {
-    // TODO [tb] : integrate rwt.html.EventRegistration
-    _lastUpDownType : {},
-    _lastKeyCode : null,
-
-    cleanUp : function() {
-      delete this.__onKeyEvent;
-      delete this._lastUpDownType;
-      delete this._lastKeyCode;
-    },
-
-    applyBrowserFixes  : rwt.util.Variant.select( "qx.client", {
-      "gecko" : function() {
-        // Fix for bug 295475:
-        // Prevent url-dropping in FF as a whole (see bug 304651)
-        var doc = rwt.widgets.base.ClientDocument.getInstance();
-        doc.getElement().setAttribute( "ondrop", "event.preventDefault();" );
-        var docElement = document.documentElement;
-        // also see ErrorHandler.js#_enableTextSelection
-        this._ffMouseFixListener = function( event ) {
-          var tagName = null;
-          try{
-            tagName = event.originalTarget.tagName;
-          } catch( e ) {
-            // Firefox bug: On the very first mousedown, access to the events target
-            // is forbidden and causes an error.
-          }
-          // NOTE: See also Bug 321372
-          if( event.button === 0 && tagName != null && tagName != "INPUT" ) {
-            event.preventDefault();
-          }
-        };
-        rwt.html.EventRegistration.addEventListener( docElement,
-                                                    "mousedown",
-                                                    this._ffMouseFixListener );
-      },
-      "default" : function() { }
-    } ),
-
-    /////////////////////////
-    // GENERAL EVENT HANDLING
-
-    getDomEvent : rwt.util.Variant.select( "qx.client", {
-      "mshtml" : function( args ) {
-        return args.length > 0 ? args[ 0 ] : window.event;
-      },
-      "default" : function( args ) {
-        return args[ 0 ];
-      }
-    } ),
-
-    getDomTarget : rwt.util.Variant.select("qx.client", {
-      "mshtml" : function( vDomEvent ) {
-        return vDomEvent.target || vDomEvent.srcElement;
-      },
-      "webkit" : function( vDomEvent ) {
-        var vNode = vDomEvent.target || vDomEvent.srcElement;
-        // Safari takes text nodes as targets for events
-        if( vNode && ( vNode.nodeType == rwt.html.Nodes.TEXT ) ) {
-          vNode = vNode.parentNode;
-        }
-        return vNode;
-      },
-      "default" : function( vDomEvent ) {
-        return vDomEvent.target;
-      }
-    } ),
-
-    stopDomEvent : function( vDomEvent ) {
-      vDomEvent._prevented = true;
-      if( vDomEvent.preventDefault ) {
-        vDomEvent.preventDefault();
-      }
-      try {
-        // this allows us to prevent some key press events in IE and Firefox.
-        // See bug #1049
-        vDomEvent.keyCode = 0;
-      } catch( ex ) {
-        // do nothing
-      }
-      vDomEvent.returnValue = false;
-    },
-
-    wasStopped : function( domEvent ) {
-      return domEvent._prevented ? true : false;
-    },
-
-
-    blockUserDomEvents : function( element, value ) {
-      var eventUtil = rwt.html.EventRegistration;
-      if( value ) {
-        for( var i = 0; i < this._userEventTypes.length; i++ ) {
-          eventUtil.addEventListener( element, this._userEventTypes[ i ], this._domEventBlocker );
-        }
-      } else {
-        for( var i = 0; i < this._userEventTypes.length; i++ ) {
-          eventUtil.removeEventListener( element, this._userEventTypes[ i ], this._domEventBlocker );
-        }
-      }
-    },
-
-    _userEventTypes : [
-      "mouseover",
-      "mousemove",
-      "mouseout",
-      "mousedown",
-      "mouseup",
-      "click",
-      "dblclick",
-      "contextmenu",
-      ( rwt.client.Client.isGecko() ? "DOMMouseScroll" : "mousewheel" ),
-      "keydown",
-      "keypress",
-      "keyup"
-    ],
-
-    _domEventBlocker : function( event ) {
-      rwt.event.EventHandlerUtil.stopDomEvent( event );
-      event.cancelBubble = true; // MSIE
-      if( event.stopPropagation ) {
-        event.stopPropagation();
-      }
-    },
-
-    // BUG: http://xscroll.mozdev.org/
-    // If your Mozilla was built with an option `--enable-default-toolkit=gtk2',
-    // it can not return the correct event target for DOMMouseScroll.
-    getOriginalTargetObject : function( vNode ) {
-      // Events on the HTML element, when using absolute locations which
-      // are outside the HTML element. Opera does not seem to fire events
-      // on the HTML element.
-      if( vNode == document.documentElement ) {
-        vNode = document.body;
-      }
-      // Walk up the tree and search for an rwt.widgets.base.Widget
-      try {
-        while( vNode != null && vNode.rwtWidget == null )       {
-          vNode = vNode.parentNode;
-        }
-      } catch( vDomEvent ) {
-        vNode = null;
-      }
-      return vNode ? vNode.rwtWidget : null;
-    },
-
-    getOriginalTargetObjectFromEvent : function( vDomEvent, vWindow ) {
-      var vNode = this.getDomTarget( vDomEvent );
-      // Especially to fix key events.
-      // 'vWindow' is the window reference then
-      if( vWindow ) {
-        var vDocument = vWindow.document;
-        if(    vNode == vWindow
-            || vNode == vDocument
-            || vNode == vDocument.documentElement
-            || vNode == vDocument.body )
-        {
-          return vDocument.body.rwtWidget;
-        }
-      }
-      return this.getOriginalTargetObject( vNode );
-    },
-
-    getRelatedTargetObjectFromEvent : function( vDomEvent ) {
-      var EventHandlerUtil = rwt.event.EventHandlerUtil;
-      var target = vDomEvent.relatedTarget;
-      if( !target ) {
-        if( vDomEvent.type == "mouseover" ) {
-          target = vDomEvent.fromElement;
-        } else {
-          target = vDomEvent.toElement;
-        }
-      }
-      return EventHandlerUtil.getTargetObject( target );
-    },
-
-    getTargetObject : function( vNode, vObject, allowDisabled ) {
-      if( !vObject ) {
-        var vObject = this.getOriginalTargetObject( vNode );
-        if (!vObject) {
-          return null;
-        }
-      }
-      while( vObject ) {
-        if( !allowDisabled && !vObject.getEnabled() ) {
-          return null;
-        }
-        if( !vObject.getAnonymous() ) {
-          break;
-        }
-        vObject = vObject.getParent();
-      }
-      return vObject;
-    },
-
-    ///////////////
-    // KEY HANDLING
-
-    getKeyCode : rwt.util.Variant.select( "qx.client", {
-      "gecko" : function( event ) {
-        return event.keyCode;
-      },
-      "default" : function( event ) {
-        // the value in "keyCode" on "keypress" is actually the charcode:
-        var hasKeyCode = event.type !== "keypress" || event.keyCode === 13 || event.keyCode === 27;
-        return hasKeyCode ? event.keyCode : 0;
-      }
-    } ),
-
-    getCharCode : rwt.util.Variant.select( "qx.client", {
-      "default" : function( event ) {
-        var hasCharCode = event.type === "keypress" && event.keyCode !== 13 && event.keyCode !== 27;
-        return hasCharCode ? event.charCode : 0;
-      },
-      "mshtml|newmshtml|opera" : function( event ) {
-        var hasCharCode = event.type === "keypress" && event.keyCode !== 13 && event.keyCode !== 27;
-        return hasCharCode ? event.keyCode : 0;
-      }
-    } ),
-
-    _isFirstKeyDown : function( keyCode ) {
-      return this._lastUpDownType[ keyCode ] !== "keydown";
-    },
-
-    getEventPseudoTypes : rwt.util.Variant.select( "qx.client", {
-      "default" : function( event, keyCode, charCode ) {
-        var result;
-        if( event.type === "keydown" ) {
-          var printable = !this.isNonPrintableKeyCode( keyCode );
-          if( this._isFirstKeyDown( keyCode ) ) {
-            // add a "keypress" for non-printable keys:
-            result = printable ? [ "keydown" ] : [ "keydown", "keypress" ];
-          } else {
-            // convert non-printable "keydown" to "keypress", suppress other:
-            result = printable ? [] : [ "keypress" ];
-          }
-        } else {
-          result = [ event.type ];
-        }
-        return result;
-      },
-      "gecko" : function( event, keyCode, charCode ) {
-        var result;
-        if( event.type === "keydown" && this.isModifier( keyCode ) ) {
-          if( this._isFirstKeyDown( keyCode ) ) {
-            result = [ "keydown", "keypress" ];
-          } else {
-            result = [ "keypress" ];
-          }
-        } else {
-          if( event.type === "keydown" && !this._isFirstKeyDown( keyCode ) ) {
-            // suppress unwanted "keydown":
-            result = [];
-          } else {
-            result = [ event.type ];
-          }
-        }
-        return result;
-      }
-    } ),
-
-
-    mustRestoreKeyup  : function( keyCode, pseudoTypes  ) {
-      // For these keys it is assumed to be more likely that a keyup event was missed
-      // than the key being hold down while another key is pressed.
-      var result = [];
-      if( pseudoTypes[ 0 ] === "keydown" ) {
-        if( !this._isFirstKeyDown( 93 ) && keyCode !== 93 ) {
-          result.push( 93 );
-        }
-      }
-      return result;
-    },
-
-    mustRestoreKeypress  : rwt.util.Variant.select( "qx.client", {
-      "default" : function( event, pseudoTypes ) {
-        var result = false;
-        if( this.wasStopped( event ) ) {
-          result =    ( pseudoTypes.length === 1 && pseudoTypes[ 0 ] === "keydown" )
-                   || pseudoTypes.length === 0;
-        }
-        return result;
-      },
-      "gecko" : function( event, pseudoTypes ) {
-        return false;
-      }
-    } ),
-
-    saveData : function( event, keyCode, charCode ) {
-      if( event.type !== "keypress" ) {
-        this._lastUpDownType[ keyCode ] = event.type;
-        this._lastKeyCode = keyCode;
-      }
-    },
-
-    clearStuckKey : function( keyCode ) {
-      this._lastUpDownType[ keyCode ] = "keyup";
-    },
-
-    keyCodeToIdentifier : function( keyCode ) {
-      var result = "Unidentified";
-      if( this._numpadToCharCode[ keyCode ] !== undefined ) {
-        result = String.fromCharCode( this._numpadToCharCode[ keyCode ] );
-      } else if( this._keyCodeToIdentifierMap[ keyCode ] !== undefined ) {
-        result = this._keyCodeToIdentifierMap[ keyCode ];
-      } else if( this._specialCharCodeMap[ keyCode ] !== undefined ) {
-        result = this._specialCharCodeMap[ keyCode ];
-      } else if( this.isAlphaNumericKeyCode( keyCode ) ) {
-        result = String.fromCharCode( keyCode );
-      }
-      return result;
-    },
-
-    charCodeToIdentifier : function( charCode ) {
-      var result;
-      if( this._specialCharCodeMap[ charCode ] !== undefined ) {
-        result = this._specialCharCodeMap[ charCode ];
-      } else {
-        result = String.fromCharCode( charCode ).toUpperCase();
-      }
-      return result;
-    },
-
-    isNonPrintableKeyCode  : rwt.util.Variant.select( "qx.client", {
-      "default" : function( keyCode ) {
-        return this._keyCodeToIdentifierMap[ keyCode ] ? true : false;
-      },
-      "webkit" : function( keyCode ) {
-        return ( this._keyCodeToIdentifierMap[ keyCode ] || keyCode === 27 ) ? true : false;
-      }
-    } ),
-
-    isSpecialKeyCode : function( keyCode ) {
-      return this._specialCharCodeMap[ keyCode ] ? true : false;
-    },
-
-    isModifier : function( keyCode ) {
-      return keyCode >= 16 && keyCode <= 20 && keyCode !== 19;
-    },
-
-    isAlphaNumericKeyCode : function( keyCode ) {
-      var result = false;
-      if(    ( keyCode >= this._charCodeA && keyCode <= this._charCodeZ )
-          || ( keyCode >= this._charCode0 && keyCode <= this._charCode9 ) )
-      {
-        result = true;
-      }
-      return result;
-    },
-
-    /**
-     * Determines if this key event should be blocked if key events are disabled
-     */
-    shouldBlock : function( type, keyCode, charCode, event ) {
-      var result = true;
-      var keyIdentifier;
-      if( !isNaN( keyCode ) && keyCode !== 0 ) {
-        keyIdentifier = this.keyCodeToIdentifier( keyCode );
-      } else {
-        keyIdentifier = this.charCodeToIdentifier( charCode );
-      }
-      if( this._nonBlockableKeysMap[ keyIdentifier ] || event.altKey ) {
-        result = false;
-      } else if( event.ctrlKey ) {
-        // block only those combos that are used for text editing:
-        result = this._blockableCtrlKeysMap[ keyIdentifier ] === true;
-      }
-      return result;
-    },
-
-    ///////////////
-    // Helper-maps:
-
-    _specialCharCodeMap : {
-      13  : "Enter",
-      27  : "Escape",
-      32 : "Space"
-    },
-
-    _nonBlockableKeysMap : {
-      "Control" : true,
-      "Alt" : true,
-      "Shift" : true,
-      "Meta" : true,
-      "Win" : true,
-      "F1" : true,
-      "F2" : true,
-      "F3" : true,
-      "F4" : true,
-      "F5" : true,
-      "F6" : true,
-      "F7" : true,
-      "F8" : true,
-      "F9" : true,
-      "F10" : true,
-      "F11" : true,
-      "F12" : true
-    },
-
-    _blockableCtrlKeysMap : {
-      "F" : true,
-      "A" : true,
-      "C" : true,
-      "V" : true,
-      "X" : true,
-      "Z" : true,
-      "Y" : true
-    },
-
-    _keyCodeToIdentifierMap : {
-      8   : "Backspace",
-      9   : "Tab",
-      16  : "Shift",
-      17  : "Control",
-      18  : "Alt",
-      20  : "CapsLock",
-      224 : "Meta",
-      37  : "Left",
-      38  : "Up",
-      39  : "Right",
-      40  : "Down",
-      33  : "PageUp",
-      34  : "PageDown",
-      35  : "End",
-      36  : "Home",
-      45  : "Insert",
-      46  : "Delete",
-      112 : "F1",
-      113 : "F2",
-      114 : "F3",
-      115 : "F4",
-      116 : "F5",
-      117 : "F6",
-      118 : "F7",
-      119 : "F8",
-      120 : "F9",
-      121 : "F10",
-      122 : "F11",
-      123 : "F12",
-      144 : "NumLock",
-      44  : "PrintScreen",
-      145 : "Scroll",
-      19  : "Pause",
-      91  : "Win", // The Windows Logo key
-      93  : "Apps" // The Application key (Windows Context Menu)
-    },
-
-    /** maps the keycodes of the numpad keys to the right charcodes */
-    _numpadToCharCode : {
-      96  : "0".charCodeAt( 0 ),
-      97  : "1".charCodeAt( 0 ),
-      98  : "2".charCodeAt( 0 ),
-      99  : "3".charCodeAt( 0 ),
-      100 : "4".charCodeAt( 0 ),
-      101 : "5".charCodeAt( 0 ),
-      102 : "6".charCodeAt( 0 ),
-      103 : "7".charCodeAt( 0 ),
-      104 : "8".charCodeAt( 0 ),
-      105 : "9".charCodeAt( 0 ),
-      106 : "*".charCodeAt( 0 ),
-      107 : "+".charCodeAt( 0 ),
-      109 : "-".charCodeAt( 0 ),
-      110 : ",".charCodeAt( 0 ),
-      111 : "/".charCodeAt( 0 )
-    },
-
-    _charCodeA : "A".charCodeAt( 0 ),
-    _charCodeZ : "Z".charCodeAt( 0 ),
-    _charCode0 : "0".charCodeAt( 0 ),
-    _charCode9 : "9".charCodeAt( 0 )
-
-  }
-
-} );
-
-/*******************************************************************************
- * Copyright (c) 2011, 2012 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-namespace( "rwt.remote" );
-
-rwt.remote.HandlerRegistry = {
-
-  _registry : {},
-
-  add : function( key, handler ) {
-    this._registry[ key ] = handler;
-  },
-
-  remove : function( key ) {
-    delete this._registry[ key ];
-  },
-
-  getHandler : function( key ) {
-    var result = this._registry[ key ];
-    if( result === undefined ) {
-      throw new Error( "No Handler for type " + key );
-    }
-    return result;
-  },
-
-  hasHandler : function( key ) {
-    return this._registry[ key ] != null;
-  }
-
-};
-
-/*******************************************************************************
- * Copyright (c) 2011, 2012 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-namespace( "rwt.remote" );
-
-rwt.remote.ObjectRegistry = {
-
-  _map : {},
-  _callbacks : {},
-
-  add : function( id, object, handler ) {
-    this._map[ id ] = {
-      "object" : object,
-      "handler" : handler
-    };
-    object._rwtId = id;
-    if( typeof object.applyObjectId === "function" ) {
-      object.applyObjectId( id );
-    }
-    if( this._callbacks[ id ] ) {
-      for( var i = 0; i < this._callbacks[ id ].length; i++ ) {
-        this._callbacks[ id ][ i ]( object );
-      }
-      delete this._callbacks[ id ];
-    }
-  },
-
-  remove : function( id ) {
-    if( id != null ) {
-      delete this._map[ id ];
-    }
-  },
-
-  getId : function( object ) {
-    var result = null;
-    if( object != null && object._rwtId != null ) {
-      result = object._rwtId;
-    }
-    return result;
-  },
-
-  getObject : function( id ) {
-    var entry = this.getEntry( id );
-    return entry ? entry.object : undefined;
-  },
-
-  getEntry : function( id ) {
-    var result = this._map[ id ];
-    if( result == null && rwt.remote.HandlerRegistry.hasHandler( id ) ) {
-      var handler = rwt.remote.HandlerRegistry.getHandler( id );
-      if( handler.service === true ) {
-        this.add( id, handler.factory(), handler );
-        result = this._map[ id ];
-      }
-    }
-    return result;
-  },
-
-  addRegistrationCallback : function( id, fun ) {
-    if( !this._callbacks[ id ] ) {
-      this._callbacks[ id ] = [];
-    }
-    this._callbacks[ id ].push( fun );
-  }
-
-};
-
-/*******************************************************************************
- * Copyright (c) 2011, 2013 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-namespace( "rwt.remote" );
-
-rwt.remote.HandlerUtil = {
-
-  SERVER_DATA : "org.eclipse.swt.widgets.Widget#data",
-
-  _controlDestructor : function( widget ) {
-    rwt.remote.HandlerUtil._widgetDestructor( widget );
-  },
-
-  _childrenFinder : function( widget ) {
-    return rwt.remote.HandlerUtil.getDestroyableChildren( widget );
-  },
-
-  _widgetDestructor : function( widget ) {
-    var parent = widget.getUserData( "protocolParent" );
-    if( parent ) {
-      rwt.remote.HandlerUtil.removeDestroyableChild( parent, widget );
-    }
-    widget.setToolTip( null );
-    widget.setUserData( "toolTipText", null );
-    widget.destroy();
-  },
-
-  _controlProperties : [
-    "children",
-    "tabIndex",
-    "toolTip",
-    "visibility",
-    "enabled",
-    "foreground",
-    "background",
-    "backgroundImage",
-    "cursor",
-    "customVariant",
-    "bounds",
-    "font",
-    "menu",
-    "activeKeys",
-    "cancelKeys",
-    "data"
-  ],
-
-  _controlPropertyHandler : {
-    "data" : function( target, value ) {
-      var map = rwt.remote.HandlerUtil.getServerData( target );
-      rwt.util.Objects.mergeWith( map, value );
-    },
-    "children" : function( widget, value ) {
-      if( value !== null ) {
-        var childrenCount = value.length;
-        var applyZIndex = function( child ) {
-          var index = value.indexOf( rwt.remote.ObjectRegistry.getId( child ) );
-          child.setZIndex( childrenCount - index );
-        };
-        for( var i = 0; i < childrenCount; i++ ) {
-          rwt.remote.HandlerUtil.callWithTarget( value[ i ], applyZIndex );
-        }
-      }
-      widget.setUserData( "rwt_Children", value );
-    },
-    "foreground" : function( widget, value ) {
-      if( value === null ) {
-        widget.resetTextColor();
-      } else {
-        widget.setTextColor( rwt.util.Colors.rgbToRgbString( value ) );
-      }
-    },
-    "background" : function( widget, value ) {
-      if( value === null ) {
-        widget.resetBackgroundColor();
-        if( widget.__user$backgroundGradient == null ) {
-          widget.resetBackgroundGradient();
-        }
-      } else {
-        if( widget.__user$backgroundGradient == null ) {
-          widget.setBackgroundGradient( null );
-        }
-        var color = value[ 3 ] === 0 ? "transparent" : rwt.util.Colors.rgbToRgbString( value );
-        widget.setBackgroundColor( color );
-      }
-    },
-    "backgroundImage" : function( widget, value ) {
-      if( value === null ) {
-        widget.resetBackgroundImage();
-        widget.setUserData( "backgroundImageSize", null );
-      } else {
-        widget.setUserData( "backgroundImageSize", value.slice( 1 ) );
-        widget.setBackgroundImage( value[ 0 ] );
-      }
-    },
-    "cursor" : function( widget, value ) {
-      if( value === null ) {
-        widget.resetCursor();
-      } else {
-        widget.setCursor( value );
-      }
-    },
-    "bounds" : function( widget, value ) {
-      var bounds = value;
-      if( widget.getUserData( "tabFolder" ) !== null ) {
-        bounds[ 0 ] = 0;
-        bounds[ 1 ] = 0;
-      }
-      if( widget.getUserData( "scrolledComposite" ) === null ) {
-        widget.setLeft( bounds[ 0 ] );
-        widget.setTop( bounds[ 1 ] );
-      }
-      widget.setWidth( bounds[ 2 ] );
-      widget.setHeight( bounds[ 3 ] );
-    },
-    "toolTip" : function( widget, value ) {
-      if( value != null && value !== "" ) {
-        var EncodingUtil = rwt.util.Encoding;
-        var text = EncodingUtil.escapeText( value, false );
-        text = EncodingUtil.replaceNewLines( text, "<br/>" );
-        widget.setUserData( "toolTipText", text );
-        var toolTip = rwt.widgets.base.WidgetToolTip.getInstance();
-        widget.setToolTip( toolTip );
-        // make sure "boundToWidget" is initialized:
-        if( toolTip.getParent() != null ) {
-          if( toolTip.getBoundToWidget() == widget ) {
-            toolTip.updateText( widget );
-          }
-        }
-      } else {
-        widget.setToolTip( null );
-        widget.setUserData( "toolTipText", null );
-      }
-    },
-    "font" : function( widget, fontData ) {
-      if( widget.setFont ) { // test if font property is supported - why wouldn't it? [tb]
-        if( fontData === null ) {
-          widget.resetFont();
-        } else {
-          var font = rwt.html.Font.fromArray( fontData );
-          widget.setFont( font );
-        }
-      }
-    },
-    "menu" : function( widget, value ) {
-      rwt.remote.HandlerUtil.callWithTarget( value, function( menu ) {
-        widget.setContextMenu( menu );
-        var detectByKey = rwt.widgets.Menu.menuDetectedByKey;
-        var detectByMouse = rwt.widgets.Menu.menuDetectedByMouse;
-        if( menu == null ) {
-          widget.removeEventListener( "keydown", detectByKey );
-          widget.removeEventListener( "mouseup", detectByMouse );
-        } else {
-          widget.addEventListener( "keydown", detectByKey );
-          widget.addEventListener( "mouseup", detectByMouse );
-        }
-      } );
-    },
-    "activeKeys" : function( widget, value ) {
-      var map = rwt.util.Objects.fromArray( value );
-      widget.setUserData( "activeKeys", map );
-    },
-    "cancelKeys" : function( widget, value ) {
-      var map = rwt.util.Objects.fromArray( value );
-      widget.setUserData( "cancelKeys", map );
-    }
-  },
-
-  _controlListeners : [
-    "FocusIn",
-    "FocusOut",
-    "MouseDown",
-    "MouseUp",
-    "MouseDoubleClick",
-    "KeyDown",
-    "Traverse",
-    "MenuDetect",
-    "Help",
-    "Activate",
-    "Deactivate"
-  ],
-
-  _controlListenerHandler : {
-    "KeyDown" : function( widget, value ) {
-      widget.setUserData( "keyListener", value ? true : null );
-    },
-    "Traverse" : function( widget, value ) {
-      widget.setUserData( "traverseListener", value ? true : null );
-    },
-    "FocusIn" : function( widget, value ) {
-      var context = rwt.remote.EventUtil;
-      var focusGained = rwt.remote.EventUtil.focusGained;
-      if( value ) {
-        widget.addEventListener( "focusin", focusGained, context );
-      } else {
-        widget.removeEventListener( "focusin", focusGained, context );
-      }
-    },
-    "FocusOut" : function( widget, value ) {
-      var context = rwt.remote.EventUtil;
-      var focusLost = rwt.remote.EventUtil.focusLost;
-      if( value ) {
-        widget.addEventListener( "focusout", focusLost, context );
-      } else {
-        widget.removeEventListener( "focusout", focusLost, context );
-      }
-    },
-    "MouseDown" : function( widget, value ) {
-      var context;
-      var mouseDown = rwt.remote.EventUtil.mouseDown;
-      if( value ) {
-        widget.addEventListener( "mousedown", mouseDown, context );
-      } else {
-        widget.removeEventListener( "mousedown", mouseDown, context );
-      }
-    },
-    "MouseUp" : function( widget, value ) {
-      var context;
-      var mouseUp = rwt.remote.EventUtil.mouseUp;
-      if( value ) {
-        widget.addEventListener( "mouseup", mouseUp, context );
-      } else {
-        widget.removeEventListener( "mouseup", mouseUp, context );
-      }
-    },
-    "MouseDoubleClick" : function( widget, value ) {
-      var context;
-      var mouseDoubleClick = rwt.remote.EventUtil.mouseDoubleClick;
-      var mouseUpCounter = rwt.remote.EventUtil.mouseUpCounter;
-      if( value ) {
-        widget.addEventListener( "mousedown", mouseDoubleClick, context );
-        widget.addEventListener( "mouseup", mouseUpCounter, context );
-      } else {
-        widget.removeEventListener( "mousedown", mouseDoubleClick, context );
-        widget.removeEventListener( "mouseup", mouseUpCounter, context );
-      }
-    },
-    "MenuDetect" : function( widget, value ) {
-      var context;
-      var detectByKey = rwt.remote.EventUtil.menuDetectedByKey;
-      var detectByMouse = rwt.remote.EventUtil.menuDetectedByMouse;
-      if( value ) {
-        widget.addEventListener( "keydown", detectByKey, context );
-        widget.addEventListener( "mouseup", detectByMouse, context );
-      } else {
-        widget.removeEventListener( "keydown", detectByKey, context );
-        widget.removeEventListener( "mouseup", detectByMouse, context );
-      }
-    },
-    "Help" : function( widget, value ) {
-      var context;
-      var helpRequested = rwt.remote.EventUtil.helpRequested;
-      if( value ) {
-        widget.addEventListener( "keydown", helpRequested, context );
-      } else {
-        widget.removeEventListener( "keydown", helpRequested, context );
-      }
-    },
-    "Activate" : function( widget, value ) {
-      widget.setUserData( "activateListener", value ? true : null );
-    },
-    "Deactivate" : function( widget, value ) {
-      widget.setUserData( "deactivateListener", value ? true : null );
-    }
-  },
-
-  _specialHandler : {
-    "backgroundGradient" : function( widget, value ) {
-      var gradient = null;
-      if( value ) {
-        var colors = value[ 0 ];
-        var percents = value[ 1 ];
-        var vertical = value[ 2 ];
-        gradient = [];
-        for( var i = 0; i < colors.length; i++ ) {
-          gradient[ i ] = [ percents[ i ] / 100, rwt.util.Colors.rgbToRgbString( colors[ i ] ) ];
-        }
-        gradient.horizontal = !vertical;
-      }
-      widget.setBackgroundGradient( gradient );
-    },
-    "roundedBorder" : function( widget, value ) {
-      if( value ) {
-        var width = value[ 0 ];
-        var color = rwt.util.Colors.rgbToRgbString( value[ 1 ] );
-        var radii = value.slice( -4 );
-        var border = new rwt.html.Border( width, "rounded", color, radii );
-        widget.setBorder( border );
-      } else {
-        widget.resetBorder();
-      }
-    }
-  },
-
-  ////////////////////
-  // lists and handler
-
-  getWidgetDestructor : function() {
-    return this._widgetDestructor;
-  },
-
-  getControlDestructor : function() {
-    return this._controlDestructor;
-  },
-
-  getDestroyableChildrenFinder : function( widget ) {
-    return this._childrenFinder;
-  },
-
-  extendControlProperties : function( list ) {
-    return list.concat( this._controlProperties );
-  },
-
-  extendControlPropertyHandler : function( handler ) {
-    return rwt.util.Objects.mergeWith( handler, this._controlPropertyHandler, false );
-  },
-
-  extendControlListeners : function( list ) {
-    return list.concat( this._controlListeners );
-  },
-
-  extendControlListenerHandler : function( handler ) {
-    return rwt.util.Objects.mergeWith( handler, this._controlListenerHandler, false );
-  },
-
-  getBackgroundGradientHandler : function() {
-    return this._specialHandler.backgroundGradient;
-  },
-
-  getRoundedBorderHandler : function() {
-    return this._specialHandler.roundedBorder;
-  },
-
-  getControlPropertyHandler : function( property ) {
-    return this._controlPropertyHandler[ property ];
-  },
-
-  getControlListenerHandler : function( handler ) {
-    return this._controlListenerHandler[ handler ];
-  },
-
-  /////////////////////
-  // Helper for handler
-
-  addStatesForStyles : function( targetObject, styleArray ) {
-    for( var i = 0; i < styleArray.length; i++ ) {
-      targetObject.addState( "rwt_" + styleArray[ i ] );
-    }
-    targetObject._renderAppearance();
-    delete targetObject._isInGlobalStateQueue;
-  },
-
-  createStyleMap : function( styleArray ) {
-    var result = {};
-    for( var i = 0; i < styleArray.length; i++ ) {
-      result[ styleArray[ i ] ] = true;
-    }
-    return result;
-  },
-
-  setParent : function( widget, parentId ) {
-    var impl = this._setParentImplementation;
-    this.callWithTarget( parentId, function( parent ) {
-      impl( widget, parent );
-    } );
-  },
-
-  _setParentImplementation : function( widget, parent ) {
-    // TODO [rh] there seems to be a difference between add and setParent
-    //      when using add sizes and clipping are treated differently
-    // parent.add( widget );
-    if( parent instanceof rwt.widgets.ScrolledComposite ) {
-      // [if] do nothing, parent is set in ScrolledComposite#setContent which is called from the
-      // server-side - see bug 349161
-      widget.setUserData( "scrolledComposite", parent ); // Needed by "bounds" handler
-    } else if ( parent instanceof rwt.widgets.TabFolder ) {
-      widget.setUserData( "tabFolder", parent ); // Needed by "bounds" handler
-    } else if( parent instanceof rwt.widgets.ExpandBar ) {
-      parent.addWidget( widget );
-    } else {
-      widget.setParent( parent );
-    }
-    rwt.remote.HandlerUtil.addDestroyableChild( parent, widget );
-    widget.setUserData( "protocolParent", parent );
-  },
-
-  callWithTarget : function( id, fun ) {
-    if( id == null ) {
-      fun( null );
-    } else {
-      var target = rwt.remote.ObjectRegistry.getObject( id );
-      if( target ) {
-        fun( target );
-      } else {
-        rwt.remote.ObjectRegistry.addRegistrationCallback( id, fun );
-      }
-    }
-  },
-
-  filterUnregisteredObjects : function( list ) {
-    var ObjectRegistry = rwt.remote.ObjectRegistry;
-    var result = [];
-    for( var i = 0; i < list.length; i++ ) {
-      if( ObjectRegistry.getId( list[ i ] ) ) {
-        result.push( list[ i ] );
-      }
-    }
-    return result;
-  },
-
-  getShell : function( widget ) {
-    var result = widget;
-    while( result && !( result instanceof rwt.widgets.Shell ) ) {
-      result = result.getParent();
-    }
-    return result;
-  },
-
-  // TODO : Can we use "children" property in most cases instead??
-  addDestroyableChild : function( parent, child ) {
-    var list = parent.getUserData( "destroyableChildren" );
-    if( list == null ) {
-      list = {};
-      parent.setUserData( "destroyableChildren", list );
-    }
-    list[ rwt.qx.Object.toHashCode( child ) ] = child;
-  },
-
-  removeDestroyableChild : function( parent, child ) {
-    var list = parent.getUserData( "destroyableChildren" );
-    if( list != null ) {
-      delete list[ rwt.qx.Object.toHashCode( child ) ];
-    }
-  },
-
-  getDestroyableChildren : function( parent ) {
-    var list = parent.getUserData( "destroyableChildren" );
-    if( list == null ) {
-      list = {};
-    }
-    var result = [];
-    for( var key in list ) {
-      result.push( list[ key ] );
-    }
-    return result;
-  },
-
-  getServerData : function( target ) {
-    var result = target.getUserData( rwt.remote.HandlerUtil.SERVER_DATA );
-    if( result == null ) {
-      result = {};
-      target.setUserData( rwt.remote.HandlerUtil.SERVER_DATA, result );
-    }
-    return result;
-  }
-
-};
-
-/*******************************************************************************
- * Copyright (c) 2011, 2013 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-namespace( "rwt.util" );
-
-rwt.util.Encoding = {
-
-  _escapeRegExp : /(&|<|>|\")/g,
-  _escapeRegExpMnemonics : /(&&|&|<|>|")/g,
-  _newlineRegExp : /(\r\n|\n|\r)/g,
-  _outerWhitespaceRegExp : /(^ {1,1}| +$)/g,
-  _outerWhitespaceRegExp2 : /(^ {1,}| +$)/g,
-  _whitespaceRegExp : / {2,}/g,
-
-  _escapeResolver : null,
-  _escapeResolverMnemonics : null,
-  _mnemonicFound : false,
-
-  _escapeMap : {
-    "<" : "&lt;",
-    ">" : "&gt;",
-    "\"" : "&quot;",
-    "&&" : "&amp;",
-    "&" : "&amp;"
-  },
-
-  /**
-   * Replaces all occurrences of the characters <,>,&," with their corresponding HTML entities.
-   * When the parameter mnemonic is set to true, this method handles ampersand characters in the
-   * text as mnemonics in the same manner as SWT does.
-   * Note: In contrast to SWT, the characters following an ampersand are currently not underlined.
-   *
-   * @param text the input text
-   * @param mnemonics if true, the function removes the firest "&"
-   *                  if a numbner, underlines that character (other option will be removed)
-   *
-   * @return the resulting text
-   */
-  // Note [rst]: Single quotes are not escaped as the entity &apos; is not
-  //             defined in HTML 4. They should be handled by this method once
-  //             we produce XHTML output.
-  escapeText : function( text, mnemonics ) {
-    if( text === null ) {
-      throw new Error( "escapeText with parameter null not allowed" );
-    }
-    var result;
-    this._mnemonicFound = false; // first found mnemonic may be resolved
-    if( mnemonics === true ) {
-      result = text.replace( this._escapeRegExpMnemonics, this._getEscapeResolverMnemonics() );
-    } else {
-      if( typeof mnemonics === "number" ) {
-        result = this._escapeWithMnemonic( text, mnemonics );
-      } else {
-        result = text.replace( this._escapeRegExp, this._getEscapeResolver() );
-      }
-    }
-    return this.truncateAtZero( result );
-  },
-
-  truncateAtZero : function( text ) {
-    var result = text;
-    var index = result.indexOf( String.fromCharCode( 0 ) );
-    if( index !== -1 ) {
-      result = result.substring( 0, index );
-    }
-    return result;
-  },
-
-  /**
-   * Replaces all newline characters in the specified input string with the
-   * given replacement string. All common newline characters are replaced (Unix,
-   * Windows, and MacOS).
-   *
-   * @param input the string to process
-   * @param replacement the string to replace line feeds with.
-   * @return a copy of the input string with all newline characters replaced
-   */
-  replaceNewLines : function( text, optionalReplacement ) {
-    var replacement = arguments.length > 1 ? optionalReplacement : "\\n";
-    return text.replace( this._newlineRegExp, replacement );
-  },
-
-  /**
-   * Replaces white spaces in the specified input string with &nbsp;.
-   * For correct word wrapping, the last white space in a sequence of white
-   * spaces is not replaced, if there is a different character following.
-   * A single white space between words is not replaced whereas a single
-   * leading white space is replaced.
-   *
-   * @param input the string to process
-   * @return a copy of the input string with white spaces replaced
-   */
-  replaceWhiteSpaces : function( text ) {
-    var result = text.replace( this._outerWhitespaceRegExp, this._outerWhitespaceResolver );
-    result = result.replace( this._whitespaceRegExp, this._whitespaceResolver );
-    return result;
-  },
-
-  /**
-   * Escapes all leading and trailing spaces in the given input string.
-   *
-   * @param text input the string to process
-   * @return a copy of the input string with all leading and trailing spaces
-   * replaced
-   */
-  escapeLeadingTrailingSpaces : function( text ) {
-    return text.replace( this._outerWhitespaceRegExp2, this._outerWhitespaceResolver );
-  },
-
-
-  /**
-   * Escapes all chars that have a special meaning in regular expressions
-   *
-   * @type static
-   * @param str {String} the string where to escape the chars.
-   * @return {String} the string with the escaped chars.
-   */
-  escapeRegexpChars : function( str ) {
-    return str.replace( /([\\\.\(\)\[\]\{\}\^\$\?\+\*])/g, "\\$1" );
-  },
-
-
-  /**
-   * Unescapes a string containing entity escapes to a string
-   * containing the actual Unicode characters corresponding to the
-   * escapes. Supports HTML 4.0 entities.
-   *
-   * For example, the string "&amp;lt;Fran&amp;ccedil;ais&amp;gt;"
-   * will become "&lt;Fran&ccedil;ais&gt;"
-   *
-   * If an entity is unrecognized, it is left alone, and inserted
-   * verbatim into the result string. e.g. "&amp;gt;&amp;zzzz;x" will
-   * become "&gt;&amp;zzzz;x".
-   *
-   * @type static
-   * @param str {String} the String to unescape, may be null
-   * @return {var} a new unescaped String
-   * @see #escape
-   */
-  unescape : function( str ) {
-    return this._unescapeEntities( str, rwt.html.Entity.TO_CHARCODE );
-  },
-
-
-  /////////
-  // Helper
-
-  _escapeWithMnemonic : function( text, index ) {
-    var split = [
-      text.slice( 0, index ).replace( this._escapeRegExp, this._getEscapeResolver() ),
-      "<span style=\"text-decoration:underline\">",
-      text.charAt( index ).replace( this._escapeRegExp, this._getEscapeResolver() ),
-      "</span>",
-      text.slice( index + 1 ).replace( this._escapeRegExp, this._getEscapeResolver() )
-    ];
-    return split.join( "" );
-  },
-
-  _getEscapeResolverMnemonics : function() {
-    if( this._escapeResolverMnemonics ===  null ) {
-      this._getEscapeResolver(); // implicitly create default resolver
-      var EncodingUtil = this;
-      this._escapeResolverMnemonics = function( match ) {
-        var result;
-        if( match === "&" && !EncodingUtil._mnemonicFound ) {
-          result = "";
-          EncodingUtil._mnemonicFound = true;
-        } else {
-          result = EncodingUtil._escapeResolver( match );
-        }
-        return result;
-      };
-    }
-    return this._escapeResolverMnemonics;
-  },
-
-  _getEscapeResolver : function() {
-    if( this._escapeResolver === null ) {
-      var EncodingUtil = this;
-      this._escapeResolver = function( match ) {
-        return EncodingUtil._escapeMap[ match ];
-      };
-    }
-    return this._escapeResolver;
-  },
-
-  _outerWhitespaceResolver : function( match ) {
-    return match.replace( / /g, "&nbsp;" );
-  },
-
-  _whitespaceResolver : function( match ) {
-    return match.slice( 1 ).replace( / /g, "&nbsp;" ) + " ";
-  },
-
-  _unescapeEntities : function( str, entitiesToCharCode ) {
-    return str.replace( /&[#\w]+;/gi, function( entity ) {
-      var chr = entity;
-      var entity = entity.substring( 1, entity.length - 1 );
-      var code = entitiesToCharCode[ entity ];
-      if( code ) {
-        chr = String.fromCharCode( code );
-      } else {
-        if( entity.charAt( 0 ) === '#' ) {
-          if( entity.charAt(1).toUpperCase() === 'X' ) {
-            code = entity.substring( 2 );
-            // match hex number
-            if( code.match( /^[0-9A-Fa-f]+$/gi ) ) {
-              chr = String.fromCharCode( parseInt( code, 16 ) );
-            }
-          } else {
-            code = entity.substring( 1 );
-            // match integer
-            if( code.match( /^\d+$/gi ) ) {
-              chr = String.fromCharCode( parseInt( code, 10 ) );
-            }
-          }
-        }
-      }
-      return chr;
-    } );
-  }
-
-
-};
-
-/*******************************************************************************
- * Copyright (c) 2011, 2013 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-namespace( "rwt.widgets" );
-
-rwt.widgets.Display = function( properties ) {
-  this._document = rwt.widgets.base.ClientDocument.getInstance();
-  this._server = rwt.remote.Server.getInstance();
-  this._exitConfirmation = null;
-  this._hasResizeListener = false;
-  this._initialized = false;
-  if( rwt.widgets.Display._current !== undefined ) {
-    throw new Error( "Display can not be created twice" );
-  } else {
-    rwt.widgets.Display._current = this;
-  }
-};
-
-rwt.widgets.Display.getCurrent = function() {
-  return rwt.widgets.Display._current;
-};
-
-
-rwt.widgets.Display._onAppearFocus = function( evt ) {
-  var widget = this;
-  widget.focus();
-  widget.removeEventListener( "appear", rwt.widgets.Display._onAppearFocus, widget );
-};
-
-rwt.widgets.Display.prototype = {
-
-  applyObjectId : function() {
-    if( !this._initialized ) {
-      this.init();
-    }
-  },
-
-  init : function() {
-    this._server.getMessageWriter().appendHead( "rwt_initialize", true );
-    this._appendQueryString();
-    this._appendWindowSize();
-    this._appendSystemDPI();
-    this._appendColorDepth();
-    this._appendInitialHistoryEvent();
-    this._appendTimezoneOffset();
-    this._attachListener();
-    this._server.send();
-    this._initialized = true;
-  },
-
-  allowEvent : function() {
-    // NOTE : in the future might need a parameter if there are multiple types of cancelable events
-    rwt.remote.KeyEventSupport.getInstance().allowEvent();
-  },
-
-  cancelEvent : function() {
-    rwt.remote.KeyEventSupport.getInstance().cancelEvent();
-  },
-
-  beep : function() {
-    // do nothing for now, used by native clients
-  },
-
-  /**
-   * An exit confirmation dialog will be displayed if the given message is not
-   * null. If the message is empty, the dialog will be displayed but without a
-   * message.
-   */
-  setExitConfirmation : function( message ) {
-    this._exitConfirmation = message;
-  },
-
-  setFocusControl : function( widgetId ) {
-    var widget = rwt.remote.ObjectRegistry.getObject( widgetId );
-    if( widget.isSeeable() ) {
-      widget.focus();
-    } else {
-      widget.addEventListener( "appear", rwt.widgets.Display._onAppearFocus, widget );
-    }
-  },
-
-  setMnemonicActivator : function( value ) {
-    rwt.widgets.util.MnemonicHandler.getInstance().setActivator( value );
-  },
-
-  setEnableUiTests : function( value ) {
-    rwt.widgets.base.Widget._renderHtmlIds = value;
-  },
-
-  getDPI : function() {
-    var result = [ 0, 0 ];
-    if( typeof screen.systemXDPI == "number" ) {
-      result[ 0 ] = parseInt( screen.systemXDPI, 10 );
-      result[ 1 ] = parseInt( screen.systemYDPI, 10 );
-    } else {
-      var testElement = document.createElement( "div" );
-      testElement.style.width = "1in";
-      testElement.style.height = "1in";
-      testElement.style.padding = 0;
-      document.body.appendChild( testElement );
-      result[ 0 ] = parseInt( testElement.offsetWidth, 10 );
-      result[ 1 ] = parseInt( testElement.offsetHeight, 10 );
-      document.body.removeChild( testElement );
-    }
-    return result;
-  },
-
-  setHasResizeListener : function( value ) {
-    this._hasResizeListener = value;
-  },
-
-  ////////////////////////
-  // Global Event handling
-
-  _attachListener : function() {
-    this._document.addEventListener( "windowresize", this._onResize, this );
-    this._document.addEventListener( "keypress", this._onKeyPress, this );
-    this._server.addEventListener( "send", this._onSend, this );
-    rwt.remote.KeyEventSupport.getInstance(); // adds global KeyListener
-    rwt.runtime.System.getInstance().addEventListener( "beforeunload", this._onBeforeUnload, this );
-    rwt.runtime.System.getInstance().addEventListener( "unload", this._onUnload, this );
-  },
-
-  _onResize : function( evt ) {
-    this._appendWindowSize();
-    if( this._hasResizeListener ) {
-      rwt.remote.Server.getInstance().getRemoteObject( this ).notify( "Resize" );
-    }
-  },
-
-  _onKeyPress : function( evt ) {
-    if( evt.getKeyIdentifier() == "Escape" ) {
-      evt.preventDefault();
-    }
-  },
-
-  _onSend : function( evt ) {
-    // TODO [tb] : This will attach the cursorLocation as the last operation, but should be first
-    var pageX = rwt.event.MouseEvent.getPageX();
-    var pageY = rwt.event.MouseEvent.getPageY();
-    var location = [ Math.round( pageX ), Math.round( pageY ) ];
-    rwt.remote.Server.getInstance().getRemoteObject( this ).set( "cursorLocation", location );
-  },
-
-  _onBeforeUnload : function( event ) {
-    if( this._exitConfirmation !== null && this._exitConfirmation !== "" ) {
-      event.getDomEvent().returnValue = this._exitConfirmation;
-      event.setUserData( "returnValue", this._exitConfirmation );
-    }
-  },
-
-  _onUnload : function() {
-    this._document.removeEventListener( "windowresize", this._onResize, this );
-    this._document.removeEventListener( "keypress", this._onKeyPress, this );
-    this._server.removeEventListener( "send", this._onSend, this );
-    this._sendShutdown();
-  },
-
-  ///////////////////
-  // client to server
-
-  _sendShutdown : function() {
-    var server = rwt.remote.Server.getInstance();
-    server.getMessageWriter().appendHead( "rwt_shutdown", true );
-    server.sendImmediate( false );
-  },
-
-  _appendWindowSize : function() {
-    var width = rwt.html.Window.getInnerWidth( window );
-    var height = rwt.html.Window.getInnerHeight( window );
-    var bounds = [ 0, 0, width, height ];
-    rwt.remote.Server.getInstance().getRemoteObject( this ).set( "bounds", bounds );
-  },
-
-  _appendSystemDPI : function() {
-    var dpi = this.getDPI();
-    rwt.remote.Server.getInstance().getRemoteObject( this ).set( "dpi", dpi );
-  },
-
-  _appendColorDepth : function() {
-    var depth = 16;
-    if( typeof screen.colorDepth == "number" ) {
-      depth = parseInt( screen.colorDepth, 10 );
-    }
-    if( rwt.client.Client.isGecko() ) {
-      // Firefox detects 24bit and 32bit as 24bit, but 32bit is more likely
-      depth = depth == 24 ? 32 : depth;
-    }
-    rwt.remote.Server.getInstance().getRemoteObject( this ).set( "colorDepth", depth );
-  },
-
-  _appendInitialHistoryEvent : function() {
-    var state = window.location.hash;
-    if( state !== "" ) {
-      var type = "rwt.client.BrowserNavigation";
-      var history = rwt.client.BrowserNavigation.getInstance();
-      var handler = rwt.remote.HandlerRegistry.getHandler( type );
-      // TODO: Temporary workaround for 388835
-      rwt.remote.ObjectRegistry.add( type, history, handler );
-      rwt.remote.Server.getInstance().getRemoteObject( history ).notify( "Navigation", {
-        "state" : decodeURIComponent( state.substr( 1 ) )
-      } );
-    }
-  },
-
-  _appendTimezoneOffset : function() {
-    // NOTE : using ObjectRegistry implicitly registers the ClientInfo service
-    var clientObject = rwt.remote.ObjectRegistry.getObject( "rwt.client.ClientInfo" );
-    var remoteObject = rwt.remote.Server.getInstance().getRemoteObject( clientObject );
-    remoteObject.set( "timezoneOffset", clientObject.getTimezoneOffset() );
-  },
-
-  _appendQueryString : function() {
-    var queryString = window.location.search;
-    if( queryString !== "" ) {
-      this._server.getMessageWriter().appendHead( "queryString", queryString.substr( 1 ) );
-    }
-  }
-
-};
-
-/*******************************************************************************
- * Copyright (c) 2011, 2013 EclipseSource 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:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-
-rwt.remote.HandlerRegistry.add( "rwt.widgets.Display", {
-
-  factory : function( properties ) {
-    return new rwt.widgets.Display( properties );
-  },
-
-  destructor : null, // destroy is currently not called for display
-
-  properties : [
-    "exitConfirmation",
-    "mnemonicActivator",
-    "focusControl",
-    "enableUiTests",
-    "activeKeys",
-    "cancelKeys"
-  ],
-
-  methods : [
-    "allowEvent",
-    "cancelEvent",
-    "beep"
-  ],
-
-  propertyHandler : {
-    "activeKeys" : function( object, value ) {
-      var map = rwt.util.Objects.fromArray( value );
-      rwt.remote.KeyEventSupport.getInstance().setKeyBindings( map );
-    },
-    "cancelKeys" : function( object, value ) {
-      var map = rwt.util.Objects.fromArray( value );
-      rwt.remote.KeyEventSupport.getInstance().setCancelKeys( map );
-    }
-  },
-
-  listeners : [ "KeyDown", "Resize" ]
-
-} );
-
-/*******************************************************************************
- * Copyright: 2004, 2013 1&1 Internet AG, Germany, http://www.1und1.de,
- *                       and EclipseSource
- *
- * 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:
- *    1&1 Internet AG and others - original API and implementation
- *    EclipseSource - adaptation for the Eclipse Remote Application Platform
- ******************************************************************************/
-
-/**
- * This is the main widget, all visible objects in the application extend this.
- *
- * @appearance widget
- * @state selected Set by {@link rwt.widgets.util.SelectionManager#renderItemSelectionState}
- * @state anchor Set by {@link rwt.widgets.util.SelectionManager#renderItemAnchorState}
- * @state lead Set by {@link rwt.widgets.util.SelectionManager#renderItemLeadState}
- *
- * @state disabled Set by {@link rwt.qx.Object#enabled}
- * @state focused Set by {@link #focused}
- */
-rwt.qx.Class.define( "rwt.widgets.base.Widget", {
-  extend : rwt.qx.Target,
-  type : "abstract",
-
-  construct : function() {
-    this.base( arguments );
-    this._layoutChanges = {};
-    this._outerFrame = [ 0, 0 ];
-    this.initHideFocus();
-  },
-
-  events: {
-    "beforeAppear"    : "rwt.event.Event",
-    "appear"          : "rwt.event.Event",
-    "beforeDisappear" : "rwt.event.Event",
-    "disappear"       : "rwt.event.Event",
-    "insertDom"       : "rwt.event.Event",
-    "create"          : "rwt.event.Event",
-    "execute"         : "rwt.event.Event",
-    "flush"           : "rwt.event.DataEvent",
-
-    /** (Fired by {@link rwt.event.EventHandler}) */
-    "mouseover"       : "rwt.event.MouseEvent",
-    "mousemove"       : "rwt.event.MouseEvent",
-    "mouseout"        : "rwt.event.MouseEvent",
-    "mousedown"       : "rwt.event.MouseEvent",
-    "mouseup"         : "rwt.event.MouseEvent",
-    "mousewheel"      : "rwt.event.MouseEvent",
-    "click"           : "rwt.event.MouseEvent",
-    "dblclick"        : "rwt.event.MouseEvent",
-    "contextmenu"     : "rwt.event.MouseEvent",
-    "elementOver"     : "rwt.event.MouseEvent",
-    "elementOut"      : "rwt.event.MouseEvent",
-    "keydown"         : "rwt.event.KeyEvent",
-    "keypress"        : "rwt.event.KeyEvent",
-    "keyup"           : "rwt.event.KeyEvent",
-
-    /** (Fired by {@link rwt.widgets.base.Parent}) */
-    "focusout"        : "rwt.event.FocusEvent",
-    "focusin"         : "rwt.event.FocusEvent",
-    "blur"            : "rwt.event.FocusEvent",
-    "focus"           : "rwt.event.FocusEvent",
-
-    /** (Fired by {@link rwt.event.DragAndDropHandler}) */
-    "dragdrop"        : "rwt.event.DragEvent",
-    "dragout"         : "rwt.event.DragEvent",
-    "dragover"        : "rwt.event.DragEvent",
-    "dragmove"        : "rwt.event.DragEvent",
-    "dragstart"       : "rwt.event.DragEvent",
-    "dragend"         : "rwt.event.DragEvent"
-  },
-
-  statics : {
-
-    //////////////////////
-    // Global Widget Flush
-
-    _globalWidgetQueue : [],
-    _globalElementQueue : [],
-    _globalStateQueue : [],
-    _globalJobQueue : [],
-    _globalLayoutQueue : [],
-    _fastGlobalDisplayQueue : [],
-    _lazyGlobalDisplayQueues : {},
-    _globalDisposeQueue : [],
-
-    _autoFlushTimeout : null,
-    _flushGlobalQueuesPhase : 0,
-    _renderHtmlIds : false,
-
-    _FLUSH_PHASE_IDLE : 0,
-    _FLUSH_PHASE_WIDGET : 1,
-    _FLUSH_PHASE_STATE : 2,
-    _FLUSH_PHASE_ELEMENT : 3,
-    _FLUSH_PHASE_JOB : 4,
-    _FLUSH_PHASE_LAYOUT : 5,
-    _FLUSH_PHASE_DISPLAY : 6,
-    _FLUSH_PHASE_DISPOSE : 7,
-
-    _initAutoFlush : function( phase ) {
-      if( rwt.widgets.base.Widget._autoFlushTimeout == null ) {
-        // RAP: Fix for bug 303162
-        if(    !rwt.widgets.base.Widget._inFlushGlobalQueues
-            || phase < rwt.widgets.base.Widget._flushGlobalQueuesPhase ) {
-          rwt.widgets.base.Widget._autoFlushTimeout
-            = window.setTimeout( rwt.widgets.base.Widget._autoFlushHelper, 0 );
-        }
-      }
-    },
-
-    _removeAutoFlush : function() {
-      if( rwt.widgets.base.Widget._autoFlushTimeout != null ) {
-        window.clearTimeout( rwt.widgets.base.Widget._autoFlushTimeout );
-        rwt.widgets.base.Widget._autoFlushTimeout = null;
-      }
-    },
-
-    _autoFlushHelper : function() {
-      try {
-        rwt.widgets.base.Widget._autoFlushTimeout = null;
-        if( !rwt.qx.Object.inGlobalDispose() ) {
-          rwt.widgets.base.Widget.flushGlobalQueues();
-        }
-      }catch( ex ) {
-        rwt.runtime.ErrorHandler.processJavaScriptError( ex );
-      }
-    },
-
-    flushGlobalQueues : function() {
-      if( rwt.widgets.base.Widget._autoFlushTimeout != null ) {
-        rwt.widgets.base.Widget._removeAutoFlush();
-      }
-      if( rwt.widgets.base.Widget._inFlushGlobalQueues ) {
-        return;
-      }
-      if( !rwt.runtime.System.getInstance().getUiReady() ) {
-        return;
-      }
-      rwt.widgets.base.Widget._inFlushGlobalQueues = true;
-      rwt.widgets.base.Widget.flushGlobalWidgetQueue();
-      rwt.widgets.base.Widget.flushGlobalStateQueue();
-      rwt.widgets.base.Widget.flushGlobalElementQueue();
-      rwt.widgets.base.Widget.flushGlobalJobQueue();
-      rwt.widgets.base.Widget.flushGlobalLayoutQueue();
-      rwt.widgets.base.Widget.flushGlobalDisplayQueue();
-      rwt.widgets.base.Widget.flushGlobalDisposeQueue();
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase = rwt.widgets.base.Widget._FLUSH_PHASE_IDLE;
-      delete rwt.widgets.base.Widget._inFlushGlobalQueues;
-    },
-
-    addToGlobalWidgetQueue : function(vWidget) {
-      if (!vWidget._isInGlobalWidgetQueue && vWidget._isDisplayable) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_WIDGET );
-        }
-        rwt.widgets.base.Widget._globalWidgetQueue.push(vWidget);
-        vWidget._isInGlobalWidgetQueue = true;
-      }
-    },
-
-    removeFromGlobalWidgetQueue : function(vWidget) {
-      if (vWidget._isInGlobalWidgetQueue) {
-        rwt.util.Arrays.remove(rwt.widgets.base.Widget._globalWidgetQueue, vWidget);
-        delete vWidget._isInGlobalWidgetQueue;
-      }
-    },
-
-    flushGlobalWidgetQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase = rwt.widgets.base.Widget._FLUSH_PHASE_WIDGET;
-      var vQueue = rwt.widgets.base.Widget._globalWidgetQueue, vLength, vWidget;
-      while ((vLength = vQueue.length) > 0) {
-        for (var i=0; i<vLength; i++) {
-          vWidget = vQueue[i];
-          vWidget.flushWidgetQueue();
-          delete vWidget._isInGlobalWidgetQueue;
-        }
-        vQueue.splice(0, vLength);
-      }
-      rwt.widgets.base.Widget._globalWidgetQueue = [];
-    },
-
-    addToGlobalElementQueue : function(vWidget) {
-      if (!vWidget._isInGlobalElementQueue && vWidget._isDisplayable) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_ELEMENT );
-        }
-        rwt.widgets.base.Widget._globalElementQueue.push(vWidget);
-        vWidget._isInGlobalElementQueue = true;
-      }
-    },
-
-    removeFromGlobalElementQueue : function(vWidget) {
-      if (vWidget._isInGlobalElementQueue) {
-        rwt.util.Arrays.remove(rwt.widgets.base.Widget._globalElementQueue, vWidget);
-        delete vWidget._isInGlobalElementQueue;
-      }
-    },
-
-    flushGlobalElementQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase = rwt.widgets.base.Widget._FLUSH_PHASE_ELEMENT;
-      var vQueue = rwt.widgets.base.Widget._globalElementQueue, vLength, vWidget;
-      while ((vLength = vQueue.length) > 0) {
-        for (var i=0; i<vLength; i++) {
-          vWidget = vQueue[i];
-          vWidget._createElementImpl();
-          delete vWidget._isInGlobalElementQueue;
-        }
-        vQueue.splice(0, vLength);
-      }
-      rwt.widgets.base.Widget._globalElementQueue = [];
-    },
-
-    addToGlobalStateQueue : function(vWidget) {
-      if (!vWidget._isInGlobalStateQueue && vWidget._isDisplayable) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_STATE );
-        }
-        rwt.widgets.base.Widget._globalStateQueue.push(vWidget);
-        vWidget._isInGlobalStateQueue = true;
-      }
-    },
-
-    removeFromGlobalStateQueue : function(vWidget) {
-      if (vWidget._isInGlobalStateQueue) {
-        rwt.util.Arrays.remove(rwt.widgets.base.Widget._globalStateQueue, vWidget);
-        delete vWidget._isInGlobalStateQueue;
-      }
-    },
-
-    flushGlobalStateQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase = rwt.widgets.base.Widget._FLUSH_PHASE_STATE;
-      var Widget = rwt.widgets.base.Widget;
-      // the queue may change while doing the flush so we work on a copy of
-      // the queue and loop while the queue has any entries.
-      while(Widget._globalStateQueue.length > 0) {
-        var queue = rwt.util.Arrays.copy(Widget._globalStateQueue);
-        Widget._globalStateQueue = [];
-        for (var i=0, l=queue.length; i<l; i++) {
-          var widget = queue[i];
-          if (widget._isInGlobalStateQueue) {
-            widget._renderAppearance();
-            delete widget._isInGlobalStateQueue;
-          }
-        }
-      }
-    },
-
-    addToGlobalJobQueue : function(vWidget) {
-      if (!vWidget._isInGlobalJobQueue && vWidget._isDisplayable) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_JOB );
-        }
-        rwt.widgets.base.Widget._globalJobQueue.push(vWidget);
-        vWidget._isInGlobalJobQueue = true;
-      }
-    },
-
-    removeFromGlobalJobQueue : function(vWidget) {
-      if (vWidget._isInGlobalJobQueue) {
-        rwt.util.Arrays.remove(rwt.widgets.base.Widget._globalJobQueue, vWidget);
-        delete vWidget._isInGlobalJobQueue;
-      }
-    },
-
-    flushGlobalJobQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase
-        = rwt.widgets.base.Widget._FLUSH_PHASE_JOB;
-      var vQueue = rwt.widgets.base.Widget._globalJobQueue, vLength, vWidget;
-      while ((vLength = vQueue.length) > 0) {
-        for (var i=0; i<vLength; i++) {
-          vWidget = vQueue[i];
-          vWidget._flushJobQueue(vWidget._jobQueue);
-          delete vWidget._isInGlobalJobQueue;
-        }
-        vQueue.splice(0, vLength);
-      }
-      rwt.widgets.base.Widget._globalJobQueue = [];
-    },
-
-    addToGlobalLayoutQueue : function(vParent) {
-      if (!vParent._isInGlobalLayoutQueue && vParent._isDisplayable) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_LAYOUT );
-        }
-        rwt.widgets.base.Widget._globalLayoutQueue.push(vParent);
-        vParent._isInGlobalLayoutQueue = true;
-      }
-    },
-
-    removeFromGlobalLayoutQueue : function(vParent) {
-      if (vParent._isInGlobalLayoutQueue) {
-        rwt.util.Arrays.remove(rwt.widgets.base.Widget._globalLayoutQueue, vParent);
-        delete vParent._isInGlobalLayoutQueue;
-      }
-    },
-
-    flushGlobalLayoutQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase = rwt.widgets.base.Widget._FLUSH_PHASE_LAYOUT;
-      var vQueue = rwt.widgets.base.Widget._globalLayoutQueue, vLength, vParent;
-      while ((vLength = vQueue.length) > 0) {
-        for (var i=0; i<vLength; i++) {
-          vParent = vQueue[i];
-          vParent._flushChildrenQueue();
-          delete vParent._isInGlobalLayoutQueue;
-        }
-        vQueue.splice(0, vLength);
-      }
-      rwt.widgets.base.Widget._globalLayoutQueue = [];
-    },
-
-    addToGlobalDisplayQueue : function(vWidget) {
-      if (!vWidget._isInGlobalDisplayQueue && vWidget._isDisplayable) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_DISPLAY );
-        }
-        var vParent = vWidget.getParent();
-        if (vParent.isSeeable()) {
-          var vKey = vParent.toHashCode();
-          if (rwt.widgets.base.Widget._lazyGlobalDisplayQueues[vKey]) {
-            rwt.widgets.base.Widget._lazyGlobalDisplayQueues[vKey].push(vWidget);
-          } else {
-            rwt.widgets.base.Widget._lazyGlobalDisplayQueues[vKey] = [ vWidget ];
-          }
-        } else {
-          rwt.widgets.base.Widget._fastGlobalDisplayQueue.push(vWidget);
-        }
-        vWidget._isInGlobalDisplayQueue = true;
-      }
-    },
-
-    removeFromGlobalDisplayQueue : function(vWidget) {},
-
-    flushGlobalDisplayQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase = rwt.widgets.base.Widget._FLUSH_PHASE_DISPLAY;
-      var vKey, vLazyQueue, vWidget, vFragment;
-      var vFastQueue = rwt.widgets.base.Widget._fastGlobalDisplayQueue;
-      var vLazyQueues = rwt.widgets.base.Widget._lazyGlobalDisplayQueues;
-      // Work on fast queue
-      for (var i=0, l=vFastQueue.length; i<l; i++) {
-        vWidget = vFastQueue[i];
-        vWidget.getParent()._getTargetNode().appendChild(vWidget.getElement());
-      }
-      // Work on lazy queues: Other widgets
-      for (vKey in vLazyQueues) {
-        vLazyQueue = vLazyQueues[vKey];
-        // Speed enhancement: Choose a fairly small arbitrary value for the number
-        // of elements that should be added to the parent individually.  If more
-        // than this number of elements is to be added to the parent, we'll create
-        // a document fragment, add the elements to the document fragment, and
-        // then add the whole fragment to the parent en mass (assuming that
-        // creation of a document fragment is supported by the browser).
-        if (document.createDocumentFragment && vLazyQueue.length >= 3) {
-          // creating new document fragment
-          vFragment = document.createDocumentFragment();
-          // appending all widget elements to fragment
-          for (var i=0, l=vLazyQueue.length; i<l; i++) {
-            vWidget = vLazyQueue[i];
-            vFragment.appendChild(vWidget.getElement());
-          }
-          // append all fragment data at once to
-          // the already visible parent widget element
-          vLazyQueue[0].getParent()._getTargetNode().appendChild(vFragment);
-          for (var i=0, l=vLazyQueue.length; i<l; i++) {
-            vWidget = vLazyQueue[i];
-            vWidget._afterInsertDom();
-          }
-        } else {
-          // appending all widget elements (including previously added children)
-          // to the already visible parent widget element
-          for (var i=0, l=vLazyQueue.length; i<l; i++)
-          {
-            vWidget = vLazyQueue[i];
-            vWidget.getParent()._getTargetNode().appendChild(vWidget.getElement());
-            vWidget._afterInsertDom();
-          }
-        }
-      }
-      // Only need to do this with the lazy queues
-      // because through the recursion from rwt.widgets.base.Parent
-      // all others get also informed.
-      for (vKey in vLazyQueues) { vLazyQueue = vLazyQueues[vKey];
-        for (var i=0, l=vLazyQueue.length; i<l; i++) {
-          vWidget = vLazyQueue[i];
-          if (vWidget.getVisibility()) {
-            vWidget._afterAppear();
-          }
-          // Reset display queue flag
-          delete vWidget._isInGlobalDisplayQueue;
-        }
-        delete vLazyQueues[vKey];
-      }
-      // reset queue if it is empty. This frees some browser memory
-      if (rwt.util.Objects.isEmpty(vLazyQueues)) {
-        rwt.widgets.base.Widget._lazyGlobalDisplayQueues = {};
-      }
-      // Reset display queue flag for widgets in fastQueue
-      for (var i=0, l=vFastQueue.length; i<l; i++) {
-        delete vFastQueue[i]._isInGlobalDisplayQueue;
-      }
-      // Remove fast queue entries
-      rwt.widgets.base.Widget._fastGlobalDisplayQueue = [];
-    },
-
-    addToGlobalDisposeQueue : function(vWidget) {
-      if (!vWidget._isInGlobalDisposeQueue && !vWidget.isDisposed()) {
-        if (rwt.widgets.base.Widget._autoFlushTimeout == null) {
-          rwt.widgets.base.Widget._initAutoFlush( rwt.widgets.base.Widget._FLUSH_PHASE_DISPOSE );
-        }
-        rwt.widgets.base.Widget._globalDisposeQueue.push(vWidget);
-        vWidget._markInDispose();
-      }
-    },
-
-    flushGlobalDisposeQueue : function() {
-      rwt.widgets.base.Widget._flushGlobalQueuesPhase
-        = rwt.widgets.base.Widget._FLUSH_PHASE_DISPOSE;
-      var vQueue = rwt.widgets.base.Widget._globalDisposeQueue, vLength, vWidget;
-      while ((vLength = vQueue.length) > 0) {
-        for (var i=0; i<vLength; i++) {
-          vWidget = vQueue[i];
-          vWidget.dispose();
-          delete vWidget._isInGlobalDisposeQueue;
-        }
-        vQueue.splice(0, vLength);
-      }
-      rwt.widgets.base.Widget._globalDisposeQueue = [];
-    },
-
-    /////////////////
-    // Global Helpers
-
-    getActiveSiblingHelperIgnore : function(vIgnoreClasses, vInstance) {
-      for (var j=0; j<vIgnoreClasses.length; j++) {
-        if (vInstance instanceof vIgnoreClasses[j]) {
-          return true;
-        }
-      }
-      return false;
-    },
-
-    getActiveSiblingHelper : function(vObject, vParent, vCalc, vIgnoreClasses, vMode) {
-      if (!vIgnoreClasses) {
-        vIgnoreClasses = [];
-      }
-      var vChilds = vParent.getChildren();
-      var vPosition = vMode == null ? vChilds.indexOf(vObject) + vCalc : vMode === "first" ? 0 : vChilds.length - 1;
-      var vInstance = vChilds[vPosition];
-      while (vInstance && (!vInstance.getEnabled() || rwt.widgets.base.Widget.getActiveSiblingHelperIgnore(vIgnoreClasses, vInstance))) {
-        vPosition += vCalc;
-        vInstance = vChilds[vPosition];
-        if (!vInstance) {
-          return null;
-        }
-      }
-      return vInstance;
-    },
-
-    ///////////////////////
-    //  APPLY LAYOUT STYLES
-
-    TYPE_NULL : 0,
-    TYPE_PIXEL : 1,
-    TYPE_PERCENT : 2,
-    TYPE_AUTO : 3,
-    TYPE_FLEX : 4,
-
-    __initApplyMethods : function(members) {
-      var applyRuntime = "_renderRuntime";
-      var resetRuntime = "_resetRuntime";
-      var style = "this._style.";
-      var cssValue = "=((v==null)?0:v)+'px'";
-      var parameter = "v";
-      var properties = [
-        "left",
-        "right",
-        "top",
-        "bottom",
-        "width",
-        "height",
-        "minWidth",
-        "maxWidth",
-        "minHeight",
-        "maxHeight"
-      ];
-      var propertiesUpper = [
-        "Left",
-        "Right",
-        "Top",
-        "Bottom",
-        "Width",
-        "Height",
-        "MinWidth",
-        "MaxWidth",
-        "MinHeight",
-        "MaxHeight"
-      ];
-      var applyMargin = applyRuntime + "Margin";
-      var resetMargin = resetRuntime + "Margin";
-      var styleMargin = style + "margin";
-      for (var i=0; i<4; i++) {
-        members[applyMargin + propertiesUpper[i]]
-          = new Function(parameter, styleMargin + propertiesUpper[i] + cssValue);
-        members[resetMargin + propertiesUpper[i]]
-          = new Function(styleMargin + propertiesUpper[i] + "=''");
-      }
-      var applyPadding = applyRuntime + "Padding";
-      var resetPadding = resetRuntime + "Padding";
-      var stylePadding = style + "padding";
-      // need to use setStyleProperty to keep compatibility with enhanced cross browser borders
-      for (var i=0; i<4; i++) {
-        members[applyPadding + propertiesUpper[i]]
-          = new Function(parameter, "this.setStyleProperty('padding" + propertiesUpper[i] + "', ((v==null)?0:v)+'px')");
-        members[resetPadding + propertiesUpper[i]]
-          = new Function("this.removeStyleProperty('padding" + propertiesUpper[i] + "')");
-      }
-
-      /*
-        Use optimized method for internet explorer
-        to omit string concat and directly setup
-        the new layout property.
-         We could not use this to reset the value however.
-        It seems that is just doesn't work this way. And the
-        left/top always get priority. Tried: "", null, "auto".
-        Nothing helps.
-         Now I've switched back to the conventional method
-        to reset the value. This seems to work again.
-      */
-      for (var i=0; i<properties.length; i++) {
-        members[applyRuntime + propertiesUpper[i]]
-          = new Function(parameter, style + properties[i] + cssValue);
-        members[resetRuntime + propertiesUpper[i]] = new Function(style + properties[i] + "=''");
-      }
-    },
-
-    ///////////////////////////////////////
-    //  LAYOUT TYPE AND VALUE KEY PRE-CACHE
-
-    layoutPropertyTypes : {},
-
-    __initLayoutProperties : function(statics) {
-      var a = [
-        "width",
-        "height",
-        "minWidth",
-        "maxWidth",
-        "minHeight",
-        "maxHeight",
-        "left",
-        "right",
-        "top",
-        "bottom"
-      ];
-      for (var i=0, l=a.length, p, b, t; i<l; i++) {
-        p = a[i];
-        b = "_computed" + rwt.util.Strings.toFirstUp(p);
-        t = b + "Type";
-        statics.layoutPropertyTypes[p] = {
-          dataType    : t,
-          dataParsed  : b + "Parsed",
-          dataValue   : b + "Value",
-          typePixel   : t + "Pixel",
-          typePercent : t + "Percent",
-          typeAuto    : t + "Auto",
-          typeFlex    : t + "Flex",
-          typeNull    : t + "Null"
-        };
-      }
-    },
-
-    //////////////////
-    //  SCROLL-BLOCKER
-
-    disableScrolling : function( widget ) {
-      var el = widget._getTargetNode();
-      if( el ) {
-        rwt.html.Scroll.disableScrolling(el);
-      } else {
-        widget.addEventListener( "appear", this._blockScrollingOnAppear, widget );
-      }
-    },
-
-    enableScrolling : function( widget ) {
-      var el = widget._getTargetNode();
-      if( el ) {
-        rwt.html.Scroll.enableScrolling( el );
-      } else {
-        widget.removeEventListener( "appear", this._blockScrollingOnAppear, widget );
-      }
-    },
-
-    _blockScrollingOnAppear : function() {
-      var func = rwt.widgets.base.Widget._blockScrollingOnAppear;
-      this.removeEventListener( "appear", func, this );
-      rwt.widgets.base.Widget.disableScrolling( this );
-    }
-
-  },
-
-  properties : {
-    enabled : {
-      init : "inherit",
-      check : "Boolean",
-      inheritable : true,
-      apply : "_applyEnabled",
-      event : "changeEnabled"
-    },
-
-    /** The parent widget (the real object, no ID or something) */
-    parent : {
-      check : "rwt.widgets.base.Parent",
-      nullable : true,
-      event : "changeParent",
-      apply : "_applyParent"
-    },
-
-    /** The element node (if the widget is created, otherwise null) */
-    element : {
-      check : "Element",
-      nullable : true,
-      apply : "_applyElement",
-      event : "changeElement"
-    },
-
-    /**
-     * Toggle the visibility of a widget.
-     * Setting this property to false will hide the widget but will not remove
-     * it from the layout flow, so other widgets will not be repositioned. This
-     * is similar to the CSS property <code>visibility</code>.
-     **/
-    visibility : {
-      check : "Boolean",
-      init : true,
-      apply : "_applyVisibility",
-      event : "changeVisibility"
-    },
-
-    /**
-     * Whether the widget should be displayed.
-     * Use this property instead of visibility if the change of the visibility
-     * should remove the widget from the layout flow and force a relayout of the
-     * application. This is similar to the CSS property <code>display</code>.
-     */
-    display : {
-      check : "Boolean",
-      init : true,
-      apply : "_applyDisplay",
-      event : "changeDisplay"
-    },
-
-    /**
-     * If you switch this to true, the widget doesn't handle
-     *  events directly. It will redirect them to the parent
-     *  widget.
-     */
-    anonymous : {
-      check : "Boolean",
-      init: false,
-      event : "changeAnonymous"
-    },
-
-    /**
-     * This is used by many layout managers to control the individual horizontal alignment of this widget inside this parent.
-     *
-     *  This should be used with caution since in some cases
-     *  this might give unrespected results.
-     */
-    horizontalAlign : {
-      check : [ "left", "center", "right" ],
-      themeable : true,
-      nullable : true
-    },
-
-    /**
-     * This is used by many layout managers to control the individual vertical alignment of this widget inside this parent.
-     *
-     *  This should be used with caution since in some cases
-     *  this might give unrespected results.
-     */
-    verticalAlign :  {
-      check : [ "top", "middle", "bottom" ],
-      themeable : true,
-      nullable : true
-    },
-
-    /**
-     * Should this widget be stretched on the x-axis if the layout handler will do this?
-     *  Used by some layout handlers (rwt.widgets.base.BoxLayout, ...).
-     */
-    allowStretchX : {
-      check : "Boolean",
-      init : true
-    },
-
-    /**
-     * Should this widget be stretched on the y-axis if the layout handler will do this?
-     *  Used by some layout handlers (rwt.widgets.base.BoxLayout, ...).
-     */
-    allowStretchY : {
-      check : "Boolean",
-      init : true
-    },
-
-    /**
-     * Mapping to native style property z-index.
-     *
-     *  This should be used with caution since in some cases
-     *  this might give unrespected results.
-     */
-    zIndex : {
-      check : "Number",
-      apply : "_applyZIndex",
-      event : "changeZIndex",
-      themeable : true,
-      nullable : true,
-      init : null
-    },
-
-    /**
-     * The backgroundColor style property of the rendered widget.
-     */
-    backgroundColor : {
-      nullable : true,
-      init : null,
-      check : "Color",
-      apply : "_applyBackgroundColor",
-      event : "changeBackgroundColor",
-      themeable : true
-    },
-
-    backgroundGradient : {
-      check : "Array",
-      nullable : true,
-      init : null,
-      apply : "_applyBackgroundGradient",
-      event : "changeBackgroundGradient",
-      themeable : true
-    },
-
-    /**
-     * Syntax for shadow:
-     * [
-     *    inset, //boolean, currently not supported
-     *    offsetX, // positive or negative number
-     *    offsetY, // positive or negative number
-     *    blurRadius, // positive number or zero
-     *    spread, // positive or negative number
-     *    color, // string
-     *    opacity, // number between 0 and 1
-     * ]
-     */
-    shadow : {
-      check : "Array",
-      nullable : true,
-      init : null,
-      apply : "_applyShadow",
-      event : "changeShadow",
-      themeable : true
-    },
-
-    textShadow : {
-      check : "Array",
-      nullable : true,
-      init : null,
-      apply : "_applyTextShadow",
-      event : "changeTextShadow",
-      themeable : true
-   },
-
-    /**
-     * The color (textColor) style property of the rendered widget.
-     */
-    textColor : {
-      nullable : true,
-      init : "inherit",
-      check : "Color",
-      apply : "_applyTextColor",
-      event : "changeTextColor",
-      themeable : true,
-      inheritable : true
-    },
-
-    /**
-     * The border property describes how to paint the border on the widget.
-     */
-    border : {
-      nullable : true,
-      init : null,
-      apply : "_applyBorder",
-      event : "changeBorder",
-      check : "Border",
-      themeable : true
-    },
-
-    /** The font property describes how to paint the font on the widget. */
-    font : {
-      nullable : true,
-      init : "inherit",
-      apply : "_applyFont",
-      check : "Font",
-      event : "changeFont",
-      themeable : true,
-      inheritable : true
-    },
-
-    /**
-     * Mapping to native style property opacity.
-     *
-     *  The uniform opacity setting to be applied across an entire object. Behaves like the new CSS-3 Property.
-     *  Any values outside the range 0.0 (fully transparent) to 1.0 (fully opaque) will be clamped to this range.
-     */
-    opacity : {
-      check : "Number",
-      apply : "_applyOpacity",
-      themeable : true,
-      nullable : true,
-      init : null
-    },
-
-    /**
-     * Mapping to native style property cursor.
-     *
-     * The name of the cursor to show when the mouse pointer is over the widget.
-     * This is any valid CSS2 cursor name defined by W3C.
-     *
-     * The following values are possible crossbrowser:
-     * <ul><li>default</li>
-     * <li>crosshair</li>
-     * <li>pointer</li>
-     * <li>move</li>
-     * <li>n-resize</li>
-     * <li>ne-resize</li>
-     * <li>e-resize</li>
-     * <li>se-resize</li>
-     * <li>s-resize</li>
-     * <li>sw-resize</li>
-     * <li>w-resize</li>
-     * <li>nw-resize</li>
-     * <li>text</li>
-     * <li>wait</li>
-     * <li>help </li>
-     * </ul>
-     */
-    cursor : {
-      check : "String",
-      apply : "_applyCursor",
-      themeable : true,
-      nullable : true,
-      init : null
-    },
-
-    /**
-     * Mapping to native style property background-image.
-     *
-     *  The URI of the image file to use as background image.
-     */
-    backgroundImage : {
-      check : "String",
-      nullable : true,
-      apply : "_applyBackgroundImage",
-      themeable : true
-    },
-
-    /**
-     * Mapping to native style property background-repeat.
-     */
-    backgroundRepeat : {
-      check : [ "repeat", "repeat-x", "repeat-y", "no-repeat" ],
-      nullable : true,
-      apply : "_applyBackgroundRepeat",
-      themeable : true
-    },
-
-    /**
-     * Mapping to native style property background-position.
-     */
-    backgroundPosition : {
-      check : [ "left top", "left center", "left bottom",
-                "right top", "right center", "right bottom",
-                "center top", "center center", "center bottom" ],
-      nullable : true,
-      apply : "_applyBackgroundPosition",
-      themeable : true
-    },
-
-    /**
-     * Describes how to handle content that is too large to fit inside the widget.
-     *
-     * Overflow modes:
-     * <table>
-     * <tr><th>hidden</th><td>The content is clipped</td></tr>
-     * <tr><th>auto</th><td>Scroll bars are shown as needed</td></tr>
-     * <tr><th>scroll</th><td>Scroll bars are always shown. Even if there is enough room for the content inside the widget.</td></tr>
-     * <tr><th>scrollX</th><td>Scroll bars for the X-Axis are always shown. Even if there is enough room for the content inside the widget.</td></tr>
-     * <tr><th>scrollY</th><td>Scroll bars for the Y-Axis are always shown. Even if there is enough room for the content inside the widget.</td></tr>
-     * </table>
-     */
-    overflow : {
-      check : ["hidden", "auto", "scroll" ,"scrollX", "scrollY"],
-      nullable : true,
-      apply : "_applyOverflow",
-      event : "changeOverflow",
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * Enables/disables overflow on the outer element for enhanced borders.
-     */
-    containerOverflow : {
-      check : "Boolean",
-      nullable : false,
-      apply : "_applyContainerOverflow",
-      themeable : true,
-      init : true
-    },
-
-    /** Clipping of the widget (left) */
-    clipLeft : {
-      check : "Integer",
-      apply : "_applyClip",
-      themeable : true,
-      nullable : true
-    },
-
-    /** Clipping of the widget (top) */
-    clipTop : {
-      check : "Integer",
-      apply : "_applyClip",
-      themeable : true,
-      nullable : true
-    },
-
-    /** Clipping of the widget (width) */
-    clipWidth : {
-      check : "Integer",
-      apply : "_applyClip",
-      themeable : true,
-      nullable : true
-    },
-
-    /** Clipping of the widget (height) */
-    clipHeight : {
-      check : "Integer",
-      apply : "_applyClip",
-      themeable : true,
-      nullable : true
-    },
-
-    /**
-     * Set this to a positive value makes the widget able to get the focus.
-     * It even is reachable through the usage of the tab-key.
-     *
-     * Widgets with the same tabIndex are handled through there position
-     * in the document.
-     *
-     * Setting the tabIndex to -1 deactivate focus handling for the widget.
-     */
-    tabIndex : {
-      check : "Integer",
-      nullable : true,
-      init : null,
-      apply : "_applyTabIndex",
-      event : "changeTabIndex"
-    },
-
-    /** If the focus outline should be hidden. */
-    hideFocus : {
-      check : "Boolean",
-      init : true,
-      apply : "_applyHideFocus",
-      themeable : true
-    },
-
-    /** Use DOM focussing (focus() and blur() methods of DOM nodes) */
-    enableElementFocus : {
-      check : "Boolean",
-      init : true
-    },
-
-    /**
-     * Handle focus state of this widget.
-     *
-     *  someWidget.setFocused(true) set the current focus to this widget.
-     *  someWidget.setFocused(false) remove the current focus and leave it blank.
-     *
-     *  Normally you didn't need to set this directly.
-     */
-    focused : {
-      check : "Boolean",
-      init : false,
-      apply : "_applyFocused",
-      event : "changeFocused"
-    },
-
-    /** Toggle the possibility to select the element of this widget. */
-    selectable : {
-      check : "Boolean",
-      init : null,
-      nullable : true,
-      apply : "_applySelectable"
-    },
-
-    /** Contains the tooltip object connected to the widget. */
-    toolTip : {
-      check : "rwt.widgets.base.ToolTip",
-      nullable : true,
-      event: "changeToolTip"
-    },
-
-    /** Contains the context menu object connected to the widget. (Need real implementation) */
-    // RAP : remove check, allow other menu implementation
-    contextMenu : {
-      nullable : true,
-      event: "changeContextMenu"
-    },
-
-    /** Capture all events and map them to this widget */
-    capture : {
-      check : "Boolean",
-      init : false,
-      apply : "_applyCapture",
-      event : "changeCapture"
-    },
-
-    /** Contains the support drop types for drag and drop support */
-    dropDataTypes : {
-      nullable : true,
-      dispose : true
-    },
-
-    /** A command called if the widget should be excecuted (a placeholder for buttons, ...) */
-    command : {
-      check : "qx.client.Command",
-      nullable : true,
-      apply : "_applyCommand"
-    },
-
-    /** Appearance of the widget */
-    appearance : {
-      check : "String",
-      init : "widget",
-      apply : "_applyAppearance",
-      event : "changeAppearance"
-    },
-
-    /*
-     * The method which this.supportsDrop() calls to determine whether the
-     * widget supports a particular drop operation.
-     *
-     * This is a property so that a mixin can modify it.  Otherwise, the mixin
-     * would have to override the supportsDrop() method, requiring the mixin
-     * to be applied with patch() instead of include().  All normal mixins
-     * should be able to be simply include()ed, and not have to be patch()ed.
-     *
-     * If this property is null, then the default supportsDrop() action
-     * defined herein shall be used.
-     */
-    supportsDropMethod : {
-      check : "Function",
-      nullable : true,
-      init : null
-    },
-
-    /** Margin of the widget (top) */
-    marginTop : {
-      check : "Number",
-      apply : "_applyMarginTop",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Margin of the widget (right) */
-    marginRight : {
-      check : "Number",
-      apply : "_applyMarginRight",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Margin of the widget (bottom) */
-    marginBottom : {
-      check : "Number",
-      apply : "_applyMarginBottom",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Margin of the widget (left) */
-    marginLeft : {
-      check : "Number",
-      apply : "_applyMarginLeft",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Padding of the widget (top) */
-    paddingTop : {
-      check : "Number",
-      apply : "_applyPaddingTop",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Padding of the widget (right) */
-    paddingRight : {
-      check : "Number",
-      apply : "_applyPaddingRight",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Padding of the widget (bottom) */
-    paddingBottom : {
-      check : "Number",
-      apply : "_applyPaddingBottom",
-      nullable : true,
-      themeable : true
-    },
-
-    /** Padding of the widget (left) */
-    paddingLeft : {
-      check : "Number",
-      apply : "_applyPaddingLeft",
-      nullable : true,
-      themeable : true
-    },
-
-    /**
-     * The distance from the outer left border to the parent left area edge.
-     *
-     *  You could only set two of the three horizonal dimension properties (boxLeft, boxRight, boxWidth)
-     *  at the same time. This will be omitted during the setup of the new third value. To reset a value
-     *  you didn't want anymore, set it to null.
-     */
-    left : {
-      apply : "_applyLeft",
-      event : "changeLeft",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The distance from the outer right border to the parent right area edge.
-     *
-     *  You could only set two of the three horizonal dimension properties (boxLeft, boxRight, boxWidth)
-     *  at the same time. This will be omitted during the setup of the new third value. To reset a value
-     *  you didn't want anymore, set it to null.
-     */
-    right : {
-      apply : "_applyRight",
-      event : "changeRight",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The width of the box (including padding and border).
-     *
-     *  You could only set two of the three horizonal dimension properties (boxLeft, boxRight, boxWidth)
-     *  at the same time. This will be omitted during the setup of the new third value. To reset a value
-     *  you didn't want anymore, set it to null.
-     */
-    width : {
-      apply : "_applyWidth",
-      event : "changeWidth",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The minimum width of the box (including padding and border).
-     *
-     *  Set this to omit the shrinking of the box width under this value.
-     */
-    minWidth : {
-      apply : "_applyMinWidth",
-      event : "changeMinWidth",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The maximum width of the box (including padding and border).
-     *
-     *  Set this to omit the expanding of the box width above this value.
-     */
-    maxWidth : {
-      apply : "_applyMaxWidth",
-      event : "changeMaxWidth",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The distance from the outer top border to the parent top area edge.
-     *
-     *  You could only set two of the three vertical dimension properties (boxTop, boxBottom, boxHeight)
-     *  at the same time. This will be omitted during the setup of the new third value. To reset a value
-     *  you didn't want anymore, set it to null.
-     */
-    top : {
-      apply : "_applyTop",
-      event : "changeTop",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The distance from the outer bottom border to the parent bottom area edge.
-     *
-     *  You could only set two of the three vertical dimension properties (boxTop, boxBottom, boxHeight)
-     *  at the same time. This will be omitted during the setup of the new third value. To reset a value
-     *  you didn't want anymore, set it to null.
-     */
-    bottom : {
-      apply : "_applyBottom",
-      event : "changeBottom",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The height of the box (including padding and border).
-     *
-     *  You could only set two of the three vertical dimension properties (boxTop, boxBottom, boxHeight)
-     *  at the same time. This will be omitted during the setup of the new third value. To reset a value
-     *  you didn't want anymore, set it to null.
-     */
-    height : {
-      apply : "_applyHeight",
-      event : "changeHeight",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The minimum height of the box (including padding and border).
-     *
-     *  Set this to omit the shrinking of the box height under this value.
-     */
-    minHeight : {
-      apply : "_applyMinHeight",
-      event : "changeMinHeight",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    /**
-     * The maximum height of the box (including padding and border).
-     *
-     *  Set this to omit the expanding of the box height above this value.
-     */
-    maxHeight : {
-      apply : "_applyMaxHeight",
-      event : "changeMaxHeight",
-      nullable : true,
-      themeable : true,
-      init : null
-    },
-
-    location : { group : [ "left", "top" ], themeable : true },
-    dimension : { group : [ "width", "height" ], themeable : true },
-    space : { group : [ "left", "width", "top", "height" ], themeable : true },
-
-    edge : {
-      group : [ "top", "right", "bottom", "left" ],
-      themeable : true,
-      mode  : "shorthand"
-    },
-
-    padding : {
-      group : [ "paddingTop", "paddingRight", "paddingBottom", "paddingLeft" ],
-      mode  : "shorthand",
-      themeable : true
-    },
-
-    /**
-     * The 'margin' property is a shorthand property for setting 'marginTop',
-     * 'marginRight', 'marginBottom' and 'marginLeft' at the same time.
-     *
-     * If four length values are specified they apply to top, right, bottom and
-     * left respectively. If there is only one value, it applies to all sides,
-     * if there are two or three, the missing values are taken from the opposite side.
-     */
-    margin : {
-      group : [ "marginTop", "marginRight", "marginBottom", "marginLeft" ],
-      mode  : "shorthand",
-      themeable : true
-    },
-
-    heights : { group : [ "minHeight", "height", "maxHeight" ], themeable : true },
-    widths : { group : [ "minWidth", "width", "maxWidth" ], themeable : true },
-
-    /**
-     * The 'align' property is a shorthand property for setting 'horizontalAlign',
-     * and 'verticalAlign' at the same time.
-     */
-    align : { group : [ "horizontalAlign", "verticalAlign" ], themeable : true },
-    clipLocation : { group : [ "clipLeft", "clipTop" ] },
-    clipDimension : { group : [ "clipWidth", "clipHeight" ] },
-    clip : { group : [ "clipLeft", "clipTop", "clipWidth", "clipHeight" ] },
-
-    innerWidth : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    innerHeight : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    boxWidth : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    boxHeight : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    outerWidth : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    outerHeight : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    frameWidth : {
-      _cached           : true,
-      defaultValue      : null,
-      addToQueueRuntime : true
-    },
-
-    frameHeight : {
-      _cached           : true,
-      defaultValue      : null,
-      addToQueueRuntime : true
-    },
-
-    preferredInnerWidth : {
-      _cached           : true,
-      defaultValue      : null,
-      addToQueueRuntime : true
-    },
-
-    preferredInnerHeight : {
-      _cached           : true,
-      defaultValue      : null,
-      addToQueueRuntime : true
-    },
-
-    preferredBoxWidth : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    preferredBoxHeight : {
-      _cached      : true,
-      defaultValue : null
-    },
-
-    hasPercentX : {
-      _cached      : true,
-      defaultValue : false
-    },
-
-    hasPercentY : {
-      _cached      : true,
-      defaultValue : false
-    },
-
-    hasAutoX : {
-      _cached      : true,
-      defaultValue : false
-    },
-
-    hasAutoY : {
-      _cached      : true,
-      defaultValue : false
-    },
-
-    hasFlexX : {
-      _cached      : true,
-      defaultValue : false
-    },
-
-    hasFlexY : {
-      _cached      : true,
-      defaultValue : false
-    }
-  },
-
-  /*
-  *****************************************************************************
-     MEMBERS
-  *****************************************************************************
-  */
-
-  members : {
-    _computedLeftValue : null,
-    _computedLeftParsed : null,
-    _computedLeftType : null,
-    _computedLeftTypeNull : true,
-    _computedLeftTypePixel : false,
-    _computedLeftTypePercent : false,
-    _computedLeftTypeAuto : false,
-    _computedLeftTypeFlex : false,
-    _computedRightValue : null,
-    _computedRightParsed : null,
-    _computedRightType : null,
-    _computedRightTypeNull : true,
-    _computedRightTypePixel : false,
-    _computedRightTypePercent : false,
-    _computedRightTypeAuto : false,
-    _computedRightTypeFlex : false,
-    _computedTopValue : null,
-    _computedTopParsed : null,
-    _computedTopType : null,
-    _computedTopTypeNull : true,
-    _computedTopTypePixel : false,
-    _computedTopTypePercent : false,
-    _computedTopTypeAuto : false,
-    _computedTopTypeFlex : false,
-    _computedBottomValue : null,
-    _computedBottomParsed : null,
-    _computedBottomType : null,
-    _computedBottomTypeNull : true,
-    _computedBottomTypePixel : false,
-    _computedBottomTypePercent : false,
-    _computedBottomTypeAuto : false,
-    _computedBottomTypeFlex : false,
-    _computedWidthValue : null,
-    _computedWidthParsed : null,
-    _computedWidthType : null,
-    _computedWidthTypeNull : true,
-    _computedWidthTypePixel : false,
-    _computedWidthTypePercent : false,
-    _computedWidthTypeAuto : false,
-    _computedWidthTypeFlex : false,
-    _computedMinWidthValue : null,
-    _computedMinWidthParsed : null,
-    _computedMinWidthType : null,
-    _computedMinWidthTypeNull : true,
-    _computedMinWidthTypePixel : false,
-    _computedMinWidthTypePercent : false,
-    _computedMinWidthTypeAuto : false,
-    _computedMinWidthTypeFlex : false,
-    _computedMaxWidthValue : null,
-    _computedMaxWidthParsed : null,
-    _computedMaxWidthType : null,
-    _computedMaxWidthTypeNull : true,
-    _computedMaxWidthTypePixel : false,
-    _computedMaxWidthTypePercent : false,
-    _computedMaxWidthTypeAuto : false,
-    _computedMaxWidthTypeFlex : false,
-    _computedHeightValue : null,
-    _computedHeightParsed : null,
-    _computedHeightType : null,
-    _computedHeightTypeNull : true,
-    _computedHeightTypePixel : false,
-    _computedHeightTypePercent : false,
-    _computedHeightTypeAuto : false,
-    _computedHeightTypeFlex : false,
-    _computedMinHeightValue : null,
-    _computedMinHeightParsed : null,
-    _computedMinHeightType : null,
-    _computedMinHeightTypeNull : true,
-    _computedMinHeightTypePixel : false,
-    _computedMinHeightTypePercent : false,
-    _computedMinHeightTypeAuto : false,
-    _computedMinHeightTypeFlex : false,
-    _computedMaxHeightValue : null,
-    _computedMaxHeightParsed : null,
-    _computedMaxHeightType : null,
-    _computedMaxHeightTypeNull : true,
-    _computedMaxHeightTypePixel : false,
-    _computedMaxHeightTypePercent : false,
-    _computedMaxHeightTypeAuto : false,
-    _computedMaxHeightTypeFlex : false,
-    _customVariant : null,
-
-    ///////////////
-    // apply layout
-
-    _applyLeft : function(value, old) {
-      this._unitDetectionPixelPercent("left", value);
-      this.addToQueue("left");
-    },
-
-    _applyRight : function(value, old) {
-      this._unitDetectionPixelPercent("right", value);
-      this.addToQueue("right");
-    },
-
-    _applyTop : function(value, old) {
-      this._unitDetectionPixelPercent("top", value);
-      this.addToQueue("top");
-    },
-
-    _applyBottom : function(value, old) {
-      this._unitDetectionPixelPercent("bottom", value);
-      this.addToQueue("bottom");
-    },
-
-    _applyWidth : function(value, old) {
-      this._unitDetectionPixelPercentAutoFlex("width", value);
-      this.addToQueue("width");
-    },
-
-    _applyMinWidth : function(value, old) {
-      this._unitDetectionPixelPercentAuto("minWidth", value);
-      this.addToQueue("minWidth");
-    },
-
-    _applyMaxWidth : function(value, old) {
-      this._unitDetectionPixelPercentAuto("maxWidth", value);
-      this.addToQueue("maxWidth");
-    },
-
-    _applyHeight : function(value, old) {
-      this._unitDetectionPixelPercentAutoFlex("height", value);
-      this.addToQueue("height");
-    },
-
-    _applyMinHeight : function(value, old) {
-      this._unitDetectionPixelPercentAuto("minHeight", value);
-      this.addToQueue("minHeight");
-    },
-
-    _applyMaxHeight : function(value, old) {
-      this._unitDetectionPixelPercentAuto("maxHeight", value);
-      this.addToQueue("maxHeight");
-    },
-
-    ////////////////////
-    // CHILDREN HANDLING
-
-    // NOTE: Implemented in Parent.js
-    getChildren : rwt.util.Functions.returnNull,
-    getChildrenLength : rwt.util.Functions.returnZero,
-    hasChildren : rwt.util.Functions.returnFalse,
-    isEmpty : rwt.util.Functions.returnTrue,
-    indexOf : rwt.util.Functions.returnNegativeIndex,
-    contains : rwt.util.Functions.returnFalse,
-    getVisibleChildren : rwt.util.Functions.returnNull,
-    getVisibleChildrenLength : rwt.util.Functions.returnZero,
-    hasVisibleChildren : rwt.util.Functions.returnFalse,
-    isVisibleEmpty : rwt.util.Functions.returnTrue,
-
-    /////////////////
-    //  CORE MODIFIER
-
-    _hasParent : false,
-    _isDisplayable : false,
-
-    isDisplayable : function() {
-      return this._isDisplayable;
-    },
-
-    _checkParent : function(value, old) {
-      if (this.contains(value)) {
-        throw new Error("Could not insert myself into a child " + value + "!");
-      }
-
-      return value;
-    },
-
-    _applyParent : function(value, old) {
-      if (old) {
-        var vOldIndex = old.getChildren().indexOf(this);
-        // Reset cached dimension and location values
-        this._computedWidthValue = null;
-        this._computedMinWidthValue = null;
-        this._computedMaxWidthValue = null;
-        this._computedLeftValue = null;
-        this._computedRightValue = null;
-        this._computedHeightValue = null;
-        this._computedMinHeightValue = null;
-        this._computedMaxHeightValue = null;
-        this._computedTopValue = null;
-        this._computedBottomValue = null;
-        this._cachedBoxWidth = null;
-        this._cachedInnerWidth = null;
-        this._cachedOuterWidth = null;
-        this._cachedBoxHeight = null;
-        this._cachedInnerHeight = null;
-        this._cachedOuterHeight = null;
-        // Finally remove from children array
-        rwt.util.Arrays.removeAt(old.getChildren(), vOldIndex);
-        // Invalidate visible children cache
-        old._invalidateVisibleChildren();
-        // Remove child from old parent's children queue
-        old._removeChildFromChildrenQueue(this);
-        // The layouter adds some layout jobs
-        old.getLayoutImpl().updateChildrenOnRemoveChild(this, vOldIndex);
-        // Inform job queue
-        old.addToJobQueue("removeChild");
-        // Invalidate inner preferred dimensions
-        old._invalidatePreferredInnerDimensions();
-        // Store old parent (needed later by _handleDisplayable)
-        this._oldParent = old;
-      }
-      if (value) {
-        this._hasParent = true;
-        if (typeof this._insertIndex == "number") {
-          rwt.util.Arrays.insertAt(value.getChildren(), this, this._insertIndex);
-          delete this._insertIndex;
-        } else {
-          value.getChildren().push(this);
-        }
-      } else {
-        this._hasParent = false;
-      }
-      rwt.qx.Property.refresh(this);
-      return this._handleDisplayable("parent");
-    },
-
-    _applyDisplay : function(value, old) {
-      return this._handleDisplayable("display");
-    },
-
-    //////////////////////
-    // DISPLAYBLE HANDLING
-
-    _handleDisplayable : function( vHint ) {
-      var vDisplayable = this._computeDisplayable();
-      if(    this._isDisplayable == vDisplayable
-          && !( vDisplayable && vHint == "parent" ) )
-      {
-        return true;
-      }
-      this._isDisplayable = vDisplayable;
-      var vParent = this.getParent();
-      if( vParent ) {
-        vParent._invalidateVisibleChildren();
-        vParent._invalidatePreferredInnerDimensions();
-      }
-      // Remove old parent's elements from DOM and delete old parent
-      if( vHint && this._oldParent && this._oldParent._initialLayoutDone ) {
-        var elem = this.getElement();
-        if( elem ) {
-          if( this.getVisibility() ) {
-            this._beforeDisappear();
-          }
-          try {
-            this._oldParent._getTargetNode().removeChild( elem );
-          } catch( ex ) {
-            // ignore exception
-          }
-          this._afterRemoveDom();
-          if ( this.getVisibility() ) {
-            this._afterDisappear();
-          }
-        }
-        delete this._oldParent;
-      } // old parent end
-      if( vDisplayable ) {
-        // The layouter added some layout jobs
-        if( vParent._initialLayoutDone ) {
-          var index = vParent.getChildren().indexOf( this );
-          vParent.getLayoutImpl().updateChildrenOnAddChild( this, index );
-          vParent.addToJobQueue( "addChild" );
-        }
-        // Add to parents children queue
-        // (indirectly with a new layout request)
-        this.addToLayoutChanges( "initial" );
-        // Add to custom queues
-        this.addToCustomQueues( vHint );
-        if( this.getVisibility() ) {
-          this._beforeAppear();
-        }
-        if( !this._isCreated ) {
-          rwt.widgets.base.Widget.addToGlobalElementQueue(this);
-        }
-        rwt.widgets.base.Widget.addToGlobalStateQueue( this );
-        if(!rwt.util.Objects.isEmpty(this._jobQueue ) ) {
-          rwt.widgets.base.Widget.addToGlobalJobQueue( this );
-        }
-        if( !rwt.util.Objects.isEmpty( this._childrenQueue ) ) {
-          rwt.widgets.base.Widget.addToGlobalLayoutQueue( this );
-        }
-        // displayable end
-      } else {
-        rwt.widgets.base.Widget.removeFromGlobalElementQueue( this );
-        rwt.widgets.base.Widget.removeFromGlobalStateQueue( this );
-        rwt.widgets.base.Widget.removeFromGlobalJobQueue( this );
-        rwt.widgets.base.Widget.removeFromGlobalLayoutQueue( this );
-        this.removeFromCustomQueues( vHint );
-        // only remove when itself want to be removed
-        // through a property change - not a parent signal
-        if( vParent && vHint ) {
-          if( this.getVisibility() ) {
-            this._beforeDisappear();
-          }
-          if( vParent._initialLayoutDone && this._initialLayoutDone ) {
-            var index = vParent.getChildren().indexOf( this );
-            vParent.getLayoutImpl().updateChildrenOnRemoveChild( this, index );
-            vParent.addToJobQueue( "removeChild" );
-            var parentNode = rwt.client.Client.isMshtml() ? this.getElement().parentElement : this.getElement().parentNode;
-            if( parentNode ){
-              parentNode.removeChild( this.getElement() );
-              this._afterRemoveDom();
-            }
-          }
-          vParent._removeChildFromChildrenQueue( this );
-          if( this.getVisibility() ) {
-            this._afterDisappear();
-          }
-        }
-      } // not displayable end
-      this._handleDisplayableCustom( vDisplayable, vParent, vHint );
-      return true;
-    },
-
-    addToCustomQueues : rwt.util.Functions.returnTrue,
-    removeFromCustomQueues : rwt.util.Functions.returnTrue,
-    _handleDisplayableCustom : rwt.util.Functions.returnTrue,
-
-    _computeDisplayable : function() {
-      return this.getDisplay() && this.getParent() && this.getParent()._isDisplayable ? true : false;
-    },
-
-    _beforeAppear : function() {
-      this.dispatchSimpleEvent( "beforeAppear" );
-    },
-
-    _afterAppear : function() {
-      this._isSeeable = true;
-      this.dispatchSimpleEvent( "appear" );
-    },
-
-    _ieFixLayoutOnAppear : rwt.util.Variant.select( "qx.client", {
-      "mshtml" : function() {
-        var width = this._style.width;
-        var height = this._style.height;
-        this._style.width = "0px";
-        this._style.height = "0px";
-        this._style.width = width;
-        this._style.height = height;
-        if( this._innerStyle ) {
-          width = this._innerStyle.width;
-          height = this._innerStyle.height;
-          this._innerStyle.width = "0px";
-          this._innerSt