IDEA-139609 Gradle: New Module Wizard: "Select Gradle Projec"t dialog: selection is not confirmed by double-clicking or pressing Enter

This commit is contained in:
Vladislav.Soroka
2015-04-27 17:28:23 +03:00
parent 9f0c5e9ad5
commit dd6b2b0860
6 changed files with 64 additions and 4 deletions
@@ -24,6 +24,7 @@ import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.event.InputEvent;
import java.util.List;
/**
@@ -51,4 +52,12 @@ public interface ExternalProjectsView {
boolean getGroupTasks();
ProjectSystemId getSystemId();
void handleDoubleClickOrEnter(@NotNull ExternalSystemNode node, @Nullable String actionId, InputEvent inputEvent);
void addListener(@NotNull ExternalProjectsView.Listener listener);
interface Listener {
void onDoubleClickOrEnter(@NotNull ExternalSystemNode node, InputEvent inputEvent);
}
}
@@ -24,6 +24,7 @@ import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.event.InputEvent;
import java.util.List;
/**
@@ -90,4 +91,14 @@ public class ExternalProjectsViewAdapter implements ExternalProjectsView {
public ProjectSystemId getSystemId() {
return delegate.getSystemId();
}
@Override
public void handleDoubleClickOrEnter(@NotNull ExternalSystemNode node, @Nullable String actionId, InputEvent inputEvent) {
delegate.handleDoubleClickOrEnter(node, actionId, inputEvent);
}
@Override
public void addListener(@NotNull Listener listener) {
delegate.addListener(listener);
}
}
@@ -24,6 +24,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.externalSystem.ExternalSystemUiAware;
import com.intellij.openapi.externalSystem.action.ExternalSystemActionUtil;
import com.intellij.openapi.externalSystem.action.ExternalSystemViewGearAction;
import com.intellij.openapi.externalSystem.model.*;
import com.intellij.openapi.externalSystem.model.execution.ExternalTaskExecutionInfo;
@@ -69,6 +70,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.tree.TreeSelectionModel;
import java.awt.*;
import java.awt.event.InputEvent;
import java.util.*;
import java.util.List;
@@ -89,6 +91,8 @@ public class ExternalProjectsViewImpl extends SimpleToolWindowPanel implements D
private final ProjectSystemId myExternalSystemId;
@NotNull
private final ExternalSystemUiAware myUiAware;
@NotNull
private final Set<Listener> listeners = ContainerUtil.newHashSet();
@Nullable
private ExternalProjectsStructure myStructure;
@@ -277,6 +281,21 @@ public class ExternalProjectsViewImpl extends SimpleToolWindowPanel implements D
scheduleStructureUpdate();
}
@Override
public void handleDoubleClickOrEnter(@NotNull ExternalSystemNode node, @Nullable String actionId, InputEvent inputEvent) {
if (actionId != null) {
ExternalSystemActionUtil.executeAction(actionId, inputEvent);
}
for (Listener listener : listeners) {
listener.onDoubleClickOrEnter(node, inputEvent);
}
}
@Override
public void addListener(@NotNull Listener listener) {
listeners.add(listener);
}
private ActionGroup createAdditionalGearActionsGroup() {
ActionManager actionManager = ActionManager.getInstance();
DefaultActionGroup group = new DefaultActionGroup();
@@ -373,9 +373,7 @@ public abstract class ExternalSystemNode<T> extends SimpleNode implements Compar
@Override
public void handleDoubleClickOrEnter(SimpleTree tree, InputEvent inputEvent) {
String actionId = getActionId();
if (actionId != null) {
ExternalSystemActionUtil.executeAction(actionId, inputEvent);
}
getExternalProjectsView().handleDoubleClickOrEnter(this, actionId, inputEvent);
}
@Override
@@ -16,15 +16,18 @@
package org.jetbrains.plugins.gradle.service.project.wizard;
import com.intellij.openapi.externalSystem.model.project.ProjectData;
import com.intellij.openapi.externalSystem.view.ExternalSystemNode;
import com.intellij.openapi.externalSystem.view.ProjectNode;
import com.intellij.openapi.project.Project;
import com.intellij.ui.treeStructure.NullNode;
import com.intellij.ui.treeStructure.SimpleNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.gradle.util.GradleConstants;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
/**
* @author Vladislav.Soroka
@@ -69,6 +72,13 @@ public class SelectExternalProjectDialog extends SelectExternalSystemNodeDialog
super.doOKAction();
}
@Override
protected void handleDoubleClickOrEnter(@NotNull ExternalSystemNode node, @Nullable String actionId, InputEvent inputEvent) {
if(node instanceof ProjectNode ) {
doOKAction();
}
}
public ProjectData getResult() {
return myResult;
}
@@ -20,7 +20,10 @@ import com.intellij.openapi.externalSystem.model.ExternalProjectInfo;
import com.intellij.openapi.externalSystem.model.project.ProjectData;
import com.intellij.openapi.externalSystem.service.project.manage.ExternalProjectsManager;
import com.intellij.openapi.externalSystem.service.project.manage.ProjectDataManager;
import com.intellij.openapi.externalSystem.view.*;
import com.intellij.openapi.externalSystem.view.ExternalProjectsStructure;
import com.intellij.openapi.externalSystem.view.ExternalProjectsView;
import com.intellij.openapi.externalSystem.view.ExternalProjectsViewAdapter;
import com.intellij.openapi.externalSystem.view.ExternalSystemNode;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.ui.ScrollPaneFactory;
@@ -30,11 +33,13 @@ import com.intellij.ui.treeStructure.SimpleTree;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.JBUI;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.gradle.util.GradleConstants;
import javax.swing.*;
import javax.swing.tree.TreeSelectionModel;
import java.awt.event.InputEvent;
import java.util.Collection;
import java.util.List;
@@ -77,6 +82,11 @@ public class SelectExternalSystemNodeDialog extends DialogWrapper {
public void updateUpTo(ExternalSystemNode node) {
treeStructure.updateUpTo(node);
}
@Override
public void handleDoubleClickOrEnter(@NotNull ExternalSystemNode node, @Nullable String actionId, InputEvent inputEvent) {
SelectExternalSystemNodeDialog.this.handleDoubleClickOrEnter(node, actionId, inputEvent);
}
});
final Collection<ExternalProjectInfo> projectsData =
@@ -107,6 +117,9 @@ public class SelectExternalSystemNodeDialog extends DialogWrapper {
init();
}
protected void handleDoubleClickOrEnter(@NotNull ExternalSystemNode node, @Nullable String actionId, InputEvent inputEvent) {
}
protected SimpleNode getSelectedNode() {
return myTree.getNodeFor(myTree.getSelectionPath());
}