Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2014-11-30 22:05:22 +0000
committerTom Schindl2014-11-30 22:05:22 +0000
commit09cb4fad31ea3db4bbc3e0160b7755ed329c0e95 (patch)
treeaec23bce4553b27681b41d0565fb1cb79b8a7561 /experimental
parent6fb271b856a1c350f28c84b5ed5a71bdfbfb8981 (diff)
downloadorg.eclipse.efxclipse-09cb4fad31ea3db4bbc3e0160b7755ed329c0e95.tar.gz
org.eclipse.efxclipse-09cb4fad31ea3db4bbc3e0160b7755ed329c0e95.tar.xz
org.eclipse.efxclipse-09cb4fad31ea3db4bbc3e0160b7755ed329c0e95.zip
latest source
Diffstat (limited to 'experimental')
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app.feature/feature.xml14
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app.product/org.eclipse.fx.code.compensator.app.product.product.launch3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/Application.e4xmi17
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/DirtyStateTrackerAddon.classbin0 -> 3719 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFile.classbin3399 -> 3465 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFolder.classbin0 -> 2994 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/OpenFile.classbin3551 -> 3941 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/SaveFile.classbin0 -> 1317 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.classbin1376 -> 1038 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFile.java13
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFolder.java36
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/OpenFile.java10
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.java14
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/activeOutline.xml8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/servicecollector.xml2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ActiveOutlineContextFunction.java40
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java21
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.java/OSGI-INF/services/javacomponent.xml1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/16/java-file.pngbin0 -> 513 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/java-file.svg499
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.java/src/org/eclipse/fx/code/compensator/editor/java/JavaComponent.java16
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.js/OSGI-INF/services/javascriptcomponent.xml3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/16/js-file.pngbin0 -> 621 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/js-file.svg499
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor.js/src/org/eclipse/fx/code/compensator/editor/js/JavaScriptComponent.java13
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/ContentTypeProvider.java1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/Outline.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconLookup.java5
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconProvider.java6
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.classpath11
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.gitignore1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.project39
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/META-INF/MANIFEST.MF11
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/OSGI-INF/services/qxnashornoutlineext.xml7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/build.properties6
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/default.css35
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.pngbin0 -> 408 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.pngbin0 -> 385 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.pngbin0 -> 417 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.pngbin0 -> 470 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.pngbin0 -> 418 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.pngbin0 -> 491 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.pngbin0 -> 443 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.svg80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/plugin.xml11
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/src/org/eclipse/fx/code/compensator/nashorn/qx/QxOutlineExtension.java150
54 files changed, 2041 insertions, 27 deletions
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app.feature/feature.xml b/experimental/compensator/org.eclipse.fx.code.compensator.app.feature/feature.xml
index 65cd20ee8..148d4e3fd 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app.feature/feature.xml
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app.feature/feature.xml
@@ -543,4 +543,18 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.fx.code.compensator.jdt"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.fx.code.compensator.nashorn.qx"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app.product/org.eclipse.fx.code.compensator.app.product.product.launch b/experimental/compensator/org.eclipse.fx.code.compensator.app.product/org.eclipse.fx.code.compensator.app.product.product.launch
index 8071ce2ed..6e9253da0 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app.product/org.eclipse.fx.code.compensator.app.product.product.launch
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app.product/org.eclipse.fx.code.compensator.app.product.product.launch
@@ -15,7 +15,7 @@
<stringAttribute key="featureDefaultLocation" value="workspace"/>
<stringAttribute key="featurePluginResolution" value="workspace"/>
<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-org.eclipse.fx.code.compensator.app.product"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-org.eclipse.fx.code.compensator.app.product_2"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java SE 8 u40"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nl ${target.nl} -consoleLog -nosplash -console -consoleLog -clearPersistedState"/>
@@ -26,6 +26,7 @@
<stringAttribute key="productFile" value="/org.eclipse.fx.code.compensator.app.product/org.eclipse.fx.code.compensator.app.product.product"/>
<setAttribute key="selected_features">
<setEntry value="org.eclipse.fx.code.compensator.app.feature:default"/>
+<setEntry value="org.eclipse.fx.code.compensator.jdt.runtime.feature:default"/>
<setEntry value="org.eclipse.fx.code.compensator.xtext.runtime.feature:default"/>
</setAttribute>
<booleanAttribute key="show_selected_only" value="false"/>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/.settings/org.eclipse.jdt.core.prefs b/experimental/compensator/org.eclipse.fx.code.compensator.app/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/Application.e4xmi b/experimental/compensator/org.eclipse.fx.code.compensator.app/Application.e4xmi
index 33b5e4cde..48c1bcdac 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/Application.e4xmi
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/Application.e4xmi
@@ -4,18 +4,25 @@
<children xsi:type="advanced:PerspectiveStack" xmi:id="_mym9kPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.perspectivestack.0"/>
<mainMenu xmi:id="_RTKZcPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.menu.0">
<children xsi:type="menu:Menu" xmi:id="_SXdvEPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.menu.1" label="File">
- <children xsi:type="menu:HandledMenuItem" xmi:id="_U7ubkPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.handledmenuitem.0" label="Open File ..." command="_NKFrQPNkEeOKm6R57HGa4g"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_U7ubkPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.handledmenuitem.0" label="Add File ..." command="_NKFrQPNkEeOKm6R57HGa4g"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_8NEskHQwEeSQ0Pmwy73byg" elementId="org.eclipse.fx.code.compensator.app.handledmenuitem.2" label="Add Folder ..." command="_zuhL4HQwEeSQ0Pmwy73byg"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_KY76wEdBEeSZQYCAvKFSig" elementId="org.eclipse.fx.code.compensator.app.handledmenuitem.1" label="Save" command="_3He4MEdAEeSZQYCAvKFSig"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_LCyGcAxQEeSN54I_YjEqrw" elementId="org.eclipse.fx.code.compensator.app.menu.2" label="Themes">
- <children xsi:type="menu:DirectMenuItem" xmi:id="_NgjJYAxQEeSN54I_YjEqrw" elementId="org.eclipse.fx.code.compensator.app.directmenuitem.0" label="Default" selected="true" type="Radio" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.ToggleThemeHandler"/>
- <children xsi:type="menu:DirectMenuItem" xmi:id="_QnFcgAxQEeSN54I_YjEqrw" elementId="org.eclipse.fx.code.compensator.app.directmenuitem.1" label="Dark" type="Radio" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.ToggleThemeHandler"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_EX1_0HVIEeSh6_BeBEfIrA" elementId="org.eclipse.fx.code.compensator.app.handledmenuitem.3" label="Default" selected="true" type="Radio" command="_7TZj0HVHEeSh6_BeBEfIrA">
+ <parameters xmi:id="_JtZvQHVIEeSh6_BeBEfIrA" elementId="org.eclipse.fx.code.compensator.app.parameter.0" name="themeId" value="default"/>
+ </children>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_HP7AMHVIEeSh6_BeBEfIrA" elementId="org.eclipse.fx.code.compensator.app.handledmenuitem.4" label="Dark" type="Radio" command="_7TZj0HVHEeSh6_BeBEfIrA">
+ <parameters xmi:id="_OIZ68HVIEeSh6_BeBEfIrA" elementId="org.eclipse.fx.code.compensator.app.parameter.1" name="themeId" value="dark"/>
+ </children>
</children>
</mainMenu>
</children>
<handlers xmi:id="_FcDokPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.handler.0" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.LoadFile" command="_NKFrQPNkEeOKm6R57HGa4g"/>
<handlers xmi:id="_R3Pi0POkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.handler.1" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.OpenFile" command="_VwzOUPOkEeOKm6R57HGa4g"/>
<handlers xmi:id="_1rs2sEdAEeSZQYCAvKFSig" elementId="org.eclipse.fx.code.compensator.app.handler.2" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.SaveFile" command="_3He4MEdAEeSZQYCAvKFSig"/>
+ <handlers xmi:id="_1quZ4HQwEeSQ0Pmwy73byg" elementId="org.eclipse.fx.code.compensator.app.handler.3" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.LoadFolder" command="_zuhL4HQwEeSQ0Pmwy73byg"/>
+ <handlers xmi:id="_9c2joHVHEeSh6_BeBEfIrA" elementId="org.eclipse.fx.code.compensator.app.handler.4" contributionURI="bundleclass://org.eclipse.fx.code.compensator.app/org.eclipse.fx.code.compensator.app.ToggleThemeHandler" command="_7TZj0HVHEeSh6_BeBEfIrA"/>
<bindingTables xmi:id="_iCgYwFRVEeSOIvvv6jFM3A" elementId="org.eclipse.fx.code.compensator.app.bindingtable.0" bindingContext="_fFsNwfG6EeOigcR0oBysUg">
<bindings xmi:id="_jaVuYFRVEeSOIvvv6jFM3A" elementId="org.eclipse.fx.code.compensator.app.keybinding.0" keySequence="M1+S" command="_3He4MEdAEeSZQYCAvKFSig"/>
</bindingTables>
@@ -26,6 +33,10 @@
<commands xmi:id="_NKFrQPNkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.command.0" commandName="Load File"/>
<commands xmi:id="_VwzOUPOkEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.app.command.1" commandName="Open File"/>
<commands xmi:id="_3He4MEdAEeSZQYCAvKFSig" elementId="org.eclipse.fx.code.compensator.app.command.2" commandName="Save File"/>
+ <commands xmi:id="_zuhL4HQwEeSQ0Pmwy73byg" elementId="org.eclipse.fx.code.compensator.app.command.3" commandName="Load Folder"/>
+ <commands xmi:id="_7TZj0HVHEeSh6_BeBEfIrA" elementId="org.eclipse.fx.code.compensator.app.command.4" commandName="Switch Theme">
+ <parameters xmi:id="_Agpr0HVIEeSh6_BeBEfIrA" elementId="themeId" name="Theme Id" optional="false"/>
+ </commands>
<addons xmi:id="_fFsNw_G6EeOigcR0oBysUg" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_fFsNxPG6EeOigcR0oBysUg" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_fFsNxfG6EeOigcR0oBysUg" elementId="org.eclipse.fx.ui.keybindings.e4.service" contributionURI="bundleclass://org.eclipse.fx.ui.keybindings.e4/org.eclipse.fx.ui.keybindings.e4.BindingServiceAddon"/>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/DirtyStateTrackerAddon.class b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/DirtyStateTrackerAddon.class
new file mode 100644
index 000000000..5219cee40
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/DirtyStateTrackerAddon.class
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFile.class b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFile.class
index 5caad3a65..980c0856c 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFile.class
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFile.class
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFolder.class b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFolder.class
new file mode 100644
index 000000000..b050d2a24
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/LoadFolder.class
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/OpenFile.class b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/OpenFile.class
index e35233cc9..f1e999a29 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/OpenFile.class
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/OpenFile.class
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/SaveFile.class b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/SaveFile.class
new file mode 100644
index 000000000..e45dbbb45
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/SaveFile.class
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.class b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.class
index 9b8db7ef2..4344b44f1 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.class
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/bin/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.class
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFile.java b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFile.java
index 29009db23..74b51753e 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFile.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFile.java
@@ -10,11 +10,14 @@
*******************************************************************************/
package org.eclipse.fx.code.compensator.app;
+import java.nio.file.Paths;
import java.util.Optional;
+
import javafx.stage.FileChooser;
import javafx.stage.Stage;
+
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.fx.code.compensator.model.workbench.Workbench;
@@ -30,17 +33,17 @@ public class LoadFile {
l.forEach((f) -> {
try {
org.eclipse.fx.code.compensator.model.workbench.File wf = WorkbenchFactory.eINSTANCE.createFile();
- wf.setUrl(f.toURI().toURL().toExternalForm());
- wb.getResources().add(wf);
+ wf.setUrl(Paths.get(f.toURI()).toUri().toString());
+ wb.getResources().add(wf);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
-
+
}
);
-
+
}
-
+
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFolder.java b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFolder.java
new file mode 100644
index 000000000..37acfc373
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/LoadFolder.java
@@ -0,0 +1,36 @@
+package org.eclipse.fx.code.compensator.app;
+
+import java.nio.file.Paths;
+import java.util.Optional;
+
+
+import javafx.stage.DirectoryChooser;
+import javafx.stage.Stage;
+
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.fx.code.compensator.model.workbench.Folder;
+import org.eclipse.fx.code.compensator.model.workbench.Workbench;
+import org.eclipse.fx.code.compensator.model.workbench.WorkbenchFactory;
+
+public class LoadFolder {
+ @Execute
+ public void execute(Stage parent, IEventBroker eventBroker, Workbench wb) {
+ DirectoryChooser chooser = new DirectoryChooser();
+ Optional.ofNullable(chooser.showDialog(parent)).ifPresent((l) ->
+ {
+ try {
+ Folder f = WorkbenchFactory.eINSTANCE.createFolder();
+ f.setUrl(Paths.get(l.toURI()).toUri().toString());
+ wb.getResources().add(f);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+ );
+
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/OpenFile.java b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/OpenFile.java
index 471f8e826..37fdcd1ce 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/OpenFile.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/OpenFile.java
@@ -20,25 +20,29 @@ import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
import org.eclipse.emf.common.util.URI;
import org.eclipse.fx.code.compensator.editor.TextEditor;
+import org.eclipse.fx.code.compensator.editor.services.FileIconLookup;
import org.eclipse.fx.code.compensator.model.workbench.File;
public class OpenFile {
@Execute
- public void openFile(MPerspective perspective, EModelService service, File file, EPartService partService) {
+ public void openFile(MPerspective perspective, EModelService service, File file, EPartService partService, FileIconLookup lookup) {
+
MPartStack element = (MPartStack) service.find("org.eclipse.fx.code.compensator.freeedit.partstack.1", perspective);
-
+
for( MStackElement p : element.getChildren() ) {
if( file.getUrl().equals(p.getPersistedState().get(TextEditor.DOCUMENT_URL)) ) {
partService.showPart((MPart)p, PartState.ACTIVATE);
return;
}
}
-
+
MPart p = service.createModelElement(MPart.class);
p.setContributionURI("bundleclass://org.eclipse.fx.code.compensator.editor/org.eclipse.fx.code.compensator.editor.TextEditor");
p.getPersistedState().put(TextEditor.DOCUMENT_URL, file.getUrl());
p.setLabel(URI.createURI(file.getUrl()).lastSegment());
+ p.setIconURI(lookup.getFileIcon(file.getUrl()));
p.setCloseable(true);
+ p.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
element.getChildren().add(p);
partService.showPart(p, PartState.ACTIVATE);
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.java b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.java
index 0ef60e575..a3fb81c84 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ToggleThemeHandler.java
@@ -1,5 +1,7 @@
package org.eclipse.fx.code.compensator.app;
+import javax.inject.Named;
+
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.di.extensions.Preference;
@@ -9,15 +11,9 @@ import org.eclipse.fx.ui.services.theme.ThemeManager;
public class ToggleThemeHandler {
@Preference
IEclipsePreferences preference;
-
+
@Execute
- public void toggleTheme(ThemeManager manager) {
- if( "default".equals(manager.getCurrentTheme().getId())) {
- System.err.println("SETTING DARK");
- manager.setCurrentThemeId("dark");
- } else {
- System.err.println("SETTING DEFAULT");
- manager.setCurrentThemeId("default");
- }
+ public void toggleTheme(ThemeManager manager, @Named("themeId") String themeId) {
+ manager.setCurrentThemeId(themeId);
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/activeOutline.xml b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/activeOutline.xml
new file mode 100644
index 000000000..981673e2f
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/activeOutline.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.fx.code.compensator.editor.contrib.activeOutline">
+ <implementation class="org.eclipse.fx.code.compensator.editor.contrib.ActiveOutlineContextFunction"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+ </service>
+ <property name="service.context.key" type="String" value="activeOutline"/>
+</scr:component>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/servicecollector.xml b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/servicecollector.xml
index f9623dd06..3ea5273e4 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/servicecollector.xml
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/OSGI-INF/services/servicecollector.xml
@@ -4,10 +4,12 @@
<service>
<provide interface="org.eclipse.fx.code.compensator.editor.contrib.ServiceCollector"/>
<provide interface="org.eclipse.fx.code.compensator.editor.services.DocumentPersitenceService"/>
+ <provide interface="org.eclipse.fx.code.compensator.editor.services.FileIconLookup"/>
</service>
<reference bind="addInputFactory" cardinality="0..n" interface="org.eclipse.fx.code.compensator.editor.services.InputFactory" name="InputFactory" policy="dynamic" unbind="removeInputFactory"/>
<reference bind="addDocumentFactory" cardinality="0..n" interface="org.eclipse.fx.code.compensator.editor.services.DocumentFactory" name="DocumentFactory" policy="dynamic" unbind="removeDocumentFactory"/>
<reference bind="addPartitionerFactory" cardinality="0..n" interface="org.eclipse.fx.code.compensator.editor.services.PartitionerFactory" name="PartitionerFactory" policy="dynamic" unbind="removePartitionerFactory"/>
<reference bind="addSourceViewerConfigurationFactory" cardinality="0..n" interface="org.eclipse.fx.code.compensator.editor.services.SourceViewerConfigurationFactory" name="SourceViewerConfigurationFactory" policy="dynamic" unbind="removeSourceViewerConfigurationFactory"/>
<reference bind="addOutlineFactory" cardinality="0..n" interface="org.eclipse.fx.code.compensator.editor.services.OutlineFactory" name="OutlineFactory" policy="dynamic" unbind="removeOutlineFactory"/>
+ <reference bind="addFileIconProvider" cardinality="0..n" interface="org.eclipse.fx.code.compensator.editor.services.FileIconProvider" name="FileIconProvider" policy="dynamic" unbind="removeFileIconProvider"/>
</scr:component>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ActiveOutlineContextFunction.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ActiveOutlineContextFunction.java
new file mode 100644
index 000000000..50ec6183d
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ActiveOutlineContextFunction.java
@@ -0,0 +1,40 @@
+package org.eclipse.fx.code.compensator.editor.contrib;
+
+import java.util.Optional;
+
+import org.eclipse.e4.core.contexts.ContextFunction;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.contexts.RunAndTrack;
+import org.eclipse.fx.code.compensator.editor.Input;
+import org.eclipse.fx.code.compensator.editor.Outline;
+
+public class ActiveOutlineContextFunction extends ContextFunction {
+ @Override
+ public Object compute(IEclipseContext outerContext, String contextKey) {
+ if( outerContext.containsKey("_local_rat") ) {
+ return null;
+ }
+
+ outerContext.set("_local_rat", Boolean.TRUE);
+ outerContext.runAndTrack(new RunAndTrack() {
+
+ @Override
+ public boolean changed(IEclipseContext context) {
+ outerContext.set("activeOutline",createOutline(context));
+ return true;
+ }
+ });
+ return createOutline(outerContext);
+ }
+
+ private Outline createOutline(IEclipseContext context) {
+ Input<?> input = (Input<?>) context.get("activeInput");
+ if( input != null ) {
+ Optional<Outline> outline = context.get(ServiceCollector.class).createOutline(input);
+ if( outline.isPresent() ) {
+ return outline.get();
+ }
+ }
+ return null;
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java
index efae780ff..7baebdb5f 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java
@@ -18,6 +18,8 @@ import org.eclipse.fx.code.compensator.editor.Input;
import org.eclipse.fx.code.compensator.editor.Outline;
import org.eclipse.fx.code.compensator.editor.services.DocumentFactory;
import org.eclipse.fx.code.compensator.editor.services.DocumentPersitenceService;
+import org.eclipse.fx.code.compensator.editor.services.FileIconLookup;
+import org.eclipse.fx.code.compensator.editor.services.FileIconProvider;
import org.eclipse.fx.code.compensator.editor.services.InputFactory;
import org.eclipse.fx.code.compensator.editor.services.OutlineFactory;
import org.eclipse.fx.code.compensator.editor.services.PartitionerFactory;
@@ -26,12 +28,13 @@ import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
-public class ServiceCollector implements DocumentPersitenceService {
+public class ServiceCollector implements DocumentPersitenceService, FileIconLookup {
private List<InputFactory> inputProviderList = new ArrayList<>();
private List<DocumentFactory> documentProvider = new ArrayList<>();
private List<PartitionerFactory> partitionerProvider = new ArrayList<>();
private List<OutlineFactory> outlineFactoryList = new ArrayList<>();
private List<SourceViewerConfigurationFactory> configurationProvider = new ArrayList<>();
+ private List<FileIconProvider> fileIconProvider = new ArrayList<>();
public void addInputFactory(InputFactory provider) {
inputProviderList.add(provider);
@@ -73,6 +76,14 @@ public class ServiceCollector implements DocumentPersitenceService {
outlineFactoryList.remove(factory);
}
+ public void addFileIconProvider(FileIconProvider provider) {
+ fileIconProvider.add(provider);
+ }
+
+ public void removeFileIconProvider(FileIconProvider provider) {
+ fileIconProvider.add(provider);
+ }
+
public <O> Input<O> createInput(String url) {
Optional<Input<O>> map = inputProviderList.stream().filter((p) -> p.applies(url)).findFirst().map((p) -> p.createInput(url));
if( map.isPresent() ) {
@@ -106,6 +117,14 @@ public class ServiceCollector implements DocumentPersitenceService {
return map.get();
}
+ public String getFileIcon(String uri) {
+ Optional<String> map = fileIconProvider.stream().filter((p) -> p.applies(uri)).findFirst().map((p) -> p.getIcon(uri));
+ if( map.isPresent() ) {
+ return map.get();
+ }
+ return null;
+ }
+
@Override
public boolean persist(IDocument d) {
for( DocumentFactory f : documentProvider ) {
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/OSGI-INF/services/javacomponent.xml b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/OSGI-INF/services/javacomponent.xml
index f2b4bbd3e..0734876f1 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/OSGI-INF/services/javacomponent.xml
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/OSGI-INF/services/javacomponent.xml
@@ -4,5 +4,6 @@
<service>
<provide interface="org.eclipse.fx.code.compensator.editor.services.PartitionerFactory"/>
<provide interface="org.eclipse.fx.code.compensator.editor.services.SourceViewerConfigurationFactory"/>
+ <provide interface="org.eclipse.fx.code.compensator.editor.services.FileIconProvider"/>
</service>
</scr:component>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/16/java-file.png b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/16/java-file.png
new file mode 100644
index 000000000..13e0fc257
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/16/java-file.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/java-file.svg b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/java-file.svg
new file mode 100644
index 000000000..260522d23
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/icons/java-file.svg
@@ -0,0 +1,499 @@
+<?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://creativecommons.org/ns#"
+ 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"
+ width="128"
+ height="128"
+ id="svg2606"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.5 r10040"
+ version="1.0"
+ sodipodi:docname="application-x-zerosize.svgz"
+ inkscape:output_extension="org.inkscape.output.svgz.inkscape"
+ inkscape:export-filename="/home/pinheiro/pics/oxygen-icons/scalable/mimetypes/mime2.png"
+ inkscape:export-xdpi="360"
+ inkscape:export-ydpi="360">
+ <defs
+ id="defs2608">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3913">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3915" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3917" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3897">
+ <stop
+ style="stop-color:#fcfcfc;stop-opacity:1"
+ offset="0"
+ id="stop3899" />
+ <stop
+ id="stop3901"
+ offset="0.52275378"
+ style="stop-color:#f8f8f8;stop-opacity:1" />
+ <stop
+ style="stop-color:#f0efef;stop-opacity:1;"
+ offset="0.72337759"
+ id="stop3903" />
+ <stop
+ style="stop-color:#e3e1e1;stop-opacity:1;"
+ offset="0.89024991"
+ id="stop3905" />
+ <stop
+ style="stop-color:#cecbcb;stop-opacity:1"
+ offset="1"
+ id="stop3907" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6131">
+ <stop
+ id="stop6133"
+ offset="0"
+ style="stop-color:#fcfcfc;stop-opacity:1" />
+ <stop
+ style="stop-color:#f8f8f8;stop-opacity:1"
+ offset="0.52275378"
+ id="stop6135" />
+ <stop
+ id="stop6141"
+ offset="0.77457333"
+ style="stop-color:#f0efef;stop-opacity:1;" />
+ <stop
+ id="stop6139"
+ offset="0.90122044"
+ style="stop-color:#e3e1e1;stop-opacity:1;" />
+ <stop
+ id="stop6137"
+ offset="1"
+ style="stop-color:#cecbcb;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5982">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5984" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5986" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4518">
+ <stop
+ style="stop-color:#eeecec;stop-opacity:1"
+ offset="0"
+ id="stop4520" />
+ <stop
+ id="stop5969"
+ offset="0.40000001"
+ style="stop-color:#f4f4f4;stop-opacity:1" />
+ <stop
+ style="stop-color:#f6f5f5;stop-opacity:1"
+ offset="1"
+ id="stop4522" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4518"
+ id="linearGradient4524"
+ x1="72"
+ y1="0"
+ x2="72"
+ y2="116.40091"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5982"
+ id="radialGradient5988"
+ cx="64"
+ cy="64.004021"
+ fx="63.793392"
+ fy="47.274845"
+ r="47.5"
+ gradientTransform="matrix(1.6842105,-0.08429519,0.06886339,1.3758846,-48.197002,-18.663233)"
+ gradientUnits="userSpaceOnUse" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath6093">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccssccc"
+ id="path6095"
+ d="M 17.000001,8 17,120 l 57.5,0 c 1.675283,0 3.914297,-0.56468 7,-3.6 8.870045,-8.72523 20.24047,-19.851805 27.49904,-27.175957 C 111.4396,86.761431 112,84.752873 112,82.5 L 112,8 z"
+ style="fill:#ffffff;fill-opacity:1" />
+ </clipPath>
+ <filter
+ inkscape:collect="always"
+ id="filter6118"
+ x="-0.1126375"
+ width="1.225275"
+ y="-0.12064722"
+ height="1.2412944">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.3860572"
+ id="feGaussianBlur6120" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter6171"
+ x="-0.47870938"
+ width="1.9574188"
+ y="-0.51275067"
+ height="2.0255013">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="10.140743"
+ id="feGaussianBlur6173" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3889">
+ <path
+ sodipodi:nodetypes="cscscssc"
+ inkscape:connector-curvature="0"
+ id="path3891"
+ d="m 112,82.502986 c 0,4.465301 -2.79749,6.409952 -5.27972,8.093625 -5.10854,3.46508 -14.939114,3.32536 -20.720284,3.40638 -0.081,5.781159 0.16586,15.504599 -3.29922,20.613139 -1.68367,2.48224 -5.29051,5.38687 -8.20078,5.38687 2.31803,0 4.74284,-1.33476 7.58402,-4.08481 9.14197,-8.84873 17.36714,-16.13535 25.673154,-25.297529 C 109.67612,88.503916 112,86.97878 112,82.502986 z"
+ style="fill:url(#linearGradient3893);fill-opacity:1;stroke:none" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6131"
+ id="linearGradient3893"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0119858,0,0,1.0119858,-0.89554075,-0.9871566)"
+ x1="86.73793"
+ y1="93.621468"
+ x2="95.460213"
+ y2="102.34375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3897"
+ id="linearGradient3895"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0119858,0,0,1.0119858,-0.89554075,-0.9871566)"
+ x1="86.73793"
+ y1="93.621468"
+ x2="95.18235"
+ y2="102.06589" />
+ <filter
+ inkscape:collect="always"
+ id="filter3909">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.43040059"
+ id="feGaussianBlur3911" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3913"
+ id="radialGradient3919"
+ cx="90.75"
+ cy="110.25299"
+ fx="90.75"
+ fy="110.25299"
+ r="18.750002"
+ gradientTransform="matrix(1.3067347,0,0,1.3067347,-27.83617,-33.818441)"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter3826">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.036"
+ id="feGaussianBlur3828" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter3834">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.50075"
+ id="feGaussianBlur3836" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="113.12969"
+ inkscape:cy="55.534031"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="128px"
+ height="128px"
+ showgrid="false"
+ inkscape:grid-points="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1108"
+ inkscape:window-height="774"
+ inkscape:window-x="553"
+ inkscape:window-y="39"
+ inkscape:snap-global="true"
+ inkscape:window-maximized="0"
+ inkscape:snap-page="true"
+ inkscape:snap-grids="false"
+ inkscape:snap-to-guides="false">
+ <inkscape:grid
+ id="GridFromPre046Settings"
+ type="xygrid"
+ originx="0px"
+ originy="0px"
+ spacingx="1px"
+ spacingy="1px"
+ color="#0000ff"
+ empcolor="#0000ff"
+ opacity="0.2"
+ empopacity="0.4"
+ empspacing="2"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="-68,29.325902"
+ id="guide4564" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="-51.972348,130.81475"
+ id="guide3859" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2611">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="opacity:0.26237623999999998;fill:#000000;fill-opacity:1;filter:url(#filter3834)"
+ d="m 17,8.5 0,112 58.1875,0 c 2.115556,0 4.528919,-1.77169 7,-4.25 0.71234,-0.71442 1.440746,-1.39395 2.15625,-2.09375 0.415612,-0.40649 0.832187,-0.81443 1.25,-1.21875 7.773958,-7.40962 14.98341,-14.022603 22.21875,-22 0.42065,-0.420645 0.81207,-0.811101 1.15625,-1.1875 1.46444,-1.497657 2.76158,-2.837804 2.99375,-5.8625 L 112,83.15625 112,8.5 z"
+ id="path5990"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccsssccccccc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ sodipodi:nodetypes="cccssccc"
+ id="path3722"
+ d="M 17.000001,8 17,120.2 l 57.746418,0 c 4.168166,0 7.728581,-4.85625 20.853582,-17.1 7.48636,-6.9837 10.43958,-10.889428 13.15009,-13.599933 C 110.49334,87.756815 112,86.462557 112,82.3 L 112,8 z"
+ style="fill:#000000;fill-opacity:0.70053478000000002;filter:url(#filter3826)"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:#ffffff;fill-opacity:1"
+ d="M 17.000001,8 17,120 l 57.5,0 c 1.675283,0 3.914297,-0.56468 7,-3.6 8.870045,-8.72523 20.24047,-19.851805 27.49904,-27.175957 C 111.4396,86.761431 112,84.752873 112,82.5 L 112,8 z"
+ id="path34"
+ sodipodi:nodetypes="cccssccc"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:url(#linearGradient4524);fill-opacity:1"
+ d="M 18.5,9 C 18.160156,9 18,9.2346178 18,9.5 l 0,107.96875 c 0,0.82158 0.679323,1.5 1.5,1.5 l 53.6875,0 c 0.05307,0 0.810384,0.0234 1.5,0.0313 1.777664,-0.0401 3.131974,-0.75374 4.356035,-1.59328 1.051866,-0.29103 20.649835,-19.619593 29.770955,-28.809238 1.36239,-1.372621 2.18546,-3.948169 2.18546,-4.895612 L 111,9.5 C 111,9.1772826 110.83678,9 110.5,9 z"
+ id="path3967"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccsssccscccc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ clip-path="url(#clipPath6093)"
+ style="opacity:0.27722772;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter6171)"
+ d="m 114.4,82.502986 c 0,4.465301 -4.99749,6.609952 -7.47972,8.293625 -5.10854,3.46508 -14.739114,3.52536 -20.520284,3.60638 -0.081,5.781159 -0.03414,15.304599 -3.49922,20.413139 -1.68367,2.48224 -5.79051,8.68687 -8.70078,8.68687 -2.091359,1.5337 3.488204,8.21101 6.734971,5.31989 9.501888,-8.46107 35.131683,-30.022704 43.350823,-39.262889 2.04044,-2.29392 -4.90514,-9.844666 -9.88579,-7.057015 z"
+ id="path6153"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscscssc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:#000000"
+ d=""
+ id="path2197" />
+ <g
+ style="display:none"
+ id="Frame_copy"
+ display="none"
+ transform="translate(1042.0419,-279.83386)">
+ <g
+ style="display:inline"
+ display="inline"
+ id="g3978">
+ <image
+ style="opacity:0.75"
+ width="571"
+ height="571"
+ xlink:href="data:image/png;base64,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"
+ id="image3980" />
+ <g
+ id="g3982">
+ <circle
+ sodipodi:ry="275.909"
+ sodipodi:rx="275.909"
+ sodipodi:cy="278.93399"
+ sodipodi:cx="279.51501"
+ cx="279.51501"
+ cy="278.93399"
+ r="275.909"
+ id="circle3984"
+ d="m 555.42401,278.93399 c 0,152.38033 -123.52866,275.909 -275.909,275.909 -152.38033,0 -275.9089919,-123.52867 -275.9089919,-275.909 0,-152.38033 123.5286619,-275.9089961 275.9089919,-275.9089961 152.38034,0 275.909,123.5286661 275.909,275.9089961 z" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="Frame_copy_1_"
+ display="inline" />
+ </g>
+ <g
+ style="display:none"
+ id="Frame_copy_2"
+ display="none"
+ transform="translate(1042.0419,-279.83386)">
+ <circle
+ style="fill:#ffffff;display:inline"
+ sodipodi:ry="275.909"
+ sodipodi:rx="275.909"
+ sodipodi:cy="278.93399"
+ sodipodi:cx="279.51501"
+ display="inline"
+ cx="279.51501"
+ cy="278.93399"
+ r="275.909"
+ id="circle3988"
+ d="m 555.42401,278.93399 c 0,152.38033 -123.52866,275.909 -275.909,275.909 -152.38033,0 -275.9089919,-123.52867 -275.9089919,-275.909 0,-152.38033 123.5286619,-275.9089961 275.9089919,-275.9089961 152.38034,0 275.909,123.5286661 275.909,275.9089961 z" />
+ <g
+ style="display:inline"
+ id="Frame_copy_2_1_"
+ display="inline" />
+ </g>
+ <g
+ id="Foreground_Grid_1_"
+ transform="matrix(0.333692,0,0,0.333692,-610.81394,-151.23635)" />
+ <g
+ id="layer4"
+ inkscape:label="box"
+ style="display:inline"
+ transform="matrix(0.6433923,0,0,0.6433923,563.19164,120.38376)" />
+ <g
+ id="layer5"
+ inkscape:label="zip_app"
+ style="display:inline"
+ transform="matrix(0.6433923,0,0,0.6433923,563.19164,120.38376)" />
+ <rect
+ style="opacity:0.57786889;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="rect1327"
+ width="0.64339232"
+ height="0"
+ x="563.78369"
+ y="130.76021" />
+ <path
+ sodipodi:nodetypes="ccssscccccc"
+ inkscape:connector-curvature="0"
+ id="path5980"
+ d="M 18.5,9 C 18.160156,9 18,9.2346178 18,9.5 l 0,107.96875 c 0,0.82158 0.679323,1.49953 1.5,1.5 L 74,119 c 0.05307,3e-5 3.273884,-0.008 3.9635,5e-5 6.540972,-4.50361 22.6373,-21.953284 31.58253,-30.955094 1.47685,-1.656484 0.4576,-0.370067 1.45391,-1.607456 L 111,9.5 C 111,9.1772826 110.83678,9 110.5,9 z"
+ style="opacity:0.84653476;fill:url(#radialGradient5988);fill-opacity:1"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ sodipodi:nodetypes="cscscssc"
+ inkscape:connector-curvature="0"
+ id="path6081"
+ d="m 113.9,82.502986 c 0,4.465301 -4.49749,6.609952 -6.97972,8.293625 -5.10854,3.46508 -14.739114,3.52536 -20.520284,3.60638 -0.081,5.781159 0.76586,15.304599 -2.69922,20.413139 -1.68367,2.48224 -5.79051,7.98687 -8.70078,7.98687 -2.091359,1.5337 3.488204,11.21101 6.734971,8.31989 9.501888,-8.46107 45.998943,-30.20138 54.218083,-39.441569 2.04044,-2.29392 -17.0724,-11.965986 -22.05305,-9.178335 z"
+ style="opacity:0.40099009;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter6118)"
+ clip-path="url(#clipPath6093)"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:url(#linearGradient3895);fill-opacity:1;stroke:none"
+ d="m 112,82.502986 c 0,4.465301 -2.79749,6.409952 -5.27972,8.093625 -5.10854,3.46508 -14.939114,3.32536 -20.720284,3.40638 -0.081,5.781159 0.16586,15.504599 -3.29922,20.613139 -1.68367,2.48224 -5.29051,5.38687 -8.20078,5.38687 2.31803,0 4.74284,-1.33476 7.58402,-4.08481 9.14197,-8.84873 17.36714,-16.13535 25.673154,-25.297529 C 109.67612,88.503916 112,86.97878 112,82.502986 z"
+ id="path6011"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscscssc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 112.01875,83.2125 c -0.31643,3.899106 -3.52291,5.902807 -5.85,7.48125 C 101.06021,94.15883 90.83117,93.01898 85.05,93.1 c -0.081,5.781159 0.85258,16.31646 -2.6125,21.425 -1.473211,2.17196 -4.099456,4.6601 -6.7625,5.25 1.980459,-0.3623 3.884931,-1.66139 6.26875,-3.96875 0.339117,-0.38853 0.574297,-0.67895 1.10625,-1.5 3.46508,-5.10854 2.923687,-14.465715 3.004687,-20.246875 5.78117,-0.08102 15.718023,0.211955 20.826563,-3.253125 0.46542,-0.315689 1.59399,-1.187744 2.00625,-1.6 1.53629,-1.536293 2.90171,-2.613421 3.13125,-5.99375 z M 75.675,119.775 c -0.157658,0.0349 -0.313437,0.0414 -0.46875,0.0625 0.156991,-0.0169 0.310443,-0.0335 0.46875,-0.0625 z"
+ id="path6122"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscsccccsscccc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:none;stroke:url(#radialGradient3919);stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter3909)"
+ d="M 117.31456,81.861283 72.639105,125.34835"
+ id="path3873"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ clip-path="url(#clipPath3889)"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <rect
+ style="opacity:0.01;fill:#fbfbfb;fill-opacity:0.00392157000000000;stroke:none"
+ id="rect3915"
+ width="128"
+ height="128"
+ x="0"
+ y="-1.7084319e-12"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2ca02c;fill-opacity:1;stroke:none;font-family:Sans"
+ x="46"
+ y="92.5"
+ id="text3051"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25"><tspan
+ sodipodi:role="line"
+ id="tspan3053"
+ x="46"
+ y="92.5"
+ style="font-size:90px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Verdana;-inkscape-font-specification:Verdana;fill:#2ca02c">J</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/src/org/eclipse/fx/code/compensator/editor/java/JavaComponent.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/src/org/eclipse/fx/code/compensator/editor/java/JavaComponent.java
index 92952ff9b..ada755c0b 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/src/org/eclipse/fx/code/compensator/editor/java/JavaComponent.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.java/src/org/eclipse/fx/code/compensator/editor/java/JavaComponent.java
@@ -10,17 +10,20 @@
*******************************************************************************/
package org.eclipse.fx.code.compensator.editor.java;
+import java.net.URISyntaxException;
+
import org.eclipse.fx.code.compensator.editor.ContentTypeProvider;
import org.eclipse.fx.code.compensator.editor.Input;
import org.eclipse.fx.code.compensator.editor.java.scanner.FastJavaPartitionScanner;
import org.eclipse.fx.code.compensator.editor.java.scanner.IJavaPartitions;
+import org.eclipse.fx.code.compensator.editor.services.FileIconProvider;
import org.eclipse.fx.code.compensator.editor.services.PartitionerFactory;
import org.eclipse.fx.code.compensator.editor.services.SourceViewerConfigurationFactory;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
-public class JavaComponent implements PartitionerFactory, SourceViewerConfigurationFactory {
+public class JavaComponent implements PartitionerFactory, SourceViewerConfigurationFactory, FileIconProvider {
private final static String[] LEGAL_CONTENT_TYPES= new String[] {
IJavaPartitions.JAVA_DOC,
IJavaPartitions.JAVA_MULTI_LINE_COMMENT,
@@ -49,4 +52,13 @@ public class JavaComponent implements PartitionerFactory, SourceViewerConfigurat
LEGAL_CONTENT_TYPES);
}
-}
+ @Override
+ public boolean applies(String uri) {
+ return uri.endsWith(".java");
+ }
+
+ @Override
+ public String getIcon(String uri) {
+ return "platform:/plugin/org.eclipse.fx.code.compensator.editor.java/icons/16/java-file.png";
+ }
+} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/OSGI-INF/services/javascriptcomponent.xml b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/OSGI-INF/services/javascriptcomponent.xml
index 0f981322c..3d6e554b8 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/OSGI-INF/services/javascriptcomponent.xml
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/OSGI-INF/services/javascriptcomponent.xml
@@ -4,5 +4,6 @@
<service>
<provide interface="org.eclipse.fx.code.compensator.editor.services.PartitionerFactory"/>
<provide interface="org.eclipse.fx.code.compensator.editor.services.SourceViewerConfigurationFactory"/>
+ <provide interface="org.eclipse.fx.code.compensator.editor.services.FileIconProvider"/>
</service>
-</scr:component> \ No newline at end of file
+</scr:component>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/16/js-file.png b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/16/js-file.png
new file mode 100644
index 000000000..14a86703e
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/16/js-file.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/js-file.svg b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/js-file.svg
new file mode 100644
index 000000000..eb4e4ce3e
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/icons/js-file.svg
@@ -0,0 +1,499 @@
+<?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://creativecommons.org/ns#"
+ 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"
+ width="128"
+ height="128"
+ id="svg2606"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.5 r10040"
+ version="1.0"
+ sodipodi:docname="js-file.svg"
+ inkscape:output_extension="org.inkscape.output.svgz.inkscape"
+ inkscape:export-filename="/home/pinheiro/pics/oxygen-icons/scalable/mimetypes/mime2.png"
+ inkscape:export-xdpi="360"
+ inkscape:export-ydpi="360">
+ <defs
+ id="defs2608">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3913">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3915" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3917" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3897">
+ <stop
+ style="stop-color:#fcfcfc;stop-opacity:1"
+ offset="0"
+ id="stop3899" />
+ <stop
+ id="stop3901"
+ offset="0.52275378"
+ style="stop-color:#f8f8f8;stop-opacity:1" />
+ <stop
+ style="stop-color:#f0efef;stop-opacity:1;"
+ offset="0.72337759"
+ id="stop3903" />
+ <stop
+ style="stop-color:#e3e1e1;stop-opacity:1;"
+ offset="0.89024991"
+ id="stop3905" />
+ <stop
+ style="stop-color:#cecbcb;stop-opacity:1"
+ offset="1"
+ id="stop3907" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6131">
+ <stop
+ id="stop6133"
+ offset="0"
+ style="stop-color:#fcfcfc;stop-opacity:1" />
+ <stop
+ style="stop-color:#f8f8f8;stop-opacity:1"
+ offset="0.52275378"
+ id="stop6135" />
+ <stop
+ id="stop6141"
+ offset="0.77457333"
+ style="stop-color:#f0efef;stop-opacity:1;" />
+ <stop
+ id="stop6139"
+ offset="0.90122044"
+ style="stop-color:#e3e1e1;stop-opacity:1;" />
+ <stop
+ id="stop6137"
+ offset="1"
+ style="stop-color:#cecbcb;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5982">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5984" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5986" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4518">
+ <stop
+ style="stop-color:#eeecec;stop-opacity:1"
+ offset="0"
+ id="stop4520" />
+ <stop
+ id="stop5969"
+ offset="0.40000001"
+ style="stop-color:#f4f4f4;stop-opacity:1" />
+ <stop
+ style="stop-color:#f6f5f5;stop-opacity:1"
+ offset="1"
+ id="stop4522" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4518"
+ id="linearGradient4524"
+ x1="72"
+ y1="0"
+ x2="72"
+ y2="116.40091"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5982"
+ id="radialGradient5988"
+ cx="64"
+ cy="64.004021"
+ fx="63.793392"
+ fy="47.274845"
+ r="47.5"
+ gradientTransform="matrix(1.6842105,-0.08429519,0.06886339,1.3758846,-48.197002,-18.663233)"
+ gradientUnits="userSpaceOnUse" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath6093">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccssccc"
+ id="path6095"
+ d="M 17.000001,8 17,120 l 57.5,0 c 1.675283,0 3.914297,-0.56468 7,-3.6 8.870045,-8.72523 20.24047,-19.851805 27.49904,-27.175957 C 111.4396,86.761431 112,84.752873 112,82.5 L 112,8 z"
+ style="fill:#ffffff;fill-opacity:1" />
+ </clipPath>
+ <filter
+ inkscape:collect="always"
+ id="filter6118"
+ x="-0.1126375"
+ width="1.225275"
+ y="-0.12064722"
+ height="1.2412944">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.3860572"
+ id="feGaussianBlur6120" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter6171"
+ x="-0.47870938"
+ width="1.9574188"
+ y="-0.51275067"
+ height="2.0255013">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="10.140743"
+ id="feGaussianBlur6173" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3889">
+ <path
+ sodipodi:nodetypes="cscscssc"
+ inkscape:connector-curvature="0"
+ id="path3891"
+ d="m 112,82.502986 c 0,4.465301 -2.79749,6.409952 -5.27972,8.093625 -5.10854,3.46508 -14.939114,3.32536 -20.720284,3.40638 -0.081,5.781159 0.16586,15.504599 -3.29922,20.613139 -1.68367,2.48224 -5.29051,5.38687 -8.20078,5.38687 2.31803,0 4.74284,-1.33476 7.58402,-4.08481 9.14197,-8.84873 17.36714,-16.13535 25.673154,-25.297529 C 109.67612,88.503916 112,86.97878 112,82.502986 z"
+ style="fill:url(#linearGradient3893);fill-opacity:1;stroke:none" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6131"
+ id="linearGradient3893"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0119858,0,0,1.0119858,-0.89554075,-0.9871566)"
+ x1="86.73793"
+ y1="93.621468"
+ x2="95.460213"
+ y2="102.34375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3897"
+ id="linearGradient3895"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0119858,0,0,1.0119858,-0.89554075,-0.9871566)"
+ x1="86.73793"
+ y1="93.621468"
+ x2="95.18235"
+ y2="102.06589" />
+ <filter
+ inkscape:collect="always"
+ id="filter3909">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.43040059"
+ id="feGaussianBlur3911" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3913"
+ id="radialGradient3919"
+ cx="90.75"
+ cy="110.25299"
+ fx="90.75"
+ fy="110.25299"
+ r="18.750002"
+ gradientTransform="matrix(1.3067347,0,0,1.3067347,-27.83617,-33.818441)"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter3826">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.036"
+ id="feGaussianBlur3828" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter3834">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.50075"
+ id="feGaussianBlur3836" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="113.12969"
+ inkscape:cy="55.534031"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="128px"
+ height="128px"
+ showgrid="false"
+ inkscape:grid-points="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1108"
+ inkscape:window-height="774"
+ inkscape:window-x="438"
+ inkscape:window-y="144"
+ inkscape:snap-global="true"
+ inkscape:window-maximized="0"
+ inkscape:snap-page="true"
+ inkscape:snap-grids="false"
+ inkscape:snap-to-guides="false">
+ <inkscape:grid
+ id="GridFromPre046Settings"
+ type="xygrid"
+ originx="0px"
+ originy="0px"
+ spacingx="1px"
+ spacingy="1px"
+ color="#0000ff"
+ empcolor="#0000ff"
+ opacity="0.2"
+ empopacity="0.4"
+ empspacing="2"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="-68,29.325902"
+ id="guide4564" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="-51.972348,130.81475"
+ id="guide3859" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2611">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="opacity:0.26237623999999998;fill:#000000;fill-opacity:1;filter:url(#filter3834)"
+ d="m 17,8.5 0,112 58.1875,0 c 2.115556,0 4.528919,-1.77169 7,-4.25 0.71234,-0.71442 1.440746,-1.39395 2.15625,-2.09375 0.415612,-0.40649 0.832187,-0.81443 1.25,-1.21875 7.773958,-7.40962 14.98341,-14.022603 22.21875,-22 0.42065,-0.420645 0.81207,-0.811101 1.15625,-1.1875 1.46444,-1.497657 2.76158,-2.837804 2.99375,-5.8625 L 112,83.15625 112,8.5 z"
+ id="path5990"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccsssccccccc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ sodipodi:nodetypes="cccssccc"
+ id="path3722"
+ d="M 17.000001,8 17,120.2 l 57.746418,0 c 4.168166,0 7.728581,-4.85625 20.853582,-17.1 7.48636,-6.9837 10.43958,-10.889428 13.15009,-13.599933 C 110.49334,87.756815 112,86.462557 112,82.3 L 112,8 z"
+ style="fill:#000000;fill-opacity:0.70053478000000002;filter:url(#filter3826)"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:#ffffff;fill-opacity:1"
+ d="M 17.000001,8 17,120 l 57.5,0 c 1.675283,0 3.914297,-0.56468 7,-3.6 8.870045,-8.72523 20.24047,-19.851805 27.49904,-27.175957 C 111.4396,86.761431 112,84.752873 112,82.5 L 112,8 z"
+ id="path34"
+ sodipodi:nodetypes="cccssccc"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:url(#linearGradient4524);fill-opacity:1"
+ d="M 18.5,9 C 18.160156,9 18,9.2346178 18,9.5 l 0,107.96875 c 0,0.82158 0.679323,1.5 1.5,1.5 l 53.6875,0 c 0.05307,0 0.810384,0.0234 1.5,0.0313 1.777664,-0.0401 3.131974,-0.75374 4.356035,-1.59328 1.051866,-0.29103 20.649835,-19.619593 29.770955,-28.809238 1.36239,-1.372621 2.18546,-3.948169 2.18546,-4.895612 L 111,9.5 C 111,9.1772826 110.83678,9 110.5,9 z"
+ id="path3967"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccsssccscccc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ clip-path="url(#clipPath6093)"
+ style="opacity:0.27722772;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter6171)"
+ d="m 114.4,82.502986 c 0,4.465301 -4.99749,6.609952 -7.47972,8.293625 -5.10854,3.46508 -14.739114,3.52536 -20.520284,3.60638 -0.081,5.781159 -0.03414,15.304599 -3.49922,20.413139 -1.68367,2.48224 -5.79051,8.68687 -8.70078,8.68687 -2.091359,1.5337 3.488204,8.21101 6.734971,5.31989 9.501888,-8.46107 35.131683,-30.022704 43.350823,-39.262889 2.04044,-2.29392 -4.90514,-9.844666 -9.88579,-7.057015 z"
+ id="path6153"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscscssc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:#000000"
+ d=""
+ id="path2197" />
+ <g
+ style="display:none"
+ id="Frame_copy"
+ display="none"
+ transform="translate(1042.0419,-279.83386)">
+ <g
+ style="display:inline"
+ display="inline"
+ id="g3978">
+ <image
+ style="opacity:0.75"
+ width="571"
+ height="571"
+ xlink:href="data:image/png;base64,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"
+ id="image3980" />
+ <g
+ id="g3982">
+ <circle
+ sodipodi:ry="275.909"
+ sodipodi:rx="275.909"
+ sodipodi:cy="278.93399"
+ sodipodi:cx="279.51501"
+ cx="279.51501"
+ cy="278.93399"
+ r="275.909"
+ id="circle3984"
+ d="m 555.42401,278.93399 c 0,152.38033 -123.52866,275.909 -275.909,275.909 -152.38033,0 -275.9089919,-123.52867 -275.9089919,-275.909 0,-152.38033 123.5286619,-275.9089961 275.9089919,-275.9089961 152.38034,0 275.909,123.5286661 275.909,275.9089961 z" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="Frame_copy_1_"
+ display="inline" />
+ </g>
+ <g
+ style="display:none"
+ id="Frame_copy_2"
+ display="none"
+ transform="translate(1042.0419,-279.83386)">
+ <circle
+ style="fill:#ffffff;display:inline"
+ sodipodi:ry="275.909"
+ sodipodi:rx="275.909"
+ sodipodi:cy="278.93399"
+ sodipodi:cx="279.51501"
+ display="inline"
+ cx="279.51501"
+ cy="278.93399"
+ r="275.909"
+ id="circle3988"
+ d="m 555.42401,278.93399 c 0,152.38033 -123.52866,275.909 -275.909,275.909 -152.38033,0 -275.9089919,-123.52867 -275.9089919,-275.909 0,-152.38033 123.5286619,-275.9089961 275.9089919,-275.9089961 152.38034,0 275.909,123.5286661 275.909,275.9089961 z" />
+ <g
+ style="display:inline"
+ id="Frame_copy_2_1_"
+ display="inline" />
+ </g>
+ <g
+ id="Foreground_Grid_1_"
+ transform="matrix(0.333692,0,0,0.333692,-610.81394,-151.23635)" />
+ <g
+ id="layer4"
+ inkscape:label="box"
+ style="display:inline"
+ transform="matrix(0.6433923,0,0,0.6433923,563.19164,120.38376)" />
+ <g
+ id="layer5"
+ inkscape:label="zip_app"
+ style="display:inline"
+ transform="matrix(0.6433923,0,0,0.6433923,563.19164,120.38376)" />
+ <rect
+ style="opacity:0.57786889;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="rect1327"
+ width="0.64339232"
+ height="0"
+ x="563.78369"
+ y="130.76021" />
+ <path
+ sodipodi:nodetypes="ccssscccccc"
+ inkscape:connector-curvature="0"
+ id="path5980"
+ d="M 18.5,9 C 18.160156,9 18,9.2346178 18,9.5 l 0,107.96875 c 0,0.82158 0.679323,1.49953 1.5,1.5 L 74,119 c 0.05307,3e-5 3.273884,-0.008 3.9635,5e-5 6.540972,-4.50361 22.6373,-21.953284 31.58253,-30.955094 1.47685,-1.656484 0.4576,-0.370067 1.45391,-1.607456 L 111,9.5 C 111,9.1772826 110.83678,9 110.5,9 z"
+ style="opacity:0.84653476;fill:url(#radialGradient5988);fill-opacity:1"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ sodipodi:nodetypes="cscscssc"
+ inkscape:connector-curvature="0"
+ id="path6081"
+ d="m 113.9,82.502986 c 0,4.465301 -4.49749,6.609952 -6.97972,8.293625 -5.10854,3.46508 -14.739114,3.52536 -20.520284,3.60638 -0.081,5.781159 0.76586,15.304599 -2.69922,20.413139 -1.68367,2.48224 -5.79051,7.98687 -8.70078,7.98687 -2.091359,1.5337 3.488204,11.21101 6.734971,8.31989 9.501888,-8.46107 45.998943,-30.20138 54.218083,-39.441569 2.04044,-2.29392 -17.0724,-11.965986 -22.05305,-9.178335 z"
+ style="opacity:0.40099009;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter6118)"
+ clip-path="url(#clipPath6093)"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:url(#linearGradient3895);fill-opacity:1;stroke:none"
+ d="m 112,82.502986 c 0,4.465301 -2.79749,6.409952 -5.27972,8.093625 -5.10854,3.46508 -14.939114,3.32536 -20.720284,3.40638 -0.081,5.781159 0.16586,15.504599 -3.29922,20.613139 -1.68367,2.48224 -5.29051,5.38687 -8.20078,5.38687 2.31803,0 4.74284,-1.33476 7.58402,-4.08481 9.14197,-8.84873 17.36714,-16.13535 25.673154,-25.297529 C 109.67612,88.503916 112,86.97878 112,82.502986 z"
+ id="path6011"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscscssc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ d="m 112.01875,83.2125 c -0.31643,3.899106 -3.52291,5.902807 -5.85,7.48125 C 101.06021,94.15883 90.83117,93.01898 85.05,93.1 c -0.081,5.781159 0.85258,16.31646 -2.6125,21.425 -1.473211,2.17196 -4.099456,4.6601 -6.7625,5.25 1.980459,-0.3623 3.884931,-1.66139 6.26875,-3.96875 0.339117,-0.38853 0.574297,-0.67895 1.10625,-1.5 3.46508,-5.10854 2.923687,-14.465715 3.004687,-20.246875 5.78117,-0.08102 15.718023,0.211955 20.826563,-3.253125 0.46542,-0.315689 1.59399,-1.187744 2.00625,-1.6 1.53629,-1.536293 2.90171,-2.613421 3.13125,-5.99375 z M 75.675,119.775 c -0.157658,0.0349 -0.313437,0.0414 -0.46875,0.0625 0.156991,-0.0169 0.310443,-0.0335 0.46875,-0.0625 z"
+ id="path6122"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscsccccsscccc"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <path
+ style="fill:none;stroke:url(#radialGradient3919);stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter3909)"
+ d="M 117.31456,81.861283 72.639105,125.34835"
+ id="path3873"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ clip-path="url(#clipPath3889)"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <rect
+ style="opacity:0.01;fill:#fbfbfb;fill-opacity:0.00392157000000000;stroke:none"
+ id="rect3915"
+ width="128"
+ height="128"
+ x="0"
+ y="-1.7084319e-12"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#2ca02c;fill-opacity:1;stroke:none;font-family:Sans"
+ x="28"
+ y="86"
+ id="text3051"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/Users/tomschindl/java-file.png"
+ inkscape:export-xdpi="11.25"
+ inkscape:export-ydpi="11.25"><tspan
+ sodipodi:role="line"
+ id="tspan3053"
+ x="28"
+ y="86"
+ style="font-size:70px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;font-family:Verdana;-inkscape-font-specification:Verdana">JS</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/src/org/eclipse/fx/code/compensator/editor/js/JavaScriptComponent.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/src/org/eclipse/fx/code/compensator/editor/js/JavaScriptComponent.java
index afb52ee0b..ec487c84b 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/src/org/eclipse/fx/code/compensator/editor/js/JavaScriptComponent.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.js/src/org/eclipse/fx/code/compensator/editor/js/JavaScriptComponent.java
@@ -14,13 +14,14 @@ import org.eclipse.fx.code.compensator.editor.ContentTypeProvider;
import org.eclipse.fx.code.compensator.editor.Input;
import org.eclipse.fx.code.compensator.editor.js.scanner.FastJavaScriptPartitionScanner;
import org.eclipse.fx.code.compensator.editor.js.scanner.IJavaScriptPartitions;
+import org.eclipse.fx.code.compensator.editor.services.FileIconProvider;
import org.eclipse.fx.code.compensator.editor.services.PartitionerFactory;
import org.eclipse.fx.code.compensator.editor.services.SourceViewerConfigurationFactory;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
-public class JavaScriptComponent implements PartitionerFactory, SourceViewerConfigurationFactory {
+public class JavaScriptComponent implements PartitionerFactory, SourceViewerConfigurationFactory, FileIconProvider {
private final static String[] LEGAL_CONTENT_TYPES= new String[] {
IJavaScriptPartitions.JAVA_DOC,
IJavaScriptPartitions.JAVA_MULTI_LINE_COMMENT,
@@ -48,4 +49,14 @@ public class JavaScriptComponent implements PartitionerFactory, SourceViewerConf
new FastJavaScriptPartitionScanner(),
LEGAL_CONTENT_TYPES);
}
+
+ @Override
+ public boolean applies(String uri) {
+ return uri.endsWith(".js");
+ }
+
+ @Override
+ public String getIcon(String uri) {
+ return "platform:/plugin/org.eclipse.fx.code.compensator.editor.js/icons/16/js-file.png";
+ }
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/ContentTypeProvider.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/ContentTypeProvider.java
index ad888e3c4..b184fcbc7 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/ContentTypeProvider.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/ContentTypeProvider.java
@@ -17,5 +17,6 @@ public interface ContentTypeProvider {
public static final String GROOVY = "text/groovy";
public static final String HSL = "text/hsl";
public static final String LEGO = "text/lego";
+
public String getContentType();
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/Outline.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/Outline.java
index c03b9bfa0..f46b702f6 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/Outline.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/Outline.java
@@ -18,7 +18,7 @@ public interface Outline {
public ObservableList<OutlineItem> getRootItems();
public interface OutlineItem {
- public String getLabel();
+ public CharSequence getLabel();
public List<String> getStyle();
public ObservableList<OutlineItem> getChildren();
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconLookup.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconLookup.java
new file mode 100644
index 000000000..cd61c5fce
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconLookup.java
@@ -0,0 +1,5 @@
+package org.eclipse.fx.code.compensator.editor.services;
+
+public interface FileIconLookup {
+ public String getFileIcon(String uri);
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconProvider.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconProvider.java
new file mode 100644
index 000000000..bf4ee131d
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor/src/org/eclipse/fx/code/compensator/editor/services/FileIconProvider.java
@@ -0,0 +1,6 @@
+package org.eclipse.fx.code.compensator.editor.services;
+
+public interface FileIconProvider {
+ public boolean applies(String uri);
+ public String getIcon(String uri);
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.classpath b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.classpath
new file mode 100644
index 000000000..a473f2b23
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <accessrules>
+ <accessrule kind="accessible" pattern="jdk/nashorn/internal/**"/>
+ </accessrules>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.gitignore b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.gitignore
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.project b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.project
new file mode 100644
index 000000000..95b066f60
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fx.code.compensator.nashorn.qx</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.settings/org.eclipse.jdt.core.prefs b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..dbc15e461
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Qx
+Bundle-SymbolicName: org.eclipse.fx.code.compensator.nashorn.qx;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.fx.code.compensator.nashorn,
+ org.eclipse.fx.code.compensator.editor,
+ org.eclipse.fx.ui.theme;bundle-version="1.2.0"
+Service-Component: OSGI-INF/services/qxnashornoutlineext.xml
+Bundle-ActivationPolicy: lazy
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/OSGI-INF/services/qxnashornoutlineext.xml b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/OSGI-INF/services/qxnashornoutlineext.xml
new file mode 100644
index 000000000..43c4985e9
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/OSGI-INF/services/qxnashornoutlineext.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.fx.code.compensator.nashorn.qx.qxnashornoutlineext">
+ <implementation class="org.eclipse.fx.code.compensator.nashorn.qx.QxOutlineExtension"/>
+ <service>
+ <provide interface="org.eclipse.fx.code.compensator.nashorn.JSOutlineExtension"/>
+ </service>
+</scr:component>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/build.properties b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/build.properties
new file mode 100644
index 000000000..eaeffa234
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/build.properties
@@ -0,0 +1,6 @@
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/services/qxnashornoutlineext.xml,\
+ plugin.xml
+source.. = src/
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/default.css b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/default.css
new file mode 100644
index 000000000..8db12df42
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/default.css
@@ -0,0 +1,35 @@
+.qx-property-public {
+ -fx-graphic: url("icons/property-public.png");
+}
+
+.qx-property-protected {
+ -fx-graphic: url("icons/property-protected.png");
+}
+
+.qx-property-private {
+ -fx-graphic: url("icons/property-private.png");
+}
+
+.qx-method-public {
+ -fx-graphic: url("icons/method-public.png");
+}
+
+.qx-method-protected {
+ -fx-graphic: url("icons/method-protected.png");
+}
+
+.qx-method-private {
+ -fx-graphic: url("icons/method-private.png");
+}
+
+.qx-field-public {
+ -fx-graphic: url("icons/field-public.png");
+}
+
+.qx-field-protected {
+ -fx-graphic: url("icons/field-protected.png");
+}
+
+.qx-field-private {
+ -fx-graphic: url("icons/field-private.png");
+} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.png
new file mode 100644
index 000000000..7ab030ad4
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.svg
new file mode 100644
index 000000000..54dfd7af3
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="field-private.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-private.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="891"
+ inkscape:window-y="272"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#c83737"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="307.78568"
+ y="399.64792"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="307.78568"
+ y="399.64792"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">F</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.png
new file mode 100644
index 000000000..6d50ff701
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.svg
new file mode 100644
index 000000000..9bd56590b
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="field-protected.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-protected.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="891"
+ inkscape:window-y="272"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#ff7f2a"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="307.78568"
+ y="397.64792"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="307.78568"
+ y="397.64792"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">F</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.png
new file mode 100644
index 000000000..cc55460f6
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.svg
new file mode 100644
index 000000000..4956aa56b
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="field-public.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/field-public.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="679"
+ inkscape:window-y="247"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#5aa02c"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="305.78568"
+ y="397.64792"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="305.78568"
+ y="397.64792"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">F</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.png
new file mode 100644
index 000000000..0f4f14b2b
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.svg
new file mode 100644
index 000000000..1bb8b1869
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="method-private.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-private.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="891"
+ inkscape:window-y="272"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#c83737"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="290.78568"
+ y="395.71936"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="290.78568"
+ y="395.71936"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">M</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.png
new file mode 100644
index 000000000..8d3157ed1
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.svg
new file mode 100644
index 000000000..cd8deb0e6
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="method-protected.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-protected.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="393"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#ff7f2a"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="290.78568"
+ y="397.71936"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="290.78568"
+ y="397.71936"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">M</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.png
new file mode 100644
index 000000000..d98b8ce30
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.svg
new file mode 100644
index 000000000..1025f6979
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="method-public.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/method-public.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="891"
+ inkscape:window-y="272"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#5aa02c"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="290.78568"
+ y="395.71936"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="290.78568"
+ y="395.71936"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">M</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.png b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.png
new file mode 100644
index 000000000..5a277db2a
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.svg b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.svg
new file mode 100644
index 000000000..89a232f9a
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.svg
@@ -0,0 +1,80 @@
+<?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://creativecommons.org/ns#"
+ 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg3072"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="property-public.svg"
+ inkscape:export-filename="/Users/tomschindl/Documents/e-workspaces/efxclipse-ide/org.eclipse.fx.code.compensator.nashorn.qx/css/icons/property-public.png"
+ inkscape:export-xdpi="8.7700005"
+ inkscape:export-ydpi="8.7700005">
+ <defs
+ id="defs3074" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="350"
+ inkscape:cy="682.16883"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="854"
+ inkscape:window-height="733"
+ inkscape:window-x="679"
+ inkscape:window-y="247"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3077">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="fill:#5aa02c"
+ id="path3091"
+ sodipodi:cx="339.64285"
+ sodipodi:cy="373.79074"
+ sodipodi:rx="56.785713"
+ sodipodi:ry="56.785713"
+ d="m 396.42857,373.79074 a 56.785713,56.785713 0 1 1 -113.57143,0 56.785713,56.785713 0 1 1 113.57143,0 z"
+ transform="matrix(1.0849057,0,0,1.0849057,-34.016173,-41.558379)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.78568"
+ y="395.64792"
+ id="text3117"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3119"
+ x="303.78568"
+ y="395.64792"
+ style="font-size:90px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold">P</tspan></text>
+ </g>
+</svg>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/plugin.xml b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/plugin.xml
new file mode 100644
index 000000000..ddf6a8e97
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.fx.ui.theme">
+ <stylesheet
+ resource="css/default.css">
+ </stylesheet>
+ </extension>
+
+</plugin>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/src/org/eclipse/fx/code/compensator/nashorn/qx/QxOutlineExtension.java b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/src/org/eclipse/fx/code/compensator/nashorn/qx/QxOutlineExtension.java
new file mode 100644
index 000000000..868a56e7e
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.nashorn.qx/src/org/eclipse/fx/code/compensator/nashorn/qx/QxOutlineExtension.java
@@ -0,0 +1,150 @@
+package org.eclipse.fx.code.compensator.nashorn.qx;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jdk.nashorn.internal.ir.AccessNode;
+import jdk.nashorn.internal.ir.BinaryNode;
+import jdk.nashorn.internal.ir.Block;
+import jdk.nashorn.internal.ir.BlockStatement;
+import jdk.nashorn.internal.ir.BreakNode;
+import jdk.nashorn.internal.ir.CallNode;
+import jdk.nashorn.internal.ir.CaseNode;
+import jdk.nashorn.internal.ir.CatchNode;
+import jdk.nashorn.internal.ir.ContinueNode;
+import jdk.nashorn.internal.ir.EmptyNode;
+import jdk.nashorn.internal.ir.ExpressionStatement;
+import jdk.nashorn.internal.ir.ForNode;
+import jdk.nashorn.internal.ir.FunctionNode;
+import jdk.nashorn.internal.ir.GetSplitState;
+import jdk.nashorn.internal.ir.IdentNode;
+import jdk.nashorn.internal.ir.IfNode;
+import jdk.nashorn.internal.ir.IndexNode;
+import jdk.nashorn.internal.ir.JoinPredecessorExpression;
+import jdk.nashorn.internal.ir.LabelNode;
+import jdk.nashorn.internal.ir.LexicalContext;
+import jdk.nashorn.internal.ir.LiteralNode;
+import jdk.nashorn.internal.ir.Node;
+import jdk.nashorn.internal.ir.ObjectNode;
+import jdk.nashorn.internal.ir.PropertyNode;
+import jdk.nashorn.internal.ir.ReturnNode;
+import jdk.nashorn.internal.ir.RuntimeNode;
+import jdk.nashorn.internal.ir.SetSplitState;
+import jdk.nashorn.internal.ir.SplitNode;
+import jdk.nashorn.internal.ir.SplitReturn;
+import jdk.nashorn.internal.ir.SwitchNode;
+import jdk.nashorn.internal.ir.TernaryNode;
+import jdk.nashorn.internal.ir.ThrowNode;
+import jdk.nashorn.internal.ir.TryNode;
+import jdk.nashorn.internal.ir.UnaryNode;
+import jdk.nashorn.internal.ir.VarNode;
+import jdk.nashorn.internal.ir.WhileNode;
+import jdk.nashorn.internal.ir.WithNode;
+import jdk.nashorn.internal.ir.visitor.NodeVisitor;
+
+import org.eclipse.fx.code.compensator.editor.Input;
+import org.eclipse.fx.code.compensator.nashorn.JSOutline;
+import org.eclipse.fx.code.compensator.nashorn.JSOutlineExtension;
+import org.eclipse.fx.code.compensator.nashorn.JSOutlineItem;
+
+public class QxOutlineExtension implements JSOutlineExtension {
+
+ @Override
+ public boolean applies(Input<?> input) {
+ return input.getData().toString().contains("qx.Class.define");
+ }
+
+ @Override
+ public JSOutline createOutline(FunctionNode node) {
+ JSOutlineItem root = new JSOutlineItem("<root>",null);
+
+ node.accept(new NodeVisitor<LexicalContext>(new LexicalContext()) {
+ private JSOutlineItem classDef;
+
+ @Override
+ public boolean enterCallNode(CallNode callNode) {
+ if( callNode.getFunction().toString().endsWith("qx.Class.define") ) {
+ classDef = new JSOutlineItem(((LiteralNode<?>)callNode.getArgs().get(0)).getString(), "qx-class-def");
+ root.getChildren().add(classDef);
+ }
+ return super.enterCallNode(callNode);
+ }
+
+ @Override
+ public boolean enterPropertyNode(PropertyNode propertyNode) {
+ if( classDef != null ) {
+ switch (propertyNode.getKeyName()) {
+ case "include":
+ break;
+ case "extend":
+ break;
+ case "construct":
+ break;
+ case "statics":
+ break;
+ case "events":
+ break;
+ case "properties":
+ classDef.getChildren().add(handleProperties(propertyNode));
+ break;
+ case "members":
+ classDef.getChildren().add(handleMembers(propertyNode));
+ break;
+ default:
+ break;
+ }
+ }
+ return super.enterPropertyNode(propertyNode);
+ }
+ });
+ return new JSOutline(root);
+ }
+
+ private JSOutlineItem handleProperties(PropertyNode p) {
+ JSOutlineItem outline = new JSOutlineItem("Properties", "qx-properties");
+ p.accept(new NodeVisitor<LexicalContext>(new LexicalContext()) {
+ @Override
+ public boolean enterPropertyNode(PropertyNode propertyNode) {
+ if( p != propertyNode ) {
+ outline.getChildren().add(new JSOutlineItem(propertyNode.getKeyName(), "qx-property-"+visibility(propertyNode.getKeyName())));
+ return false;
+ }
+
+ return true;
+ }
+ });
+ return outline;
+ }
+
+ private JSOutlineItem handleMembers(PropertyNode p) {
+ JSOutlineItem outline = new JSOutlineItem("Members", "qx-members");
+ p.accept(new NodeVisitor<LexicalContext>(new LexicalContext()) {
+ @Override
+ public boolean enterPropertyNode(PropertyNode propertyNode) {
+ if( p != propertyNode ) {
+ if( propertyNode.getValue() instanceof FunctionNode ) {
+ outline.getChildren().add(new JSOutlineItem(propertyNode.getKeyName()+"()","qx-method-"+visibility(propertyNode.getKeyName())));
+ } else if( propertyNode.getValue() instanceof ObjectNode ) {
+ outline.getChildren().add(new JSOutlineItem(propertyNode.getKeyName(),"qx-field-"+visibility(propertyNode.getKeyName())));
+ } else if( propertyNode.getValue() instanceof LiteralNode<?> ) {
+ outline.getChildren().add(new JSOutlineItem(propertyNode.getKeyName(),"qx-field-"+visibility(propertyNode.getKeyName())));
+ } else {
+ System.err.println("Unknown value type: " + propertyNode.getValue().getClass());
+ }
+ return false;
+ }
+ return true;
+ }
+ });
+ return outline;
+ }
+
+ private static String visibility(String name) {
+ if( name.startsWith("__") ) {
+ return "private";
+ } else if( name.startsWith("_") ) {
+ return "protected";
+ }
+ return "public";
+ }
+}

Back to the top