From 9183ae4035c3e3fa30c252bb896e9bea2fbcefed Mon Sep 17 00:00:00 2001 From: Roman Nikitenko Date: Mon, 11 Dec 2017 17:46:14 +0200 Subject: [PATCH] CHE-7163. Add ability to fast reveal and collapse resources Signed-off-by: Roman Nikitenko --- .../che/ide/CoreLocalizationConstant.java | 6 +++++ .../che/ide/actions/CollapseAllAction.java | 22 +++--------------- .../core/StandardComponentInitializer.java | 23 +++++++++++++++---- .../project/ProjectExplorerPresenter.java | 3 +-- .../action/RevealResourceAction.java | 9 ++++++-- .../ide/CoreLocalizationConstant.properties | 4 ++++ 6 files changed, 39 insertions(+), 28 deletions(-) diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/CoreLocalizationConstant.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/CoreLocalizationConstant.java index b1340f165f..4efc98705f 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/CoreLocalizationConstant.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/CoreLocalizationConstant.java @@ -26,6 +26,12 @@ public interface CoreLocalizationConstant extends Messages { @Key("extension.category") String extensionCategory(); + @Key("action.revealResource.text") + String actionRevealResourceText(); + + @Key("action.revealResource.description") + String actionRevealResourceDescription(); + @Key("action.navigateToFile.text") String actionNavigateToFileText(); diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/CollapseAllAction.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/CollapseAllAction.java index 4dd7c1f763..76c65a8d41 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/CollapseAllAction.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/CollapseAllAction.java @@ -12,13 +12,9 @@ package org.eclipse.che.ide.actions; import com.google.inject.Inject; import com.google.inject.Singleton; -import com.google.web.bindery.event.shared.EventBus; import org.eclipse.che.ide.CoreLocalizationConstant; import org.eclipse.che.ide.api.action.ActionEvent; import org.eclipse.che.ide.api.action.BaseAction; -import org.eclipse.che.ide.api.parts.ActivePartChangedEvent; -import org.eclipse.che.ide.api.parts.ActivePartChangedHandler; -import org.eclipse.che.ide.api.parts.PartPresenter; import org.eclipse.che.ide.part.explorer.project.ProjectExplorerPresenter; /** @@ -27,37 +23,25 @@ import org.eclipse.che.ide.part.explorer.project.ProjectExplorerPresenter; * @author Vlad Zhukovskiy */ @Singleton -public class CollapseAllAction extends BaseAction implements ActivePartChangedHandler { - +public class CollapseAllAction extends BaseAction { private ProjectExplorerPresenter projectExplorer; - private PartPresenter activePart; - @Inject public CollapseAllAction( - ProjectExplorerPresenter projectExplorer, - EventBus eventBus, - CoreLocalizationConstant localizationConstant) { + ProjectExplorerPresenter projectExplorer, CoreLocalizationConstant localizationConstant) { super( localizationConstant.collapseAllActionTitle(), localizationConstant.collapseAllActionDescription()); this.projectExplorer = projectExplorer; - - eventBus.addHandler(ActivePartChangedEvent.TYPE, this); } @Override public void update(ActionEvent e) { - e.getPresentation().setEnabledAndVisible(activePart instanceof ProjectExplorerPresenter); + e.getPresentation().setEnabledAndVisible(true); } @Override public void actionPerformed(ActionEvent e) { projectExplorer.collapseAll(); } - - @Override - public void onActivePartChanged(ActivePartChangedEvent event) { - activePart = event.getActivePart(); - } } diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java index 53eb0fbbfd..c8329281c6 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java @@ -43,6 +43,8 @@ import static org.eclipse.che.ide.api.constraints.Constraints.FIRST; import static org.eclipse.che.ide.api.constraints.Constraints.LAST; import static org.eclipse.che.ide.part.editor.recent.RecentFileStore.RECENT_GROUP_ID; import static org.eclipse.che.ide.projecttype.BlankProjectWizardRegistrar.BLANK_CATEGORY; +import static org.eclipse.che.ide.util.input.KeyCodeMap.ARROW_DOWN; +import static org.eclipse.che.ide.util.input.KeyCodeMap.ARROW_UP; import com.google.gwt.resources.client.ClientBundle; import com.google.inject.Inject; @@ -195,6 +197,8 @@ public class StandardComponentInitializer { public static final String EVENT_LOGS_DISPLAYING_MODE = "eventLogsDisplayingMode"; public static final String EDITOR_DISPLAYING_MODE = "editorDisplayingMode"; public static final String TERMINAL_DISPLAYING_MODE = "terminalDisplayingMode"; + public static final String REVEAL_RESOURCE = "revealResourceInProjectTree"; + public static final String COLLAPSE_ALL = "collapseAll"; public interface ParserResource extends ClientBundle { @Source("org/eclipse/che/ide/blank.svg") @@ -602,9 +606,6 @@ public class StandardComponentInitializer { editGroup.add(switchPreviousEditorAction); editGroup.add(switchNextEditorAction); - editGroup.addSeparator(); - editGroup.add(revealResourceAction); - // Assistant (New Menu) DefaultActionGroup assistantGroup = (DefaultActionGroup) actionManager.getAction(GROUP_ASSISTANT); @@ -691,6 +692,7 @@ public class StandardComponentInitializer { resourceOperation.add(downloadResourceAction); resourceOperation.add(refreshPathAction); resourceOperation.add(linkWithEditorAction); + resourceOperation.add(collapseAllAction); resourceOperation.addSeparator(); resourceOperation.add(convertFolderToProjectAction); resourceOperation.addSeparator(); @@ -711,6 +713,7 @@ public class StandardComponentInitializer { partMenuGroup.add(hidePartAction); partMenuGroup.add(restorePartAction); partMenuGroup.add(showConsoleTreeAction); + partMenuGroup.add(revealResourceAction); partMenuGroup.add(collapseAllAction); partMenuGroup.add(refreshPathAction); partMenuGroup.add(linkWithEditorAction); @@ -731,12 +734,12 @@ public class StandardComponentInitializer { actionManager.registerAction("goInto", goIntoAction); actionManager.registerAction(SHOW_REFERENCE, showReferenceAction); - actionManager.registerAction("collapseAll", collapseAllAction); + actionManager.registerAction(REVEAL_RESOURCE, revealResourceAction); + actionManager.registerAction(COLLAPSE_ALL, collapseAllAction); actionManager.registerAction("openFile", openFileAction); actionManager.registerAction(SWITCH_LEFT_TAB, switchPreviousEditorAction); actionManager.registerAction(SWITCH_RIGHT_TAB, switchNextEditorAction); - actionManager.registerAction("scrollFromSource", revealResourceAction); changeResourceGroup.add(cutResourceAction); changeResourceGroup.add(copyResourceAction); @@ -809,6 +812,9 @@ public class StandardComponentInitializer { editorContextMenuGroup.add(fullTextSearchAction); editorContextMenuGroup.add(closeActiveEditorAction); + editorContextMenuGroup.addSeparator(); + editorContextMenuGroup.add(revealResourceAction); + // Define hot-keys keyBinding .getGlobal() @@ -883,6 +889,13 @@ public class StandardComponentInitializer { .getGlobal() .addKey(new KeyBuilder().alt().charCode('T').build(), TERMINAL_DISPLAYING_MODE); + keyBinding + .getGlobal() + .addKey(new KeyBuilder().action().charCode(ARROW_DOWN).build(), REVEAL_RESOURCE); + keyBinding + .getGlobal() + .addKey(new KeyBuilder().action().charCode(ARROW_UP).build(), COLLAPSE_ALL); + if (UserAgent.isMac()) { keyBinding .getGlobal() diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/part/explorer/project/ProjectExplorerPresenter.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/part/explorer/project/ProjectExplorerPresenter.java index 511e131819..330c50f893 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/part/explorer/project/ProjectExplorerPresenter.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/part/explorer/project/ProjectExplorerPresenter.java @@ -471,9 +471,8 @@ public class ProjectExplorerPresenter extends BasePresenter } /** Collapse all non-leaf nodes. */ - @Deprecated public void collapseAll() { - view.collapseAll(); + doCollapse(); } /** diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/resources/action/RevealResourceAction.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/resources/action/RevealResourceAction.java index 6569a9ff3d..a15c51c07f 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/resources/action/RevealResourceAction.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/resources/action/RevealResourceAction.java @@ -21,6 +21,7 @@ import com.google.inject.Singleton; import com.google.web.bindery.event.shared.EventBus; import java.util.Map; import javax.validation.constraints.NotNull; +import org.eclipse.che.ide.CoreLocalizationConstant; import org.eclipse.che.ide.api.action.AbstractPerspectiveAction; import org.eclipse.che.ide.api.action.ActionEvent; import org.eclipse.che.ide.api.app.AppContext; @@ -44,8 +45,12 @@ public class RevealResourceAction extends AbstractPerspectiveAction { private final EventBus eventBus; @Inject - public RevealResourceAction(AppContext appContext, EventBus eventBus) { - super(singletonList(PROJECT_PERSPECTIVE_ID), "Reveal Resource"); + public RevealResourceAction( + AppContext appContext, EventBus eventBus, CoreLocalizationConstant localizedConstant) { + super( + singletonList(PROJECT_PERSPECTIVE_ID), + localizedConstant.actionRevealResourceText(), + localizedConstant.actionRevealResourceDescription()); this.appContext = appContext; this.eventBus = eventBus; } diff --git a/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/CoreLocalizationConstant.properties b/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/CoreLocalizationConstant.properties index 626e530a7a..2b3c2bf5dd 100644 --- a/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/CoreLocalizationConstant.properties +++ b/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/CoreLocalizationConstant.properties @@ -64,6 +64,10 @@ projectExplorer.titleBar.text=Projects Explorer projectExplorer.linkWithEditor.tooltip=Link with editor +############### Reveal Resource ############### +action.revealResource.text=Reveal in project explorer +action.revealResource.description=Reveal resource in project explorer + ############### Navigate To File ############### action.navigateToFile.text = Navigate to File action.navigateToFile.description = Navigate to file