\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
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
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
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
*/\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
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
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
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
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
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
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
rowViewTemp.add(a);\r
}\r
\r
- tableModel_rsved.fireTableDataChanged();\r
+ tableModel_rsved.fireTableDataChanged(false);\r
((DefaultTableModel)jTable_rowheader.getModel()).fireTableDataChanged();\r
\r
setOverlapMark();\r
*/\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
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
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
******************************************************************************/\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
--- /dev/null
+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
--- /dev/null
+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
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
/**\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
}\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
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