Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2015-02-16 22:05:55 +0000
committerTom Schindl2015-02-16 22:05:55 +0000
commitf0f4c6e29972f2ab2c58f12b05e161c8740cc5e5 (patch)
tree889df80f7f5431f14f6d017ea02c4c680f5f33af /experimental
parent968ddcc0c0d65cf4d5a4a90c5739662c6e10f209 (diff)
downloadorg.eclipse.efxclipse-f0f4c6e29972f2ab2c58f12b05e161c8740cc5e5.tar.gz
org.eclipse.efxclipse-f0f4c6e29972f2ab2c58f12b05e161c8740cc5e5.tar.xz
org.eclipse.efxclipse-f0f4c6e29972f2ab2c58f12b05e161c8740cc5e5.zip
current source state of compensator
Diffstat (limited to 'experimental')
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.classpath7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.gitignore1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.project33
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/META-INF/MANIFEST.MF49
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/OSGI-INF/services/githubtracker.xml7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/build.properties5
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/fileFolderType_filter.pngbin0 -> 563 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/script-error.pngbin0 -> 733 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GitHubBucktrackerInstance.java131
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerRootItem.java130
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerService.java54
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.classpath8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.gitignore1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.project28
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/META-INF/MANIFEST.MF9
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/build.properties5
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jarbin0 -> 16267 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/src/org/eclipse/fx/code/compensator/project/ci/travis/TravisCIService.java7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/.classpath1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/META-INF/MANIFEST.MF64
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/build.properties4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/dark.css4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/default.css4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/icons/64/newclass_wiz.pngbin0 -> 4421 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/fragment.e4xmi15
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/plugin.xml13
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/JDTProjectService.java3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassAction.java94
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxgraph80
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxml54
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPaneController.java58
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.xtend11
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/OpenServerManagedFile.java60
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTInstanceProject.java9
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTModuleItem.java6
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPackageItem.java4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPathItem.java4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInput.java18
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/DebugElement.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewClassElement.java3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewEnumElement.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewInterfaceElement.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewModuleElement.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewPackageElement.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/RunElement.java8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.NewClassTemplate.xtendbinbin0 -> 1989 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.gitignore1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.java24
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/.project6
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/META-INF/MANIFEST.MF7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/.gitignore1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitCommitDialog.java209
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVCSRepositoryInstance.java116
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVersionControlService.java18
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/dialog.css3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/META-INF/MANIFEST.MF5
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/css/dark.css8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/css/default.css8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/fragment.e4xmi2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/Constants.java8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/EditorNavigation.java20
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/InstanceProject.java30
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectMainToolbar.java21
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectNavigator.java13
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectService.java4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerInstance.java104
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerRootNavigatorItem.java7
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerService.java6
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/CommitActiveInput.java14
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/NewLocalProject.java106
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenProjectDialog.java37
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenResource.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/BugtrackerContainerItem.java (renamed from experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/BugtrackerItem.java)11
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/FolderItem.java47
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/ProjectItem.java5
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/VCSContainerItem.java14
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VCSRepositoryInstance.java1
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VersionControlService.java2
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.target.releng/compensator.target11
-rw-r--r--experimental/compensator/org.eclipse.fx.code.server.jdt.inmemory/src/org/eclipse/fx/code/server/jdt/inmemory/MemJDTServer.java5
-rw-r--r--experimental/compensator/org.eclipse.fx.code.server.jdt.server/META-INF/MANIFEST.MF3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/Activator.java8
-rw-r--r--experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/JDTServerImpl.java38
-rw-r--r--experimental/compensator/org.eclipse.fx.code.server.jdt/src/org/eclipse/fx/code/server/jdt/JDTServer.java1
86 files changed, 1735 insertions, 207 deletions
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.classpath b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <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.project.bt.github/.gitignore b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.gitignore
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.project b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.project
new file mode 100644
index 000000000..aaca9a7d9
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fx.code.compensator.project.bt.github</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.settings/org.eclipse.jdt.core.prefs b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/.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.project.bt.github/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..9f14c4545
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/META-INF/MANIFEST.MF
@@ -0,0 +1,49 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Github
+Bundle-SymbolicName: org.eclipse.fx.code.compensator.project.bt.github
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.fx.code.compensator.project,
+ org.eclipse.egit.github.core;bundle-version="3.6.0",
+ com.google.gson;bundle-version="2.1.0",
+ org.eclipse.fx.core,
+ org.eclipse.fx.code.compensator.model;bundle-version="0.1.0"
+Export-Package: org.eclipse.fx.code.compensator.project.bt.github
+Import-Package: javafx.animation;version="2.2.0",
+ javafx.application;version="2.2.0",
+ javafx.beans;version="2.2.0",
+ javafx.beans.binding;version="2.2.0",
+ javafx.beans.property;version="2.2.0",
+ javafx.beans.property.adapter;version="2.2.0",
+ javafx.beans.value;version="2.2.0",
+ javafx.collections;version="2.2.0",
+ javafx.collections.transformation;version="8.0.0",
+ javafx.concurrent;version="2.2.0",
+ javafx.css;version="8.0.0",
+ javafx.embed.swing;version="2.2.0",
+ javafx.embed.swt;version="2.2.0",
+ javafx.event;version="2.2.0",
+ javafx.fxml;version="2.2.0",
+ javafx.geometry;version="2.2.0",
+ javafx.print;version="8.0.0",
+ javafx.scene;version="2.2.0",
+ javafx.scene.canvas;version="2.2.0",
+ javafx.scene.chart;version="2.2.0",
+ javafx.scene.control;version="2.2.0",
+ javafx.scene.control.cell;version="2.2.0",
+ javafx.scene.effect;version="2.2.0",
+ javafx.scene.image;version="2.2.0",
+ javafx.scene.input;version="2.2.0",
+ javafx.scene.layout;version="2.2.0",
+ javafx.scene.media;version="2.2.0",
+ javafx.scene.paint;version="2.2.0",
+ javafx.scene.shape;version="2.2.0",
+ javafx.scene.text;version="2.2.0",
+ javafx.scene.transform;version="2.2.0",
+ javafx.scene.web;version="2.2.0",
+ javafx.stage;version="2.2.0",
+ javafx.util;version="2.2.0",
+ javafx.util.converter;version="2.2.0"
+Service-Component: OSGI-INF/services/githubtracker.xml
+Bundle-ActivationPolicy: lazy
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/OSGI-INF/services/githubtracker.xml b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/OSGI-INF/services/githubtracker.xml
new file mode 100644
index 000000000..5892f824e
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/OSGI-INF/services/githubtracker.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.project.bt.github.githubtracker">
+ <implementation class="org.eclipse.fx.code.compensator.project.bt.github.GithubBugTrackerService"/>
+ <service>
+ <provide interface="org.eclipse.fx.code.compensator.project.bt.BugTrackerService"/>
+ </service>
+</scr:component>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/build.properties b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/build.properties
new file mode 100644
index 000000000..a8d3f814f
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/build.properties
@@ -0,0 +1,5 @@
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/services/githubtracker.xml
+source.. = src/
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/fileFolderType_filter.png b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/fileFolderType_filter.png
new file mode 100644
index 000000000..48d8c3e17
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/fileFolderType_filter.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/script-error.png b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/script-error.png
new file mode 100644
index 000000000..44c7ae1ed
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/css/icons/16/script-error.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GitHubBucktrackerInstance.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GitHubBucktrackerInstance.java
new file mode 100644
index 000000000..45088dfb0
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GitHubBucktrackerInstance.java
@@ -0,0 +1,131 @@
+package org.eclipse.fx.code.compensator.project.bt.github;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+import javafx.application.Platform;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+
+import org.eclipse.egit.github.core.Issue;
+import org.eclipse.egit.github.core.Repository;
+import org.eclipse.egit.github.core.client.GitHubClient;
+import org.eclipse.egit.github.core.service.IssueService;
+import org.eclipse.egit.github.core.service.RepositoryService;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerService;
+import org.eclipse.fx.core.function.ExExecutor;
+
+
+public class GitHubBucktrackerInstance implements BugTrackerInstance {
+
+ private static CommitAction CLOSE = new DefaultAction("Close", "Closes #${id}");
+ private static CommitAction FIXES = new DefaultAction("Fixes", "Fixes #${id}");
+ private static CommitAction COMMIT_FOR = new DefaultAction("Commit For", "commit for #${id}");
+
+ private static final IssueState OPEN_STATE = new DefaultIssueState("Open", null);
+ private static final IssueState CLOSE_STATE = new DefaultIssueState("Close", null);
+
+ private Repository repository;
+ private ObservableList<BugTrackerIssue> issueList = FXCollections.observableArrayList();
+ private final GitHubClient client;
+ private final String repoOwner;
+ private final String repoName;
+ private final GithubBugTrackerService service;
+
+ public GitHubBucktrackerInstance(GithubBugTrackerService service, String hostname, String username, String password, String repoOwner, String repoName) {
+ this.service = service;
+ this.repoOwner = repoOwner;
+ this.repoName = repoName;
+
+ client = new GitHubClient(hostname);
+ client.setCredentials(username, password);
+
+ getOpenIssues().thenAccept(l -> {
+ List<GitHubBugtrackerIssue> list = l.stream().map(GitHubBugtrackerIssue::new).collect(Collectors.toList());
+ Platform.runLater(() -> issueList.setAll(list));
+ });
+ }
+
+ @Override
+ public BugTrackerService getService() {
+ return service;
+ }
+
+ private CompletableFuture<Repository> getRepository() {
+ if( repository == null ) {
+ RepositoryService repoService = new RepositoryService(client);
+ return CompletableFuture.supplyAsync(() -> {
+ Repository repo = ExExecutor.executeSupplier(() -> repoService.getRepository(repoOwner, repoName), "").get();
+ this.repository = repo;
+ return repo;
+ });
+ }
+ return CompletableFuture.completedFuture(repository);
+ }
+
+ private CompletableFuture<List<Issue>> getOpenIssues() {
+ return getRepository().handleAsync((r,t) -> {
+ try {
+ IssueService service = new IssueService(client);
+ List<Issue> list = service.getIssues(r, Collections.singletonMap(IssueService.FILTER_STATE, IssueService.STATE_OPEN));
+ System.err.println(list);
+ return list;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ });
+ }
+
+ @Override
+ public List<CommitAction> getCommitActions() {
+ return Arrays.asList(COMMIT_FOR,CLOSE,FIXES);
+ }
+
+ @Override
+ public ObservableList<BugTrackerIssue> getIssues() {
+ return issueList;
+ }
+
+ public CharSequence getLabel() {
+ return repoName + "@" + repoOwner;
+ }
+
+ static class GitHubBugtrackerIssue implements BugTrackerIssue {
+ private final Issue issue;
+ private ObservableList<BugFollowUp> followUp = FXCollections.observableArrayList();
+
+ public GitHubBugtrackerIssue(Issue issue) {
+ this.issue = issue;
+ }
+
+ @Override
+ public String getId() {
+ return this.issue.getNumber() + "";
+ }
+
+ @Override
+ public String getTitle() {
+ return issue.getTitle();
+ }
+
+ @Override
+ public String getDescription() {
+ return issue.getBodyText();
+ }
+
+ @Override
+ public IssueState getState() {
+ return IssueService.STATE_CLOSED.equals(issue.getState()) ? CLOSE_STATE : OPEN_STATE;
+ }
+
+ @Override
+ public ObservableList<BugFollowUp> getFollowUpList() {
+ return followUp;
+ }
+
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerRootItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerRootItem.java
new file mode 100644
index 000000000..512168827
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerRootItem.java
@@ -0,0 +1,130 @@
+package org.eclipse.fx.code.compensator.project.bt.github;
+
+import java.util.stream.Collectors;
+
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.collections.ListChangeListener.Change;
+
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance.BugTrackerIssue;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerRootNavigatorItem;
+import org.eclipse.fx.core.URI;
+
+public class GithubBugTrackerRootItem implements BugTrackerRootNavigatorItem {
+ private final ProjectNavigatorItem parent;
+ private final GitHubBucktrackerInstance instance;
+ private final ObservableList<ProjectNavigatorItem> openIssues = FXCollections.observableArrayList();
+
+ public GithubBugTrackerRootItem(ProjectNavigatorItem parent, GitHubBucktrackerInstance instance) {
+ this.parent = parent;
+ this.instance = instance;
+ this.instance.getIssues().addListener(this::handleOpenIssuesChange);
+ }
+
+ private void handleOpenIssuesChange(Change<? extends BugTrackerIssue> change) {
+ while( change.next() ) {
+ if( change.getAddedSize() > 0 ) {
+ openIssues.addAll(change.getFrom(), change.getAddedSubList().stream().map( b -> new BugTrackerItem(this, b)).collect(Collectors.toList()));
+ }
+ if( change.getRemovedSize() > 0 ) {
+ openIssues.removeIf( e -> change.getRemoved().contains(e.getDomainObject()) );
+ }
+ }
+ }
+
+ @Override
+ public CharSequence getLabel() {
+ return instance.getLabel();
+ }
+
+ @Override
+ public URI getIcon() {
+ return URI.createPlatformPluginURI("org.eclipse.fx.code.compensator.project.bt.github", "css/icons/16/fileFolderType_filter.png");
+ }
+
+ @Override
+ public Object getDomainObject() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getOpenCommandId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean isDeletable() {
+ return false;
+ }
+
+ @Override
+ public ObservableList<ProjectNavigatorItem> getChildren() {
+ return openIssues;
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return false;
+ }
+
+ @Override
+ public ProjectNavigatorItem getParent() {
+ return this.parent;
+ }
+
+ static class BugTrackerItem implements ProjectNavigatorItem {
+ private final BugTrackerIssue issue;
+ private final ProjectNavigatorItem parent;
+
+ public BugTrackerItem(ProjectNavigatorItem parent, BugTrackerIssue issue) {
+ this.issue = issue;
+ this.parent = parent;
+ }
+
+ @Override
+ public CharSequence getLabel() {
+ return this.issue.getId() + " - " + this.issue.getTitle();
+ }
+
+ @Override
+ public URI getIcon() {
+ return URI.createPlatformPluginURI("org.eclipse.fx.code.compensator.project.bt.github", "css/icons/16/script-error.png");
+ }
+
+ @Override
+ public Object getDomainObject() {
+ return this.issue;
+ }
+
+ @Override
+ public String getOpenCommandId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean isDeletable() {
+ return false;
+ }
+
+ @Override
+ public ObservableList<ProjectNavigatorItem> getChildren() {
+ return FXCollections.emptyObservableList();
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return true;
+ }
+
+ @Override
+ public ProjectNavigatorItem getParent() {
+ return parent;
+ }
+
+ }
+
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerService.java
new file mode 100644
index 000000000..cd79b3e98
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.bt.github/src/org/eclipse/fx/code/compensator/project/bt/github/GithubBugTrackerService.java
@@ -0,0 +1,54 @@
+package org.eclipse.fx.code.compensator.project.bt.github;
+
+import org.eclipse.fx.code.compensator.model.workbench.BugTracker;
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerRootNavigatorItem;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerService;
+import org.eclipse.fx.core.URI;
+
+public class GithubBugTrackerService implements BugTrackerService {
+
+ @Override
+ public String getLabel() {
+ return "Github Issue Tracker";
+ }
+
+ @Override
+ public String getId() {
+ return "github";
+ }
+
+ @Override
+ public BugTrackerInstance createInstance(BugTracker bugtracker) {
+ String url = bugtracker.getBugtrackerUrl();
+ String username = bugtracker.getBugtrackerUsername();
+ String password = bugtracker.getBugtrackerPassword();
+
+ // url has to be
+ // https://$host/repos/:owner/:repo/issues
+ URI uri = URI.create(url);
+ String hostName = uri.host();
+ String repoOwner = uri.segment(1);
+ String repoName = uri.segment(2);
+
+ return new GitHubBucktrackerInstance(this, hostName, username, password, repoOwner, repoName);
+ }
+
+ @Override
+ public BugTrackerRootNavigatorItem mapRepository(ProjectNavigatorItem parent, BugTrackerInstance instance) {
+ return new GithubBugTrackerRootItem(parent, (GitHubBucktrackerInstance) instance);
+ }
+
+ public static void main(String[] args) {
+ URI uri = URI.create("https://api.github.com/repos/tomsontom/compensator-samples/issues");
+ System.err.println(uri.host());
+
+ org.eclipse.emf.common.util.URI uri2 = org.eclipse.emf.common.util.URI.createURI("https://api.github.com/repos/tomsontom/compensator-samples/issues");
+ System.err.println(uri2.host());
+
+ org.eclipse.emf.common.util.URI uri3 = org.eclipse.emf.common.util.URI.createURI("file:/tmp/file.txt");
+ System.err.println(uri3.host());
+
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.classpath b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.classpath
new file mode 100644
index 000000000..412fc488f
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry exported="true" kind="lib" path="lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <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.project.ci.travis/.gitignore b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.gitignore
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.project b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.project
new file mode 100644
index 000000000..0e86d1a05
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fx.code.compensator.project.ci.travis</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.settings/org.eclipse.jdt.core.prefs b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/.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.project.ci.travis/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..2931f705c
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Travis
+Bundle-SymbolicName: org.eclipse.fx.code.compensator.project.ci.travis
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ClassPath: lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jar,
+ .
+Require-Bundle: org.eclipse.fx.code.compensator.project
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/build.properties b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/build.properties
new file mode 100644
index 000000000..8e834a3a4
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jar
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jar b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jar
new file mode 100644
index 000000000..42ede2f6b
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/lib/org.eclipse.fx.travisci.client-0.0.1-SNAPSHOT.jar
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/src/org/eclipse/fx/code/compensator/project/ci/travis/TravisCIService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/src/org/eclipse/fx/code/compensator/project/ci/travis/TravisCIService.java
new file mode 100644
index 000000000..50e878962
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.ci.travis/src/org/eclipse/fx/code/compensator/project/ci/travis/TravisCIService.java
@@ -0,0 +1,7 @@
+package org.eclipse.fx.code.compensator.project.ci.travis;
+
+import org.eclipse.fx.code.compensator.project.ci.CIService;
+
+public class TravisCIService implements CIService {
+
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/.classpath b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/.classpath
index eca7bdba8..0805795ce 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/.classpath
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/.classpath
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/META-INF/MANIFEST.MF
index f59f357de..ee85fd635 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/META-INF/MANIFEST.MF
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/META-INF/MANIFEST.MF
@@ -1,28 +1,36 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Jdt
-Bundle-SymbolicName: org.eclipse.fx.code.compensator.project.jdt
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.fx.code.compensator.project,
- org.eclipse.fx.code.compensator.model,
- org.eclipse.fx.core.di,
- org.eclipse.fx.ui.services,
- org.eclipse.fx.core,
- org.eclipse.e4.core.contexts,
- org.eclipse.e4.ui.model.workbench,
- org.eclipse.e4.core.di,
- org.eclipse.fx.code.server.jdt;bundle-version="1.0.0",
- org.eclipse.fx.code.compensator.editor,
- org.eclipse.fx.text,
- org.eclipse.e4.ui.workbench,
- org.eclipse.fx.code.server.jdt.shared;bundle-version="1.0.0",
- org.eclipse.fx.ui.controls,
- org.eclipse.e4.core.services,
- org.eclipse.osgi.services,
- org.eclipse.fx.text.ui;bundle-version="1.0.0"
-Service-Component: OSGI-INF/services/jdtproject.xml,OSGI-INF/services/jdtstylesheet.xml,OSGI-INF/services/serverfunction.xml,OSGI-INF/services/jdtserverinputfactory.xml,OSGI-INF/services/jdtDocumentfactory.xml,OSGI-INF/services/jdtproposalcomputer.xml,OSGI-INF/services/jdtannotationfactory.xml,
- OSGI-INF/services/jdtannotationpresenter.xml
-Bundle-ActivationPolicy: lazy
-Import-Package: javax.inject;version="1.0.0",
- org.eclipse.jface.text.contentassist
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Jdt
+Bundle-SymbolicName: org.eclipse.fx.code.compensator.project.jdt;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.fx.code.compensator.project,
+ org.eclipse.fx.code.compensator.model,
+ org.eclipse.fx.core.di,
+ org.eclipse.fx.ui.services,
+ org.eclipse.fx.core,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.e4.core.di,
+ org.eclipse.fx.code.server.jdt;bundle-version="1.0.0",
+ org.eclipse.fx.code.compensator.editor,
+ org.eclipse.fx.text,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.fx.code.server.jdt.shared;bundle-version="1.0.0",
+ org.eclipse.fx.ui.controls,
+ org.eclipse.e4.core.services,
+ org.eclipse.osgi.services,
+ org.eclipse.fx.text.ui;bundle-version="1.0.0",
+ org.eclipse.fx.ui.panes,
+ org.eclipse.fx.ui.di,
+ org.eclipse.jdt.annotation;bundle-version="2.0.100";resolution:=optional,
+ org.eclipse.fx.ui.dialogs,
+ com.google.guava,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: javax.inject;version="1.0.0",
+ org.eclipse.jface.text.contentassist
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/services/jdtproject.xml,OSGI-INF/services/jdtstylesheet.xml,OSGI-INF/services/serverfunction.xml,OSGI-INF/services/jdtserverinputfactory.xml,OSGI-INF/services/jdtDocumentfactory.xml,OSGI-INF/services/jdtproposalcomputer.xml,OSGI-INF/services/jdtannotationfactory.xml,OSGI-INF/services/jdtannotationpresenter.xml
+
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/build.properties b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/build.properties
index 4ee0442d8..60e29adaa 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/build.properties
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/build.properties
@@ -8,5 +8,7 @@ bin.includes = META-INF/,\
OSGI-INF/services/jdtDocumentfactory.xml,\
OSGI-INF/services/jdtproposalcomputer.xml,\
OSGI-INF/services/jdtannotationfactory.xml,\
- OSGI-INF/services/jdtannotationpresenter.xml
+ OSGI-INF/services/jdtannotationpresenter.xml,\
+ fragment.e4xmi,\
+ plugin.xml
source.. = src/
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/dark.css b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/dark.css
index fb5b7cf9f..a1aed40a0 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/dark.css
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/dark.css
@@ -32,4 +32,8 @@
/*.list-cell >*/ .styled-label.java-project {
-fx-graphic: url(icons/16/jperspective.png);
+}
+
+.titleDialog_Icon-new-java-class-dialog {
+ -fx-image: url(icons/64/newclass_wiz.png);
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/default.css b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/default.css
index fb5b7cf9f..a1aed40a0 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/default.css
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/default.css
@@ -32,4 +32,8 @@
/*.list-cell >*/ .styled-label.java-project {
-fx-graphic: url(icons/16/jperspective.png);
+}
+
+.titleDialog_Icon-new-java-class-dialog {
+ -fx-image: url(icons/64/newclass_wiz.png);
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/icons/64/newclass_wiz.png b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/icons/64/newclass_wiz.png
new file mode 100644
index 000000000..971d63960
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/css/icons/64/newclass_wiz.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/fragment.e4xmi b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/fragment.e4xmi
new file mode 100644
index 000000000..9a8a2df4e
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/fragment.e4xmi
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ASCII"?>
+<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmi:id="_eZlGYLIwEeSfe79Bewi7bA">
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_fem0wLIwEeSfe79Bewi7bA" featurename="commands" parentElementId="org.eclipse.fx.code.compensator.app">
+ <elements xsi:type="commands:Command" xmi:id="_oldrkLIwEeSfe79Bewi7bA" elementId="org.eclipse.fx.code.compensator.project.jdt.command.newclass" commandName="New Class"/>
+ <elements xsi:type="commands:Command" xmi:id="_V9vlMLXjEeS-EfBcv9o4bw" elementId="org.eclipse.fx.code.compensator.project.jdt.command.serverfile" commandName="Open Server Managed File">
+ <parameters xmi:id="_et6aULXjEeS-EfBcv9o4bw" elementId="projectid" name="Project Id" optional="false"/>
+ <parameters xmi:id="_ixOewLXjEeS-EfBcv9o4bw" elementId="moduleName" name="Module Name" optional="false"/>
+ <parameters xmi:id="_lE_4MLXjEeS-EfBcv9o4bw" elementId="modulePath" name="Modul Path" optional="false"/>
+ </elements>
+ </fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_lr0k8LIwEeSfe79Bewi7bA" featurename="handlers" parentElementId="org.eclipse.fx.code.compensator.app">
+ <elements xsi:type="commands:Handler" xmi:id="_vgN3MLIwEeSfe79Bewi7bA" elementId="org.eclipse.fx.code.compensator.project.jdt.handler.0" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project.jdt/org.eclipse.fx.code.compensator.project.jdt.handler.NewClassAction" command="_oldrkLIwEeSfe79Bewi7bA"/>
+ <elements xsi:type="commands:Handler" xmi:id="_bSZVsLXjEeS-EfBcv9o4bw" elementId="org.eclipse.fx.code.compensator.project.jdt.handler.1" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project.jdt/org.eclipse.fx.code.compensator.project.jdt.handler.OpenServerManagedFile" command="_V9vlMLXjEeS-EfBcv9o4bw"/>
+ </fragments>
+</fragment:ModelFragments>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/plugin.xml b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/plugin.xml
new file mode 100644
index 000000000..d185729bb
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+
+ <extension
+ id="org.eclipse.fx.code.compensator.project.jdt.fragment"
+ point="org.eclipse.e4.workbench.model">
+ <fragment
+ apply="always"
+ uri="fragment.e4xmi">
+ </fragment>
+ </extension>
+
+</plugin>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/JDTProjectService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/JDTProjectService.java
index ee33a8939..05d029b39 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/JDTProjectService.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/JDTProjectService.java
@@ -27,7 +27,6 @@ import org.eclipse.fx.code.compensator.project.jdt.tb.NewPackageElement;
import org.eclipse.fx.code.compensator.project.jdt.tb.RunElement;
import org.eclipse.fx.code.compensator.project.navigator.FolderItem;
import org.eclipse.fx.code.compensator.project.navigator.ModuleContainerItem;
-import org.eclipse.fx.core.SimpleURI;
import org.eclipse.fx.core.URI;
public class JDTProjectService implements ProjectService {
@@ -68,7 +67,7 @@ public class JDTProjectService implements ProjectService {
@Override
public URI getIconUri() {
- return new SimpleURI(getClass().getClassLoader().getResource("css/icons/16/jperspective.png").toExternalForm());
+ return URI.create(getClass().getClassLoader().getResource("css/icons/16/jperspective.png").toExternalForm());
}
@Override
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassAction.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassAction.java
new file mode 100644
index 000000000..64b7794d6
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassAction.java
@@ -0,0 +1,94 @@
+package org.eclipse.fx.code.compensator.project.jdt.handler;
+
+import static org.eclipse.fx.core.function.ExExecutor.executeSupplier;
+
+import java.nio.ByteBuffer;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+
+import javafx.scene.Node;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.fx.code.compensator.project.Constants;
+import org.eclipse.fx.code.compensator.project.InstanceProject;
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+import org.eclipse.fx.code.compensator.project.jdt.internal.JDTPackageFragmentRootItem;
+import org.eclipse.fx.code.compensator.project.jdt.internal.JDTPathItem;
+import org.eclipse.fx.core.command.CommandService;
+import org.eclipse.fx.ui.controls.stage.DefaultWindowPane;
+import org.eclipse.fx.ui.di.FXMLBuilder;
+import org.eclipse.fx.ui.di.FXMLBuilder.Data;
+import org.eclipse.fx.ui.di.FXMLLoader;
+import org.eclipse.fx.ui.di.FXMLLoaderFactory;
+import org.eclipse.fx.ui.dialogs.TitleAreaDialog;
+
+public class NewClassAction {
+ @Execute
+ public void createNewClass(InstanceProject project, @Named("navigatorSelection") JDTPathItem navigationItem,
+ @FXMLLoader FXMLLoaderFactory factory, Stage stage, IEventBroker broker,
+ CommandService commandService) {
+ FXMLBuilder<Node> builder = factory.loadRequestorRelative("NewClassPane.fxml");
+ Data<Node, NewClassPaneController> data = executeSupplier(
+ () -> builder.<NewClassPaneController> loadWithController(), "Failed to load FXML file").get();
+ TitleAreaDialog dialog = new TitleAreaDialog(stage,"New Class","New Class","Create a new class","new-java-class-dialog") {
+
+ @Override
+ protected Node createDialogContent() {
+ return data.getNode();
+ }
+
+ protected org.eclipse.fx.ui.controls.stage.WindowPane getCustomWindowPane() {
+ return new DefaultWindowPane(new StackPane());
+ }
+ };
+ if( dialog.open() == TitleAreaDialog.OK_BUTTON ) {
+ String packageName = data.getController().getPackageName();
+ String className = data.getController().getClassName();
+
+ ProjectNavigatorItem i = navigationItem;
+ while( i != null ) {
+ if( i instanceof JDTPackageFragmentRootItem ) {
+ break;
+ }
+ i = i.getParent();
+ }
+
+ String path = ((JDTPackageFragmentRootItem)i).getLabel().toString();
+ path += "/" + packageName.replace('.', '/');
+ path += "/" + className + ".java";
+
+// System.err.println("CREATING: " + path);
+
+ try {
+ Path p = navigationItem.getModuleItem().getPath().resolve(path);
+ Boolean rv = navigationItem.getJdtProject().getProjectServer().createFile(navigationItem.getModuleItem().getDomainObject().getName(), path, ByteBuffer.wrap(NewClassTemplate.generate(packageName, className).toString().getBytes())).get();
+ if( rv.booleanValue() ) {
+ broker.post(Constants.TOPIC_NEW_FILE, p);
+ }
+ Map<String, Object> map = new HashMap<>();
+ map.put("projectid", project.getProject().getProjectId());
+ map.put("moduleName", navigationItem.getModuleItem().getDomainObject().getName());
+ map.put("modulePath", path);
+ commandService.execute("org.eclipse.fx.code.compensator.project.jdt.command.serverfile", map);
+ } catch (InterruptedException | ExecutionException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+// Dialog<ButtonType> dialog = new Dialog<>();
+// dialog.initOwner(stage);
+// dialog.getDialogPane().getStyleClass().add("new-java-class-dialog");
+// dialog.getDialogPane().setHeaderText("New Class");
+// dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK,ButtonType.CANCEL);
+// dialog.getDialogPane().setContent(data.getNode());
+// dialog.showAndWait().ifPresent(this::handleDialogResult);
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxgraph b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxgraph
new file mode 100644
index 000000000..9bc207bd0
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxgraph
@@ -0,0 +1,80 @@
+package org.eclipse.fx.code.compensator.project.jdt.handler
+
+import org.eclipse.fx.ui.panes.GridLayoutPane
+import javafx.scene.control.Label
+import javafx.scene.control.TextField
+import org.eclipse.fx.ui.panes.GridData
+import javafx.scene.control.Button
+import javafx.scene.control.CheckBox
+import javafx.scene.control.RadioButton
+import javafx.scene.control.ToggleGroup
+import org.eclipse.fx.code.compensator.project.jdt.handler.NewClassPaneController
+
+component NewClassPane controlledby NewClassPaneController {
+ define ToggleGroup id visibilityMods
+ GridLayoutPane {
+ numColumns : 3,
+ children : [
+ Label {
+ text : "Package"
+ },
+ TextField id packageField {
+ static constraint : GridData {
+ grabExcessHorizontalSpace : true,
+ horizontalAlignment : "FILL"
+ }
+ },
+ Button {
+ text : "Browse ..."
+ },
+ // ----------
+ Label {
+ text : "Name"
+ },
+ TextField id className {
+ static constraint : GridData {
+ grabExcessHorizontalSpace : true,
+ horizontalAlignment : "FILL"
+ }
+ },
+ Label,
+ // ----------
+ Label {
+ text : "Modifier"
+ },
+ GridLayoutPane {
+ numColumns : 3,
+ children : [
+ RadioButton id publicModifier {
+ text : "public",
+ selected : true,
+ toggleGroup : idref visibilityMods
+ },
+ RadioButton id packageModifier {
+ text : "package",
+ toggleGroup : idref visibilityMods
+ },
+ RadioButton id protectedModifier {
+ text : "protected",
+ toggleGroup : idref visibilityMods
+ }
+ ]
+ },
+ Label,
+ // ----------
+ Label,
+ GridLayoutPane {
+ numColumns : 4,
+ children : [
+ CheckBox id abstractModifier {
+ text : "abstract"
+ },
+ CheckBox id finalModifier {
+ text : "final"
+ }
+ ]
+ },
+ Label
+ ]
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxml b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxml
new file mode 100644
index 000000000..7401e7d9f
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Do not edit this file it is generated by e(fx)clipse from ../src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPane.fxgraph
+-->
+
+<?import java.lang.*?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.RadioButton?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.ToggleGroup?>
+<?import org.eclipse.fx.ui.panes.GridData?>
+<?import org.eclipse.fx.ui.panes.GridLayoutPane?>
+
+<GridLayoutPane xmlns:fx="http://javafx.com/fxml" fx:controller="org.eclipse.fx.code.compensator.project.jdt.handler.NewClassPaneController" numColumns="3">
+ <fx:define>
+ <ToggleGroup fx:id="visibilityMods"/>
+ </fx:define>
+
+ <children>
+ <Label text="Package"/>
+ <TextField fx:id="packageField">
+ <GridLayoutPane.constraint>
+ <GridData grabExcessHorizontalSpace="true" horizontalAlignment="FILL"/>
+ </GridLayoutPane.constraint>
+ </TextField>
+ <Button text="Browse ..."/>
+ <Label text="Name"/>
+ <TextField fx:id="className">
+ <GridLayoutPane.constraint>
+ <GridData grabExcessHorizontalSpace="true" horizontalAlignment="FILL"/>
+ </GridLayoutPane.constraint>
+ </TextField>
+ <Label/>
+ <Label text="Modifier"/>
+ <GridLayoutPane numColumns="3">
+ <children>
+ <RadioButton fx:id="publicModifier" text="public" selected="true" toggleGroup="$visibilityMods"/>
+ <RadioButton fx:id="packageModifier" text="package" toggleGroup="$visibilityMods"/>
+ <RadioButton fx:id="protectedModifier" text="protected" toggleGroup="$visibilityMods"/>
+ </children>
+ </GridLayoutPane>
+ <Label/>
+ <Label/>
+ <GridLayoutPane numColumns="4">
+ <children>
+ <CheckBox fx:id="abstractModifier" text="abstract"/>
+ <CheckBox fx:id="finalModifier" text="final"/>
+ </children>
+ </GridLayoutPane>
+ <Label/>
+ </children>
+</GridLayoutPane>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPaneController.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPaneController.java
new file mode 100644
index 000000000..486d7bf10
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassPaneController.java
@@ -0,0 +1,58 @@
+package org.eclipse.fx.code.compensator.project.jdt.handler;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+import org.eclipse.fx.code.compensator.project.jdt.internal.JDTPackageItem;
+
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+import javafx.scene.control.RadioButton;
+import javafx.scene.control.CheckBox;
+
+public class NewClassPaneController implements Initializable {
+
+ @FXML TextField packageField;
+ @FXML TextField className;
+ @FXML RadioButton publicModifier;
+ @FXML RadioButton packageModifier;
+ @FXML RadioButton protectedModifier;
+ @FXML CheckBox abstractModifier;
+ @FXML CheckBox finalModifier;
+
+ private final ProjectNavigatorItem navigationItem;
+
+ @Inject
+ public NewClassPaneController(@Named("navigatorSelection") ProjectNavigatorItem navigationItem) {
+ this.navigationItem = navigationItem;
+ }
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ if( navigationItem instanceof JDTPackageItem ) {
+ StringBuilder b = new StringBuilder();
+ JDTPackageItem i = (JDTPackageItem) navigationItem;
+ b.append(i.getLabel());
+
+ while( i.getParent() instanceof JDTPackageItem ) {
+ i = (JDTPackageItem) i.getParent();
+ b.insert(0, i.getLabel() + ".");
+ }
+
+ packageField.setText(b.toString());
+ }
+ }
+
+ public String getPackageName() {
+ return packageField.getText();
+ }
+
+ public String getClassName() {
+ return className.getText();
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.xtend b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.xtend
new file mode 100644
index 000000000..58d824cd3
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.xtend
@@ -0,0 +1,11 @@
+package org.eclipse.fx.code.compensator.project.jdt.handler
+
+class NewClassTemplate {
+ def static generate(String packagename, String className) '''
+ package «packagename»;
+
+ public class «className» {
+
+ }
+ '''
+} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/OpenServerManagedFile.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/OpenServerManagedFile.java
new file mode 100644
index 000000000..333ba157b
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/handler/OpenServerManagedFile.java
@@ -0,0 +1,60 @@
+package org.eclipse.fx.code.compensator.project.jdt.handler;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MStackElement;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+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.Module;
+import org.eclipse.fx.code.compensator.model.workbench.Project;
+
+public class OpenServerManagedFile {
+ @Execute
+ public void open(
+ Project project,
+ EModelService modelService,
+ EPartService partService,
+ MPerspective perspective,
+ FileIconLookup fileLookup,
+ @Named("projectid") String projectId,
+ @Named("moduleName") String modulename,
+ @Named("modulePath") String modulePath) {
+ System.err.println("RUNNING");
+ MPartStack element = (MPartStack) modelService.find("org.eclipse.fx.code.compensator.project.partstack.1", perspective);
+
+ String url = "jdt:/"+projectId+"/"+modulename+"/"+modulePath;
+
+ for( MStackElement p : element.getChildren() ) {
+ if( url.equals(p.getPersistedState().get(TextEditor.DOCUMENT_URL)) ) {
+ partService.showPart((MPart)p, PartState.ACTIVATE);
+ }
+ }
+
+ String moduleRoot = null;
+ for( Module m : project.getModuleList() ) {
+ if( m.getName().equals(modulename) ) {
+ moduleRoot = m.getRootFolderUrl();
+ }
+ }
+
+ MPart p = modelService.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, url);
+ p.getPersistedState().put(TextEditor.VCS_URL, moduleRoot + "/" + modulePath);
+
+ p.setLabel(URI.createURI(url).lastSegment());
+ p.setIconURI(fileLookup.getFileIcon(url).toString());
+ 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.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTInstanceProject.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTInstanceProject.java
index bc98bfd9e..2898d0b7e 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTInstanceProject.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTInstanceProject.java
@@ -23,6 +23,7 @@ import org.eclipse.fx.code.compensator.model.workbench.Project;
import org.eclipse.fx.code.compensator.model.workbench.VCSRepository;
import org.eclipse.fx.code.compensator.project.InstanceProject;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerService;
import org.eclipse.fx.code.compensator.project.vcs.VersionControlService;
import org.eclipse.fx.code.server.jdt.JDTServer;
import org.eclipse.fx.core.di.Service;
@@ -43,8 +44,9 @@ public class JDTInstanceProject extends InstanceProject {
EModelService modelService,
MPerspective perspective,
FileIconLookup fileLookup,
- @Service List<VersionControlService> versionControlService) {
- super(eventBroker, project, versionControlService);
+ @Service List<VersionControlService> versionControlService,
+ @Service List<BugTrackerService> bugtrackerService) {
+ super(eventBroker, project, versionControlService, bugtrackerService);
this.projectServer = projectServer;
this.partService = partService;
this.modelService = modelService;
@@ -96,5 +98,6 @@ public class JDTInstanceProject extends InstanceProject {
return true;
}
return false;
- }
+ }
+
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTModuleItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTModuleItem.java
index d27bf93ce..d795da451 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTModuleItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTModuleItem.java
@@ -13,6 +13,7 @@ import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import org.eclipse.fx.code.compensator.model.workbench.Module;
+import org.eclipse.fx.code.compensator.project.Constants;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
import org.eclipse.fx.code.compensator.project.navigator.FileItem;
import org.eclipse.fx.code.compensator.project.navigator.FolderItem;
@@ -20,6 +21,7 @@ import org.eclipse.fx.code.compensator.project.navigator.PathItem;
import org.eclipse.fx.core.function.ExExecutor;
import org.eclipse.fx.core.log.Logger;
import org.eclipse.fx.core.log.LoggerCreator;
+import org.osgi.service.event.Event;
public class JDTModuleItem implements ProjectNavigatorItem, JDTPathItem {
private final Module module;
@@ -33,8 +35,10 @@ public class JDTModuleItem implements ProjectNavigatorItem, JDTPathItem {
this.parent = parent;
this.module = module;
this.instanceProject = instanceProject;
-
+ this.module.setUserdata(this);
+
this.path = Paths.get(URI.create(module.getRootFolderUrl()));
+// this.instanceProject.getEventBroker().subscribe(Constants.TOPIC_NEW_FILE, this::handleNewFile);
}
@Override
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPackageItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPackageItem.java
index 9416dd187..a7b95f0e8 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPackageItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPackageItem.java
@@ -4,6 +4,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.util.function.BiFunction;
+import org.eclipse.fx.code.compensator.project.Constants;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
import org.eclipse.fx.code.compensator.project.navigator.FileItem;
import org.eclipse.fx.code.compensator.project.navigator.FolderItem;
@@ -22,8 +23,9 @@ public class JDTPackageItem extends FolderItem implements ProjectNavigatorItem,
public JDTPackageItem(FolderItem parent, Path p) {
super(parent,p,FACTORY);
+ getJdtProject().getEventBroker().subscribe(Constants.TOPIC_NEW_FILE, e -> refresh());
}
-
+
public URI getIcon() {
return URI.createPlatformPluginURI("org.eclipse.fx.code.compensator.project.jdt","css/icons/16/package_obj.png");
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPathItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPathItem.java
index 47b13dd7b..308c1024d 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPathItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTPathItem.java
@@ -1,7 +1,9 @@
package org.eclipse.fx.code.compensator.project.jdt.internal;
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
-public interface JDTPathItem {
+
+public interface JDTPathItem extends ProjectNavigatorItem {
public JDTModuleItem getModuleItem();
public JDTInstanceProject getJdtProject();
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInput.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInput.java
index bfb381eb1..1d745122d 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInput.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInput.java
@@ -28,7 +28,6 @@ public class JDTServerInput implements Input<String>, ContentTypeProvider, URIPr
private VCSRepositoryInstance repositoryInstance;
private Path filePath;
-
@Inject
public JDTServerInput(@Named(TextEditor.DOCUMENT_URL) String url, @Named(TextEditor.VCS_URL) String vcsUrl, InstanceProject project, JDTServerFactory factory) {
org.eclipse.emf.common.util.URI uri = org.eclipse.emf.common.util.URI.createURI(url);
@@ -97,22 +96,7 @@ public class JDTServerInput implements Input<String>, ContentTypeProvider, URIPr
String resourceId = this.openFile.get();
Future<ByteBuffer> data = this.server.getFileContent(resourceId);
- // Freaking hack because JavaFX can not deal with TABs
- String s = new String(data.get().array());
-// BufferedReader reader = new BufferedReader(new StringReader(s));
-// StringBuilder b = new StringBuilder();
-// String line;
-// while( (line = reader.readLine()) != null ) {
-// //FIXME We need to replace TABs for now
-// b.append(line.replaceAll("\t", " ")+"\n");
-// }
-// reader.close();
-//
-// if( ! s.equals(b.toString()) ) {
-// this.server.setFileContent(resourceId, ByteBuffer.wrap(b.toString().getBytes())).get();
-// this.server.persistContent(resourceId);
-// }
- return s;
+ return new String(data.get().array());
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/DebugElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/DebugElement.java
index caf677b86..5d8d14d29 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/DebugElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/DebugElement.java
@@ -5,7 +5,7 @@ import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
public class DebugElement extends ToolbarElement {
public DebugElement() {
- super("debug-button", "Run Executable in Debugger");
+ super("debug-button", "Run Executable in Debugger","org.eclipse.fx.code.compensator.project.jdt.command.debug");
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewClassElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewClassElement.java
index fcf38d778..9d1991442 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewClassElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewClassElement.java
@@ -5,7 +5,6 @@ import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
public class NewClassElement extends ToolbarElement {
public NewClassElement() {
- super("new-java-class", "Create a new java class");
+ super("new-java-class", "Create a new java class","org.eclipse.fx.code.compensator.project.jdt.command.newclass");
}
-
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewEnumElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewEnumElement.java
index 4bbbe3321..f88acf3e2 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewEnumElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewEnumElement.java
@@ -5,7 +5,7 @@ import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
public class NewEnumElement extends ToolbarElement {
public NewEnumElement() {
- super("new-java-enum", "Create a new enum");
+ super("new-java-enum", "Create a new enum","org.eclipse.fx.code.compensator.project.jdt.command.newenum");
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewInterfaceElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewInterfaceElement.java
index 43fcc5a4d..36d575646 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewInterfaceElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewInterfaceElement.java
@@ -5,7 +5,7 @@ import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
public class NewInterfaceElement extends ToolbarElement {
public NewInterfaceElement() {
- super("new-java-interface", "Create a new interface");
+ super("new-java-interface", "Create a new interface","org.eclipse.fx.code.compensator.project.jdt.command.newinterface");
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewModuleElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewModuleElement.java
index f3933313a..7bcd9ab90 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewModuleElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewModuleElement.java
@@ -5,7 +5,7 @@ import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
public class NewModuleElement extends ToolbarElement {
public NewModuleElement() {
- super("new-java-module", "Create a new module");
+ super("new-java-module", "Create a new module","org.eclipse.fx.code.compensator.project.jdt.command.newmodule");
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewPackageElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewPackageElement.java
index 221000bbc..719ee2f52 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewPackageElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/NewPackageElement.java
@@ -5,7 +5,7 @@ import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
public class NewPackageElement extends ToolbarElement {
public NewPackageElement() {
- super("new-java-package", "Create a new package");
+ super("new-java-package", "Create a new package","org.eclipse.fx.code.compensator.project.jdt.command.newpackage");
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/RunElement.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/RunElement.java
index 8cc4aef13..ff21056b2 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/RunElement.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/tb/RunElement.java
@@ -1,16 +1,10 @@
package org.eclipse.fx.code.compensator.project.jdt.tb;
import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
-import org.eclipse.fx.core.di.Invoke;
public class RunElement extends ToolbarElement {
public RunElement() {
- super("run-button", "Run Executable");
- }
-
- @Invoke
- public void runExecutable() {
-
+ super("run-button", "Run Executable","org.eclipse.fx.code.compensator.project.jdt.command.run");
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.NewClassTemplate.xtendbin b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.NewClassTemplate.xtendbin
new file mode 100644
index 000000000..aaeefbfe6
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.NewClassTemplate.xtendbin
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.gitignore b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.gitignore
new file mode 100644
index 000000000..2a41b18fb
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/.gitignore
@@ -0,0 +1 @@
+/.NewClassTemplate.java._trace
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.java
new file mode 100644
index 000000000..edfb97e59
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/xtend-gen/org/eclipse/fx/code/compensator/project/jdt/handler/NewClassTemplate.java
@@ -0,0 +1,24 @@
+package org.eclipse.fx.code.compensator.project.jdt.handler;
+
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+public class NewClassTemplate {
+ public static CharSequence generate(final String packagename, final String className) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ _builder.append(packagename, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("public class ");
+ _builder.append(className, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/.project b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/.project
index d4ac39707..9981a0667 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/.project
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/.project
@@ -6,6 +6,11 @@
</projects>
<buildSpec>
<buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
@@ -29,5 +34,6 @@
<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.project.vcs.git/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/META-INF/MANIFEST.MF
index ad450f31b..63a88db1d 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/META-INF/MANIFEST.MF
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/META-INF/MANIFEST.MF
@@ -9,6 +9,11 @@ Require-Bundle: org.eclipse.fx.core,
org.eclipse.fx.code.compensator.project,
org.eclipse.fx.code.compensator.model,
com.jcraft.jsch;bundle-version="0.1.51",
- org.eclipse.e4.core.services
+ org.eclipse.e4.core.services,
+ org.eclipse.fx.ui.panes,
+ org.eclipse.fx.code.compensator.project.bt.github,
+ org.eclipse.fx.ui.controls,
+ org.eclipse.jdt.annotation;bundle-version="2.0.100";resolution:=optional,
+ org.apache.commons.lang
Service-Component: OSGI-INF/services/gitvcs.xml
Bundle-ActivationPolicy: lazy
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/.gitignore b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/.gitignore
new file mode 100644
index 000000000..76d955046
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/.gitignore
@@ -0,0 +1 @@
+/TestMe.java
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitCommitDialog.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitCommitDialog.java
new file mode 100644
index 000000000..9f896fc48
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitCommitDialog.java
@@ -0,0 +1,209 @@
+package org.eclipse.fx.code.compensator.project.vcs.git;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javafx.beans.binding.StringBinding;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.geometry.Side;
+import javafx.scene.control.Button;
+import javafx.scene.control.ButtonBar.ButtonData;
+import javafx.scene.control.TabPane.TabClosingPolicy;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.Dialog;
+import javafx.scene.control.Label;
+import javafx.scene.control.Tab;
+import javafx.scene.control.TabPane;
+import javafx.scene.control.TextArea;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Priority;
+
+import org.apache.commons.lang.text.StrSubstitutor;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance.BugTrackerIssue;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance.CommitAction;
+import org.eclipse.fx.code.compensator.project.vcs.git.GitVCSRepositoryInstance.CommitData;
+import org.eclipse.fx.ui.controls.list.SimpleListCell;
+import org.eclipse.fx.ui.panes.GridData;
+import org.eclipse.fx.ui.panes.GridLayoutPane;
+
+public class GitCommitDialog extends Dialog<CommitData> {
+ public static final ButtonType push = new ButtonType("Push", ButtonData.APPLY);
+ public static final ButtonType commit = new ButtonType("Commit", ButtonData.OK_DONE);
+ public static final ButtonType cancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
+ private TextArea text;
+
+ private Collection<Path> paths;
+ private CheckBox gerritChange;
+ private CheckBox ammendCommit;
+ private List<BugData> bugData = new ArrayList<>();
+ private TextArea commitMessage;
+
+ private static class BugData {
+ private final ComboBox<CommitAction> action;
+ private final ComboBox<BugTrackerIssue> issue;
+
+ public BugData(ComboBox<CommitAction> action, ComboBox<BugTrackerIssue> issue) {
+ this.action = action;
+ this.issue = issue;
+ }
+ }
+
+ public GitCommitDialog(Collection<BugTrackerInstance> instance, Collection<Path> paths) {
+ this.paths = paths;
+ setHeaderText("Commit changes");
+ getDialogPane().getStyleClass().add("commit-dialog");
+ getDialogPane().getButtonTypes().addAll(push, commit, cancel);
+ getDialogPane().getStylesheets().add(getClass().getResource("dialog.css").toExternalForm());
+ setResultConverter(this::commitConverter);
+
+ TabPane tabPane = new TabPane();
+ tabPane.setSide(Side.RIGHT);
+ tabPane.setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE);
+
+ GridLayoutPane pane = new GridLayoutPane();
+
+ {
+ //FIXME need to deal with multi bug tracker per project
+ //FIXME Support multiple issues
+ Label l = new Label("Issue(s)");
+
+ HBox box = new HBox(5);
+
+ ObservableList<CommitAction> list = FXCollections.observableArrayList(BugTrackerInstance.NO_ACTION);
+ list.addAll(instance.iterator().next().getCommitActions());
+ ComboBox<CommitAction> action = new ComboBox<CommitAction>() {
+ @Override
+ protected double computeMinWidth(double height) {
+ return computePrefWidth(height);
+ }
+ };
+ action.setButtonCell(new SimpleListCell<CommitAction>(
+ o -> o.getLabel(),
+ o -> o.getGraphic(),
+ o -> Collections.emptyList()));
+ action.setCellFactory( e -> new SimpleListCell<CommitAction>(
+ o -> o.getLabel(),
+ o -> o.getGraphic(),
+ o -> Collections.emptyList()) );
+ action.setItems(list);
+ action.getSelectionModel().select(BugTrackerInstance.NO_ACTION);
+
+ ComboBox<BugTrackerIssue> bug = new ComboBox<>();
+ bug.setButtonCell(new SimpleListCell<BugTrackerIssue>(
+ o -> o.getId() + " - " + o.getTitle(),
+ o -> Collections.emptyList()));
+ bug.setCellFactory( v -> new SimpleListCell<BugTrackerIssue>(
+ o -> o.getId() + " - " + o.getTitle(),
+ o -> Collections.emptyList()));
+ bug.setMaxWidth(Double.MAX_VALUE);
+ bug.setItems(instance.iterator().next().getIssues());
+ HBox.setHgrow(bug, Priority.ALWAYS);
+
+ bugData.add(new BugData(action,bug));
+
+ Button b = new Button("New Bug ...") {
+ protected double computeMinWidth(double height) {
+ return computePrefWidth(height);
+ }
+ };
+ box.getChildren().addAll(action, bug, b);
+
+ GridLayoutPane.setConstraint(box, new GridData(GridData.FILL_HORIZONTAL));
+ pane.getChildren().addAll(l, box);
+ }
+
+ {
+ Label l = new Label("Message");
+
+ text = new TextArea();
+
+ GridLayoutPane.setConstraint(text, new GridData(GridData.FILL_HORIZONTAL));
+
+ pane.getChildren().addAll(l, text);
+ }
+
+ {
+ HBox box = new HBox(5);
+
+ gerritChange = new CheckBox("Gerrit change id");
+ ammendCommit = new CheckBox("Ammend");
+ box.getChildren().addAll(gerritChange, ammendCommit);
+ GridLayoutPane.setConstraint(box, new GridData(GridData.FILL_HORIZONTAL));
+
+ pane.getChildren().addAll(box);
+ }
+
+ Tab commitData = new Tab("Data", pane);
+ tabPane.getTabs().add(commitData);
+
+ commitMessage = new TextArea();
+ commitMessage.setEditable(false);
+
+ commitMessage.textProperty().bind(new StringBinding() {
+
+ {
+ bind(text.textProperty(), gerritChange.selectedProperty(), bugData.get(0).action.getSelectionModel().selectedItemProperty(), bugData.get(0).issue.getSelectionModel().selectedItemProperty());
+ }
+
+ @Override
+ protected String computeValue() {
+ return calculateMessage();
+ }
+
+ });
+
+ Tab finalCommit = new Tab("Summary",commitMessage);
+ tabPane.getTabs().add(finalCommit);
+
+ getDialogPane().setContent(tabPane);
+ }
+
+ private String calculateMessage() {
+ String message = this.text.getText();
+
+ List<String> data = new ArrayList<>();
+ for( BugData b : bugData ) {
+ CommitAction a = b.action.getSelectionModel().getSelectedItem();
+ BugTrackerIssue issue = b.issue.getSelectionModel().getSelectedItem();
+ if( issue != null && a != BugTrackerInstance.NO_ACTION ) {
+ Map<String, String> map = new HashMap<>();
+ map.put("id", issue.getId());
+ map.put("title", issue.getTitle());
+ data.add( StrSubstitutor.replace(a.getMessageTemplate(), map));
+ }
+ }
+
+
+ if( ! data.isEmpty() ) {
+ if( ! message.isEmpty() ) {
+ message += "\n\n";
+ }
+ message += data.stream().collect(Collectors.joining(""));
+ }
+
+ if( gerritChange.isSelected() ) {
+ message += "\nChange-Id: I0000000000000000000000000000000000000000";
+ }
+
+ return message;
+ }
+
+ private CommitData commitConverter(ButtonType type) {
+ if( type == cancel ) {
+ return CommitData.CANCEL;
+ } else {
+ return new CommitData(type, calculateMessage(), paths, ammendCommit.isSelected(), gerritChange.isSelected());
+ }
+ }
+
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVCSRepositoryInstance.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVCSRepositoryInstance.java
index 6a2877cae..f9cbde38d 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVCSRepositoryInstance.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVCSRepositoryInstance.java
@@ -1,27 +1,59 @@
package org.eclipse.fx.code.compensator.project.vcs.git;
+import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import javafx.scene.control.ButtonType;
+
+import org.eclipse.fx.code.compensator.model.workbench.VCSRepository;
import org.eclipse.fx.code.compensator.project.InstanceProject;
import org.eclipse.fx.code.compensator.project.vcs.VCSRepositoryInstance;
+import org.eclipse.fx.code.compensator.project.vcs.VersionControlService;
+import org.eclipse.jgit.api.CommitCommand;
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.PushCommand;
+import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.errors.UnsupportedCredentialItem;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
+import org.eclipse.jgit.transport.CredentialItem;
+import org.eclipse.jgit.transport.CredentialsProvider;
+import org.eclipse.jgit.transport.URIish;
public class GitVCSRepositoryInstance implements VCSRepositoryInstance {
private Path path;
private Repository repo;
+ private Git git;
+
+ private final GitVersionControlService service;
+ private final InstanceProject project;
+ private final VCSRepository repository;
- public GitVCSRepositoryInstance(Path path) {
+ public GitVCSRepositoryInstance(InstanceProject project, VCSRepository repository, GitVersionControlService service, Path path) {
+ this.service = service;
+ this.project = project;
+ this.repository = repository;
this.path = path;
try {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
- repo = builder.setGitDir(path.toFile()).readEnvironment().findGitDir().build();
+ repo = builder.setGitDir(new File(path.toFile(),".git")).readEnvironment().findGitDir().build();
+ git = new Git(repo);
+// git.branchCreate().setName("master")
+// .setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM)
+// .setStartPoint("origin/master").setForce(true).call();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
- }
+ }
+ }
+
+ @Override
+ public VersionControlService getService() {
+ return service;
}
@Override
@@ -55,7 +87,83 @@ public class GitVCSRepositoryInstance implements VCSRepositoryInstance {
@Override
public void commit(Collection<Path> pathList) {
- System.err.println("COMMIT: " + pathList);
+
+ GitCommitDialog dialog = new GitCommitDialog(project.getBugtrackerInstanceList(), pathList);
+ dialog.showAndWait().ifPresent( this::handleCommit );
+
+
}
+ private void handleCommit(CommitData c) {
+ if( c.type != GitCommitDialog.cancel ) {
+ CommitCommand cmd = git.commit();
+ for( Path p : c.paths ) {
+ System.err.println("PATH: " + p);
+ cmd.setOnly(path.relativize(p).toString());
+ }
+ cmd
+ .setMessage(c.message)
+ .setAmend(c.amend);
+
+ try {
+ cmd.call();
+
+ if(c.type == GitCommitDialog.push) {
+ git.push().setCredentialsProvider(new SSHCredentialProvider(repository.getRepoPassword())).add("master").call();
+ }
+ } catch (GitAPIException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static class CommitData {
+ public final ButtonType type;
+ public final String message;
+ public final Collection<Path> paths;
+ public final boolean amend;
+ public final boolean gerritChange;
+
+ public static CommitData CANCEL = new CommitData(ButtonType.CANCEL, "", Collections.emptyList(), false, false);
+
+ public CommitData(ButtonType type, String message, Collection<Path> paths, boolean amend, boolean gerritChange) {
+ this.type = type;
+ this.message = message;
+ this.paths = paths;
+ this.amend = amend;
+ this.gerritChange = gerritChange;
+ }
+ }
+
+ static class SSHCredentialProvider extends CredentialsProvider {
+ private String password;
+
+ public SSHCredentialProvider(String password) {
+ this.password = password;
+ }
+
+ @Override
+ public boolean get(URIish arg0, CredentialItem... items) throws UnsupportedCredentialItem {
+ for (CredentialItem item : items) {
+ if (item instanceof CredentialItem.StringType) {
+ ((CredentialItem.StringType) item).
+ setValue(password);
+ continue;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean isInteractive() {
+ return true;
+ }
+
+ @Override
+ public boolean supports(CredentialItem... arg0) {
+ return true;
+ }
+
+ }
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVersionControlService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVersionControlService.java
index 56539d92f..b37c0dd9b 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVersionControlService.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/GitVersionControlService.java
@@ -6,6 +6,8 @@ import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.fx.code.compensator.model.workbench.VCSRepository;
+import org.eclipse.fx.code.compensator.project.InstanceProject;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
import org.eclipse.fx.code.compensator.project.vcs.VCSRepositoryInstance;
import org.eclipse.fx.code.compensator.project.vcs.VCSRootNavigatorItem;
@@ -40,14 +42,18 @@ public class GitVersionControlService implements VersionControlService {
@Override
public ReturnValue<URI> cloneRepository(Path localDirectory, String url, String username,
String password, ProgressReporter reporter) {
- if( url.startsWith("ssh://") ) {
+ if( url.startsWith("ssh:") ) {
url = "ssh://"+ username + "@" + url.substring("ssh://".length());
} else if( url.startsWith("https://") ) {
url = "https://"+ username + "@" + url.substring("https://".length());
}
+
Git result = null;
try {
result = Git.cloneRepository().setURI(url).setCredentialsProvider(new SSHCredentialProvider(password)).setDirectory(localDirectory.toFile()).call();
+ if( result == null ) {
+ throw new IllegalStateException();
+ }
return ReturnValue.ok(localDirectory.toUri());
} catch (GitAPIException e) {
return ReturnValue.error("Unable to clone repository", e);
@@ -94,15 +100,9 @@ public class GitVersionControlService implements VersionControlService {
return new GitRepositoryItem(parent, repository, repository.getRootPath());
}
- private Map<String, GitVCSRepositoryInstance> instanceMap = new HashMap<>();
@Override
- public VCSRepositoryInstance getOrCreateRepository(String uri) {
- GitVCSRepositoryInstance rv = instanceMap.get(uri);
- if( rv == null ) {
- rv = new GitVCSRepositoryInstance(Paths.get(URI.create(uri)));
- instanceMap.put(uri, rv);
- }
- return rv;
+ public VCSRepositoryInstance createRepository(InstanceProject project, VCSRepository repository, String uri) {
+ return new GitVCSRepositoryInstance(project, repository, this,Paths.get(URI.create(uri)));
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/dialog.css b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/dialog.css
new file mode 100644
index 000000000..df6511b6b
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.vcs.git/src/org/eclipse/fx/code/compensator/project/vcs/git/dialog.css
@@ -0,0 +1,3 @@
+.combo-box > .list-cell > .label {
+ -fx-text-fill: -fx-text-base-color;
+} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.project/META-INF/MANIFEST.MF
index b2dff9557..c707b41e8 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/META-INF/MANIFEST.MF
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/META-INF/MANIFEST.MF
@@ -4,6 +4,8 @@ Bundle-Name: Project
Bundle-SymbolicName: org.eclipse.fx.code.compensator.project;singleton:=true
Bundle-Version: 1.0.0.qualifier
Export-Package: org.eclipse.fx.code.compensator.project,
+ org.eclipse.fx.code.compensator.project.bt,
+ org.eclipse.fx.code.compensator.project.ci,
org.eclipse.fx.code.compensator.project.navigator,
org.eclipse.fx.code.compensator.project.vcs
Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.1.0.v20140512-1820",
@@ -21,7 +23,8 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.1.0.v2014051
javax.inject,
org.eclipse.e4.ui.services,
org.eclipse.fx.code.compensator.editor,
- org.eclipse.e4.core.services
+ org.eclipse.e4.core.services,
+ org.eclipse.fx.ui.dialogs
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Service-Component: OSGI-INF/services/projectsetupcf.xml,OSGI-INF/services/projectextractorcf.xml,OSGI-INF/services/projectstylesheet.xml,
OSGI-INF/services/projectinstancecf.xml
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/css/dark.css b/experimental/compensator/org.eclipse.fx.code.compensator.project/css/dark.css
index 252defa61..c5bc04ed6 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/css/dark.css
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/css/dark.css
@@ -2,11 +2,11 @@
-fx-background-color: transparent;
}
-.new_project_dialog {
- -fx-graphic: url(icons/64/newprj_wiz.png);
+.titleDialog_Icon-new_project_dialog {
+ -fx-image: url(icons/64/newprj_wiz.png);
}
-.open_project_dialog {
- -fx-graphic: url(icons/64/prj_obj.png);
+.titleDialog_Icon-open_project_dialog {
+ -fx-image: url(icons/64/prj_obj.png);
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/css/default.css b/experimental/compensator/org.eclipse.fx.code.compensator.project/css/default.css
index 252defa61..c5bc04ed6 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/css/default.css
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/css/default.css
@@ -2,11 +2,11 @@
-fx-background-color: transparent;
}
-.new_project_dialog {
- -fx-graphic: url(icons/64/newprj_wiz.png);
+.titleDialog_Icon-new_project_dialog {
+ -fx-image: url(icons/64/newprj_wiz.png);
}
-.open_project_dialog {
- -fx-graphic: url(icons/64/prj_obj.png);
+.titleDialog_Icon-open_project_dialog {
+ -fx-image: url(icons/64/prj_obj.png);
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/fragment.e4xmi b/experimental/compensator/org.eclipse.fx.code.compensator.project/fragment.e4xmi
index fbc1f51fc..404f26e0d 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/fragment.e4xmi
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/fragment.e4xmi
@@ -50,6 +50,7 @@
<elements xsi:type="commands:Command" xmi:id="_quw04JZZEeSjZ8iCNzGAiA" elementId="org.eclipse.fx.code.compensator.project.command.openresource" commandName="Open Resource">
<parameters xmi:id="_1IWe4JZZEeSjZ8iCNzGAiA" elementId="resourceURI" name="Resource URI"/>
</elements>
+ <elements xsi:type="commands:Command" xmi:id="_fOAgMK5PEeSz6N7pcF6h1g" elementId="org.eclipse.fx.code.compensator.project.commit.activeInput" commandName="Commit Active Input"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_SOxssIPpEeS5JpVAKZcwIQ" featurename="handlers" parentElementId="org.eclipse.fx.code.compensator.app">
<elements xsi:type="commands:Handler" xmi:id="_Xsst8IPpEeS5JpVAKZcwIQ" elementId="org.eclipse.fx.code.compensator.project.handler.0" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project/org.eclipse.fx.code.compensator.project.internal.commands.NewLocalProject" command="_bSwrIIPoEeS5JpVAKZcwIQ"/>
@@ -57,5 +58,6 @@
<elements xsi:type="commands:Handler" xmi:id="_1e0r4IopEeS5JpVAKZcwIQ" elementId="org.eclipse.fx.code.compensator.project.handler.2" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project/org.eclipse.fx.code.compensator.project.internal.commands.OpenProjectDialog" command="_prnAAIPoEeS5JpVAKZcwIQ"/>
<elements xsi:type="commands:Handler" xmi:id="_wR0BAJZJEeSjZ8iCNzGAiA" elementId="org.eclipse.fx.code.compensator.project.handler.3" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project/org.eclipse.fx.code.compensator.project.internal.commands.SwitchPlayground" command="_u3zK4IRSEeS5JpVAKZcwIQ"/>
<elements xsi:type="commands:Handler" xmi:id="_vG9kMJZZEeSjZ8iCNzGAiA" elementId="org.eclipse.fx.code.compensator.project.handler.4" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project/org.eclipse.fx.code.compensator.project.internal.commands.OpenResource" command="_quw04JZZEeSjZ8iCNzGAiA"/>
+ <elements xsi:type="commands:Handler" xmi:id="_kkfcsK5PEeSz6N7pcF6h1g" elementId="org.eclipse.fx.code.compensator.project.handler.5" contributionURI="bundleclass://org.eclipse.fx.code.compensator.project/org.eclipse.fx.code.compensator.project.internal.commands.CommitActiveInput" command="_fOAgMK5PEeSz6N7pcF6h1g"/>
</fragments>
</fragment:ModelFragments>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/Constants.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/Constants.java
new file mode 100644
index 000000000..13f489d64
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/Constants.java
@@ -0,0 +1,8 @@
+package org.eclipse.fx.code.compensator.project;
+
+public class Constants {
+ public static final String TOPIC_ROOT = "org/eclipse/fx/code/compensator/project";
+ public static final String TOPIC_RESOURCE = TOPIC_ROOT + "/resource";
+ public static final String TOPIC_FILE = TOPIC_RESOURCE + "/file";
+ public static final String TOPIC_NEW_FILE = TOPIC_FILE + "/new";
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/EditorNavigation.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/EditorNavigation.java
index f761dc93d..3d5562393 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/EditorNavigation.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/EditorNavigation.java
@@ -1,32 +1,33 @@
package org.eclipse.fx.code.compensator.project;
-import javafx.geometry.Insets;
+import java.util.Collections;
+
import javafx.geometry.Orientation;
import javafx.scene.control.Label;
import javafx.scene.control.Separator;
-import javafx.scene.control.ToolBar;
import javafx.scene.control.Tooltip;
-import javafx.scene.layout.Background;
-import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
-import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
-import javafx.scene.paint.Color;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import org.eclipse.fx.code.compensator.project.internal.commands.CommitActiveInput;
import org.eclipse.fx.core.URI;
+import org.eclipse.fx.core.command.CommandService;
import org.eclipse.fx.ui.services.resources.GraphicsLoader;
public class EditorNavigation {
private final GraphicsLoader provider;
+ private final CommandService commandService;
+
@Inject
- public EditorNavigation(GraphicsLoader provider) {
+ public EditorNavigation(GraphicsLoader provider, CommandService commandService) {
this.provider = provider;
+ this.commandService = commandService;
}
@PostConstruct
@@ -65,7 +66,10 @@ public class EditorNavigation {
"org.eclipse.fx.code.compensator.project",
"css/icons/16/commit.png")));
label.setTooltip(new Tooltip("Commit"));
- box.getChildren().add(label);
+ box.getChildren().add(label);
+ label.setOnMouseClicked(e -> {
+ commandService.execute(CommitActiveInput.COMMAND_ID, Collections.emptyMap());
+ });
}
p.setTop(box);
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/InstanceProject.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/InstanceProject.java
index d69593fb9..fb28d3e58 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/InstanceProject.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/InstanceProject.java
@@ -7,10 +7,13 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.fx.code.compensator.model.workbench.BugTracker;
import org.eclipse.fx.code.compensator.model.workbench.LocalProject;
import org.eclipse.fx.code.compensator.model.workbench.Module;
import org.eclipse.fx.code.compensator.model.workbench.Project;
import org.eclipse.fx.code.compensator.model.workbench.VCSRepository;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerInstance;
+import org.eclipse.fx.code.compensator.project.bt.BugTrackerService;
import org.eclipse.fx.code.compensator.project.vcs.VCSRepositoryInstance;
import org.eclipse.fx.code.compensator.project.vcs.VersionControlService;
@@ -19,19 +22,34 @@ public abstract class InstanceProject {
private final List<VersionControlService> versionControlServiceList;
private final IEventBroker eventBroker;
private final List<VCSRepositoryInstance> repositoryInstanceList = new ArrayList<>();
+ private final List<BugTrackerService> bugtrackerServiceList;
+ private final List<BugTrackerInstance> bugtrackerInstanceList = new ArrayList<>();
public InstanceProject(
IEventBroker eventBroker,
Project project,
- List<VersionControlService> versionControlServiceList) {
+ List<VersionControlService> versionControlServiceList,
+ List<BugTrackerService> bugtrackerServiceList) {
this.eventBroker = eventBroker;
this.project = project;
+ this.project.setUserdata(this);
+ this.bugtrackerServiceList = bugtrackerServiceList;
this.versionControlServiceList = versionControlServiceList;
if( this.project instanceof LocalProject ) {
((LocalProject)this.project).getVcsRepositoryList().forEach(this::handleRepository);
}
+ project.getBugTrackerList().forEach(this::handleBugtracker);
}
+ private void handleBugtracker(BugTracker bugtracker) {
+ bugtrackerInstanceList.add(getBugtrackerServiceList()
+ .stream()
+ .filter( s -> s.getId().equals(bugtracker.getBugtrackerType()) )
+ .findFirst().
+ map(s -> s.createInstance(bugtracker)).get());
+ }
+
+
private void handleRepository(VCSRepository repository) {
Path path = Paths.get(java.net.URI.create(repository.getLocalURI()));
if( ! Files.exists(path) ) {
@@ -45,7 +63,7 @@ public abstract class InstanceProject {
.stream()
.filter(v -> v.getId().equals(repository.getRepoType()))
.findFirst()
- .map(v -> v.getOrCreateRepository(repository.getLocalURI())).get());
+ .map(v -> v.createRepository(this,repository,repository.getLocalURI())).get());
}
public final Project getProject() {
@@ -60,6 +78,14 @@ public abstract class InstanceProject {
return versionControlServiceList;
}
+ public final List<BugTrackerInstance> getBugtrackerInstanceList() {
+ return bugtrackerInstanceList;
+ }
+
+ public List<BugTrackerService> getBugtrackerServiceList() {
+ return bugtrackerServiceList;
+ }
+
public IEventBroker getEventBroker() {
return eventBroker;
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectMainToolbar.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectMainToolbar.java
index b0543f058..600c3c587 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectMainToolbar.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectMainToolbar.java
@@ -1,8 +1,10 @@
package org.eclipse.fx.code.compensator.project;
+import java.util.Collections;
import java.util.Iterator;
import java.util.stream.Collectors;
+
import javafx.geometry.Orientation;
import javafx.scene.Node;
import javafx.scene.control.Button;
@@ -11,13 +13,23 @@ import javafx.scene.control.ToolBar;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.BorderPane;
+
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarElement;
import org.eclipse.fx.code.compensator.project.ProjectService.ToolbarGroup;
+import org.eclipse.fx.core.command.CommandService;
public class ProjectMainToolbar {
-
+ private final CommandService commandService;
+
+ @Inject
+ public ProjectMainToolbar(CommandService commandService) {
+ this.commandService = commandService;
+ }
+
@PostConstruct
public void init(BorderPane parent, ProjectService service) {
ToolBar tb = new ToolBar();
@@ -29,7 +41,7 @@ public class ProjectMainToolbar {
while( iterator.hasNext() ) {
ToolbarGroup tg = iterator.next();
- tb.getItems().addAll(tg.getElementList().stream().map(ProjectMainToolbar::createItem).collect(Collectors.toList()));
+ tb.getItems().addAll(tg.getElementList().stream().map(this::createItem).collect(Collectors.toList()));
if( iterator.hasNext() ) {
tb.getItems().add(new Separator());
@@ -39,10 +51,13 @@ public class ProjectMainToolbar {
parent.setCenter(tb);
}
- static Node createItem(ToolbarElement e) {
+ Node createItem(ToolbarElement e) {
Button b = new Button();
b.getStyleClass().add(e.id);
b.setTooltip(new Tooltip(e.tooltip));
+ b.setOnAction(a -> {
+ commandService.execute(e.commandId, Collections.emptyMap());
+ });
return b;
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectNavigator.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectNavigator.java
index 185f5ab75..214f99f7e 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectNavigator.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectNavigator.java
@@ -2,9 +2,7 @@ package org.eclipse.fx.code.compensator.project;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
import java.util.stream.Collectors;
import javafx.beans.property.Property;
@@ -20,7 +18,6 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.inject.Inject;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
@@ -100,10 +97,10 @@ public class ProjectNavigator {
}
}
- @PreDestroy
- void close() {
- navigatorSelection.unbind();
- }
+// @PreDestroy
+// void close() {
+// navigatorSelection.unbind();
+// }
private static ObservableList<TreeItem<ProjectNavigatorItem>> createChildren(TreeItem<ProjectNavigatorItem> parent) {
ObservableList<TreeItem<ProjectNavigatorItem>> rv = FXCollections.observableArrayList();
@@ -116,7 +113,7 @@ public class ProjectNavigator {
}
parent.getValue().getChildren().addListener( (Change<? extends ProjectNavigatorItem> c) -> {
while( c.next() ) {
- rv.addAll(c.getAddedSubList()
+ rv.addAll(c.getFrom(),c.getAddedSubList()
.stream()
.map(i -> i.isLeaf() ? new TreeItem<ProjectNavigatorItem>(i) : new LazyTreeItem<ProjectNavigatorItem>(i, ProjectNavigator::createChildren))
.collect(Collectors.toList()));
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectService.java
index 9e69aa12b..4d9d1a600 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectService.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/ProjectService.java
@@ -65,11 +65,13 @@ public interface ProjectService {
public static abstract class ToolbarElement {
public final String id;
+ public final String commandId;
public final String tooltip;
- public ToolbarElement(String id, String tooltip) {
+ public ToolbarElement(String id, String tooltip, String commandId) {
this.id = id;
this.tooltip = tooltip;
+ this.commandId = commandId;
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerInstance.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerInstance.java
new file mode 100644
index 000000000..dfdbe227c
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerInstance.java
@@ -0,0 +1,104 @@
+package org.eclipse.fx.code.compensator.project.bt;
+
+import java.util.List;
+import java.util.function.Supplier;
+
+import javafx.collections.ObservableList;
+import javafx.scene.Node;
+
+public interface BugTrackerInstance {
+ public static CommitAction NO_ACTION = new DefaultAction("--", () -> null);
+
+ public interface CommitAction {
+ public String getLabel();
+ public Node getGraphic();
+ public String getMessageTemplate();
+ }
+
+ public static class DefaultAction implements CommitAction {
+ private final String label;
+ private final Supplier<Node> supplier;
+ private final String messageTemplate;
+
+ public DefaultAction(String label, String messageTemplate, Supplier<Node> supplier) {
+ this.label = label;
+ this.messageTemplate = messageTemplate;
+ this.supplier = supplier;
+ }
+
+ public DefaultAction(String label, String messageTemplate) {
+ this.label = label;
+ this.messageTemplate = messageTemplate;
+ this.supplier = null;
+ }
+
+ public DefaultAction(String label, Supplier<Node> supplier) {
+ this.label = label;
+ this.supplier = supplier;
+ this.messageTemplate = null;
+ }
+
+ public DefaultAction(String label) {
+ this.label = label;
+ this.supplier = null;
+ this.messageTemplate = null;
+ }
+
+ @Override
+ public String getLabel() {
+ return label;
+ }
+
+ @Override
+ public Node getGraphic() {
+ return supplier != null ? supplier.get() : null;
+ }
+
+ @Override
+ public String getMessageTemplate() {
+ return messageTemplate;
+ }
+ }
+
+ public interface IssueState {
+ public String getLabel();
+ public Node getGraphic();
+ }
+
+ public static class DefaultIssueState implements IssueState {
+ private final String label;
+ private final Supplier<Node> graphicSupplier;
+
+ public DefaultIssueState(String label, Supplier<Node> graphicSupplier) {
+ this.label = label;
+ this.graphicSupplier = graphicSupplier;
+ }
+
+ @Override
+ public String getLabel() {
+ return this.label;
+ }
+
+ @Override
+ public Node getGraphic() {
+ return this.graphicSupplier != null ? this.graphicSupplier.get() : null;
+ }
+ }
+
+ public interface BugTrackerIssue {
+ public String getId();
+ public String getTitle();
+ public String getDescription();
+ public IssueState getState();
+ public ObservableList<BugFollowUp> getFollowUpList();
+ }
+
+ public interface BugFollowUp {
+ public String getId();
+ public String getDescription();
+ }
+
+ public List<CommitAction> getCommitActions();
+ public ObservableList<BugTrackerIssue> getIssues();
+ public BugTrackerService getService();
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerRootNavigatorItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerRootNavigatorItem.java
new file mode 100644
index 000000000..8abce9024
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerRootNavigatorItem.java
@@ -0,0 +1,7 @@
+package org.eclipse.fx.code.compensator.project.bt;
+
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+
+public interface BugTrackerRootNavigatorItem extends ProjectNavigatorItem {
+
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerService.java
index 923e5abc9..2ab68ad97 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerService.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/bt/BugTrackerService.java
@@ -1,6 +1,12 @@
package org.eclipse.fx.code.compensator.project.bt;
+import org.eclipse.fx.code.compensator.model.workbench.BugTracker;
+import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+
public interface BugTrackerService {
public String getLabel();
public String getId();
+
+ public BugTrackerInstance createInstance(BugTracker bugtracker);
+ public BugTrackerRootNavigatorItem mapRepository(ProjectNavigatorItem parent, BugTrackerInstance instance);
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/CommitActiveInput.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/CommitActiveInput.java
new file mode 100644
index 000000000..001241bda
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/CommitActiveInput.java
@@ -0,0 +1,14 @@
+package org.eclipse.fx.code.compensator.project.internal.commands;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.fx.code.compensator.editor.VCSInput;
+
+public class CommitActiveInput {
+ public static final String COMMAND_ID = "org.eclipse.fx.code.compensator.project.commit.activeInput";
+ @Execute
+ public void commit(@Named("activeInput") VCSInput<?> input) {
+ input.commit();
+ }
+}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/NewLocalProject.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/NewLocalProject.java
index 6b31d5ff6..8ec00a198 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/NewLocalProject.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/NewLocalProject.java
@@ -5,6 +5,7 @@ import java.util.List;
import java.util.UUID;
import javafx.collections.FXCollections;
+import javafx.scene.Node;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Dialog;
@@ -13,6 +14,7 @@ import javafx.scene.control.ListCell;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
+import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.eclipse.e4.core.di.annotations.Execute;
@@ -27,11 +29,25 @@ import org.eclipse.fx.core.URI;
import org.eclipse.fx.core.command.CommandService;
import org.eclipse.fx.core.di.ScopedObjectFactory;
import org.eclipse.fx.core.di.Service;
+import org.eclipse.fx.ui.controls.stage.DefaultWindowPane;
+import org.eclipse.fx.ui.dialogs.TitleAreaDialog;
import org.eclipse.fx.ui.panes.GridData;
import org.eclipse.fx.ui.panes.GridLayoutPane;
import org.eclipse.fx.ui.services.resources.GraphicsLoader;
public class NewLocalProject {
+ TextField nameField;
+ ComboBox<ProjectService> projectType;
+ ComboBox<VersionControlService> repoType;
+ TextField repoUrl;
+ TextField repoLocalDir;
+ TextField repoUser;
+ TextField repoPassword;
+ ComboBox<String> bugtrackerType;
+ TextField bugTrackerUrl;
+ TextField bugTrackerUser;
+ TextField bugTrackerPassword;
+
@Execute
public void execute(Stage parent, Workbench workbench,
@Service List<ProjectService> projectServices,
@@ -39,26 +55,50 @@ public class NewLocalProject {
CommandService cmdService,
GraphicsLoader loader,
ScopedObjectFactory objFactory) {
- Dialog<ButtonType> d = new Dialog<>();
- d.setHeaderText("Create new local project");
- d.getDialogPane().getStyleClass().add("new_project_dialog");
- d.getDialogPane().getButtonTypes()
- .addAll(ButtonType.OK, ButtonType.CANCEL);
-
+ TitleAreaDialog dialog = new TitleAreaDialog(parent,"Create new local project","New local project","Provide in the fields below all informations to setup a local project","new_project_dialog") {
+
+ @Override
+ protected Node createDialogContent() {
+ return NewLocalProject.this.createDialogContent(projectServices, versionControl, loader);
+ }
+
+ protected org.eclipse.fx.ui.controls.stage.WindowPane getCustomWindowPane() {
+ return new DefaultWindowPane(new StackPane());
+ }
+ };
+
+ if( dialog.open() == TitleAreaDialog.OK_BUTTON ) {
+ LocalProject lp = WorkbenchFactory.eINSTANCE.createLocalProject();
+ lp.setProjectId(UUID.randomUUID().toString());
+ lp.setName(nameField.getText());
+ lp.setProjectType(projectType.getValue().getId());
+
+ VCSRepository r = WorkbenchFactory.eINSTANCE.createVCSRepository();
+ r.setRepoType(repoType.getValue().getId());
+ r.setRepoURI(repoUrl.getText());
+ r.setLocalURI(repoLocalDir.getText());
+ r.setRepoUsername(repoUser.getText());
+ r.setRepoPassword(repoPassword.getText());
+ lp.getVcsRepositoryList().add(r);
+
+ BugTracker t = WorkbenchFactory.eINSTANCE.createBugTracker();
+ t.setBugtrackerType(bugtrackerType.getValue());
+ t.setBugtrackerUrl(bugTrackerUrl.getText());
+ t.setBugtrackerUsername(bugTrackerUser.getText());
+ t.setBugtrackerPassword(bugTrackerPassword.getText());
+ lp.getBugTrackerList().add(t);
+
+ workbench.getProjectList().add(lp);
+
+ cmdService.execute("org.eclipse.fx.code.compensator.app.command.openproject", Collections.singletonMap("projectId", lp.getProjectId()));
+ }
+
+ }
+
+ private Node createDialogContent(List<ProjectService> projectServices, List<VersionControlService> versionControl, GraphicsLoader loader) {
GridLayoutPane p = new GridLayoutPane();
p.setMinWidth(600);
- TextField nameField;
- ComboBox<ProjectService> projectType;
- ComboBox<VersionControlService> repoType;
- TextField repoUrl;
- TextField repoLocalDir;
- TextField repoUser;
- TextField repoPassword;
- ComboBox<String> bugtrackerType;
- TextField bugTrackerUrl;
- TextField bugTrackerUser;
- TextField bugTrackerPassword;
{
p.getChildren().add(new Label("Name"));
@@ -179,36 +219,8 @@ public class NewLocalProject {
t.setContent(pp);
}
-
- d.getDialogPane().setContent(p);
- d.initOwner(parent);
- d.showAndWait().ifPresent(e -> {
- if( e == ButtonType.OK ) {
- LocalProject lp = WorkbenchFactory.eINSTANCE.createLocalProject();
- lp.setProjectId(UUID.randomUUID().toString());
- lp.setName(nameField.getText());
- lp.setProjectType(projectType.getValue().getId());
-
- VCSRepository r = WorkbenchFactory.eINSTANCE.createVCSRepository();
- r.setRepoType(repoType.getValue().getId());
- r.setRepoURI(repoUrl.getText());
- r.setLocalURI(repoLocalDir.getText());
- r.setRepoUsername(repoUser.getText());
- r.setRepoPassword(repoPassword.getText());
- lp.getVcsRepositoryList().add(r);
-
- BugTracker t = WorkbenchFactory.eINSTANCE.createBugTracker();
- t.setBugtrackerType(bugtrackerType.getValue());
- t.setBugtrackerUrl(bugTrackerUrl.getText());
- t.setBugtrackerUsername(bugTrackerUser.getText());
- t.setBugtrackerPassword(bugTrackerPassword.getText());
- lp.getBugTrackerList().add(t);
-
- workbench.getProjectList().add(lp);
-
- cmdService.execute("org.eclipse.fx.code.compensator.app.command.openproject", Collections.singletonMap("projectId", lp.getProjectId()));
- }
- });
+
+ return p;
}
static class ProjectTypeCell extends ListCell<ProjectService> {
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenProjectDialog.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenProjectDialog.java
index d44b8abcb..6c73a27d8 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenProjectDialog.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenProjectDialog.java
@@ -4,9 +4,9 @@ import java.util.Collections;
import java.util.List;
import javafx.collections.FXCollections;
-import javafx.scene.control.ButtonType;
-import javafx.scene.control.Dialog;
+import javafx.scene.Node;
import javafx.scene.control.ListView;
+import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.eclipse.e4.core.di.annotations.Execute;
@@ -16,31 +16,36 @@ import org.eclipse.fx.code.compensator.project.ProjectService;
import org.eclipse.fx.core.command.CommandService;
import org.eclipse.fx.core.di.Service;
import org.eclipse.fx.ui.controls.list.SimpleListCell;
+import org.eclipse.fx.ui.controls.stage.DefaultWindowPane;
import org.eclipse.fx.ui.controls.styledtext.StyledString;
import org.eclipse.fx.ui.controls.styledtext.StyledStringSegment;
+import org.eclipse.fx.ui.dialogs.TitleAreaDialog;
public class OpenProjectDialog {
@Execute
public void open(Stage parent, Workbench workbench, CommandService cmdService, @Service List<ProjectService> projectServiceList) {
- Dialog<ButtonType> d = new Dialog<>();
- d.initOwner(parent);
- d.setHeaderText("Open project");
- d.getDialogPane().getStyleClass().add("open_project_dialog");
- d.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
- d.setTitle("Open Project");
-
ListView<Project> list = new ListView<>();
list.setMinWidth(600);
list.setCellFactory(v -> new SimpleListCell<Project>( p -> labelExtractor(p, projectServiceList), p -> cssProvider(p,projectServiceList)));
list.setItems(FXCollections.observableArrayList(workbench.getProjectList()));
- d.getDialogPane().setContent(list);
- d.showAndWait().ifPresent(e -> {
- if( e == ButtonType.OK ) {
- if( list.getSelectionModel().getSelectedItem() != null ) {
- cmdService.execute("org.eclipse.fx.code.compensator.app.command.openproject", Collections.singletonMap("projectId", list.getSelectionModel().getSelectedItem().getProjectId()));
- }
+
+ TitleAreaDialog dialog = new TitleAreaDialog(parent,"Open project","Open project","Open an existing project","open_project_dialog") {
+
+ @Override
+ protected Node createDialogContent() {
+ return list;
+ }
+
+ protected org.eclipse.fx.ui.controls.stage.WindowPane getCustomWindowPane() {
+ return new DefaultWindowPane(new StackPane());
+ }
+ };
+
+ if( dialog.open() == TitleAreaDialog.OK_BUTTON ) {
+ if( list.getSelectionModel().getSelectedItem() != null ) {
+ cmdService.execute("org.eclipse.fx.code.compensator.app.command.openproject", Collections.singletonMap("projectId", list.getSelectionModel().getSelectedItem().getProjectId()));
}
- });
+ }
}
private static CharSequence labelExtractor(Project p, List<ProjectService> services) {
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenResource.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenResource.java
index abafd16ef..1760bcef3 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenResource.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/internal/commands/OpenResource.java
@@ -30,7 +30,7 @@ public class OpenResource {
p.setContributionURI("bundleclass://org.eclipse.fx.code.compensator.editor/org.eclipse.fx.code.compensator.editor.TextEditor");
p.getPersistedState().put(TextEditor.DOCUMENT_URL, uri);
p.setLabel(URI.createURI(uri).lastSegment());
- p.setIconURI(lookup.getFileIcon(uri).toString());
+ p.setIconURI(lookup.getFileIcon(uri) != null ? lookup.getFileIcon(uri).toString() : null);
p.setCloseable(true);
p.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
element.getChildren().add(p);
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/BugtrackerItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/BugtrackerContainerItem.java
index bc36dfaa3..c1021eb36 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/BugtrackerItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/BugtrackerContainerItem.java
@@ -1,16 +1,21 @@
package org.eclipse.fx.code.compensator.project.navigator;
+import java.util.stream.Collectors;
+
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
+import org.eclipse.fx.code.compensator.project.InstanceProject;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
import org.eclipse.fx.core.URI;
-public class BugtrackerItem implements ProjectNavigatorItem {
+public class BugtrackerContainerItem implements ProjectNavigatorItem {
private final ProjectItem parent;
+ private final ObservableList<ProjectNavigatorItem> bugtrackerItems = FXCollections.observableArrayList();
- public BugtrackerItem(ProjectItem parent) {
+ public BugtrackerContainerItem(ProjectItem parent, InstanceProject project) {
this.parent = parent;
+ bugtrackerItems.addAll(project.getBugtrackerInstanceList().stream().map( i -> i.getService().mapRepository(this, i)).collect(Collectors.toList()));
}
public ProjectNavigatorItem getParent() {
@@ -47,7 +52,7 @@ public class BugtrackerItem implements ProjectNavigatorItem {
@Override
public ObservableList<ProjectNavigatorItem> getChildren() {
- return FXCollections.emptyObservableList();
+ return bugtrackerItems;
}
@Override
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/FolderItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/FolderItem.java
index 3775e3564..b5138b09a 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/FolderItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/FolderItem.java
@@ -3,14 +3,19 @@ package org.eclipse.fx.code.compensator.project.navigator;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
+import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
+import org.eclipse.fx.core.FilesystemService;
+import org.eclipse.fx.core.FilesystemService.Kind;
import org.eclipse.fx.core.URI;
+import org.eclipse.fx.core.Util;
public class FolderItem extends PathItem {
private ObservableList<ProjectNavigatorItem> items;
@@ -28,6 +33,29 @@ public class FolderItem extends PathItem {
public FolderItem(ProjectNavigatorItem parent, Path path, BiFunction<Path, FolderItem, PathItem> pathItemFactory) {
super(parent,path);
this.pathItemFactory = pathItemFactory;
+ Util.lookupService(FilesystemService.class).observePath(path, this::handleFilesystemMod);
+ }
+
+ private void handleFilesystemMod(Kind kind, Path path) {
+ Platform.runLater(() -> _handleFilesystemMod(kind,path));
+ }
+
+ public void _handleFilesystemMod(Kind kind, Path path) {
+ if( items != null ) {
+ if( path.startsWith(getDomainObject()) ) {
+ PathItem item = null;
+ for( ProjectNavigatorItem i : items ) {
+ PathItem pi = (PathItem) i;
+ if( path.startsWith(pi.getDomainObject()) ) {
+ item = pi;
+ }
+ }
+
+ if( item == null ) {
+ refresh();
+ }
+ }
+ }
}
public FolderItem(ProjectNavigatorItem parent, Path path) {
@@ -49,6 +77,23 @@ public class FolderItem extends PathItem {
// TODO Auto-generated method stub
return null;
}
+
+ public void refresh() {
+ AtomicInteger idx = new AtomicInteger();
+
+ //TODO Need to fix that we remove items currently shown if not yet found anymore
+ try {
+ Files.newDirectoryStream(path).forEach((p) -> {
+ if( ! items.stream().filter( i -> ((Path)i.getDomainObject()).equals(p) ).findFirst().isPresent() ) {
+ items.add(idx.get(), pathItemFactory.apply(p.toAbsolutePath(), this));
+ }
+ idx.incrementAndGet();
+ });
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
@Override
public ObservableList<ProjectNavigatorItem> getChildren() {
@@ -63,7 +108,7 @@ public class FolderItem extends PathItem {
}
return items;
}
-
+
@Override
public boolean isLeaf() {
// TODO Auto-generated method stub
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/ProjectItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/ProjectItem.java
index eeef8b5b2..73a91ed29 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/ProjectItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/ProjectItem.java
@@ -1,14 +1,11 @@
package org.eclipse.fx.code.compensator.project.navigator;
-import java.nio.file.Path;
-
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import org.eclipse.fx.code.compensator.model.workbench.LocalProject;
import org.eclipse.fx.code.compensator.project.InstanceProject;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
-import org.eclipse.fx.code.compensator.project.vcs.VCSRootNavigatorItem;
import org.eclipse.fx.core.URI;
public class ProjectItem implements ProjectNavigatorItem {
@@ -19,7 +16,7 @@ public class ProjectItem implements ProjectNavigatorItem {
public ProjectItem(InstanceProject project) {
this.project = project;
children.add(new ModuleContainerItem(this,project));
- children.add(new BugtrackerItem(this));
+ children.add(new BugtrackerContainerItem(this,project));
children.add(new BuildServerItem(this));
if( project.getProject() instanceof LocalProject ) {
vcsContainerItem = new VCSContainerItem(this,project);
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/VCSContainerItem.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/VCSContainerItem.java
index da865fdd5..07a810ace 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/VCSContainerItem.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/navigator/VCSContainerItem.java
@@ -1,18 +1,15 @@
package org.eclipse.fx.code.compensator.project.navigator;
-import java.nio.file.Path;
import java.util.List;
import java.util.stream.Collectors;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
-import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.fx.code.compensator.model.workbench.LocalProject;
import org.eclipse.fx.code.compensator.model.workbench.VCSRepository;
import org.eclipse.fx.code.compensator.project.InstanceProject;
import org.eclipse.fx.code.compensator.project.ProjectNavigatorItem;
-import org.eclipse.fx.code.compensator.project.vcs.VCSRootNavigatorItem;
import org.eclipse.fx.core.URI;
public class VCSContainerItem implements ProjectNavigatorItem {
@@ -23,21 +20,14 @@ public class VCSContainerItem implements ProjectNavigatorItem {
public VCSContainerItem(ProjectItem parent, InstanceProject project) {
this.parent = parent;
this.project = project;
- List<VCSRepository> repoList = ((LocalProject)project.getProject()).getVcsRepositoryList();
- children.addAll(repoList.stream().map(this::mapToNavigator).collect(Collectors.toList()));
+// List<VCSRepository> repoList = ((LocalProject)project.getProject()).getVcsRepositoryList();
+ children.addAll(project.getRepositoryInstanceList().stream().map(r -> r.getService().mapRepository(this, r)).collect(Collectors.toList()));
}
@Override
public ProjectNavigatorItem getParent() {
return parent;
}
-
- private ProjectNavigatorItem mapToNavigator(VCSRepository r) {
- return project.getVersionControlServiceList().stream()
- .filter((v) -> v.getId().equals(r.getRepoType()))
- .findFirst()
- .map((v) -> v.mapRepository(this,v.getOrCreateRepository(r.getLocalURI()))).get();
- }
// public VCSRootNavigatorItem getRootItem(Path path) {
// for( ProjectNavigatorItem i : children ) {
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VCSRepositoryInstance.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VCSRepositoryInstance.java
index 099f32315..97f6a3b17 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VCSRepositoryInstance.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VCSRepositoryInstance.java
@@ -5,6 +5,7 @@ import java.util.Collection;
public interface VCSRepositoryInstance {
public Path getRootPath();
+ public VersionControlService getService();
public void fetch();
public void push();
public void merge();
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VersionControlService.java b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VersionControlService.java
index a4d137c6e..3c3a68a94 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VersionControlService.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.project/src/org/eclipse/fx/code/compensator/project/vcs/VersionControlService.java
@@ -16,5 +16,5 @@ public interface VersionControlService {
public ReturnValue<URI> cloneRepository(Path localDirectory, String url, String username, String password, ProgressReporter reporter);
public VCSRootNavigatorItem mapRepository(ProjectNavigatorItem parent, VCSRepositoryInstance instance);
- public VCSRepositoryInstance getOrCreateRepository(String uri);
+ public VCSRepositoryInstance createRepository(InstanceProject project, VCSRepository repository, String uri);
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.target.releng/compensator.target b/experimental/compensator/org.eclipse.fx.code.compensator.target.releng/compensator.target
index d37579a50..d2a9c080b 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.target.releng/compensator.target
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.target.releng/compensator.target
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="compensator-target" sequenceNumber="47">
+<?pde version="3.8"?><target name="compensator-target" sequenceNumber="60">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.fx.code.compensator.target.feature.feature.group" version="1.0.0.201501291702"/>
+<unit id="org.eclipse.fx.code.compensator.target.feature.feature.group" version="1.0.0.201502161457"/>
<repository location="http://download.eclipse.org/efxclipse/compensator/target/site"/>
</location>
</locations>
<includeBundles>
<plugin id="com.google.gson" version="2.1.0.v201303041604"/>
-<plugin id="com.google.gson" version="2.2.4.v201311231704"/>
<plugin id="com.google.guava"/>
<plugin id="com.google.guava.source"/>
<plugin id="com.google.inject"/>
@@ -290,6 +289,10 @@
<plugin id="org.eclipse.jdt.core"/>
<plugin id="org.eclipse.jdt.core.source"/>
<plugin id="org.eclipse.jdt.debug"/>
+<plugin id="org.eclipse.jdt.junit"/>
+<plugin id="org.eclipse.jdt.junit.core"/>
+<plugin id="org.eclipse.jdt.junit.runtime"/>
+<plugin id="org.eclipse.jdt.junit4.runtime"/>
<plugin id="org.eclipse.jdt.launching"/>
<plugin id="org.eclipse.jdt.launching.macosx"/>
<plugin id="org.eclipse.jetty.continuation"/>
@@ -324,6 +327,8 @@
<plugin id="org.eclipse.xtext.xbase"/>
<plugin id="org.eclipse.xtext.xbase.lib"/>
<plugin id="org.eclipse.xtext.xbase.lib.source"/>
+<plugin id="org.hamcrest.core"/>
+<plugin id="org.junit"/>
<plugin id="org.objectweb.asm"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
diff --git a/experimental/compensator/org.eclipse.fx.code.server.jdt.inmemory/src/org/eclipse/fx/code/server/jdt/inmemory/MemJDTServer.java b/experimental/compensator/org.eclipse.fx.code.server.jdt.inmemory/src/org/eclipse/fx/code/server/jdt/inmemory/MemJDTServer.java
index fa042ea8f..79dbeb44c 100644
--- a/experimental/compensator/org.eclipse.fx.code.server.jdt.inmemory/src/org/eclipse/fx/code/server/jdt/inmemory/MemJDTServer.java
+++ b/experimental/compensator/org.eclipse.fx.code.server.jdt.inmemory/src/org/eclipse/fx/code/server/jdt/inmemory/MemJDTServer.java
@@ -51,6 +51,11 @@ public class MemJDTServer implements JDTServer {
public Future<String> openFile(String moduleName, String path) {
return CompletableFuture.supplyAsync(() -> serverImpl.openFile(moduleName, path));
}
+
+ @Override
+ public Future<Boolean> createFile(String moduleName, String path, ByteBuffer content) {
+ return CompletableFuture.supplyAsync(() -> serverImpl.createFile(moduleName,path,content));
+ }
@Override
public Future<ByteBuffer> getFileContent(String id) {
diff --git a/experimental/compensator/org.eclipse.fx.code.server.jdt.server/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.server.jdt.server/META-INF/MANIFEST.MF
index 8c8a56cee..575dd85fb 100644
--- a/experimental/compensator/org.eclipse.fx.code.server.jdt.server/META-INF/MANIFEST.MF
+++ b/experimental/compensator/org.eclipse.fx.code.server.jdt.server/META-INF/MANIFEST.MF
@@ -7,7 +7,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.core.resources,
org.eclipse.jdt.core;bundle-version="3.10.0",
org.eclipse.fx.core,
- org.eclipse.jdt.launching;bundle-version="3.7.101"
+ org.eclipse.jdt.launching;bundle-version="3.7.101",
+ org.eclipse.equinox.preferences
Import-Package: org.eclipse.core.runtime,
org.eclipse.fx.code.server.jdt.shared,
org.osgi.framework;version="1.8.0"
diff --git a/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/Activator.java b/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/Activator.java
index 8abfdc7d6..300065931 100644
--- a/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/Activator.java
+++ b/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/Activator.java
@@ -1,6 +1,8 @@
package org.eclipse.fx.code.server.jdt.server;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
@@ -8,6 +10,12 @@ public class Activator implements BundleActivator {
@Override
public void start(BundleContext context) throws Exception {
+ IEclipsePreferences node = InstanceScope.INSTANCE.getNode("org.eclipse.core.resources");
+ node.putBoolean(ResourcesPlugin.PREF_LIGHTWEIGHT_AUTO_REFRESH, true);
+ node.putBoolean(ResourcesPlugin.PREF_AUTO_REFRESH, true);
+ node.sync();
+ node.flush();
+
System.err.println("START UP");
}
diff --git a/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/JDTServerImpl.java b/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/JDTServerImpl.java
index 4332fe608..d04ecaf5a 100644
--- a/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/JDTServerImpl.java
+++ b/experimental/compensator/org.eclipse.fx.code.server.jdt.server/src/org/eclipse/fx/code/server/jdt/server/JDTServerImpl.java
@@ -1,8 +1,14 @@
package org.eclipse.fx.code.server.jdt.server;
-import static org.eclipse.fx.core.function.ExExecutor.*;
+import static org.eclipse.fx.core.function.ExExecutor.executeConsumer;
+import static org.eclipse.fx.core.function.ExExecutor.executeFunction;
+import static org.eclipse.fx.core.function.ExExecutor.executeRunnable;
+import static org.eclipse.fx.core.function.ExExecutor.executeSupplier;
+import static org.eclipse.fx.core.function.ExExecutor.executeSupplierOrDefault;
+import java.io.ByteArrayInputStream;
import java.net.URI;
+import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -28,6 +34,8 @@ import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.fx.code.server.jdt.shared.JavaCodeCompleteProposal;
import org.eclipse.fx.code.server.jdt.shared.JavaCodeCompleteProposal.Modifier;
import org.eclipse.fx.code.server.jdt.shared.JavaCodeCompleteProposal.Type;
@@ -46,17 +54,20 @@ import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.Signature;
import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jdt.launching.JavaRuntime;
public class JDTServerImpl {
private Map<String, ResourceContainer<?>> openResources = new HashMap<>();
public JDTServerImpl() {
- System.err.println(JavaRuntime.getDefaultVMInstall());
+// System.err.println(node.get(ResourcesPlugin.PREF_LIGHTWEIGHT_AUTO_REFRESH,"NIX DA"));
+// System.err.println(node.get(ResourcesPlugin.PREF_AUTO_REFRESH,"NIX DA"));
+
+// System.err.println(JavaRuntime.getDefaultVMInstall());
}
public String registerModule(URI uri) {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
+
Path path = Paths.get(uri).resolve(".project");
try {
if( Files.exists(path) ) {
@@ -165,11 +176,30 @@ public class JDTServerImpl {
}
throw new IllegalArgumentException("Unable file '"+moduleName+"' in path '"+path+"'");
}
+
+ public Boolean createFile(String moduleName, String path, ByteBuffer content) {
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(moduleName);
+ if( project.exists() ) {
+ IFile file = project.getFile(new org.eclipse.core.runtime.Path(path));
+ if( ! file.exists() ) {
+ try {
+ file.create(new ByteArrayInputStream(content.array()), true, null);
+ return Boolean.TRUE;
+ } catch (CoreException e) {
+ throw new IllegalArgumentException("Unable to create new file '"+moduleName+"' in path '"+path+"'", e);
+ }
+ }
+ }
+
+ throw new IllegalArgumentException("Unable to create new file '"+moduleName+"' in path '"+path+"'");
+ }
+
private ResourceContainer<?> createResourceContainer(String moduleName, String path) {
if( path.endsWith(".java") ) {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(moduleName);
IFile file = project.getFile(new org.eclipse.core.runtime.Path(path));
+// executeRunnable(() -> file.refreshLocal(IResource.DEPTH_ONE, null), "Failed to synchronize file '"+file+"'");
if( ! file.exists() ) {
throw new IllegalStateException("The requested file does not exist");
@@ -538,6 +568,4 @@ public class JDTServerImpl {
}
}
-
-
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.server.jdt/src/org/eclipse/fx/code/server/jdt/JDTServer.java b/experimental/compensator/org.eclipse.fx.code.server.jdt/src/org/eclipse/fx/code/server/jdt/JDTServer.java
index 66cd35041..f5d4e739a 100644
--- a/experimental/compensator/org.eclipse.fx.code.server.jdt/src/org/eclipse/fx/code/server/jdt/JDTServer.java
+++ b/experimental/compensator/org.eclipse.fx.code.server.jdt/src/org/eclipse/fx/code/server/jdt/JDTServer.java
@@ -16,6 +16,7 @@ public interface JDTServer {
public Future<Boolean> isManaged(String moduleName, String path);
public Future<String> openFile(String moduleName, String path);
+ public Future<Boolean> createFile(String moduleName, String path, ByteBuffer content);
public Future<ByteBuffer> getFileContent(String id);
public Future<Boolean> setFileContent(String id, ByteBuffer content);

Back to the top