Skip to content

Commit

Permalink
Working menus / groups
Browse files Browse the repository at this point in the history
  • Loading branch information
b-sharpe committed Nov 11, 2015
1 parent 8ad53e4 commit 2b05738
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 16 deletions.
7 changes: 4 additions & 3 deletions META-INF/plugin.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<idea-plugin version="2">
<id>com.bryansharpe.slackstorm</id>
<name>Slack Storm</name>
<version>1.1</version>
<version>1.2</version>
<vendor url="http://www.bryansharpe.com">Bryan Sharpe</vendor>


Expand All @@ -18,6 +18,7 @@

<change-notes><![CDATA[
1.1 - Documentation and cleanup
1.2 - Ability to run multiple channels
]]>
</change-notes>

Expand All @@ -36,9 +37,9 @@
</project-components>

<actions>
<action id="SlackSettings" class="com.bryansharpe.slackstorm.SlackSettings" text="Slack Settings">
<group id="SlackSettings" class="com.bryansharpe.slackstorm.SlackSettings" popup="true" text="Slack Settings">
<add-to-group group-id="ToolsMenu" anchor="first"/>
</action>
</group>
<action id="SlackPost" class="com.bryansharpe.slackstorm.SlackPost" text="Send to Slack" icon="/icons/slack.png">
<add-to-group group-id="EditorPopupMenu" anchor="first"/>
</action>
Expand Down
62 changes: 49 additions & 13 deletions src/com/bryansharpe/slackstorm/SlackSettings.java
Original file line number Diff line number Diff line change
@@ -1,36 +1,72 @@
package com.bryansharpe.slackstorm;

import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.IconLoader;
import org.jdesktop.swingx.action.ActionManager;
import org.jetbrains.annotations.NotNull;

import java.util.HashSet;

/**
* Created by bsharpe on 11/2/2015.
*/
public class SlackSettings extends AnAction {
public void actionPerformed(AnActionEvent e) {
final Project project = e.getData(CommonDataKeys.PROJECT);
public class SlackSettings extends ActionGroup {
@NotNull
@Override
public AnAction[] getChildren(AnActionEvent anActionEvent) {
final AnAction[] children=new AnAction[2];

String description = Messages.showInputDialog(project, "Enter a Description", "Slack Settings", IconLoader.getIcon("/icons/slack.png"));
if (description != null) {
String token = Messages.showInputDialog(project, "Enter your slack webhook integration path (i.e. <xxx>/<yyy>/<zzz>.", "Slack Settings", IconLoader.getIcon("/icons/slack.png"));
children[0] = new addChannel();
children[1] = new removeChannels();

if (token != null) {
SlackStorage slackStorage = SlackStorage.getInstance();
slackStorage.settings.clear();
slackStorage.settings.put(description, token);
return children;
}

public class addChannel extends AnAction {
public addChannel() {
super("Add Slack Channel");
}
public void actionPerformed(AnActionEvent e) {
final Project project = e.getData(CommonDataKeys.PROJECT);

String description = Messages.showInputDialog(project, "Enter a Description", "Slack Settings", IconLoader.getIcon("/icons/slack.png"));
if (description != null) {
String token = Messages.showInputDialog(project, "Enter your slack webhook integration path (i.e. <xxx>/<yyy>/<zzz>.", "Slack Settings", IconLoader.getIcon("/icons/slack.png"));

if (token != "" && token != null) {
SlackStorage slackStorage = SlackStorage.getInstance();
slackStorage.settings.put(description, token);

// Debug
for (String key : slackStorage.settings.keySet()) {
System.out.println(key);
}

for ( String key : slackStorage.settings.keySet() ) {
System.out.println( key );
Messages.showMessageDialog(project, "Settings Saved.", "Information", Messages.getInformationIcon());
}
}
}
}

public class removeChannels extends AnAction {
public removeChannels() {
super("Reset Slack Channels");
}
public void actionPerformed(AnActionEvent e) {
final Project project = e.getData(CommonDataKeys.PROJECT);

Messages.showMessageDialog(project, "Settings Saved.", "Information", Messages.getInformationIcon());
int confirm = Messages.showYesNoDialog(project, "This will clear all of your channel settings", "Slack Settings", IconLoader.getIcon("/icons/slack.png"));
if (confirm == 0) {
SlackStorage slackStorage = SlackStorage.getInstance();
slackStorage.settings.clear();
Messages.showMessageDialog(project, "Settings Cleared.", "Information", Messages.getInformationIcon());
}
}
}

}

0 comments on commit 2b05738

Please sign in to comment.