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