OSDN Git Service

ESCキーでツールバー検索のキャンセルα版
authorpeeweedee <peeweedee@users.sourceforge.jp>
Fri, 20 Dec 2013 16:24:19 +0000 (01:24 +0900)
committerpeeweedee <peeweedee@users.sourceforge.jp>
Fri, 20 Dec 2013 16:24:19 +0000 (01:24 +0900)
TinyBannavi/src/tainavi/AbsPaperView.java
TinyBannavi/src/tainavi/AbsRecordedListView.java
TinyBannavi/src/tainavi/AbsReserveListView.java
TinyBannavi/src/tainavi/AbsToolBar.java
TinyBannavi/src/tainavi/CancelEvent.java [new file with mode: 0644]
TinyBannavi/src/tainavi/CancelListener.java [new file with mode: 0644]
TinyBannavi/src/tainavi/JTextFieldWithPopup.java
TinyBannavi/src/tainavi/Viewer.java

index c4e3d4b..8b83917 100644 (file)
@@ -1798,7 +1798,6 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
                \r
                if ( timer_now_enabled ) {\r
 \r
-                       MWin.appendMessage(prevDT4Now+", "+curDT);\r
                        if (prevDT4Now != null && ! prevDT4Now.equals(curDT)) {\r
                                // 日付切り替え\r
                                StdAppendError(MSGID+"日付が変わったので番組表を切り替えます("+CommonUtils.getDateTime(0)+")");\r
index a758753..2355eb1 100644 (file)
@@ -197,6 +197,20 @@ public abstract class AbsRecordedListView extends JPanel {
                        return rowView.size();\r
                }\r
 \r
+               private boolean filtered = false;\r
+               \r
+               public boolean getFiltered() { return filtered; }\r
+               \r
+               @Deprecated\r
+               public void fireTableDataChanged() {\r
+                       throw new NullPointerException();\r
+               }\r
+               \r
+               public void fireTableDataChanged(boolean filtered) {\r
+                       super.fireTableDataChanged();\r
+                       this.filtered = filtered;\r
+               }\r
+               \r
                public ReservedTableModel(String[] colname, int i) {\r
                        super(colname,i);\r
                }\r
@@ -211,7 +225,7 @@ public abstract class AbsRecordedListView extends JPanel {
        private JNETable jTable_reced = null;\r
        private JTable jTable_rowheader = null;\r
 \r
-       private DefaultTableModel tableModel_reced = null;\r
+       private ReservedTableModel tableModel_reced = null;\r
        \r
        private DefaultTableModel rowheaderModel_reced = null;\r
 \r
@@ -319,7 +333,7 @@ public abstract class AbsRecordedListView extends JPanel {
                        rowView.add(a);\r
                }\r
 \r
-               tableModel_reced.fireTableDataChanged();\r
+               tableModel_reced.fireTableDataChanged(false);\r
                ((DefaultTableModel)jTable_rowheader.getModel()).fireTableDataChanged();\r
                \r
                jta_detail.setText(null);\r
@@ -333,10 +347,11 @@ public abstract class AbsRecordedListView extends JPanel {
         */\r
        public void redrawListByKeywordFilter(SearchKey keyword, String target) {\r
                \r
-               rowView.clear();\r
-               \r
                // 情報を一行ずつチェックする\r
                if ( keyword != null ) {\r
+                       \r
+                       rowView.clear();\r
+                       \r
                        for ( RecordedItem a : rowData ) {\r
                                \r
                                ProgDetailList tvd = new ProgDetailList();\r
@@ -350,16 +365,28 @@ public abstract class AbsRecordedListView extends JPanel {
                                        rowView.add(a);\r
                                }\r
                        }\r
+                       \r
+                       // fire!\r
+                       tableModel_reced.fireTableDataChanged(true);\r
+                       rowheaderModel_reced.fireTableDataChanged();\r
                }\r
                else {\r
+                       if ( ! tableModel_reced.getFiltered() ) {\r
+                               System.out.println("xxx");\r
+                               return;\r
+                       }\r
+                       System.out.println("yyy");\r
+                       \r
+                       rowView.clear();\r
+                       \r
                        for ( RecordedItem a : rowData ) {\r
                                rowView.add(a);\r
                        }\r
+                       \r
+                       // fire!\r
+                       tableModel_reced.fireTableDataChanged(false);\r
+                       rowheaderModel_reced.fireTableDataChanged();\r
                }\r
-               \r
-               // fire!\r
-               tableModel_reced.fireTableDataChanged();\r
-               rowheaderModel_reced.fireTableDataChanged();\r
        }\r
        \r
        /**\r
index a6f5338..c139aa6 100644 (file)
@@ -4,7 +4,6 @@ import java.awt.Color;
 import java.awt.Component;\r
 import java.awt.Dimension;\r
 import java.awt.Font;\r
-import java.awt.Insets;\r
 import java.awt.Point;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ActionListener;\r
@@ -19,9 +18,7 @@ import java.util.GregorianCalendar;
 import java.util.HashMap;\r
 import java.util.Map.Entry;\r
 \r
-import javax.swing.AbstractCellEditor;\r
 import javax.swing.ImageIcon;\r
-import javax.swing.JButton;\r
 import javax.swing.JLabel;\r
 import javax.swing.JMenuItem;\r
 import javax.swing.JPopupMenu;\r
@@ -33,7 +30,6 @@ import javax.swing.event.RowSorterEvent.Type;
 import javax.swing.event.RowSorterListener;\r
 import javax.swing.table.DefaultTableColumnModel;\r
 import javax.swing.table.DefaultTableModel;\r
-import javax.swing.table.TableCellEditor;\r
 import javax.swing.table.TableCellRenderer;\r
 import javax.swing.table.TableColumn;\r
 import javax.swing.table.TableModel;\r
@@ -314,6 +310,19 @@ public abstract class AbsReserveListView extends JScrollPane {
                        this.rDat = rowdata;\r
                }\r
                \r
+               private boolean filtered = false;\r
+               \r
+               public boolean getFiltered() { return filtered; }\r
+               \r
+               @Deprecated\r
+               public void fireTableDataChanged() {\r
+                       throw new NullPointerException();\r
+               }\r
+               \r
+               public void fireTableDataChanged(boolean filtered) {\r
+                       super.fireTableDataChanged();\r
+                       this.filtered = filtered;\r
+               }\r
        }\r
        \r
        //private final ReservedItem sa = new ReservedItem();\r
@@ -321,7 +330,7 @@ public abstract class AbsReserveListView extends JScrollPane {
        private JNETableReserved jTable_rsved = null;\r
        private JTable jTable_rowheader = null;\r
 \r
-       private DefaultTableModel tableModel_rsved = null;\r
+       private ReservedTableModel tableModel_rsved = null;\r
        \r
        private DefaultTableModel rowheaderModel_rsved = null;\r
        \r
@@ -466,7 +475,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                        rowViewTemp.add(a);\r
                }\r
                \r
-               tableModel_rsved.fireTableDataChanged();\r
+               tableModel_rsved.fireTableDataChanged(false);\r
                ((DefaultTableModel)jTable_rowheader.getModel()).fireTableDataChanged();\r
                \r
                setOverlapMark();\r
@@ -479,10 +488,11 @@ public abstract class AbsReserveListView extends JScrollPane {
         */\r
        public void redrawListByKeywordFilter(SearchKey keyword, String target) {\r
                \r
-               rowViewTemp.clear();\r
-               \r
                // 情報を一行ずつチェックする\r
                if ( keyword != null ) {\r
+                       \r
+                       rowViewTemp.clear();\r
+                       \r
                        for ( ReservedItem a : rowData ) {\r
                                \r
                                ProgDetailList tvd = new ProgDetailList();\r
@@ -496,16 +506,26 @@ public abstract class AbsReserveListView extends JScrollPane {
                                        rowViewTemp.add(a);\r
                                }\r
                        }\r
+                       \r
+                       // fire!\r
+                       tableModel_rsved.fireTableDataChanged(true);\r
+                       rowheaderModel_rsved.fireTableDataChanged();\r
                }\r
                else {\r
+                       if ( ! tableModel_rsved.getFiltered() ) {\r
+                               return;\r
+                       }\r
+                       \r
+                       rowViewTemp.clear();\r
+                       \r
                        for ( ReservedItem a : rowData ) {\r
                                rowViewTemp.add(a);\r
                        }\r
+                       \r
+                       // fire!\r
+                       tableModel_rsved.fireTableDataChanged(false);\r
+                       rowheaderModel_rsved.fireTableDataChanged();\r
                }\r
-               \r
-               // fire!\r
-               tableModel_rsved.fireTableDataChanged();\r
-               rowheaderModel_rsved.fireTableDataChanged();\r
        }\r
        \r
        /**\r
index cdd278e..5671960 100644 (file)
@@ -775,6 +775,17 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        public void removeHDDRecorderChangeListener(HDDRecorderListener l) {\r
                lsnrs_infochg.remove(l);\r
        }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       public void addKeywordCancelListener(CancelListener l) {\r
+               jTextField_keyword.addCancelListener(l);\r
+       }\r
+\r
+       public void removeKeywordCancelChangeListener(CancelListener l) {\r
+               jTextField_keyword.removeCancelListener(l);\r
+       }\r
 \r
        \r
        /*******************************************************************************\r
@@ -1137,7 +1148,7 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
         ******************************************************************************/\r
 \r
        // キーワード検索ボックス\r
-       private JTextField getJTextField_keyword() {\r
+       private JTextFieldWithPopup getJTextField_keyword() {\r
                if (jTextField_keyword == null) {\r
                        jTextField_keyword = new JTextFieldWithPopup(16);\r
                        Dimension d = jTextField_keyword.getPreferredSize();\r
diff --git a/TinyBannavi/src/tainavi/CancelEvent.java b/TinyBannavi/src/tainavi/CancelEvent.java
new file mode 100644 (file)
index 0000000..3996f80
--- /dev/null
@@ -0,0 +1,21 @@
+package tainavi;\r
+\r
+import java.util.EventObject;\r
+\r
+public class CancelEvent extends EventObject {\r
+\r
+       private static final long serialVersionUID = 1L;\r
+       \r
+       public static enum Cause { TOOLBAR_SEARCH };\r
+       \r
+       // この引数の群れはいいのか?\r
+       public CancelEvent(Object source, Cause cause) {\r
+               super(source);\r
+               this.cause = cause;\r
+       }\r
+       \r
+       private Cause cause;\r
+       \r
+       public Cause getCause() { return cause; }\r
+\r
+}\r
diff --git a/TinyBannavi/src/tainavi/CancelListener.java b/TinyBannavi/src/tainavi/CancelListener.java
new file mode 100644 (file)
index 0000000..32b84f3
--- /dev/null
@@ -0,0 +1,9 @@
+package tainavi;\r
+\r
+import java.util.EventListener;\r
+\r
+public interface CancelListener extends EventListener {\r
+\r
+       public void cancelRised(CancelEvent e);\r
+\r
+}\r
index 62ffb50..9172aaf 100644 (file)
@@ -1,19 +1,70 @@
 package tainavi;\r
 \r
-import javax.swing.JTextField;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.KeyEvent;\r
+import java.util.ArrayList;\r
 \r
+import javax.swing.AbstractAction;\r
+import javax.swing.ActionMap;\r
+import javax.swing.InputMap;\r
+import javax.swing.JComponent;\r
+import javax.swing.JTextField;\r
+import javax.swing.KeyStroke;\r
 \r
 public class JTextFieldWithPopup extends JTextField {\r
 \r
        private static final long serialVersionUID = 1L;\r
 \r
+       private static final String ESCKEYACTION = "escape-cancel";\r
+       \r
        public JTextFieldWithPopup() {\r
                super();\r
                this.addMouseListener(new TextEditPopupMenu());\r
+               \r
+               InputMap im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);\r
+               ActionMap am = this.getActionMap();\r
+               im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), ESCKEYACTION);\r
+               am.put(ESCKEYACTION, new CancelAction());\r
        }\r
 \r
        public JTextFieldWithPopup(int col) {\r
                super(col);\r
                this.addMouseListener(new TextEditPopupMenu());\r
+               \r
+               InputMap im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);\r
+               ActionMap am = this.getActionMap();\r
+               im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), ESCKEYACTION);\r
+               am.put(ESCKEYACTION, new CancelAction());\r
+       }\r
+       \r
+       //\r
+       \r
+       private class CancelAction extends AbstractAction {\r
+\r
+               private static final long serialVersionUID = 1L;\r
+\r
+               @Override\r
+               public void actionPerformed(ActionEvent e) {\r
+                       JTextFieldWithPopup jtf = (JTextFieldWithPopup) e.getSource();\r
+                       \r
+                       CancelEvent ev = new CancelEvent(jtf, CancelEvent.Cause.TOOLBAR_SEARCH);\r
+                       for ( CancelListener l : cancel_listeners ) {\r
+                               l.cancelRised(ev);\r
+                       }\r
+               }\r
+       };\r
+       \r
+       //\r
+       \r
+       private ArrayList<CancelListener> cancel_listeners = new ArrayList<CancelListener>();\r
+       \r
+       public void addCancelListener(CancelListener l) {\r
+               if ( ! cancel_listeners.contains(l) ) {\r
+                       cancel_listeners.add(l);\r
+               }\r
+       }\r
+       \r
+       public void removeCancelListener(CancelListener l) {\r
+               cancel_listeners.remove(l);\r
        }\r
 }\r
index 09d07d9..eb3f3ea 100644 (file)
@@ -78,7 +78,7 @@ import tainavi.VWUpdate.UpdateResult;
 /**\r
  * メインな感じ\r
  */\r
-public class Viewer extends JFrame implements ChangeListener,TickTimerListener,HDDRecorderListener {\r
+public class Viewer extends JFrame implements ChangeListener,TickTimerListener,HDDRecorderListener,CancelListener {\r
 \r
        private static final long serialVersionUID = 1L;\r
        \r
@@ -1492,6 +1492,23 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
        }\r
        \r
        /**\r
+        * \r
+        */\r
+       @Override\r
+       public void cancelRised(CancelEvent e) {\r
+               if ( mainWindow.isTabSelected(MWinTab.RSVED) ) {\r
+                       if ( e.getCause() == CancelEvent.Cause.TOOLBAR_SEARCH ) {\r
+                               reserved.redrawListByKeywordFilter(null,null);\r
+                       }\r
+               }\r
+               else if ( mainWindow.isTabSelected(MWinTab.RECED) ) {\r
+                       if ( e.getCause() == CancelEvent.Cause.TOOLBAR_SEARCH ) {\r
+                               recorded.redrawListByKeywordFilter(null,null);\r
+                       }\r
+               }\r
+       }\r
+       \r
+       /**\r
         * タイマーイベントが発生\r
         */\r
        @Override\r
@@ -5032,6 +5049,9 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
                toolBar.addHDDRecorderSelectionListener(paper);         // 新聞形式\r
                toolBar.addHDDRecorderSelectionListener(autores);       // 自動予約一覧\r
                toolBar.addHDDRecorderSelectionListener(rdialog);       // 予約ダイアログ\r
+\r
+               // [ツールバー/キーワード入力] キャンセル動作\r
+               toolBar.addKeywordCancelListener(this);\r
                \r
                // [タイマー] タイトルバー更新/リスト形式の現在時刻ノード/新聞形式の現在時刻ノード\r
                timer_now.addTickTimerRiseListener(this);\r