diff --git a/plugins/tasks/tasks-core/src/META-INF/plugin.xml b/plugins/tasks/tasks-core/src/META-INF/plugin.xml
index e20f7361292b..9cfa66bfb275 100644
--- a/plugins/tasks/tasks-core/src/META-INF/plugin.xml
+++ b/plugins/tasks/tasks-core/src/META-INF/plugin.xml
@@ -37,6 +37,8 @@
+
+
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/AnalyzeTaskStacktraceAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/AnalyzeTaskStacktraceAction.java
index b6313593220b..b618d8c9c8ce 100644
--- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/AnalyzeTaskStacktraceAction.java
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/AnalyzeTaskStacktraceAction.java
@@ -35,6 +35,7 @@ public class AnalyzeTaskStacktraceAction extends BaseTaskAction {
public void update(AnActionEvent event) {
Task activeTask = getActiveTask(event);
event.getPresentation().setEnabled(activeTask != null && hasTexts(activeTask));
+ super.update(event);
}
public static boolean hasTexts(Task activeTask) {
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/BaseTaskAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/BaseTaskAction.java
index 2d2b9fbe1c91..e616a17b0823 100644
--- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/BaseTaskAction.java
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/BaseTaskAction.java
@@ -25,6 +25,8 @@ import com.intellij.tasks.LocalTask;
import com.intellij.tasks.TaskManager;
import org.jetbrains.annotations.Nullable;
+import javax.swing.*;
+
/**
* @author Dmitry Avdeev
*/
@@ -37,6 +39,10 @@ public abstract class BaseTaskAction extends AnAction implements DumbAware {
super(text);
}
+ protected BaseTaskAction(@Nullable final String text, @Nullable final String description, @Nullable final Icon icon) {
+ super(text, description, icon);
+ }
+
public void update(AnActionEvent event){
event.getPresentation().setEnabled(getProject(event) != null);
}
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CloseTaskAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CloseTaskAction.java
index f0a34f223122..c72ed645b8d4 100644
--- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CloseTaskAction.java
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CloseTaskAction.java
@@ -42,5 +42,6 @@ public class CloseTaskAction extends BaseTaskAction {
Presentation presentation = event.getPresentation();
Project project = PlatformDataKeys.PROJECT.getData(event.getDataContext());
presentation.setEnabled(project != null && !TaskManager.getManager(project).getActiveTask().isDefault());
+ super.update(event);
}
}
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/ConfigureServersAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/ConfigureServersAction.java
new file mode 100644
index 000000000000..c5debd3a612d
--- /dev/null
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/ConfigureServersAction.java
@@ -0,0 +1,29 @@
+package com.intellij.tasks.actions;
+
+import com.intellij.icons.AllIcons;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.options.ShowSettingsUtil;
+import com.intellij.tasks.config.TaskRepositoriesConfigurable;
+
+/**
+ * User: Evgeny Zakrevsky
+ */
+
+public class ConfigureServersAction extends BaseTaskAction {
+
+ public ConfigureServersAction() {
+ super("Configure Servers...", null, AllIcons.General.IdeOptions);
+ }
+
+ @Override
+ public void actionPerformed(AnActionEvent e) {
+ TaskRepositoriesConfigurable configurable = new TaskRepositoriesConfigurable(getProject(e));
+ if (ShowSettingsUtil.getInstance().editConfigurable(getProject(e), configurable)) {
+ serversChanged();
+ }
+ }
+
+ protected void serversChanged() {
+
+ }
+}
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CreateChangelistAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CreateChangelistAction.java
index 2c1273a15191..9151c782cd87 100644
--- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CreateChangelistAction.java
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/CreateChangelistAction.java
@@ -41,6 +41,7 @@ public class CreateChangelistAction extends BaseTaskAction {
presentation.setText("Create changelist for '" + TaskUtil.getTrimmedSummary(manager.getActiveTask()) + "'");
presentation.setEnabled(true);
}
+ super.update(event);
}
@Override
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java
index da7c67007df0..11ebca2207e4 100644
--- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java
@@ -5,9 +5,7 @@ import com.intellij.ide.util.gotoByName.ChooseByNameBase;
import com.intellij.ide.util.gotoByName.ChooseByNameItemProvider;
import com.intellij.ide.util.gotoByName.ChooseByNamePopup;
import com.intellij.ide.util.gotoByName.SimpleChooseByNameModel;
-import com.intellij.openapi.actionSystem.ActionManager;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-import com.intellij.openapi.actionSystem.IdeActions;
+import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.keymap.KeymapUtil;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
@@ -49,7 +47,7 @@ public class GotoTaskAction extends GotoActionBase {
myInAction = getClass();
final Ref shiftPressed = Ref.create(false);
- ChooseByNamePopup popup = ChooseByNamePopup.createPopup(project, new GotoTaskPopupModel(project), new ChooseByNameItemProvider() {
+ final ChooseByNamePopup popup = ChooseByNamePopup.createPopup(project, new GotoTaskPopupModel(project), new ChooseByNameItemProvider() {
@NotNull
@Override
public List filterNames(@NotNull ChooseByNameBase base, @NotNull String[] names, @NotNull String pattern) {
@@ -124,6 +122,16 @@ public class GotoTaskAction extends GotoActionBase {
}
});
+ final DefaultActionGroup group = new DefaultActionGroup(new ConfigureServersAction() {
+ @Override
+ protected void serversChanged() {
+ popup.rebuildList(true);
+ }
+ });
+ final ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true);
+ actionToolbar.setLayoutPolicy(ActionToolbar.NOWRAP_LAYOUT_POLICY);
+ popup.setToolArea(actionToolbar.getComponent());
+
showNavigationPopup(new GotoActionCallback