Skip to content

Instantly share code, notes, and snippets.

@Getaji
Last active December 29, 2015 18:59
Show Gist options
  • Save Getaji/7714241 to your computer and use it in GitHub Desktop.
Save Getaji/7714241 to your computer and use it in GitHub Desktop.
ExTimeline本体には追加できないいろいろとアレなメニューを追加するプラグインです。
package mw.addmenus.src;
import com.orekyuu.javatter.account.TwitterManager;
import com.orekyuu.javatter.plugin.JavatterPlugin;
import com.orekyuu.javatter.util.ImageManager;
import twitter4j.Status;
import twitter4j.StatusUpdate;
import twitter4j.TwitterException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
/**
* いろいろ特殊なメニューを追加するプラグインです.
* @author Getaji
*/
public class AddMenus extends JavatterPlugin implements mw.extimeline.src.IMenuItemBuilder {
@Override
public void init() { }
@Override
public void postInit() {
if (isPluginLoaded("ExTimeline")) {
mw.extimeline.src.ExTimeline.instance.addMenuItemBuilder(this);
}
}
@Override
public String getPluginName() {
return "[ExTimeline]AddMenus";
}
@Override
public String getVersion() {
return "1.0";
}
@Override
public List<JMenuItem> getMenuItem(JPanel panel, final Status status) {
List<JMenuItem> list = new ArrayList<>();
Font meiryo = new Font("Meiryo UI", Font.PLAIN, 12);
JMenuItem itemPakuTwi = new JMenuItem("パクツイ");
itemPakuTwi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
onTweet(status.isRetweet() ? status.getRetweetedStatus().getText() : status.getText());
}
});
JMenuItem itemSarashi = new JMenuItem("晒しAGE");
itemSarashi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JTextArea area = AddMenus.this.getMainView().getTweetTextArea();
area.setText(area.getText() + "(@" + status.getUser().getScreenName() + ")");
}
});
JMenuItem itemAirReply = new JMenuItem("空リプ");
itemSarashi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
StatusUpdate su = new StatusUpdate("@" + status.getUser().getScreenName());
su.setInReplyToStatusId(status.getId());
onTweet(su);
}
});
itemPakuTwi.setFont(meiryo);
itemSarashi.setFont(meiryo);
itemAirReply.setFont(meiryo);
list.add(itemPakuTwi);
list.add(itemSarashi);
list.add(itemAirReply);
return list;
}
/**
* ツイートします.<br />
* StatusUpdateが渡された場合StatusUpdateとして,<br />
* その他オブジェクトが渡された場合toStringされた文字列としてツイートされます.
* @param tweet ツイート内容
*/
public void onTweet(Object tweet) {
ImageIcon icon = null;
try {
if (tweet instanceof StatusUpdate)
TwitterManager.getInstance().getTwitter().updateStatus((StatusUpdate) tweet);
else
TwitterManager.getInstance().getTwitter().updateStatus(tweet.toString());
icon = new ImageIcon(ImageManager.getInstance().getImage(ImageManager.STATUS_NORMAL));
} catch (TwitterException e1) {
icon = new ImageIcon(ImageManager.getInstance().getImage(ImageManager.STATUS_ERROR));
} finally {
AddMenus.this.getMainView().setStatus(icon, "[AddMenus] Failed:" + tweet);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment