diff options
author | Tom Schindl | 2015-02-06 08:28:04 +0000 |
---|---|---|
committer | Tom Schindl | 2015-02-06 08:28:04 +0000 |
commit | 7232dafcf353e89efb9a4c313aa2929dde3bbf10 (patch) | |
tree | b559855e9414f3d4180bb72e10116975749da538 /experimental | |
parent | 5bbe5988821162dca01acebfd7d95eac8296a5c8 (diff) | |
download | org.eclipse.efxclipse-7232dafcf353e89efb9a4c313aa2929dde3bbf10.tar.gz org.eclipse.efxclipse-7232dafcf353e89efb9a4c313aa2929dde3bbf10.tar.xz org.eclipse.efxclipse-7232dafcf353e89efb9a4c313aa2929dde3bbf10.zip |
switched input creation to DI
Diffstat (limited to 'experimental')
11 files changed, 118 insertions, 60 deletions
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/InputContextFunction.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/InputContextFunction.java index b27859ba2..a6f814024 100644 --- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/InputContextFunction.java +++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/InputContextFunction.java @@ -11,6 +11,7 @@ package org.eclipse.fx.code.compensator.editor.contrib; import org.eclipse.e4.core.contexts.ContextFunction; +import org.eclipse.e4.core.contexts.ContextInjectionFactory; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.fx.code.compensator.editor.Input; @@ -26,7 +27,9 @@ public class InputContextFunction extends ContextFunction { if( url != null ) { ServiceCollector collector = context.get(ServiceCollector.class); - input = collector.createInput(url); + context.set(TextEditor.DOCUMENT_URL, url); + context.set(TextEditor.VCS_URL, part.getPersistedState().get(TextEditor.VCS_URL)); + input = ContextInjectionFactory.make(collector.createInput(url),context); context.set("localInput", input); } } diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java index 0aa70a2d0..56684e701 100644 --- a/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java +++ b/experimental/compensator/org.eclipse.fx.code.compensator.editor.contrib/src/org/eclipse/fx/code/compensator/editor/contrib/ServiceCollector.java @@ -109,8 +109,8 @@ public class ServiceCollector implements DocumentPersitenceService, FileIconLook fileIconProvider.add(provider); } - public <O> Input<O> createInput(String url) { - Optional<Input<O>> map = inputProviderList.stream().filter((p) -> p.applies(url)).findFirst().map((p) -> p.createInput(url)); + public Class<Input<?>> createInput(String url) { + Optional<Class<Input<?>>> map = inputProviderList.stream().filter((p) -> p.applies(url)).findFirst().map((p) -> p.createInput(url)); if( map.isPresent() ) { return map.get(); } diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTAnnotationPresenter.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTAnnotationPresenter.java index 383cdc05c..a471d1ead 100644 --- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTAnnotationPresenter.java +++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTAnnotationPresenter.java @@ -31,7 +31,7 @@ public class JDTAnnotationPresenter implements AnnotationPresenter { if( ja.getMarker().getType() == Type.PROBLEM ) { switch (ja.getMarker().getSeverity()) { case ERROR: - n = loader.getGraphicsNode(URI.createPlatformPluginURI("org.eclipse.fx.code.compensator.project", "css/icons/16/message_error.png")); + n = loader.getGraphicsNode(URI.createPlatformPluginURI("org.eclipse.fx.code.compensator.project", "css/icons/16/window-close.png")); break; case INFO: n = loader.getGraphicsNode(URI.createPlatformPluginURI("org.eclipse.fx.code.compensator.project", "css/icons/16/message_info.png")); 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 52477d416..bc98bfd9e 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 @@ -85,22 +85,7 @@ public class JDTInstanceProject extends InstanceProject { 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); - - Path repoRelativePath = null; - Path vcsPathRoot = null; - - for( VCSRepository r : ((LocalProject)getProject()).getVcsRepositoryList() ) { - Path vcsPath = Paths.get(java.net.URI.create(r.getLocalURI())); - if( jdtItem.getDomainObject().startsWith(vcsPath) ) { - repoRelativePath = vcsPath.relativize(jdtItem.getDomainObject()); - vcsPathRoot = vcsPath; - break; - } - } - - if( vcsPathRoot != null ) { - p.getPersistedState().put(TextEditor.VCS_URL, "vcs:git:"+vcsPathRoot.toUri()+"?"+repoRelativePath.getFileName().toString()); - } + p.getPersistedState().put(TextEditor.VCS_URL, jdtItem.getDomainObject().toUri().toString()); p.setLabel(URI.createURI(url).lastSegment()); p.setIconURI(fileLookup.getFileIcon(url).toString()); 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 bb922f1b7..bfb381eb1 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 @@ -1,30 +1,63 @@ package org.eclipse.fx.code.compensator.project.jdt.internal; import java.nio.ByteBuffer; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +import javax.inject.Inject; +import javax.inject.Named; + import org.eclipse.fx.code.compensator.editor.ContentTypeProvider; import org.eclipse.fx.code.compensator.editor.Input; +import org.eclipse.fx.code.compensator.editor.TextEditor; import org.eclipse.fx.code.compensator.editor.URIProvider; import org.eclipse.fx.code.compensator.editor.VCSInput; +import org.eclipse.fx.code.compensator.project.InstanceProject; import org.eclipse.fx.code.compensator.project.vcs.VCSRepositoryInstance; import org.eclipse.fx.code.server.jdt.JDTServer; +import org.eclipse.fx.code.server.jdt.JDTServerFactory; import org.eclipse.fx.core.URI; public class JDTServerInput implements Input<String>, ContentTypeProvider, URIProvider, VCSInput<String> { public final JDTServer server; public final Future<String> openFile; private final String uri; - - public JDTServerInput(JDTServer server, VCSRepositoryInstance repository, String uri, String module, String path) { + 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); + JDTServer server = factory.getOrCreateServer(uri.segment(0)); + String module = uri.segment(1); + StringBuilder b = new StringBuilder(); + + for( int i = 2; i < uri.segmentCount(); i++ ) { + if( b.length() > 0 ) { + b.append('/'); + } + b.append(uri.segment(i)); + } this.server = server; - this.uri = uri; - this.openFile = this.server.openFile(module, path); + this.uri = url; + this.openFile = this.server.openFile(module, b.toString()); + + filePath = Paths.get(java.net.URI.create(vcsUrl)); + for( VCSRepositoryInstance i : project.getRepositoryInstanceList() ) { + if( filePath.startsWith(i.getRootPath()) ) { + repositoryInstance = i; + break; + } + } } @Override public Future<Boolean> commit() { + repositoryInstance.commit(Collections.singleton(filePath)); return null; } diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInputFactory.java b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInputFactory.java index 598bdbad8..699779c8c 100644 --- a/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInputFactory.java +++ b/experimental/compensator/org.eclipse.fx.code.compensator.project.jdt/src/org/eclipse/fx/code/compensator/project/jdt/internal/JDTServerInputFactory.java @@ -7,7 +7,7 @@ import org.eclipse.fx.code.compensator.editor.services.InputFactory; import org.eclipse.fx.code.server.jdt.JDTServer; import org.eclipse.fx.code.server.jdt.JDTServerFactory; -public class JDTServerInputFactory implements InputFactory { +public class JDTServerInputFactory implements InputFactory<JDTServerInput> { private JDTServerFactory factory; public void registerJDTServerFactory(JDTServerFactory factory) { @@ -20,19 +20,20 @@ public class JDTServerInputFactory implements InputFactory { } @Override - public <O> Input<O> createInput(String url) { - URI uri = URI.createURI(url); - JDTServer server = factory.getOrCreateServer(uri.segment(0)); - String module = uri.segment(1); - StringBuilder b = new StringBuilder(); - - for( int i = 2; i < uri.segmentCount(); i++ ) { - if( b.length() > 0 ) { - b.append('/'); - } - b.append(uri.segment(i)); - } - return (Input<O>) new JDTServerInput(server,null,url,module,b.toString()); + public Class<JDTServerInput> createInput(String url) { +// URI uri = URI.createURI(url); +// JDTServer server = factory.getOrCreateServer(uri.segment(0)); +// String module = uri.segment(1); +// StringBuilder b = new StringBuilder(); +// +// for( int i = 2; i < uri.segmentCount(); i++ ) { +// if( b.length() > 0 ) { +// b.append('/'); +// } +// b.append(uri.segment(i)); +// } +// return (Input<O>) new JDTServerInput(server,null,url,module,b.toString()); + return JDTServerInput.class; } } 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 b343d2214..6a2877cae 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 @@ -55,8 +55,7 @@ public class GitVCSRepositoryInstance implements VCSRepositoryInstance { @Override public void commit(Collection<Path> pathList) { - // TODO Auto-generated method stub - + System.err.println("COMMIT: " + pathList); } } 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 25d568b3a..252defa61 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 @@ -8,4 +8,5 @@ .open_project_dialog { -fx-graphic: url(icons/64/prj_obj.png); -}
\ No newline at end of file +} + 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 c4c7de458..252defa61 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 @@ -9,3 +9,4 @@ .open_project_dialog { -fx-graphic: url(icons/64/prj_obj.png); } + 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 b87900cc3..f761dc93d 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,8 +1,19 @@ package org.eclipse.fx.code.compensator.project; +import javafx.geometry.Insets; +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; @@ -12,7 +23,7 @@ import org.eclipse.fx.ui.services.resources.GraphicsLoader; public class EditorNavigation { private final GraphicsLoader provider; - + @Inject public EditorNavigation(GraphicsLoader provider) { this.provider = provider; @@ -28,24 +39,35 @@ public class EditorNavigation { .createPlatformPluginURI( "org.eclipse.fx.code.compensator.project", "css/icons/16/main_tab.png")))); -// Pane spacer = new Pane(); -// HBox.setHgrow(spacer, Priority.ALWAYS); -// box.getChildren().add(spacer); -// box.getChildren().add( -// new Label(null, provider.getGraphicsNode(URI -// .createPlatformPluginURI( -// "org.eclipse.fx.code.compensator.project", -// "css/icons/16/message_error.png")))); -// box.getChildren().add( -// new Label(null, provider.getGraphicsNode(URI -// .createPlatformPluginURI( -// "org.eclipse.fx.code.compensator.project", -// "css/icons/16/message_warning.png")))); -// box.getChildren().add( -// new Label(null, provider.getGraphicsNode(URI -// .createPlatformPluginURI( -// "org.eclipse.fx.code.compensator.project", -// "css/icons/16/message_info.png")))); + Pane spacer = new Pane(); + HBox.setHgrow(spacer, Priority.ALWAYS); + box.getChildren().add(spacer); + +// { +// Label e = new Label("1", provider.getGraphicsNode(URI.createPlatformPluginURI( +// "org.eclipse.fx.code.compensator.project", "css/icons/16/window-close.png"))); +// box.getChildren().add( +// e); +// } +// +// { +// Label e = new Label("1", provider.getGraphicsNode(URI.createPlatformPluginURI( +// "org.eclipse.fx.code.compensator.project", "css/icons/16/message_warning.png"))); +// box.getChildren().add( +// e); +// } + + box.getChildren().add(new Separator(Orientation.VERTICAL)); + + { + Label label = new Label(null, provider.getGraphicsNode(URI + .createPlatformPluginURI( + "org.eclipse.fx.code.compensator.project", + "css/icons/16/commit.png"))); + label.setTooltip(new Tooltip("Commit")); + box.getChildren().add(label); + } + 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 d197b974e..d69593fb9 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 @@ -3,6 +3,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.List; import org.eclipse.e4.core.services.events.IEventBroker; @@ -10,12 +11,14 @@ 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.vcs.VCSRepositoryInstance; import org.eclipse.fx.code.compensator.project.vcs.VersionControlService; public abstract class InstanceProject { private final Project project; private final List<VersionControlService> versionControlServiceList; private final IEventBroker eventBroker; + private final List<VCSRepositoryInstance> repositoryInstanceList = new ArrayList<>(); public InstanceProject( IEventBroker eventBroker, @@ -37,11 +40,21 @@ public abstract class InstanceProject { .filter(v -> v.getId().equals(repository.getRepoType())) .findFirst().ifPresent(v -> v.cloneRepository(path, repository.getRepoURI(), repository.getRepoUsername(), repository.getRepoPassword(), null)); } + + repositoryInstanceList.add(getVersionControlServiceList() + .stream() + .filter(v -> v.getId().equals(repository.getRepoType())) + .findFirst() + .map(v -> v.getOrCreateRepository(repository.getLocalURI())).get()); } public final Project getProject() { return project; } + + public List<VCSRepositoryInstance> getRepositoryInstanceList() { + return repositoryInstanceList; + } public final List<VersionControlService> getVersionControlServiceList() { return versionControlServiceList; |