+++ /dev/null
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Event;
-import java.awt.Font;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JEditorPane;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.JTabbedPane;
-import javax.swing.JTable;
-import javax.swing.JTextPane;
-import javax.swing.KeyStroke;
-import javax.swing.ScrollPaneConstants;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.border.EtchedBorder;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-import javax.swing.text.Style;
-import javax.swing.text.StyleConstants;
-import javax.swing.text.html.HTMLDocument;
-import javax.swing.text.html.StyleSheet;
-
-import twitter.gui.action.TweetMainAction;
-import twitter.gui.component.ImagePanel;
-import twitter.gui.component.TweetCommentRenderer;
-import twitter.gui.component.TweetHyperlinkHandler;
-import twitter.gui.component.TweetTableModel;
-import twitter.gui.component.UserImageRenderer;
-import twitter.manage.TweetManager;
-import twitter4j.Status;
-
-public class MainGUI {
-
- /**
- * This method initializes jScrollPane3
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane3() {
- if (jScrollPane3 == null) {
- jScrollPane3 = new JScrollPane();
- jScrollPane3.setViewportView(getJTable2());
- }
- return jScrollPane3;
- }
-
- /**
- * This method initializes jTable2
- *
- * @return javax.swing.JTable
- */
- private JTable getJTable2() {
- if (jTable2 == null) {
- jTable2 = new JTable();
- messageTableModel = new TweetTableModel();
- jTable2 = new JTable(messageTableModel);
- jTable2.addFocusListener(new java.awt.event.FocusAdapter() {
- @Override
- public void focusGained(java.awt.event.FocusEvent e) {
- mainAction.actionResetUncheckedDirectMessageCount();
- }
- });
- jTable2.addMouseListener(new java.awt.event.MouseAdapter() {
- @Override
- public void mousePressed(java.awt.event.MouseEvent e) {
- showPopup(e);
- }
-
- @Override
- public void mouseReleased(java.awt.event.MouseEvent e) {
- showPopup(e);
- }
-
- private void showPopup(MouseEvent e) {
- if (e.isPopupTrigger()) {
- // 右クリックのメニューを表示
- getRightClickPopup().show(e.getComponent(), e.getX(),
- e.getY());
- }
- }
- });
- createTweetTable(jTable2);
- }
- return jTable2;
- }
-
- /**
- * This method initializes jScrollPane4
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane4() {
- if (jScrollPane4 == null) {
- jScrollPane4 = new JScrollPane();
- jScrollPane4.setViewportView(getJTable3());
- }
- return jScrollPane4;
- }
-
- /**
- * This method initializes jTable3
- *
- * @return javax.swing.JTable
- */
- private JTable getJTable3() {
- if (jTable3 == null) {
- jTable3 = new JTable();
- sendMessageTableModel = new TweetTableModel();
- jTable3 = new JTable(sendMessageTableModel);
- createTweetTable(jTable3);
- }
- return jTable3;
- }
-
- /**
- * This method initializes jScrollPane5
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane5() {
- if (jScrollPane5 == null) {
- jScrollPane5 = new JScrollPane();
- jScrollPane5.setViewportView(getJTextPane());
- }
- return jScrollPane5;
- }
-
- /**
- * This method initializes jScrollPane6
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane6() {
- if (jScrollPane6 == null) {
- jScrollPane6 = new JScrollPane();
- jScrollPane6.setBounds(new Rectangle(58, 8, 739, 46));
- jScrollPane6.setViewportView(getTweetMessageBox());
- }
- return jScrollPane6;
- }
-
- /**
- * This method initializes jTable4
- *
- * @return javax.swing.JTable
- */
- private JTable getJTable4() {
- if (jTable4 == null) {
- jTable4 = new JTable();
- filterTableModel = new TweetTableModel();
- createTweetTable(jTable4);
- }
- return jTable4;
- }
-
- /**
- * This method initializes basicSettingMenuItem
- *
- * @return javax.swing.JMenuItem
- */
- private JMenuItem getBasicSettingMenuItem() {
- if (basicSettingMenuItem == null) {
- basicSettingMenuItem = new JMenuItem();
- basicSettingMenuItem.setText("基本設定");
- basicSettingMenuItem
- .addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 基本設定ダイアログを開く
- mainAction.actionBasicSettingDialog();
- }
- });
- }
- return basicSettingMenuItem;
- }
-
- /**
- * Launches this application
- */
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- try {
- // UIをシステム標準のものとする
- UIManager.setLookAndFeel(UIManager
- .getSystemLookAndFeelClassName());
- } catch (Exception e) {
- e.printStackTrace();
- }
- MainGUI application = new MainGUI();
- application.getJFrame().setVisible(true);
- }
- });
- }
-
- // TweetManager
- private final TweetManager tweetManager = new TweetManager();
-
- // GUIAction部分
- private TweetMainAction mainAction = null;
- private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="10,96"
- private JPanel jContentPane = null;
- private JMenuBar jJMenuBar = null;
- private JMenu fileMenu = null;
- private JMenu settingMenu = null;
- private JMenu helpMenu = null;
- private JMenuItem exitMenuItem = null;
- private JMenuItem aboutMenuItem = null;
- private JMenuItem saveMenuItem = null;
- private JDialog aboutDialog = null;
- private JPanel aboutContentPane = null;
- private JLabel aboutVersionLabel = null;
- private JTextPane jTextPane = null;
- private JButton jButton = null;
- private JTabbedPane jTabbedPane = null;
- private JScrollPane jScrollPane = null;
- private JTable jTable = null;
- private TweetTableModel tweetTableModel = null;
- private TweetTableModel mentionTableModel = null;
- private TweetTableModel messageTableModel = null;
- private TweetTableModel sendMessageTableModel = null;
- private TweetTableModel filterTableModel = null;
- private JButton jButton1 = null;
- private JButton jButton2 = null;
- private JPanel jPanel = null;
- private JButton jButton3 = null;
- private JPanel jPanel2 = null;
- private JPanel jPanel1 = null;
- private JEditorPane tweetMessageBox = null;
- private JLabel userImageLabel = null;
- private JLabel userNameLabel = null;
- private JLabel updateTimeLabel = null;
- private JLabel jLabel = null;
- private JLabel jLabel1 = null;
- private JLabel jLabel2 = null;
- private JLabel locationLabel = null;
- private JLabel jLabel4 = null;
- private JLabel jLabel5 = null;
- private JLabel jLabel6 = null;
- private JLabel followingLabel = null;
- private JLabel FollowerLabel = null;
- private JLabel updateLabel = null;
- private JEditorPane userWebBox = null;
- private JScrollPane jScrollPane1 = null;
- private JEditorPane userIntroBox = null;
- private JEditorPane clientName = null;
- private JLabel jLabel3 = null;
- private JLabel statusBar = null;
- private JPanel jPanel3 = null;
- private JScrollPane jScrollPane2 = null;
- private JTable jTable1 = null;
- private JPopupMenu rightClickPopup = null;
-
- private JScrollPane jScrollPane3 = null;
-
- private JTable jTable2 = null;
-
- private JScrollPane jScrollPane4 = null;
-
- private JTable jTable3 = null;
-
- private JScrollPane jScrollPane5 = null;
-
- private JScrollPane jScrollPane6 = null;
-
- private JTable jTable4 = null;
-
- private JMenuItem basicSettingMenuItem = null;
-
- /**
- * Tweetを表示するテーブルを作成
- *
- * @param model
- * @return
- */
- private void createTweetTable(final JTable table) {
-
- table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
- table.setShowVerticalLines(false);
- table.setShowHorizontalLines(true);
-
- // Comment部分のColumnを複数行コメントが表示できるようにする
- TableColumnModel mdl = table.getColumnModel();
- TableColumn col = mdl.getColumn(1);
- TweetCommentRenderer commentRenderer = new TweetCommentRenderer();
- col.setCellRenderer(commentRenderer);
- // INfo部分のColumnを複数行表示できるように
- TweetCommentRenderer infoRenderer = new TweetCommentRenderer();
- col = mdl.getColumn(2);
- col.setCellRenderer(infoRenderer);
- col.setMaxWidth(200);
- col.setMinWidth(150);
- // TODO:とりあえず幅指定した部分
- // あとでファイルに幅情報などを保存しておき,それを読み込んで設定するような仕様に変更する
- // ユーザImageを表示する部分
- col = mdl.getColumn(0);
- col.setCellRenderer(new UserImageRenderer());
- col.setMinWidth(50);
- col.setMaxWidth(50);
- // 選択したセルの情報をDetailInfoへと表示
- table.getSelectionModel().addListSelectionListener(
- new ListSelectionListener() {
-
- @Override
- public void valueChanged(ListSelectionEvent e) {
-
- if (e.getValueIsAdjusting()) {
- return;
- }
-
- int sc = table.getSelectedRowCount();
- String infoMessage = "";
- if (sc == 1) {
- Status st = mainAction.getTweetTableInformation(
- table, table.getModel());
- infoMessage = st.getText();
- // tweetMessageBox内のURLをhtmlリンクへ変換
- infoMessage = mainAction
- .actionReplaceTweetMessageBoxURLLink(infoMessage);
- // @ユーザ情報をhtmlリンクへ変換
- infoMessage = mainAction
- .actionReplaceTweetMessageBoxUserInfo(infoMessage);
- // #ハッシュタグ情報をhtmlリンクへ変換
- infoMessage = mainAction
- .actionReplaceTweetMessageBoxHashTab(infoMessage);
- // 詳細情報にテーブルで選択した人のツイート情報を表示
- tweetMessageBox.setText(infoMessage);
- // user icon
- userImageLabel.setIcon(new ImageIcon(st.getUser()
- .getProfileImageURL()));
- // user name and id
- userNameLabel.setText(st.getUser().getName()
- + " / " + st.getUser().getScreenName());
- // update Time
- updateTimeLabel.setText(st.getCreatedAt()
- .toLocaleString());
- // ユーザのバックグラウンドイメージを取得
- /*
- * ImagePanel imagePanel = null; if( jContentPane
- * instanceof ImagePanel ) { imagePanel =
- * (ImagePanel)jContentPane; try { URL url = new URL
- * ( st.getUser().getProfileBackgroundImageUrl() );
- * imagePanel.setImage( new ImageIcon( url
- * ).getImage() ); } catch (MalformedURLException
- * e1) { e1.printStackTrace(); } }
- */
- // ユーザ自己紹介文
- userIntroBox.setText(st.getUser().getDescription());
- // フォローされている数
- FollowerLabel.setText(st.getUser()
- .getFollowersCount()
- + "");
- // フォローしている数
- followingLabel.setText(st.getUser()
- .getFriendsCount()
- + "");
- // 現在地
- locationLabel.setText(st.getUser().getLocation());
- // Web
- if (st.getUser().getURL() != null) {
- userWebBox.setText("<a href=\""
- + st.getUser().getURL() + "\">"
- + st.getUser().getScreenName()
- + "のWebを開く" + "</a>");
- } else {
- userWebBox.setText("");
- }
- // client
- clientName.setText(" via " + st.getSource());
- // Update
- updateLabel.setText(st.getUser().getStatusesCount()
- + "");
- }
- }
- });
- // JTableを右クリックでも選択できるようにする
- // また,同じ行を2回クリックできるようにする
- table.addMouseListener(new MouseAdapter() {
- @Override
- public void mousePressed(MouseEvent e) {
- // いったんSelectしていた情報を削除
- table.clearSelection();
- // if (e.getButton() == MouseEvent.BUTTON3) {
- Point p = e.getPoint();
- int col = table.columnAtPoint(p);
- int row = table.rowAtPoint(p);
- table.changeSelection(row, col, false, false);
- // }
- }
- });
- // MouseEventを追加
- table.addMouseListener(commentRenderer);
- table.addMouseMotionListener(commentRenderer);
- table.addMouseListener(infoRenderer);
- table.addMouseMotionListener(infoRenderer);
- }
-
- /**
- * This method initializes aboutContentPane
- *
- * @return javax.swing.JPanel
- */
- private JPanel getAboutContentPane() {
- if (aboutContentPane == null) {
- aboutContentPane = new JPanel();
- aboutContentPane.setLayout(new BorderLayout());
- aboutContentPane.add(getAboutVersionLabel(), BorderLayout.CENTER);
- }
- return aboutContentPane;
- }
-
- /**
- * This method initializes aboutDialog
- *
- * @return javax.swing.JDialog
- */
- private JDialog getAboutDialog() {
- if (aboutDialog == null) {
- aboutDialog = new JDialog(getJFrame(), true);
- aboutDialog.setTitle("About");
- aboutDialog.setContentPane(getAboutContentPane());
- }
- return aboutDialog;
- }
-
- /**
- * This method initializes jMenuItem
- *
- * @return javax.swing.JMenuItem
- */
- private JMenuItem getAboutMenuItem() {
- if (aboutMenuItem == null) {
- aboutMenuItem = new JMenuItem();
- aboutMenuItem.setText("About");
- aboutMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JDialog aboutDialog = getAboutDialog();
- aboutDialog.pack();
- Point loc = getJFrame().getLocation();
- loc.translate(20, 20);
- aboutDialog.setLocation(loc);
- aboutDialog.setVisible(true);
- }
- });
- }
- return aboutMenuItem;
- }
-
- /**
- * This method initializes aboutVersionLabel
- *
- * @return javax.swing.JLabel
- */
- private JLabel getAboutVersionLabel() {
- if (aboutVersionLabel == null) {
- aboutVersionLabel = new JLabel();
- aboutVersionLabel.setText("Version 1.0");
- aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER);
- }
- return aboutVersionLabel;
- }
-
- /**
- * This method initializes clientName
- *
- * @return javax.swing.JEditorPane
- */
- private JEditorPane getClientName() {
- if (clientName == null) {
- clientName = new JEditorPane();
- clientName.setBounds(new Rectangle(210, 135, 294, 16));
- clientName.setContentType("text/html");
- clientName.setEditable(false);
- clientName.addHyperlinkListener(new TweetHyperlinkHandler());
- try {
- // htmlフォント変更
- HTMLDocument doc = (HTMLDocument) clientName.getDocument();
- StyleSheet[] style = doc.getStyleSheet().getStyleSheets();
- for (int i = style.length - 1; i >= 0; i--) {
- Style body = style[i].getStyle("body");
- if (body != null) {
- // TODO: default font size
- StyleConstants.setFontSize(body, 13);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return clientName;
- }
-
- /**
- * This method initializes jMenu
- *
- * @return javax.swing.JMenu
- */
- private JMenu getSettingMenu() {
- if (settingMenu == null) {
- settingMenu = new JMenu();
- settingMenu.setText("Setting");
- settingMenu.add(getBasicSettingMenuItem());
- }
- return settingMenu;
- }
-
- /**
- * This method initializes jMenuItem
- *
- * @return javax.swing.JMenuItem
- */
- private JMenuItem getExitMenuItem() {
- if (exitMenuItem == null) {
- exitMenuItem = new JMenuItem();
- exitMenuItem.setText("Exit");
- exitMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- // 終了動作
- mainAction.actionExitButton(e);
- }
- });
- }
- return exitMenuItem;
- }
-
- /**
- * This method initializes jMenu
- *
- * @return javax.swing.JMenu
- */
- private JMenu getFileMenu() {
- if (fileMenu == null) {
- fileMenu = new JMenu();
- fileMenu.setText("File");
- fileMenu.add(getSaveMenuItem());
- fileMenu.add(getExitMenuItem());
- }
- return fileMenu;
- }
-
- /**
- * This method initializes jMenu
- *
- * @return javax.swing.JMenu
- */
- private JMenu getHelpMenu() {
- if (helpMenu == null) {
- helpMenu = new JMenu();
- helpMenu.setText("Help");
- helpMenu.add(getAboutMenuItem());
- }
- return helpMenu;
- }
-
- /**
- * This method initializes jButton
- *
- * @return javax.swing.JButton
- */
- private JButton getJButton() {
- if (jButton == null) {
- jButton = new JButton();
- jButton.setText("つぶやく");
- jButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // メッセージをつぶやく
- mainAction.actionTweet();
- }
- });
- }
- return jButton;
- }
-
- /**
- * This method initializes jButton1
- *
- * @return javax.swing.JButton
- */
- private JButton getJButton1() {
- if (jButton1 == null) {
- jButton1 = new JButton();
- jButton1.setText("今すぐ更新");
- jButton1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- mainAction.actionUpdateButton(e);
- // いますぐ更新ボタンを押したので,更新タイムを一度リセットする
- mainAction.resetTweetAutoUpdate();
- }
- });
- }
- return jButton1;
- }
-
- /**
- * This method initializes jButton2
- *
- * @return javax.swing.JButton
- */
- private JButton getJButton2() {
- if (jButton2 == null) {
- jButton2 = new JButton();
- jButton2.setText("Refresh");
- jButton2.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // tweet取得時間情報を更新
- mainAction.actionRefreshTime();
- }
- });
- }
- return jButton2;
- }
-
- /**
- * This method initializes jButton3
- *
- * @return javax.swing.JButton
- */
- private JButton getJButton3() {
- if (jButton3 == null) {
- jButton3 = new JButton();
- jButton3.setText("詳細情報");
- jButton3.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 詳細情報ボタンを押した時の動作
- mainAction.actionDetailInfoButton(e);
- }
- });
- }
- return jButton3;
- }
-
- /**
- * This method initializes jContentPane
- *
- * @return javax.swing.JPanel
- */
- private JPanel getJContentPane() {
- if (jContentPane == null) {
- statusBar = new JLabel();
- statusBar.setText("Status");
- jContentPane = new ImagePanel();
- jContentPane.setLayout(null);
- jContentPane.add(getJTabbedPane(), null);
- jContentPane.add(getJPanel2(), null);
- jContentPane.add(getJPanel3(), null);
- }
- return jContentPane;
- }
-
- /**
- * This method initializes jFrame
- *
- * @return javax.swing.JFrame
- */
- private JFrame getJFrame() {
- if (jFrame == null) {
- jFrame = new JFrame();
- jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- jFrame.setJMenuBar(getJJMenuBar());
- jFrame.setSize(832, 786);
- jFrame.setContentPane(getJContentPane());
- jFrame.setTitle("Nishio Tweet Manager");
- init(); // 初期化
- }
- return jFrame;
- }
-
- /**
- * This method initializes jJMenuBar
- *
- * @return javax.swing.JMenuBar
- */
- private JMenuBar getJJMenuBar() {
- if (jJMenuBar == null) {
- jJMenuBar = new JMenuBar();
- jJMenuBar.add(getFileMenu());
- jJMenuBar.add(getSettingMenu());
- jJMenuBar.add(getHelpMenu());
- }
- return jJMenuBar;
- }
-
- /**
- * This method initializes jPanel
- *
- * @return javax.swing.JPanel
- */
- private JPanel getJPanel() {
- if (jPanel == null) {
- GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
- gridBagConstraints5.fill = GridBagConstraints.VERTICAL;
- gridBagConstraints5.gridheight = 2;
- gridBagConstraints5.gridwidth = 3;
- gridBagConstraints5.gridx = 0;
- gridBagConstraints5.gridy = 1;
- gridBagConstraints5.ipadx = 675;
- gridBagConstraints5.ipady = 41;
- gridBagConstraints5.weightx = 1.0;
- gridBagConstraints5.weighty = 1.0;
- gridBagConstraints5.insets = new Insets(0, 0, 0, 0);
- GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
- gridBagConstraints4.insets = new Insets(6, 1, 2, 8);
- gridBagConstraints4.gridy = 1;
- gridBagConstraints4.ipadx = 97;
- gridBagConstraints4.ipady = 12;
- gridBagConstraints4.gridx = 3;
- GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
- gridBagConstraints3.insets = new Insets(0, 0, 3, 3);
- gridBagConstraints3.gridy = 0;
- gridBagConstraints3.ipadx = 134;
- gridBagConstraints3.ipady = 9;
- gridBagConstraints3.fill = GridBagConstraints.HORIZONTAL;
- gridBagConstraints3.gridx = 2;
- GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
- gridBagConstraints2.insets = new Insets(0, 0, 3, 5);
- gridBagConstraints2.gridy = 0;
- gridBagConstraints2.ipadx = 131;
- gridBagConstraints2.ipady = 9;
- gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
- gridBagConstraints2.gridx = 1;
- GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
- gridBagConstraints1.insets = new Insets(0, 0, 3, 5);
- gridBagConstraints1.gridy = 0;
- gridBagConstraints1.ipadx = 121;
- gridBagConstraints1.ipady = 9;
- gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
- gridBagConstraints1.gridx = 0;
- GridBagConstraints gridBagConstraints = new GridBagConstraints();
- gridBagConstraints.insets = new Insets(3, 1, 6, 7);
- gridBagConstraints.gridy = 2;
- gridBagConstraints.ipadx = 36;
- gridBagConstraints.ipady = 5;
- gridBagConstraints.gridx = 3;
- jLabel3 = new JLabel();
- jLabel3.setText("140");
- jPanel = new JPanel();
- jPanel.setLayout(new GridBagLayout());
- jPanel.setPreferredSize(new Dimension(811, 445));
- jPanel.setBounds(new Rectangle(3, 160, 814, 119));
- jPanel.add(getJButton(), gridBagConstraints);
- jPanel.add(getJButton1(), gridBagConstraints1);
- jPanel.add(getJButton2(), gridBagConstraints2);
- jPanel.add(getJButton3(), gridBagConstraints3);
- jPanel.add(jLabel3, gridBagConstraints4);
- jPanel.add(getJScrollPane5(), gridBagConstraints5);
- }
- return jPanel;
- }
-
- /**
- * This method initializes jPanel1
- *
- * @return javax.swing.JPanel
- */
- private JPanel getJPanel1() {
- if (jPanel1 == null) {
- updateLabel = new JLabel();
- updateLabel.setBounds(new Rectangle(414, 100, 91, 15));
- updateLabel.setText("0");
- FollowerLabel = new JLabel();
- FollowerLabel.setBounds(new Rectangle(414, 80, 91, 15));
- FollowerLabel.setText("0");
- followingLabel = new JLabel();
- followingLabel.setBounds(new Rectangle(414, 60, 91, 15));
- followingLabel.setText("0");
- jLabel6 = new JLabel();
- jLabel6.setBounds(new Rectangle(329, 100, 78, 14));
- jLabel6.setText("Update");
- jLabel5 = new JLabel();
- jLabel5.setBounds(new Rectangle(329, 80, 78, 16));
- jLabel5.setText("Follower");
- jLabel4 = new JLabel();
- jLabel4.setBounds(new Rectangle(329, 60, 78, 17));
- jLabel4.setText("Following");
- locationLabel = new JLabel();
- locationLabel.setBounds(new Rectangle(72, 100, 254, 15));
- locationLabel.setText("No Information");
- jLabel2 = new JLabel();
- jLabel2.setBounds(new Rectangle(8, 100, 58, 12));
- jLabel2.setText("現在地");
- jLabel1 = new JLabel();
- jLabel1.setBounds(new Rectangle(8, 80, 58, 12));
- jLabel1.setText("更新日");
- jLabel = new JLabel();
- jLabel.setBounds(new Rectangle(8, 60, 58, 12));
- jLabel.setText("ユーザ名");
- updateTimeLabel = new JLabel();
- updateTimeLabel.setBounds(new Rectangle(72, 80, 254, 13));
- updateTimeLabel.setText("Date");
- userNameLabel = new JLabel();
- userNameLabel.setBounds(new Rectangle(72, 60, 254, 15));
- userNameLabel.setText("UserName");
- userImageLabel = new JLabel();
- userImageLabel.setBounds(new Rectangle(6, 8, 48, 45));
- userImageLabel.setText("");
- userImageLabel.setBackground(new Color(51, 51, 51));
- jPanel1 = new JPanel();
- jPanel1.setLayout(null);
- jPanel1.setBorder(BorderFactory
- .createEtchedBorder(EtchedBorder.RAISED));
- jPanel1.setBounds(new Rectangle(9, 0, 809, 151));
- jPanel1.add(userImageLabel, null);
- jPanel1.add(userNameLabel, null);
- jPanel1.add(updateTimeLabel, null);
- jPanel1.add(jLabel, null);
- jPanel1.add(jLabel1, null);
- jPanel1.add(jLabel2, null);
- jPanel1.add(locationLabel, null);
- jPanel1.add(jLabel4, null);
- jPanel1.add(jLabel5, null);
- jPanel1.add(jLabel6, null);
- jPanel1.add(followingLabel, null);
- jPanel1.add(FollowerLabel, null);
- jPanel1.add(updateLabel, null);
- jPanel1.add(getUserWebBox(), null);
- jPanel1.add(getJScrollPane1(), null);
- jPanel1.add(getClientName(), null);
- jPanel1.add(getJScrollPane6(), null);
- }
- return jPanel1;
- }
-
- /**
- * This method initializes jPanel2
- *
- * @return javax.swing.JPanel
- */
- private JPanel getJPanel2() {
- if (jPanel2 == null) {
- jPanel2 = new JPanel();
- jPanel2.setLayout(null);
- jPanel2.setBounds(new Rectangle(2, 403, 826, 309));
- jPanel2.add(getJPanel(), null);
- jPanel2.add(getJPanel1(), null);
- }
- return jPanel2;
- }
-
- /**
- * This method initializes jPanel3
- *
- * @return javax.swing.JPanel
- */
- private JPanel getJPanel3() {
- if (jPanel3 == null) {
- jPanel3 = new JPanel();
- jPanel3.setLayout(new BoxLayout(getJPanel3(), BoxLayout.X_AXIS));
- jPanel3.setBounds(new Rectangle(1, 715, 824, 21));
- jPanel3.setBorder(BorderFactory
- .createEtchedBorder(EtchedBorder.RAISED));
- jPanel3.add(statusBar, null);
- }
- return jPanel3;
- }
-
- /**
- * This method initializes jScrollPane
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane() {
- if (jScrollPane == null) {
- jScrollPane = new JScrollPane();
- jScrollPane.setViewportView(getJTable());
- }
- return jScrollPane;
- }
-
- /**
- * This method initializes jScrollPane1
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane1() {
- if (jScrollPane1 == null) {
- jScrollPane1 = new JScrollPane();
- jScrollPane1.setBounds(new Rectangle(511, 72, 285, 78));
- jScrollPane1
- .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
- jScrollPane1.setViewportView(getUserIntroBox());
- }
- return jScrollPane1;
- }
-
- /**
- * This method initializes jScrollPane2
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane2() {
- if (jScrollPane2 == null) {
- jScrollPane2 = new JScrollPane();
- jScrollPane2.setViewportView(getJTable1());
- }
- return jScrollPane2;
- }
-
- /**
- * This method initializes jTabbedPane
- *
- * @return javax.swing.JTabbedPane
- */
- private JTabbedPane getJTabbedPane() {
- if (jTabbedPane == null) {
- jTabbedPane = new JTabbedPane();
- jTabbedPane.setName("Tweet");
- jTabbedPane.setBounds(new Rectangle(2, 2, 826, 394));
- jTabbedPane.setEnabled(true);
- jTabbedPane.addTab("Timeline", null, getJScrollPane(), null);
- jTabbedPane.addTab("Mention", null, getJScrollPane2(), null);
- jTabbedPane.addTab("Message", null, getJScrollPane3(), null);
- jTabbedPane.addTab("SendMessage", null, getJScrollPane4(), null);
- }
- return jTabbedPane;
- }
-
- /**
- * This method initializes jTable
- *
- * @return javax.swing.JTable
- */
- private JTable getJTable() {
- if (jTable == null) {
- tweetTableModel = new TweetTableModel();
- jTable = new JTable(tweetTableModel);
- jTable.setFont(new Font("Takao Pゴシック", Font.PLAIN, 10));
- jTable.addFocusListener(new java.awt.event.FocusAdapter() {
- @Override
- public void focusGained(java.awt.event.FocusEvent e) {
- // まだ見ていないtweet数を0にする
- mainAction.actionResetUncheckedTimelineTweetCount();
- }
- });
- jTable.addMouseListener(new java.awt.event.MouseAdapter() {
- @Override
- public void mousePressed(java.awt.event.MouseEvent e) {
- showPopup(e);
- }
-
- @Override
- public void mouseReleased(java.awt.event.MouseEvent e) {
- showPopup(e);
- }
-
- private void showPopup(MouseEvent e) {
- if (e.isPopupTrigger()) {
- // 右クリックのメニューを表示
- getRightClickPopup().show(e.getComponent(), e.getX(),
- e.getY());
- }
- }
- });
-
- createTweetTable(jTable);
- }
- return jTable;
- }
-
- /**
- * This method initializes jTable1
- *
- * @return javax.swing.JTable
- */
- private JTable getJTable1() {
- if (jTable1 == null) {
- mentionTableModel = new TweetTableModel();
- jTable1 = new JTable(mentionTableModel);
- jTable1.addFocusListener(new java.awt.event.FocusAdapter() {
- @Override
- public void focusGained(java.awt.event.FocusEvent e) {
- mainAction.actionResetUncheckedMentionTweetCount();
- }
- });
- jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
- @Override
- public void mousePressed(java.awt.event.MouseEvent e) {
- showPopup(e);
- }
-
- @Override
- public void mouseReleased(java.awt.event.MouseEvent e) {
- showPopup(e);
- }
-
- private void showPopup(MouseEvent e) {
- if (e.isPopupTrigger()) {
- // 右クリックのメニューを表示
- getRightClickPopup().show(e.getComponent(), e.getX(),
- e.getY());
- }
- }
- });
- createTweetTable(jTable1);
- }
- return jTable1;
- }
-
- /**
- * This method initializes jTextPane
- *
- * @return javax.swing.JTextPane
- */
- private JTextPane getJTextPane() {
- if (jTextPane == null) {
- jTextPane = new JTextPane();
- jTextPane.setBackground(Color.white);
- jTextPane.addKeyListener(new java.awt.event.KeyAdapter() {
- @Override
- public void keyReleased(java.awt.event.KeyEvent e) {
- // 残りつぶやける文字数情報を更新
- mainAction.actionUpdateTweetMessageCount();
- }
- });
- jTextPane.addFocusListener(new java.awt.event.FocusAdapter() {
- @Override
- public void focusGained(java.awt.event.FocusEvent e) {
- updateLen();
- }
-
- @Override
- public void focusLost(java.awt.event.FocusEvent e) {
- updateLen();
- }
-
- private void updateLen() {
- // 残りつぶやける文字数情報を更新
- mainAction.actionUpdateTweetMessageCount();
- }
- });
-
- }
- return jTextPane;
- }
-
- /**
- * This method initializes jMenuItem
- *
- * @return javax.swing.JMenuItem
- */
- private JMenuItem getSaveMenuItem() {
- if (saveMenuItem == null) {
- saveMenuItem = new JMenuItem();
- saveMenuItem.setText("Save");
- saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
- Event.CTRL_MASK, true));
- }
- return saveMenuItem;
- }
-
- /**
- * This method initializes tweetMessageBox
- *
- * @return javax.swing.JEditorPane
- */
- private JEditorPane getTweetMessageBox() {
- if (tweetMessageBox == null) {
- tweetMessageBox = new JEditorPane();
- tweetMessageBox.setEditable(false);
- tweetMessageBox.setContentType("text/html");
- tweetMessageBox.setBackground(new Color(255, 255, 255));
- tweetMessageBox.addHyperlinkListener(new TweetHyperlinkHandler());
- }
- return tweetMessageBox;
- }
-
- /**
- * This method initializes userIntroBox
- *
- * @return javax.swing.JEditorPane
- */
- private JEditorPane getUserIntroBox() {
- if (userIntroBox == null) {
- userIntroBox = new JEditorPane();
- }
- return userIntroBox;
- }
-
- /**
- * This method initializes userWebBox
- *
- * @return javax.swing.JEditorPane
- */
- private JEditorPane getUserWebBox() {
- if (userWebBox == null) {
- userWebBox = new JEditorPane();
- userWebBox.setBounds(new Rectangle(8, 134, 201, 16));
- userWebBox.setContentType("text/html");
- userWebBox.setEditable(false);
- userWebBox.addHyperlinkListener(new TweetHyperlinkHandler());
- try {
- // htmlフォント変更
- HTMLDocument doc = (HTMLDocument) userWebBox.getDocument();
- StyleSheet[] style = doc.getStyleSheet().getStyleSheets();
- for (int i = style.length - 1; i >= 0; i--) {
- Style body = style[i].getStyle("body");
- if (body != null) {
- // TODO: change default font size
- StyleConstants.setFontSize(body, 13);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return userWebBox;
- }
-
- /**
- * Twitter初期化
- */
- private void init() {
- try {
- // twitterログイン
- tweetManager.loginTwitter();
- } catch (FileNotFoundException ex) {
- Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
- } catch (IOException ex) {
- Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
- }
- // メインアクション初期化
- /*mainAction = new TweetMainAction(jFrame, tweetManager, statusBar,
- tweetTableModel, mentionTableModel, messageTableModel,
- sendMessageTableModel, jTable, jTable1, jTable2, jTable3,
- jTextPane, jLabel3, jPanel1, jTabbedPane, tweetMessageBox);
- // 自動更新開始
- mainAction.startTweetAutoUpdate();*/
- }
-
- /**
- * 右クリックを押した時のポップアップメニューを取得
- *
- * @return
- */
- private JPopupMenu getRightClickPopup() {
- if (rightClickPopup == null) {
- rightClickPopup = new JPopupMenu();
- JMenuItem directMessageMenuItem = new JMenuItem("ダイレクトメッセージを送信");
- directMessageMenuItem
- .addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // ダイレクトメッセージ送信ダイアログを表示
- mainAction.actionShowDirectMessageDialog();
- }
- });
- rightClickPopup.add(directMessageMenuItem);
- JMenuItem retweetMenuItem = new JMenuItem("発言を公式リツイート");
- retweetMenuItem
- .addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのステータスをRetweet
- mainAction.actionRetweet();
- }
- });
- rightClickPopup.add(retweetMenuItem);
- JMenuItem quoteMenuItem = new JMenuItem("発言をコメント付きリツイート");
- quoteMenuItem
- .addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのステータスをコメント付Retweet
- mainAction.actionCopySelectedStatusToTweetBoxPane();
- }
- });
- rightClickPopup.add(quoteMenuItem);
-
- JMenuItem statusBrowserMenuItem = new JMenuItem("発言をブラウザで開く");
- statusBrowserMenuItem
- .addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのステータスをブラウザで開く
- mainAction.actionOpenStatusURL();
- }
- });
- rightClickPopup.add(statusBrowserMenuItem);
-
- JMenuItem openBrowserUserInformationMenuItem = new JMenuItem(
- "この人のTimelineをブラウザで開く");
- openBrowserUserInformationMenuItem
- .addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのユーザ情報をブラウザで開く
- mainAction.actionOpenUserURL();
- }
- });
- rightClickPopup.add(openBrowserUserInformationMenuItem);
- }
- return rightClickPopup;
- }
-
-}
\ No newline at end of file
*/
public class TweetMainAction {
- /**
- * 一定時間毎にtweet情報をアップデートするタスク
- *
- * @author nishio
- *
- */
- private class TweetAutoUpdateTask implements Runnable {
-
- TweetAutoUpdateTask() {
- }
-
- public void run() {
- // 一定時間ごとにTweet情報をアップデート
- try {
- /*if (currentGetTimelinePeriodNum == 0) {
- // Tweetテーブルの情報を更新
- actionTweetTableUpdate();
- }
- currentGetTimelinePeriodNum = (currentGetTimelinePeriodNum + 1)
- % getTimelinePeriodNum;
-
- if (currentGetMentionPeriodNum == 0) {
- // Mentionテーブルの情報を更新
- //actionMentionTableUpdate();
- }
- currentGetMentionPeriodNum = (currentGetMentionPeriodNum + 1)
- % getMentionPeriodNum;
-
- if (currentGetDirectMessagePeriodNum == 0) {
- // DirectMessageテーブルの情報を更新
- actionDirectMessageTableUpdate();
- }
- currentGetDirectMessagePeriodNum = (currentGetDirectMessagePeriodNum + 1)
- % getDirectMessagePeriodNum;
-
- if (currentGetSendDirectMessagePeriodNum == 0) {
- // SendDirectMessageテーブルの情報を更新
- actionSendDirectMessageTableUpdate();
- }
- currentGetSendDirectMessagePeriodNum = (currentGetSendDirectMessagePeriodNum + 1)
- % getSendDirectMessagePeriodNum;*/
-
- //設定ファイルを保存
- saveProperties();
-
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- }
- }
-
- /**
- * 一定時間毎にtweet情報をアップデートする
- *
- * @author nishio
- *
- */
- private class TweetAutoUpdateTimer {
-
- private ScheduledFuture<?> future;
- private final ScheduledExecutorService scheduler;
- private final Runnable task;
- private long time = 0;
-
- public TweetAutoUpdateTimer() {
- task = new TweetAutoUpdateTask();
- scheduler = Executors.newSingleThreadScheduledExecutor();
- }
-
- /**
- * 更新リセット
- */
- public void reset() {
- stop();
- if (future != null) {
- future = scheduler.scheduleAtFixedRate(task, time, time,
- TimeUnit.SECONDS);
- }
- }
-
- /**
- * シャットダウン
- */
- public void shutdown() {
- scheduler.shutdown();
- }
-
- /**
- * 一定時間毎にTweetUpdateTaskを実行
- *
- * @param time
- * second単位
- */
- public void start(long time) {
- future = scheduler.scheduleAtFixedRate(task, 2, time,
- TimeUnit.SECONDS);
- this.time = time;
- }
-
- /**
- * タスク終了
- */
- public void stop() {
- if (future != null) {
- future.cancel(true);
- }
- }
- }
// 基本設定を保存するファイル名
public static final String BASIC_SETTING_FILENAME = TweetConfiguration.BASIC_SETTING_FILENAME;
// httpのパターン
private static final int TABLE_ELEMENT_MAX_SIZE = 200;
// twitterの公式URL
private static final String TWITTER_URL = "http://twitter.com/";
- // Tweet情報自動更新タイマー
- private TweetAutoUpdateTimer autoUpdateTimer = null;
// 基本設定用ダイアログ
private ConfigurationDialog configurationDialog = null;
- private int currentGetDirectMessagePeriodNum = 0;
- private int currentGetMentionPeriodNum = 0;
- private int currentGetSendDirectMessagePeriodNum = 0;
- private int currentGetTimelinePeriodNum = 0;
// 現在選択しているStatus情報
private Status currentStatus = null;
// 詳細情報パネル
private DirectMessageDialog directMessageDialog = null;
//Twitter全体からキーワード検索ダイアログ
private KeywordSearchDialog keywordSearchDialog = null;
- // directMessageを表示するテーブル
- private JTable directMessageTable = null;
- // directMessageのtweetを表示するテーブルモデル
- private TweetTableModel directMessageTableModel = null;
- // 情報アップデート間隔(分)
- private int updatePeriod = 1;
- // DirectMessageの取得間隔
- private int getDirectMessagePeriodNum = 10;
- // Mentionの取得間隔
- private int getMentionPeriodNum = 5;
- // SendDirectMessageの取得間隔
- private int getSendDirectMessagePeriodNum = 30;
- // Timelineの取得間隔
- private int getTimelinePeriodNum = 1;
// 新しく取得した部分のテーブルカラー
private Color newTableColor = new Color(224, 255, 255);
// TLのフォント名
private int mainFrameHeight = 629;
// MainFrame
private JFrame mainFrame = null;
- // メインのtweetを表示するテーブル
- private JTable mainTweetTable = null;
- // mentionを表示するテーブル
- private JTable mentionTable = null;
- // mentionのtweetを表示するテーブルモデル
- private TweetTableModel mentionTableModel = null;
// 設定
private Properties property = null;
// 現在テーブルで選択しているユーザ画像のURL
private URL selectedUserImageURL = null;
// 現在テーブルで選択しているユーザの名前
private String selectedUsername = null;
- // sendDirectMessageを表示するテーブル
- private JTable sendDirectMessageTable = null;
- // sendDirectMessageのtweetを表示するテーブル
- private TweetTableModel sendDirectMessageTableModel = null;
// ステータス表示ラベル
private JLabel statusBarLabel = null;
// 自分がつぶやきをかく領域
private JEditorPane tweetMessageBox = null;
// つぶやくことができる文字数を表示するラベル
private JLabel tweetMessageCountLabel = null;
- // メインのtweetを表示するテーブルモデル
- private TweetTableModel tweetTableModel = null;
private int uncheckedDirectMessageCount = 0;
private int uncheckedMentionTweetCount = 0;
private List<TweetTabbedTable> tweetTabbedTableList = new ArrayList<TweetTabbedTable>();
//ツイートテーブルの情報を一定間隔で更新するクラスを作成
private TweetTaskManager tweetTaskManager = new TweetTaskManager();
- //ここは一時的に追加している部分 タブにすでに存在しているテーブルの数
- private int ALREADY_TWEET_TAB_NUM = 4;
/**
*
public TweetMainAction(JFrame mainFrame,
TweetManager tweetManager,
JLabel statusBarLabel,
- TweetTableModel tweetTableModel,
- TweetTableModel mentionTableModel,
- TweetTableModel directMessageTableModel,
- TweetTableModel sendDirectMessageTableModel,
- JTable mainTweetTable,
- JTable mentionTable,
- JTable directMessageTable,
- JTable sendDirectMessageTable,
JTextPane tweetBoxPane,
JScrollPane tweetBoxScrollPane,
JLabel tweetMessageCountLabel,
this.mainFrame = mainFrame;
this.tweetManager = tweetManager;
this.statusBarLabel = statusBarLabel;
- this.tweetTableModel = tweetTableModel;
- this.mentionTableModel = mentionTableModel;
- this.directMessageTableModel = directMessageTableModel;
- this.sendDirectMessageTableModel = sendDirectMessageTableModel;
- this.mainTweetTable = mainTweetTable;
- this.mentionTable = mentionTable;
- this.directMessageTable = directMessageTable;
- this.sendDirectMessageTable = sendDirectMessageTable;
this.tweetBoxPane = tweetBoxPane;
this.tweetMessageCountLabel = tweetMessageCountLabel;
this.detailInfoPanel = detailInfoPanel;
detailFont = new Font(this.detailFontName, Font.PLAIN,
this.detailFontSize);
}
- this.mainTweetTable.setFont(tlFont);
- this.mentionTable.setFont(tlFont);
- this.directMessageTable.setFont(tlFont);
- this.sendDirectMessageTable.setFont(tlFont);
+
+ //すべてのテーブルにフォント情報を反映
+ for( TweetTabbedTable t : this.tweetTabbedTableList) {
+ t.getTable().setFont(tlFont);
+ }
// tweetメッセージボックスのフォントはhtmlレベルで変更する必要がある
this.tweetMessageBox.setFont(detailFont);
public void actionAddTab(String timerID, int period, TweetGetter tweetGetter, String tabTitle) {
int numOfTab = this.tweetTabbedTableList.size();
//すでに追加されているタブの数
- //TODO:ここはあとで変更する必要がある.なぜなら既に追加されているタブの数は変わる可能性があるから
- int alreadyExistTabNum = ALREADY_TWEET_TAB_NUM;
//周期的に情報を更新する
if( period > 0 ) {
try {
//テーブルを作成
final TweetTabbedTable table = new TweetTabbedTable(tweetGetter, tabTitle,
- this.tweetMainTab, numOfTab + alreadyExistTabNum,
+ this.tweetMainTab, numOfTab,
this.tableElementHeight, this.tweetManager,
this, newTableColor, tableElementHeight, timerID);
Logger.getLogger(TweetMainAction.class.getName()).log(Level.SEVERE, null, ex);
}
}
+
+ //フォント情報を更新
+ this.updateFontInformationToComponent();
}
/**
}
/**
- * DirectMessageテーブルの更新
- */
- public void actionDirectMessageTableUpdate() {
- try {
- // API残り回数を取得
- int remainingHits = tweetManager.getRateLimitStatus().getRemainingHits();
- if (remainingHits <= 0) {
- information("API制限です.リクエストの残数が0となりました.");
- return;
- }
-
- // Direct Message情報
-
- // DirectMessageを追加
- List<Status> directMessages = tweetManager.getNewDirectMessages();
- // まだ見ていないdirectMessage数を追加
- uncheckedDirectMessageCount += directMessages.size();
- // まだ見ていないmentionの数をタブに表示
- if (uncheckedDirectMessageCount > 0) {
- tweetMainTab.setTitleAt(2, TAB_DIRECT_MESSAGE_STRING + "("
- + uncheckedDirectMessageCount + ")");
- }
- for (Status t : directMessages) {
- directMessageTableModel.insertTweet(t);
- directMessageTable.setRowHeight(0, tableElementHeight);
- }
- // 古いデータを削除
- directMessageTableModel.removeOldTweet(TABLE_ELEMENT_MAX_SIZE);
-
- directMessageTableModel.refreshTime();
- } catch (TwitterException e1) {
- e1.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
* 選択しているタブを削除
*/
public void actionRemoveFocusedTabbedTable() {
int selected = this.tweetMainTab.getSelectedIndex();
- //TODO:ここはいつか変更
- int deleteTabIndex = selected - this.ALREADY_TWEET_TAB_NUM;
+ int deleteTabIndex = selected;
+
if( deleteTabIndex >= 0 ) {
//タブを削除
- this.tweetMainTab.remove(deleteTabIndex + this.ALREADY_TWEET_TAB_NUM);
+ this.tweetMainTab.remove(deleteTabIndex);
int tabSetNum = this.tweetTabbedTableList.get(deleteTabIndex).getTabSetNum();
//タブのタイマーID
String timerID = this.tweetTabbedTableList.get(deleteTabIndex).getTimerID();
//削除
this.tweetTabbedTableList.remove(deleteTabIndex);
- //一時的に
- tabSetNum -= this.ALREADY_TWEET_TAB_NUM;
//削除した分,既存のタブ番号を1つずつずらさなければならない
int tabNum = this.tweetTabbedTableList.size();
for(int i = tabSetNum; i < tabNum; i++) {
}
/**
- * Mentionテーブル情報を更新
- */
- public void actionMentionTableUpdate() {
- try {
- // API残り回数を取得
- int remainingHits = tweetManager.getRateLimitStatus().getRemainingHits();
- if (remainingHits <= 0) {
- information("API制限です.リクエストの残数が0となりました.");
- return;
- }
-
- // Mention情報
-
- // Mentionを追加
- List<Status> mention = tweetManager.getNewMentionData();
- // まだ見ていないmention数を追加
- uncheckedMentionTweetCount += mention.size();
- // まだ見ていないmentionの数をタブに表示
- if (uncheckedMentionTweetCount > 0) {
- tweetMainTab.setTitleAt(1, TAB_MENTION_STRING + "("
- + uncheckedMentionTweetCount + ")");
- }
- for (Status t : mention) {
- mentionTableModel.insertTweet(t);
- mentionTable.setRowHeight(0, tableElementHeight);
- }
- // 新規した部分の背景色を変更
- TableCellRenderer renderer2 = mentionTable.getCellRenderer(0, 2);
- if (renderer2 instanceof TweetCommentRenderer) {
- if (this.uncheckedMentionTweetCount - 1 >= 0) {
- ((TweetCommentRenderer) renderer2).updateNewCellRow(
- this.uncheckedMentionTweetCount, newTableColor);
- } else {
- ((TweetCommentRenderer) renderer2).updateNewCellRow(-1,
- newTableColor);
- }
- }
- // 古いデータを削除
- mentionTableModel.removeOldTweet(TABLE_ELEMENT_MAX_SIZE);
-
- mentionTableModel.refreshTime();
- } catch (TwitterException e1) {
- e1.printStackTrace();
- }
- }
-
- /**
* 選択した発言をブラウザで開く
*/
public void actionOpenStatusURL() {
* Tweet取得時間情報を更新
*/
public void actionRefreshTime() {
- tweetTableModel.refreshTime();
- mentionTableModel.refreshTime();
- directMessageTableModel.refreshTime();
- sendDirectMessageTableModel.refreshTime();
-
//タブに存在する時間情報を更新
for(TweetTabbedTable t : this.tweetTabbedTableList ) {
TweetTableModel model = t.getModel();
*/
public void updateTableHeight(int height) {
this.tableElementHeight = height;
- mainTweetTable.setRowHeight(tableElementHeight);
- mentionTable.setRowHeight(tableElementHeight);
- directMessageTable.setRowHeight(tableElementHeight);
- sendDirectMessageTable.setRowHeight(tableElementHeight);
- }
-
- /**
- * SendDirectMessageテーブルを更新
- */
- public void actionSendDirectMessageTableUpdate() {
- try {
- // API残り回数を取得
- int remainingHits = tweetManager.getRateLimitStatus().getRemainingHits();
- if (remainingHits <= 0) {
- information("API制限です.リクエストの残数が0となりました.");
- return;
- }
- // Direct Message情報
-
- List<Status> sendDirectMessages = tweetManager.getNewSendDirectMessages();
-
- //TODO:ここはnullぽが頻発している.修正の必要あり
- try {
- for (Status t : sendDirectMessages) {
- sendDirectMessageTableModel.insertTweet(t);
- sendDirectMessageTable.setRowHeight(0, tableElementHeight);
- }
- }catch(NullPointerException e2) {
- e2.printStackTrace();
- }
- // 古いデータを削除
- sendDirectMessageTableModel.removeOldTweet(TABLE_ELEMENT_MAX_SIZE);
-
- sendDirectMessageTableModel.refreshTime();
- } catch (TwitterException e1) {
- e1.printStackTrace();
+ for( TweetTabbedTable t : this.tweetTabbedTableList) {
+ t.getTable().setRowHeight(tableElementHeight);
}
}
}
/**
- * Tweetテーブルの情報を更新
- */
- public void actionTweetTableUpdate() {
- try {
- // API残り回数を取得
- int remainingHits = tweetManager.getRateLimitStatus().getRemainingHits();
- if (remainingHits <= 0) {
- information("API制限です.リクエストの残数が0となりました.");
- return;
- }
-
- // Timeline情報
- List<Status> tweet = tweetManager.getNewTimelineData();
- // まだ見ていないtweet数を追加
- uncheckedTimelineTweetCount += tweet.size();
- // まだチェックしていないtweetの数をタブにも表示
- if (uncheckedTimelineTweetCount > 0) {
- tweetMainTab.setTitleAt(0, TAB_TIMELINE_STRING + "("
- + uncheckedTimelineTweetCount + ")");
- }
- // Timelineをテーブルに追加
- for (Status t : tweet) {
- tweetTableModel.insertTweet(t);
- mainTweetTable.setRowHeight(0, tableElementHeight);
- }
- // 新規した部分の背景色を変更
- TableCellRenderer renderer = mainTweetTable.getCellRenderer(0, 2);
- if (renderer instanceof TweetCommentRenderer) {
- if (this.uncheckedTimelineTweetCount - 1 >= 0) {
- ((TweetCommentRenderer) renderer).updateNewCellRow(
- this.uncheckedTimelineTweetCount, newTableColor);
- } else {
- ((TweetCommentRenderer) renderer).updateNewCellRow(-1,
- newTableColor);
- }
- }
- // 古いデータを削除
- tweetTableModel.removeOldTweet(TABLE_ELEMENT_MAX_SIZE);
-
- // 取得したコメント数をステータスバーに表示
- information(uncheckedTimelineTweetCount
- + " 件の新しいツイートを取得しました. (APIリクエスト残数は" + remainingHits
- + "回です)");
-
- tweetTableModel.refreshTime();
- } catch (TwitterException e1) {
- e1.printStackTrace();
- }
- }
-
- /**
- * メインTweet情報を更新
+ * Tweet情報を更新
*
* @param e
*/
public void actionUpdateButton(java.awt.event.ActionEvent e) {
try {
- // Tweetテーブルの情報を更新
- actionTweetTableUpdate();
- // Mentionテーブルの情報を更新
- actionMentionTableUpdate();
- // DirectMessageテーブルの情報を更新
- actionDirectMessageTableUpdate();
- // SendDirectMessageテーブルの情報を更新
- actionSendDirectMessageTableUpdate();
-
- //新しく追加したタブ上に存在するテーブルの情報を更新
+ //タブ上に存在するテーブルの情報を更新
for(TweetTabbedTable t : this.tweetTabbedTableList ) {
t.updateTweetTable();
}
+
+ // API残り回数を取得
+ int remainingHits = tweetManager.getRateLimitStatus().getRemainingHits();
+ // 取得したコメント数をステータスバーに表示
+ //TODO:ここの???部分を更新
+ information("???"
+ + " 件の新しいツイートを取得しました. (APIリクエスト残数は" + remainingHits
+ + "回です)");
} catch (Exception e1) {
e1.printStackTrace();
}
}
/**
- * updatePeriodを取得します。
- *
- * @return updatePeriod
- */
- public int getUpdatePeriod() {
- return updatePeriod;
- }
-
- /**
- * updatePeriodを設定します。
- *
- * @param updatePeriod
- * updatePeriod
- */
- public void setUpdatePeriod(int updatePeriod) {
- this.updatePeriod = updatePeriod;
- }
-
- /**
- * getDirectMessagePeriodNumを取得します。
- *
- * @return getDirectMessagePeriodNum
- */
- public int getGetDirectMessagePeriodNum() {
- return getDirectMessagePeriodNum;
- }
-
- /**
- * getMentionPeriodNumを取得します。
- *
- * @return getMentionPeriodNum
- */
- public int getGetMentionPeriodNum() {
- return getMentionPeriodNum;
- }
-
- /**
- * getSendDirectMessagePeriodNumを取得します。
- *
- * @return getSendDirectMessagePeriodNum
- */
- public int getGetSendDirectMessagePeriodNum() {
- return getSendDirectMessagePeriodNum;
- }
-
- /**
- * getTimelinePeriodNumを取得します。
- *
- * @return getTimelinePeriodNum
- */
- public int getGetTimelinePeriodNum() {
- return getTimelinePeriodNum;
- }
-
- /**
* テーブルで選択した場所のTweet情報を取得
*
* @return
String mfh = this.property.getProperty("mainFrameHeight");
try {
- this.getTimelinePeriodNum = Integer.parseInt(gtpn);
- this.getMentionPeriodNum = Integer.parseInt(gmpn);
- this.getDirectMessagePeriodNum = Integer.parseInt(gdmpn);
- this.getSendDirectMessagePeriodNum = Integer.parseInt(gsdmpn);
- this.updatePeriod = Integer.parseInt(up);
this.newTableColor = new Color(Integer.parseInt(ntrgb));
this.tlFontSize = Integer.parseInt(tfs);
this.detailFontSize = Integer.parseInt(dfs);
}
/**
- * Tweet情報の自動更新のタイムをリセット
- */
- public void resetTweetAutoUpdate() {
- if (this.autoUpdateTimer != null) {
- this.autoUpdateTimer.reset();
- }
- }
-
- /**
* 設定ファイルを保存する
*
* @throws IOException
if (property == null) {
this.property = new Properties();
}
- // since idを保存
- this.property.setProperty("getTimelinePeriodNum",
- this.getTimelinePeriodNum + "");
- this.property.setProperty("getMentionPeriodNum",
- this.getMentionPeriodNum + "");
- this.property.setProperty("getDirectMessagePeriodNum",
- this.getDirectMessagePeriodNum + "");
- this.property.setProperty("getSendDirectMessagePeriodNum",
- this.getSendDirectMessagePeriodNum + "");
- this.property.setProperty("updatePeriod", this.updatePeriod + "");
this.property.setProperty("newTableColorRGB", newTableColor.getRGB()
+ "");
this.property.setProperty("tlFontName", this.tlFontName);
}
/**
- * getDirectMessagePeriodNumを設定します。
- *
- * @param getDirectMessagePeriodNum
- * getDirectMessagePeriodNum
- */
- public void setGetDirectMessagePeriodNum(int getDirectMessagePeriodNum) {
- this.getDirectMessagePeriodNum = getDirectMessagePeriodNum;
- }
-
- /**
- * getMentionPeriodNumを設定します。
- *
- * @param getMentionPeriodNum
- * getMentionPeriodNum
- */
- public void setGetMentionPeriodNum(int getMentionPeriodNum) {
- this.getMentionPeriodNum = getMentionPeriodNum;
- }
-
- /**
- * getSendDirectMessagePeriodNumを設定します。
- *
- * @param getSendDirectMessagePeriodNum
- * getSendDirectMessagePeriodNum
- */
- public void setGetSendDirectMessagePeriodNum(
- int getSendDirectMessagePeriodNum) {
- this.getSendDirectMessagePeriodNum = getSendDirectMessagePeriodNum;
- }
-
- /**
- * getTimelinePeriodNumを設定します。
- *
- * @param getTimelinePeriodNum
- * getTimelinePeriodNum
- */
- public void setGetTimelinePeriodNum(int getTimelinePeriodNum) {
- this.getTimelinePeriodNum = getTimelinePeriodNum;
- }
-
- /**
- * Tweet情報の自動更新スタート
- *
- * @param second
- */
- public void startTweetAutoUpdate() {
- if (this.autoUpdateTimer == null) {
- this.autoUpdateTimer = new TweetAutoUpdateTimer();
- }
- // 一度タイマーストップ
- this.autoUpdateTimer.stop();
- // 自動更新開始
- this.autoUpdateTimer.start(updatePeriod * 60);
- }
-
- /**
* newTableColorを取得します。
*
* @return newTableColor
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
-import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
-import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
-import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
-import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.StyleSheet;
import twitter.gui.action.TweetMainAction;
-import twitter.gui.component.TweetCommentRenderer;
import twitter.gui.component.TweetHyperlinkHandler;
-import twitter.gui.component.TweetTableModel;
-import twitter.gui.component.UserImageRenderer;
import twitter.manage.TweetManager;
-import twitter4j.Status;
/**
*
MenuItem item1 = new MenuItem("画面を開く");
item1.addActionListener(new ActionListener() {
+ @Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
}
MenuItem item2 = new MenuItem("終了");
item2.addActionListener(new ActionListener() {
+ @Override
public void actionPerformed(ActionEvent e) {
systemTray.remove(trayIcon);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
private void initComponents() {
jTabbedPane1 = new javax.swing.JTabbedPane();
- jScrollPane1 = new javax.swing.JScrollPane();
- jTable = new javax.swing.JTable();
- jScrollPane2 = new javax.swing.JScrollPane();
- jTable1 = new javax.swing.JTable();
- jScrollPane3 = new javax.swing.JScrollPane();
- jTable2 = new javax.swing.JTable();
- jScrollPane4 = new javax.swing.JScrollPane();
- jTable3 = new javax.swing.JTable();
jPanel1 = new javax.swing.JPanel();
userImageLabel = new javax.swing.JLabel();
jScrollPane5 = new javax.swing.JScrollPane();
setTitle("Nishio Tweet Manager");
- jTable.setModel(tweetTableModel);
- jTable.getTableHeader().setReorderingAllowed(false);
- jTable.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mousePressed(java.awt.event.MouseEvent evt) {
- jTableMousePressed(evt);
- }
- public void mouseReleased(java.awt.event.MouseEvent evt) {
- jTableMouseReleased(evt);
- }
- });
- jTable.addFocusListener(new java.awt.event.FocusAdapter() {
- public void focusGained(java.awt.event.FocusEvent evt) {
- jTableFocusGained(evt);
- }
- });
- jScrollPane1.setViewportView(jTable);
-
- jTabbedPane1.addTab("Timeline", jScrollPane1);
-
- jTable1.setModel(mentionTableModel);
- jTable1.getTableHeader().setReorderingAllowed(false);
- jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mousePressed(java.awt.event.MouseEvent evt) {
- jTable1MousePressed(evt);
- }
- public void mouseReleased(java.awt.event.MouseEvent evt) {
- jTable1MouseReleased(evt);
- }
- });
- jTable1.addFocusListener(new java.awt.event.FocusAdapter() {
- public void focusGained(java.awt.event.FocusEvent evt) {
- jTable1FocusGained(evt);
- }
- });
- jScrollPane2.setViewportView(jTable1);
-
- jTabbedPane1.addTab("Mention", jScrollPane2);
-
- jTable2.setModel(messageTableModel);
- jTable2.getTableHeader().setReorderingAllowed(false);
- jTable2.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mousePressed(java.awt.event.MouseEvent evt) {
- jTable2MousePressed(evt);
- }
- public void mouseReleased(java.awt.event.MouseEvent evt) {
- jTable2MouseReleased(evt);
- }
- });
- jTable2.addFocusListener(new java.awt.event.FocusAdapter() {
- public void focusGained(java.awt.event.FocusEvent evt) {
- jTable2FocusGained(evt);
- }
- });
- jScrollPane3.setViewportView(jTable2);
-
- jTabbedPane1.addTab("Message", jScrollPane3);
-
- jTable3.setModel(sendMessageTableModel);
- jTable3.getTableHeader().setReorderingAllowed(false);
- jScrollPane4.setViewportView(jTable3);
-
- jTabbedPane1.addTab("Send", jScrollPane4);
-
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
userImageLabel.setBackground(java.awt.Color.black);
updateLen();
}//GEN-LAST:event_jButton4ActionPerformed
- private void jTableFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTableFocusGained
- // まだ見ていないtweet数を0にする
- mainAction.actionResetUncheckedTimelineTweetCount();
- }//GEN-LAST:event_jTableFocusGained
-
- private void jTableMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableMousePressed
- //右クリックメニュー表示
- showPopup(evt);
- mainAction.actionResetUncheckedTimelineTweetCount();
- }//GEN-LAST:event_jTableMousePressed
-
- private void jTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableMouseReleased
- //右クリックメニュー表示
- showPopup(evt);
- }//GEN-LAST:event_jTableMouseReleased
-
- private void jTable1FocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTable1FocusGained
- mainAction.actionResetUncheckedMentionTweetCount();
- }//GEN-LAST:event_jTable1FocusGained
-
- private void jTable1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MousePressed
- //右クリックメニュー表示
- showPopup(evt);
- mainAction.actionResetUncheckedMentionTweetCount();
- }//GEN-LAST:event_jTable1MousePressed
-
- private void jTable1MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseReleased
- //右クリックメニュー表示
- showPopup(evt);
- }//GEN-LAST:event_jTable1MouseReleased
-
- private void jTable2FocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTable2FocusGained
- mainAction.actionResetUncheckedDirectMessageCount();
- }//GEN-LAST:event_jTable2FocusGained
-
- private void jTable2MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable2MousePressed
- //右クリックメニュー表示
- showPopup(evt);
- mainAction.actionResetUncheckedDirectMessageCount();
- }//GEN-LAST:event_jTable2MousePressed
-
- private void jTable2MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable2MouseReleased
- //右クリックメニュー表示
- showPopup(evt);
- }//GEN-LAST:event_jTable2MouseReleased
-
private void tweetMessageBoxComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tweetMessageBoxComponentResized
}//GEN-LAST:event_tweetMessageBoxComponentResized
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
mainAction.actionUpdateButton(evt);
// いますぐ更新ボタンを押したので,更新タイムを一度リセットする
- mainAction.resetTweetAutoUpdate();
+ //mainAction.resetTweetAutoUpdate();
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
mainAction.actionUpdateButton(evt);
// いますぐ更新ボタンを押したので,更新タイムを一度リセットする
- mainAction.resetTweetAutoUpdate();
+ // mainAction.resetTweetAutoUpdate();
}//GEN-LAST:event_jMenuItem7ActionPerformed
private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
}
/**
- * ポップアップメニューを作成
- * @param e
- */
- private void showPopup(MouseEvent e) {
- if (e.isPopupTrigger()) {
- // 右クリックのメニューを表示
- getRightClickPopup().show(e.getComponent(), e.getX(),
- e.getY());
- }
- }
-
- /**
* @param args the command line arguments
*/
public static void main(String args[]) {
// メインアクション初期化
mainAction = new TweetMainAction(this, tweetManager, statusBar,
- tweetTableModel, mentionTableModel, messageTableModel,
- sendMessageTableModel, jTable, jTable1, jTable2, jTable3,
jTextPane, jScrollPane9, tweetLengthLabel, jPanel1, jTabbedPane1, tweetMessageBox, userImageLabel,
userNameLabel, updateTimeLabel, followerLabel, followingLabel, locationLabel,
clientNameLabel, updateLabel, userIntroBox, userWebBox);
// 自動更新開始
- mainAction.startTweetAutoUpdate();
+ //TODO:処理を書く
+ //mainAction.startTweetAutoUpdate();
//もしログインに失敗したら,アカウント設定画面を出す
if (login == false) {
mainAction.actionShowAccountDialog();
+ } else {
+ //TLなどを表示するタブを追加
+ //TODO:時間情報を更新
+ this.mainAction.actionAddTimelineTab(60);
+ this.mainAction.actionAddMentionTab(180);
+ this.mainAction.actionAddDirectMessageTab(3000);
}
- //テーブル生成
- createTweetTable(jTable);
- createTweetTable(jTable1);
- createTweetTable(jTable2);
- createTweetTable(jTable3);
- }
-
- /**
- * Tweetを表示するテーブルを作成
- *
- * @param model
- * @return
- */
- private void createTweetTable(final JTable table) {
-
- table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
- table.setShowVerticalLines(false);
- table.setShowHorizontalLines(true);
-
- // Comment部分のColumnを複数行コメントが表示できるようにする
- TableColumnModel mdl = table.getColumnModel();
- TableColumn col = mdl.getColumn(1);
- TweetCommentRenderer commentRenderer = new TweetCommentRenderer();
- col.setCellRenderer(commentRenderer);
- // INfo部分のColumnを複数行表示できるように
- TweetCommentRenderer infoRenderer = new TweetCommentRenderer();
- col = mdl.getColumn(2);
- col.setCellRenderer(infoRenderer);
- col.setMaxWidth(200);
- col.setMinWidth(150);
- // TODO:とりあえず幅指定した部分
- // あとでファイルに幅情報などを保存しておき,それを読み込んで設定するような仕様に変更する
- // ユーザImageを表示する部分
- col = mdl.getColumn(0);
- col.setCellRenderer(new UserImageRenderer());
- col.setMinWidth(50);
- col.setMaxWidth(50);
- // 選択したセルの情報をDetailInfoへと表示
- table.getSelectionModel().addListSelectionListener(
- new ListSelectionListener() {
-
- @Override
- public void valueChanged(ListSelectionEvent e) {
-
- if (e.getValueIsAdjusting()) {
- return;
- }
-
- //テーブルで選択した要素を詳細情報として表示
- mainAction.setDetailInformationFromTable(table);
- }
- });
- // JTableを右クリックでも選択できるようにする
- // また,同じ行を2回クリックできるようにする
- table.addMouseListener(new MouseAdapter() {
-
- @Override
- public void mousePressed(MouseEvent e) {
- // いったんSelectしていた情報を削除
- table.clearSelection();
- // if (e.getButton() == MouseEvent.BUTTON3) {
- Point p = e.getPoint();
- int col = table.columnAtPoint(p);
- int row = table.rowAtPoint(p);
- table.changeSelection(row, col, false, false);
- // }
- }
- });
- // MouseEventを追加
- table.addMouseListener(commentRenderer);
- table.addMouseMotionListener(commentRenderer);
- table.addMouseListener(infoRenderer);
- table.addMouseMotionListener(infoRenderer);
- }
-
- /**
- * 右クリックを押した時のポップアップメニューを取得
- *
- * @return
- */
- private JPopupMenu getRightClickPopup() {
- if (rightClickPopup == null) {
- rightClickPopup = new JPopupMenu();
- JMenuItem directMessageMenuItem = new JMenuItem("ダイレクトメッセージを送信");
- directMessageMenuItem.addActionListener(new java.awt.event.ActionListener() {
-
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // ダイレクトメッセージ送信ダイアログを表示
- mainAction.actionShowDirectMessageDialog();
- }
- });
- rightClickPopup.add(directMessageMenuItem);
- JMenuItem retweetMenuItem = new JMenuItem("発言を公式リツイート");
- retweetMenuItem.addActionListener(new java.awt.event.ActionListener() {
-
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのステータスをRetweet
- mainAction.actionRetweet();
- }
- });
- rightClickPopup.add(retweetMenuItem);
- JMenuItem quoteMenuItem = new JMenuItem("発言をコメント付きリツイート");
- quoteMenuItem.addActionListener(new java.awt.event.ActionListener() {
-
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのステータスをコメント付Retweet
- mainAction.actionCopySelectedStatusToTweetBoxPane();
- }
- });
- rightClickPopup.add(quoteMenuItem);
-
- JMenuItem statusBrowserMenuItem = new JMenuItem("発言をブラウザで開く");
- statusBrowserMenuItem.addActionListener(new java.awt.event.ActionListener() {
-
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのステータスをブラウザで開く
- mainAction.actionOpenStatusURL();
- }
- });
- rightClickPopup.add(statusBrowserMenuItem);
-
- JMenuItem openBrowserUserInformationMenuItem = new JMenuItem(
- "この人のTimelineをブラウザで開く");
- openBrowserUserInformationMenuItem.addActionListener(new java.awt.event.ActionListener() {
-
- public void actionPerformed(java.awt.event.ActionEvent e) {
- // 選択したセルのユーザ情報をブラウザで開く
- mainAction.actionOpenUserURL();
- }
- });
- rightClickPopup.add(openBrowserUserInformationMenuItem);
- }
- return rightClickPopup;
}
+
//nishio tweet manager
private JPopupMenu rightClickPopup = null;
private TweetMainAction mainAction = null;
// TweetManager
private TweetManager tweetManager = new TweetManager();
- //TableModel
- private TweetTableModel tweetTableModel = new TweetTableModel();
- private TweetTableModel mentionTableModel = new TweetTableModel();
- private TweetTableModel messageTableModel = new TweetTableModel();
- private TweetTableModel sendMessageTableModel = new TweetTableModel();
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JEditorPane clientNameLabel;
private javax.swing.JLabel followerLabel;
private javax.swing.JMenuItem jMenuItem8;
private javax.swing.JMenuItem jMenuItem9;
private javax.swing.JPanel jPanel1;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JScrollPane jScrollPane2;
- private javax.swing.JScrollPane jScrollPane3;
- private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JScrollPane jScrollPane7;
private javax.swing.JScrollPane jScrollPane8;
private javax.swing.JScrollPane jScrollPane9;
private javax.swing.JTabbedPane jTabbedPane1;
- private javax.swing.JTable jTable;
- private javax.swing.JTable jTable1;
- private javax.swing.JTable jTable2;
- private javax.swing.JTable jTable3;
private javax.swing.JTextPane jTextPane;
private javax.swing.JToggleButton jToggleButton1;
private javax.swing.JToggleButton jToggleButton2;