diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/inject/JavaGinModule.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/inject/JavaGinModule.java index 5ef45a71cf4..45a8d1bab5c 100644 --- a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/inject/JavaGinModule.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/inject/JavaGinModule.java @@ -123,6 +123,9 @@ protected void configure() { GinMapBinder.newMapBinder(binder(), String.class, FqnProvider.class); fqnProviders.addBinding("maven").to(JavaFqnProvider.class); + install( + new GinFactoryModuleBuilder() + .build(org.eclipse.che.ide.ext.java.client.navigation.filestructure.NodeFactory.class)); install(new GinFactoryModuleBuilder().build(JavaNodeFactory.class)); install( new GinFactoryModuleBuilder() diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/ElementSelectionDelegate.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/ElementSelectionDelegate.java similarity index 89% rename from plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/ElementSelectionDelegate.java rename to plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/ElementSelectionDelegate.java index 981d41a4afd..eda37418598 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/ElementSelectionDelegate.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/ElementSelectionDelegate.java @@ -9,7 +9,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.plugin.languageserver.ide.filestructure; +package org.eclipse.che.ide.ext.java.client.navigation.filestructure; /** * Interface to signal selection of an element diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructurePresenter.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructurePresenter.java index 3610b254362..eff79e222db 100644 --- a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructurePresenter.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructurePresenter.java @@ -21,7 +21,6 @@ import org.eclipse.che.ide.util.loging.Log; import org.eclipse.che.jdt.ls.extension.api.dto.ExtendedSymbolInformation; import org.eclipse.che.jdt.ls.extension.api.dto.FileStructureCommandParameters; -import org.eclipse.che.plugin.languageserver.ide.filestructure.ElementSelectionDelegate; import org.eclipse.che.plugin.languageserver.ide.util.DtoBuildHelper; import org.eclipse.che.plugin.languageserver.ide.util.OpenFileInEditorHelper; diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureTree.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureTree.java similarity index 96% rename from plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureTree.java rename to plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureTree.java index b1594579fe5..3f03d44afde 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureTree.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureTree.java @@ -9,7 +9,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.plugin.languageserver.ide.filestructure; +package org.eclipse.che.ide.ext.java.client.navigation.filestructure; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.Event; diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureView.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureView.java similarity index 97% rename from plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureView.java rename to plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureView.java index 07ad2ba6a91..74d832208f5 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureView.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureView.java @@ -9,7 +9,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.plugin.languageserver.ide.filestructure; +package org.eclipse.che.ide.ext.java.client.navigation.filestructure; import static org.eclipse.che.ide.ui.smartTree.SelectionModel.Mode.SINGLE; diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureView.ui.xml b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureView.ui.xml similarity index 83% rename from plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureView.ui.xml rename to plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureView.ui.xml index e6e83e662c7..1033c120098 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/FileStructureView.ui.xml +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureView.ui.xml @@ -12,6 +12,6 @@ --> + xmlns:g="urn:import:org.eclipse.che.ide.ext.java.client.navigation.filestructure"> \ No newline at end of file diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureWindow.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureWindow.java index b6f0d7aabbe..1e22a98851d 100644 --- a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureWindow.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/FileStructureWindow.java @@ -35,9 +35,6 @@ import org.eclipse.che.ide.util.input.SignalEvent; import org.eclipse.che.ide.util.input.SignalEventUtils; import org.eclipse.che.jdt.ls.extension.api.dto.ExtendedSymbolInformation; -import org.eclipse.che.plugin.languageserver.ide.filestructure.ElementSelectionDelegate; -import org.eclipse.che.plugin.languageserver.ide.filestructure.FileStructureView; -import org.eclipse.che.plugin.languageserver.ide.filestructure.NodeFactory; /** * A window showing a java specific file structure diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/NodeFactory.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/NodeFactory.java similarity index 89% rename from plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/NodeFactory.java rename to plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/NodeFactory.java index 74a917ab01d..65ea555ff81 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/NodeFactory.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/NodeFactory.java @@ -9,7 +9,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.plugin.languageserver.ide.filestructure; +package org.eclipse.che.ide.ext.java.client.navigation.filestructure; import org.eclipse.che.jdt.ls.extension.api.dto.ExtendedSymbolInformation; diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/SymbolNode.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/SymbolNode.java similarity index 84% rename from plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/SymbolNode.java rename to plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/SymbolNode.java index 026f19b000c..b595e9b4d3e 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/filestructure/SymbolNode.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/navigation/filestructure/SymbolNode.java @@ -9,7 +9,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.plugin.languageserver.ide.filestructure; +package org.eclipse.che.ide.ext.java.client.navigation.filestructure; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; @@ -17,13 +17,13 @@ import java.util.stream.Collectors; import org.eclipse.che.api.promises.client.Promise; import org.eclipse.che.api.promises.client.PromiseProvider; +import org.eclipse.che.ide.ext.java.client.util.SymbolIcons; import org.eclipse.che.ide.ui.smartTree.data.AbstractTreeNode; import org.eclipse.che.ide.ui.smartTree.data.HasAction; import org.eclipse.che.ide.ui.smartTree.data.Node; import org.eclipse.che.ide.ui.smartTree.presentation.HasNewPresentation; import org.eclipse.che.ide.ui.smartTree.presentation.NewNodePresentation; import org.eclipse.che.jdt.ls.extension.api.dto.ExtendedSymbolInformation; -import org.eclipse.che.plugin.languageserver.ide.navigation.symbol.SymbolKindHelper; /** * A node presenting {@link ExtendedSymbolInformation} objects @@ -31,18 +31,18 @@ * @author Thomas Mäder */ public class SymbolNode extends AbstractTreeNode implements HasNewPresentation, HasAction { - private SymbolKindHelper symbolHelper; + private SymbolIcons symbolIcons; private PromiseProvider promiseProvider; private ElementSelectionDelegate delegate; private ExtendedSymbolInformation symbol; @Inject public SymbolNode( - SymbolKindHelper symbolHelper, + SymbolIcons symbolIcons, PromiseProvider promiseProvider, @Assisted ElementSelectionDelegate delegate, @Assisted ExtendedSymbolInformation symbol) { - this.symbolHelper = symbolHelper; + this.symbolIcons = symbolIcons; this.promiseProvider = promiseProvider; this.delegate = delegate; this.symbol = symbol; @@ -64,7 +64,7 @@ protected Promise> getChildrenImpl() { symbol .getChildren() .stream() - .map(child -> new SymbolNode(symbolHelper, promiseProvider, delegate, child)) + .map(child -> new SymbolNode(symbolIcons, promiseProvider, delegate, child)) .collect(Collectors.toList())); } @@ -72,7 +72,7 @@ protected Promise> getChildrenImpl() { public NewNodePresentation getPresentation() { String name = symbol.getInfo().getName(); return new NewNodePresentation.Builder() - .withIcon(symbolHelper.getIcon(symbol.getInfo().getKind())) + .withIcon(symbolIcons.get(symbol)) .withNodeText(name) .build(); } diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/util/SymbolIcons.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/util/SymbolIcons.java new file mode 100644 index 00000000000..cfecb9610f7 --- /dev/null +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/util/SymbolIcons.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.ide.ext.java.client.util; + +import com.google.common.collect.ImmutableMap; +import java.util.Map; +import org.eclipse.che.ide.ext.java.client.JavaResources; +import org.eclipse.che.jdt.ls.extension.api.Visibility; +import org.eclipse.che.jdt.ls.extension.api.dto.ExtendedSymbolInformation; +import org.eclipse.lsp4j.SymbolKind; +import org.vectomatic.dom.svg.ui.SVGResource; + +public class SymbolIcons { + private static final Map> resources; + + static { + resources = + new ImmutableMap.Builder>() + .put( + Visibility.PUBLIC, + new ImmutableMap.Builder() + .put(SymbolKind.Package, JavaResources.INSTANCE.packageItem()) + .put(SymbolKind.Class, JavaResources.INSTANCE.svgClassItem()) + .put(SymbolKind.Method, JavaResources.INSTANCE.publicMethod()) + .put(SymbolKind.Field, JavaResources.INSTANCE.publicField()) + .put(SymbolKind.Constructor, JavaResources.INSTANCE.publicMethod()) + .put(SymbolKind.Enum, JavaResources.INSTANCE.enumItem()) + .put(SymbolKind.Interface, JavaResources.INSTANCE.interfaceItem()) + .put(SymbolKind.Field, JavaResources.INSTANCE.publicField()) + .put(SymbolKind.Constant, JavaResources.INSTANCE.publicField()) + .put(SymbolKind.EnumMember, JavaResources.INSTANCE.publicField()) + .build()) + .put( + Visibility.PROTECTED, + new ImmutableMap.Builder() + .put(SymbolKind.Package, JavaResources.INSTANCE.packageItem()) + .put(SymbolKind.Class, JavaResources.INSTANCE.svgClassItem()) + .put(SymbolKind.Method, JavaResources.INSTANCE.protectedMethod()) + .put(SymbolKind.Field, JavaResources.INSTANCE.protectedField()) + .put(SymbolKind.Constructor, JavaResources.INSTANCE.protectedMethod()) + .put(SymbolKind.Enum, JavaResources.INSTANCE.enumItem()) + .put(SymbolKind.Interface, JavaResources.INSTANCE.interfaceItem()) + .put(SymbolKind.Field, JavaResources.INSTANCE.protectedField()) + .put(SymbolKind.Constant, JavaResources.INSTANCE.protectedField()) + .put(SymbolKind.EnumMember, JavaResources.INSTANCE.protectedField()) + .build()) + .put( + Visibility.PACKAGE, + new ImmutableMap.Builder() + .put(SymbolKind.Package, JavaResources.INSTANCE.packageItem()) + .put(SymbolKind.Class, JavaResources.INSTANCE.svgClassItem()) + .put(SymbolKind.Method, JavaResources.INSTANCE.defaultMethod()) + .put(SymbolKind.Field, JavaResources.INSTANCE.defaultField()) + .put(SymbolKind.Constructor, JavaResources.INSTANCE.defaultMethod()) + .put(SymbolKind.Enum, JavaResources.INSTANCE.enumItem()) + .put(SymbolKind.Interface, JavaResources.INSTANCE.interfaceItem()) + .put(SymbolKind.Field, JavaResources.INSTANCE.defaultField()) + .put(SymbolKind.Constant, JavaResources.INSTANCE.defaultField()) + .put(SymbolKind.EnumMember, JavaResources.INSTANCE.defaultField()) + .build()) + .put( + Visibility.PRIVATE, + new ImmutableMap.Builder() + .put(SymbolKind.Package, JavaResources.INSTANCE.packageItem()) + .put(SymbolKind.Class, JavaResources.INSTANCE.svgClassItem()) + .put(SymbolKind.Method, JavaResources.INSTANCE.privateMethod()) + .put(SymbolKind.Field, JavaResources.INSTANCE.privateField()) + .put(SymbolKind.Constructor, JavaResources.INSTANCE.privateMethod()) + .put(SymbolKind.Enum, JavaResources.INSTANCE.enumItem()) + .put(SymbolKind.Interface, JavaResources.INSTANCE.interfaceItem()) + .put(SymbolKind.Field, JavaResources.INSTANCE.privateField()) + .put(SymbolKind.Constant, JavaResources.INSTANCE.privateField()) + .put(SymbolKind.EnumMember, JavaResources.INSTANCE.privateField()) + .build()) + .build(); + } + + public SVGResource get(ExtendedSymbolInformation symbol) { + Visibility visiblity = symbol.getVisiblity(); + return resources + .get(visiblity == null ? Visibility.PACKAGE : visiblity) + .get(symbol.getInfo().getKind()); + } +} diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/inject/LanguageServerGinModule.java b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/inject/LanguageServerGinModule.java index 1c2b149ebf6..c53b68ace4b 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/inject/LanguageServerGinModule.java +++ b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/inject/LanguageServerGinModule.java @@ -48,9 +48,6 @@ protected void configure() { install(new GinFactoryModuleBuilder().build(LanguageServerReconcileStrategyFactory.class)); install(new GinFactoryModuleBuilder().build(LanguageServerSignatureHelpFactory.class)); install(new GinFactoryModuleBuilder().build(RenameNodeFactory.class)); - install( - new GinFactoryModuleBuilder() - .build(org.eclipse.che.plugin.languageserver.ide.filestructure.NodeFactory.class)); bind(PublishDiagnosticsReceiver.class).asEagerSingleton(); bind(ShowMessageJsonRpcReceiver.class).asEagerSingleton(); diff --git a/pom.xml b/pom.xml index 5f2b30fbcd1..b37881a3093 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ 6.14.0-SNAPSHOT 6.14.0-SNAPSHOT 6.14.0-SNAPSHOT - 0.0.1 + 0.0.2-SNAPSHOT 6.14.0-SNAPSHOT 1.0-beta2