OSDN Git Service

[自動予約一覧]タブの新設とEDCBの一覧の取得まで
authorpeeweedee <peeweedee@users.sourceforge.jp>
Sun, 9 Jun 2013 18:07:22 +0000 (03:07 +0900)
committerpeeweedee <peeweedee@users.sourceforge.jp>
Sun, 9 Jun 2013 18:07:22 +0000 (03:07 +0900)
17 files changed:
TinyBannavi/src/tainavi/AbsChannelDatSettingView.java
TinyBannavi/src/tainavi/AbsListedView.java
TinyBannavi/src/tainavi/AbsPaperView.java
TinyBannavi/src/tainavi/AbsRecordedListView.java
TinyBannavi/src/tainavi/AbsRecorderSettingView.java
TinyBannavi/src/tainavi/AbsReserveDialog.java
TinyBannavi/src/tainavi/AbsReserveListView.java
TinyBannavi/src/tainavi/AbsToolBar.java
TinyBannavi/src/tainavi/HDDRecorder.java
TinyBannavi/src/tainavi/HDDRecorderList.java
TinyBannavi/src/tainavi/HDDRecorderUtils.java
TinyBannavi/src/tainavi/JTXTButton.java
TinyBannavi/src/tainavi/PlugIn_RecRD_EDCB.java
TinyBannavi/src/tainavi/TVProgram.java
TinyBannavi/src/tainavi/VWMainWindow.java
TinyBannavi/src/tainavi/VersionInfo.java
TinyBannavi/src/tainavi/Viewer.java

index 42857c1..369cc99 100644 (file)
@@ -13,7 +13,6 @@ import java.awt.event.MouseListener;
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 \r
-import javax.swing.AbstractAction;\r
 import javax.swing.AbstractCellEditor;\r
 import javax.swing.DefaultCellEditor;\r
 import javax.swing.JButton;\r
@@ -287,7 +286,7 @@ public abstract class AbsChannelDatSettingView extends JScrollPane {
                                cc.save(webChName, recChName, chCode);\r
                                \r
                                // ここがあるのでSwingBackgroundWorkerを使わざるをえない\r
-                               for ( HDDRecorder rec : recorders.get(recId) ) {\r
+                               for ( HDDRecorder rec : recorders.findPlugin(recId) ) {\r
                                        // 関連するプラグインを全部リロードする\r
                                        rec.getChCode().load(false);    // ログ出力あり\r
                                        rec.GetRdReserve(false);\r
@@ -322,7 +321,7 @@ public abstract class AbsChannelDatSettingView extends JScrollPane {
                        return;\r
                }\r
                \r
-               ArrayList<HDDRecorder> ra = recorders.get(recId);\r
+               ArrayList<HDDRecorder> ra = recorders.findPlugin(recId);\r
                if ( ra.size() == 0 ) {\r
                        MWin.appendError(ERRID+"指定のレコーダのプラグインがみつかりません: "+recId);\r
                        return;\r
@@ -1117,73 +1116,77 @@ public abstract class AbsChannelDatSettingView extends JScrollPane {
                private static final long serialVersionUID = 1L;\r
 \r
                private static final String LABEL = "SET";\r
-               private final JButton renderButton = new JButton(LABEL);\r
+               \r
+               private final JButton renderButton;\r
                private final JButton editorButton;\r
                private Boolean cellValue = Boolean.FALSE;\r
                \r
                public ButtonColumn() {\r
                        super();\r
-                       editorButton = new JButton(new AbstractAction(LABEL) {\r
-\r
-                               private static final long serialVersionUID = 1L;\r
-\r
-                               public void actionPerformed(ActionEvent e) {\r
-                                       fireEditingStopped();\r
-                                       \r
-                                       int row = jTable_entries.getSelectedRow();\r
-                                       \r
-                                       ChDatItem c = rowData.get(row);\r
+                       renderButton = new JButton(LABEL);\r
+                       editorButton = new JButton(LABEL);\r
+                       editorButton.addActionListener(al_set);\r
+               }\r
+               \r
+               private final ActionListener al_set = new ActionListener() {\r
+                       \r
+                       @Override\r
+                       public void actionPerformed(ActionEvent e) {\r
+                               fireEditingStopped();\r
+                               \r
+                               int row = jTable_entries.getSelectedRow();\r
+                               \r
+                               ChDatItem c = rowData.get(row);\r
+                               \r
+                               String chCode = c.chCode;\r
+                               if ( chCode.length() == 0 ) {\r
                                        \r
-                                       String chCode = c.chCode;\r
-                                       if ( chCode.length() == 0 ) {\r
-                                               \r
-                                               // レコーダプラグインが持っているチャンネルコードバリューを検索する\r
-                                               if ( selectedRecorder.isChValueAvailable() ) {\r
-                                                       // 新バージョン\r
-                                                       String recChName = c.recChName;\r
-                                                       for ( TextValueSet t : selectedRecorder.getChValue() ) {\r
-                                                               if ( recChName.equals(t.getText()) ) {\r
-                                                                       c.chCode = t.getValue();\r
-                                                                       break;\r
-                                                               }\r
+                                       // レコーダプラグインが持っているチャンネルコードバリューを検索する\r
+                                       if ( selectedRecorder.isChValueAvailable() ) {\r
+                                               // 新バージョン\r
+                                               String recChName = c.recChName;\r
+                                               for ( TextValueSet t : selectedRecorder.getChValue() ) {\r
+                                                       if ( recChName.equals(t.getText()) ) {\r
+                                                               c.chCode = t.getValue();\r
+                                                               break;\r
                                                        }\r
                                                }\r
-                                               else if ( selectedRecorder.getChValue().size() > 0 ) {\r
-                                                       // 旧バージョン(置き換えていきたい)\r
-                                                       String recChName = c.recChName;\r
-                                                       if ( selectedRecorder.getRecorderId().startsWith("DIGA ") ) {\r
-                                                               // for DIGA ONLY\r
-                                                               for ( TextValueSet t : selectedRecorder.getChValue() ) {\r
-                                                                       if ( recChName.startsWith(t.getText()+" ") ) {\r
-                                                                               String val = t.getValue();\r
-                                                                               if ( val != null ) {\r
-                                                                                       c.chCode = recChName.replaceFirst(t.getText()+" ","")+":"+val;\r
-                                                                               }\r
-                                                                               break;\r
+                                       }\r
+                                       else if ( selectedRecorder.getChValue().size() > 0 ) {\r
+                                               // 旧バージョン(置き換えていきたい)\r
+                                               String recChName = c.recChName;\r
+                                               if ( selectedRecorder.getRecorderId().startsWith("DIGA ") ) {\r
+                                                       // for DIGA ONLY\r
+                                                       for ( TextValueSet t : selectedRecorder.getChValue() ) {\r
+                                                               if ( recChName.startsWith(t.getText()+" ") ) {\r
+                                                                       String val = t.getValue();\r
+                                                                       if ( val != null ) {\r
+                                                                               c.chCode = recChName.replaceFirst(t.getText()+" ","")+":"+val;\r
                                                                        }\r
+                                                                       break;\r
                                                                }\r
                                                        }\r
-                                                       else {\r
-                                                               // for RD ONLY\r
-                                                               for ( TextValueSet t : selectedRecorder.getChValue() ) {\r
-                                                                       if ( t.getText().equals(recChName) ) {\r
-                                                                               String val = t.getValue();\r
-                                                                               if ( val != null ) {\r
-                                                                                       c.chCode = val;\r
-                                                                               }\r
-                                                                               break;\r
+                                               }\r
+                                               else {\r
+                                                       // for RD ONLY\r
+                                                       for ( TextValueSet t : selectedRecorder.getChValue() ) {\r
+                                                               if ( t.getText().equals(recChName) ) {\r
+                                                                       String val = t.getValue();\r
+                                                                       if ( val != null ) {\r
+                                                                               c.chCode = val;\r
                                                                        }\r
+                                                                       break;\r
                                                                }\r
                                                        }\r
                                                }\r
-                                               \r
-                                               c.fireChanged();\r
-                                               jTable_entries.clearSelection();\r
-                                               jTable_entries.setRowSelectionInterval(row, row);\r
                                        }\r
+                                       \r
+                                       c.fireChanged();\r
+                                       jTable_entries.clearSelection();\r
+                                       jTable_entries.setRowSelectionInterval(row, row);\r
                                }\r
-                       });\r
-               }\r
+                       }\r
+               };\r
                \r
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\r
                        ChDatItem c = rowData.get(row);\r
index 0e9da88..ffd9a6e 100644 (file)
@@ -2397,7 +2397,7 @@ public abstract class AbsListedView extends JPanel implements VWTimerRiseListene
                long diff = 86400L*30L;\r
                \r
                String myself = getSelectedRecorderOnToolbar();\r
-               HDDRecorderList recs = recorders.getMyself(myself);\r
+               HDDRecorderList recs = recorders.findInstance(myself);\r
 \r
                // コンボボックスの指定はピックアップである\r
                boolean isPickupOnly = ( myself != null && myself.length() == 0 ) ;\r
@@ -2630,7 +2630,7 @@ public abstract class AbsListedView extends JPanel implements VWTimerRiseListene
        private Marker _getReservedMarkCharUra(ListedItem data) {\r
                //\r
                String myself = getSelectedRecorderOnToolbar();\r
-               HDDRecorderList recs = recorders.getMyself(myself);\r
+               HDDRecorderList recs = recorders.findInstance(myself);\r
                \r
                for ( HDDRecorder rec : recs )\r
                {\r
index 8df0839..22e1874 100644 (file)
@@ -1366,7 +1366,7 @@ public abstract class AbsPaperView extends JPanel implements VWTimerRiseListener
                        \r
                        // ピックアップはここに入らない\r
                        \r
-                       HDDRecorderList recs = recorders.getMyself(myself);\r
+                       HDDRecorderList recs = recorders.findInstance(myself);\r
                        \r
                        for ( HDDRecorder recorder : recs )\r
                        {\r
index 975aac1..a758753 100644 (file)
@@ -281,7 +281,7 @@ public abstract class AbsRecordedListView extends JPanel {
                \r
                // 選択されたレコーダ\r
                String myself = getSelectedRecorderOnToolbar();\r
-               HDDRecorderList recs = recorders.getMyself(myself);\r
+               HDDRecorderList recs = recorders.findInstance(myself);\r
 \r
                for ( HDDRecorder recorder : recs )\r
                {\r
index 9ac0bb1..06c4248 100644 (file)
@@ -458,7 +458,7 @@ public abstract class AbsRecorderSettingView extends JScrollPane {
                                jCBX_tunernum.setEnabled(false);\r
                                \r
                                // とりあえずIDの一致するものを全部拾う\r
-                               HDDRecorderList rl = recPlugins.get(recId);\r
+                               HDDRecorderList rl = recPlugins.findPlugin(recId);\r
                                if ( rl.size() <= 0) {\r
                                        MWin.appendError(ERRID+"選択されたプラグインのインスタンスが存在しない: "+recId);\r
                                        return;\r
@@ -494,7 +494,7 @@ public abstract class AbsRecorderSettingView extends JScrollPane {
                                        jLabel_user.setText("インストールディレクトリ");\r
                                        jLabel_wakeup.setText("-");\r
                                        \r
-                                       jTextField_user.setText(rl.get(recId).get(0).getUser());\r
+                                       jTextField_user.setText(rl.findPlugin(recId).get(0).getUser());\r
                                        jTextField_passwd.setText("dummy");\r
                                        \r
                                        jTextField_ipaddr.setEnabled(false);\r
index f7ed430..e0e65a5 100644 (file)
@@ -614,7 +614,7 @@ abstract class AbsReserveDialog extends JDialog {
         */\r
        public boolean open(String myself, String rsvId) {\r
                \r
-               HDDRecorderList recs = recorders.getMyself(myself);\r
+               HDDRecorderList recs = recorders.findInstance(myself);\r
                if ( recs.size() == 0 ) {\r
                        return false;   // ここに来たらバグ\r
                }\r
@@ -666,7 +666,7 @@ abstract class AbsReserveDialog extends JDialog {
                        // レコーダの初期値の確認\r
                        myself = getSelectedRecorderOnToolbar();                // ツールバーで選択されているのはどれかな?\r
                        if ( myself != null && myself.length() > 0 ) {\r
-                               myrec = recorders.getMyself(myself).get(0);             // "すべて"と"ピックアップ"以外\r
+                               myrec = recorders.findInstance(myself).get(0);          // "すべて"と"ピックアップ"以外\r
                        }\r
                        else {\r
                                myrec = recorders.get(0);                                               // "すべて"と"ピックアップ"なら先頭を選んでおけばいい\r
@@ -1975,7 +1975,7 @@ abstract class AbsReserveDialog extends JDialog {
                if ( myself == null ) {\r
                        return null;\r
                }\r
-               HDDRecorderList recs = recorders.getMyself(myself);\r
+               HDDRecorderList recs = recorders.findInstance(myself);\r
                if ( recs.size() == 0 ) {\r
                        return null;\r
                }\r
@@ -2200,7 +2200,7 @@ abstract class AbsReserveDialog extends JDialog {
                        if ( myself == null ) {\r
                                return;\r
                        }\r
-                       String myrecId = recorders.getMyself(myself).get(0).getRecorderId();\r
+                       String myrecId = recorders.findInstance(myself).get(0).getRecorderId();\r
                        if ( ! isVARDIA(myrecId) ) {\r
                                return;\r
                        }\r
@@ -2241,7 +2241,7 @@ abstract class AbsReserveDialog extends JDialog {
                        if ( myself == null ) {\r
                                return;\r
                        }\r
-                       String myrecId = recorders.getMyself(myself).get(0).getRecorderId();\r
+                       String myrecId = recorders.findInstance(myself).get(0).getRecorderId();\r
                        if ( ! isVARDIA(myrecId) ) {\r
                                return;\r
                        }\r
@@ -2357,7 +2357,7 @@ abstract class AbsReserveDialog extends JDialog {
                public void actionPerformed(ActionEvent e) {\r
                        ProgGenre key_genre = ProgGenre.get((String) jCBXPanel_genre.getSelectedItem());\r
                        String key_webChName = (String) jComboBox_ch.getSelectedItem();\r
-                       String recId = recorders.getMyself((String) jComboBox_recorder.getSelectedItem()).get(0).getRecorderId();\r
+                       String recId = recorders.findInstance((String) jComboBox_recorder.getSelectedItem()).get(0).getRecorderId();\r
                        setSelectedAVItems(recId, null, getSelectedAVs(key_genre, key_webChName, recId));\r
                        MWin.appendMessage(MSGID+"画質・音質等の設定を取得しました");\r
                }\r
@@ -2474,7 +2474,7 @@ abstract class AbsReserveDialog extends JDialog {
                                                        vals.hide_tvd.progid = vals.hide_content_id;\r
                                                        vals.hide_tvd.setContentIdStr();\r
                                                }\r
-                                               HDDRecorderList recs = recorders.getMyself((String) jComboBox_recorder.getSelectedItem());\r
+                                               HDDRecorderList recs = recorders.findInstance((String) jComboBox_recorder.getSelectedItem());\r
                                                if ( recs.size() > 0 ) {\r
                                                        jCBXPanel_pursues.setEnabled(recs.get(0).isPursuesEditable());\r
                                                }\r
index b5b3529..53dad62 100644 (file)
@@ -18,7 +18,6 @@ import java.util.GregorianCalendar;
 import java.util.HashMap;\r
 import java.util.Map.Entry;\r
 \r
-import javax.swing.AbstractAction;\r
 import javax.swing.AbstractCellEditor;\r
 import javax.swing.ImageIcon;\r
 import javax.swing.JButton;\r
@@ -260,9 +259,11 @@ public abstract class AbsReserveListView extends JScrollPane {
 \r
                private static final long serialVersionUID = 1L;\r
                \r
+               private RowItemList<ReservedItem> rDat;\r
+               \r
                @Override\r
                public Object getValueAt(int row, int column) {\r
-                       ReservedItem c = rowView.get(row); \r
+                       ReservedItem c = rDat.get(row); \r
                        if ( c.getColumnCount() > column ) {\r
                                if ( column == RsvedColumn.DUPMARK.getColumn() ) {\r
                                        return CommonSwingUtils.getColoredString(DUPMARK_COLOR,c.dupmark);\r
@@ -302,11 +303,14 @@ public abstract class AbsReserveListView extends JScrollPane {
                \r
                @Override\r
                public int getRowCount() {\r
-                       return rowView.size();\r
+                       return (rDat!=null) ? rDat.size() : 0;  // ↓ のsuper()で呼ばれるのでnullチェックが必要\r
                }\r
 \r
-               public ReservedTableModel(String[] colname, int i) {\r
+               public ReservedItem getRowItem(int row) { return rDat.get(row); }\r
+                       \r
+               public ReservedTableModel(String[] colname, int i, RowItemList<ReservedItem> rowdata) {\r
                        super(colname,i);\r
+                       this.rDat = rowdata;\r
                }\r
                \r
        }\r
@@ -321,7 +325,7 @@ public abstract class AbsReserveListView extends JScrollPane {
        private DefaultTableModel rowheaderModel_rsved = null;\r
        \r
        // 表示用のテーブル\r
-       private final RowItemList<ReservedItem> rowView = new RowItemList<ReservedItem>();\r
+       private final RowItemList<ReservedItem> rowViewTemp = new RowItemList<ReservedItem>();\r
        \r
        // テーブルの実体\r
        private final RowItemList<ReservedItem> rowData = new RowItemList<ReservedItem>();\r
@@ -334,7 +338,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                \r
                super();\r
                \r
-               this.setRowHeaderView(jTable_rowheader = new JTableRowHeader(rowView));\r
+               this.setRowHeaderView(jTable_rowheader = new JTableRowHeader(rowViewTemp));\r
                this.setViewportView(getNETable_rsved());\r
                \r
                Dimension d = new Dimension(jTable_rowheader.getPreferredSize().width,0);\r
@@ -377,7 +381,7 @@ public abstract class AbsReserveListView extends JScrollPane {
         */\r
        public void redrawReservedList() {\r
                // ★★★ イベントにトリガーされた処理がかちあわないように synchronized() ★★★\r
-               synchronized ( rowView ) {\r
+               synchronized ( rowViewTemp ) {\r
                        _redrawReservedList();\r
                }\r
        }\r
@@ -389,7 +393,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                \r
                // 選択されたレコーダ\r
                String myself = getSelectedRecorderOnToolbar();\r
-               HDDRecorderList recs = recorders.getMyself(myself);\r
+               HDDRecorderList recs = recorders.findInstance(myself);\r
 \r
                // 現在日時\r
                String curDateTime = CommonUtils.getDateTime(0);\r
@@ -456,9 +460,9 @@ public abstract class AbsReserveListView extends JScrollPane {
                }\r
                \r
                // 表示用\r
-               rowView.clear();\r
+               rowViewTemp.clear();\r
                for ( ReservedItem a : rowData ) {\r
-                       rowView.add(a);\r
+                       rowViewTemp.add(a);\r
                }\r
                \r
                tableModel_rsved.fireTableDataChanged();\r
@@ -474,7 +478,7 @@ public abstract class AbsReserveListView extends JScrollPane {
         */\r
        public void redrawListByKeywordFilter(SearchKey keyword, String target) {\r
                \r
-               rowView.clear();\r
+               rowViewTemp.clear();\r
                \r
                // 情報を一行ずつチェックする\r
                if ( keyword != null ) {\r
@@ -488,13 +492,13 @@ public abstract class AbsReserveListView extends JScrollPane {
                                boolean isFind = SearchProgram.isMatchKeyword(keyword, "", tvd);\r
                                \r
                                if ( isFind ) {\r
-                                       rowView.add(a);\r
+                                       rowViewTemp.add(a);\r
                                }\r
                        }\r
                }\r
                else {\r
                        for ( ReservedItem a : rowData ) {\r
-                               rowView.add(a);\r
+                               rowViewTemp.add(a);\r
                        }\r
                }\r
                \r
@@ -558,12 +562,12 @@ public abstract class AbsReserveListView extends JScrollPane {
         */\r
        private void setOverlapMark() {\r
                \r
-               if ( rowView.size() < 2 ) {\r
+               if ( rowViewTemp.size() < 2 ) {\r
                        return;\r
                }\r
                \r
                // 最初の一行はリセットしておかないとなんの処理も行われない場合がある\r
-               ReservedItem fr = rowView.get(jTable_rsved.convertRowIndexToModel(0));\r
+               ReservedItem fr = rowViewTemp.get(jTable_rsved.convertRowIndexToModel(0));\r
                fr.dupmark = "";\r
                fr.fireChanged();\r
                \r
@@ -576,8 +580,8 @@ public abstract class AbsReserveListView extends JScrollPane {
                        int vrow = jTable_rsved.convertRowIndexToModel(i);\r
                        int vrow2 = jTable_rsved.convertRowIndexToModel(i+1);\r
 \r
-                       ReservedItem ra = rowView.get(vrow);\r
-                       ReservedItem rb = rowView.get(vrow2);\r
+                       ReservedItem ra = rowViewTemp.get(vrow);\r
+                       ReservedItem rb = rowViewTemp.get(vrow2);\r
 \r
                        if ( ! sDT2.equals("")) {\r
                                sDT = sDT2;\r
@@ -663,7 +667,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                @Override\r
                public void componentShown(ComponentEvent e) {\r
                        // ★★★ イベントにトリガーされた処理がかちあわないように synchronized() ★★★\r
-                       synchronized ( rowView ) {\r
+                       synchronized ( rowViewTemp ) {\r
                                // 終了した予約を整理する\r
                                for (HDDRecorder recorder : recorders) {\r
                                        recorder.refreshReserves();\r
@@ -684,7 +688,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                        jTable_rsved.getSelectionModel().setSelectionInterval(vrow,vrow);\r
                        //\r
                        final int row = jTable_rsved.convertRowIndexToModel(vrow);\r
-                       ReservedItem ra = rowView.get(row);\r
+                       ReservedItem ra = rowViewTemp.get(row);\r
                        final boolean fexec = ra.exec;\r
                        final String start = ra.nextstart;\r
                        final String title = ra.title;\r
@@ -746,7 +750,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                @Override\r
                public void sorterChanged(RowSorterEvent e) {\r
                        if ( e.getType() == Type.SORTED ) {\r
-                               if (rowView.size()>=2) setOverlapMark();\r
+                               if (rowViewTemp.size()>=2) setOverlapMark();\r
                        }\r
                }\r
        }; \r
@@ -766,7 +770,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                        }\r
                        String[] colname = cola.toArray(new String[0]);\r
                        \r
-                       tableModel_rsved = new ReservedTableModel(colname, 0);\r
+                       tableModel_rsved = new ReservedTableModel(colname, 0, rowViewTemp);\r
                        jTable_rsved = new JNETableReserved(tableModel_rsved, false);\r
                        jTable_rsved.setAutoResizeMode(JNETable.AUTO_RESIZE_OFF);\r
                        \r
@@ -905,7 +909,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                        }\r
 \r
                        int row = this.convertRowIndexToModel(prow);\r
-                       ReservedItem c = rowView.get(row);\r
+                       ReservedItem c = rowViewTemp.get(row);\r
 \r
                        {\r
                                // 実行可能かどうか\r
@@ -957,28 +961,33 @@ public abstract class AbsReserveListView extends JScrollPane {
 \r
                private static final long serialVersionUID = 1L;\r
 \r
-               private final JButton renderButton = new JButton();\r
-               private final JButton editorButton = new JButton();\r
+               private static final String LABEL = ""; // ""にしないとボタンに文字が\r
+               \r
+               private final JButton renderButton;\r
+               private final JButton editorButton;\r
                \r
                public ButtonColumn() {\r
                        super();\r
+                       renderButton = new JButton(LABEL);\r
                        renderButton.setMargin(new Insets(1, 0, 0, 0));\r
                        renderButton.setHorizontalAlignment(JLabel.CENTER);\r
                        renderButton.setVerticalAlignment(JLabel.CENTER);\r
-                       editorButton.setAction(act);\r
+                       \r
+                       editorButton = new JButton(LABEL);\r
+                       editorButton.addActionListener(al_toggle);\r
                }\r
                \r
-               private final AbstractAction act = new AbstractAction("") {\r
-\r
-                       private static final long serialVersionUID = 1L;\r
-\r
+               private final ActionListener al_toggle = new ActionListener() {\r
+                       \r
+                       @Override\r
                        public void actionPerformed(ActionEvent e) {\r
                                fireEditingStopped();\r
                                \r
                                int vrow = jTable_rsved.getSelectedRow();\r
                                int row = jTable_rsved.convertRowIndexToModel(vrow);\r
                                \r
-                               ReservedItem c = rowData.get(row);\r
+                               ReservedItem c = ((ReservedTableModel) jTable_rsved.getModel()).getRowItem(row);\r
+                               \r
                                if ( doExecOnOff( ! c.exec, c.title, c.chname, c.hide_rsvid, c.recorder) ) {\r
                                        c.exec = ! c.exec;\r
                                        c.fireChanged();\r
index 3d270b1..3080b72 100644 (file)
@@ -13,6 +13,7 @@ import java.awt.event.MouseListener;
 import java.io.IOException;\r
 import java.net.URI;\r
 import java.net.URISyntaxException;\r
+import java.util.ArrayList;\r
 import java.util.Calendar;\r
 import java.util.GregorianCalendar;\r
 import java.util.regex.Matcher;\r
@@ -50,8 +51,8 @@ public abstract class AbsToolBar extends JToolBar {
 \r
        public static String getViewName() { return "ツールバー"; } \r
 \r
-       public static void setDebug(boolean b) {debug = b; }\r
-       private static boolean debug = false;\r
+       public void setDebug(boolean b) {debug = b; }\r
+       private boolean debug = false;\r
        \r
        /*******************************************************************************\r
         * 抽象メソッド\r
@@ -226,6 +227,9 @@ public abstract class AbsToolBar extends JToolBar {
        private JToggleButton jToggleButton_fullScreen = null;\r
        private JButton jButton_update = null;\r
        private JButton jButton_help = null;\r
+\r
+       // レコーダ選択イベント発生時にキックするリスナーのリスト\r
+       private final ArrayList<VWHDDRecorderSelectionListener> lsnrs_recsel = new ArrayList<VWHDDRecorderSelectionListener>();\r
        \r
        // その他\r
        \r
@@ -586,14 +590,14 @@ public abstract class AbsToolBar extends JToolBar {
         */\r
        public String getSelectedRecorder() {\r
                if ( jComboBox_select_recorder == null ) {\r
-                       return null;\r
+                       return VWHDDRecorderSelectionListener.SELECTED_ALL;\r
                }\r
                String recId = (String)jComboBox_select_recorder.getSelectedItem();\r
                if ( recId.equals(SELECTED_ALL) ) {\r
-                       return null;\r
+                       return VWHDDRecorderSelectionListener.SELECTED_ALL;\r
                }\r
                else if ( recId.equals(SELECTED_PICKUP) ) {\r
-                       return "";\r
+                       return VWHDDRecorderSelectionListener.SELECTED_PICKUP;\r
                }\r
                \r
                return recId;\r
@@ -605,6 +609,7 @@ public abstract class AbsToolBar extends JToolBar {
         */\r
        public void setSelectedRecorder(String myself) {\r
                if ( jComboBox_select_recorder != null ) {\r
+                       jComboBox_select_recorder.setSelectedItem(null);\r
                        jComboBox_select_recorder.setSelectedItem((myself == null)?(SELECTED_ALL):(myself));\r
                }\r
        }\r
@@ -633,7 +638,6 @@ public abstract class AbsToolBar extends JToolBar {
                jComboBox_select_recorder.addItem(SELECTED_PICKUP);\r
 \r
                jComboBox_select_recorder.addItemListener(il_recorderSelected);\r
-\r
        }\r
 \r
        /**\r
@@ -682,6 +686,20 @@ public abstract class AbsToolBar extends JToolBar {
        \r
        \r
        /*******************************************************************************\r
+        * リスナー追加/削除\r
+        ******************************************************************************/\r
+       \r
+       public void addVWHDDRecorderSelectionListener(VWHDDRecorderSelectionListener l) {\r
+               if ( ! lsnrs_recsel.contains(l) ) {\r
+                       lsnrs_recsel.add(l);\r
+               }\r
+       }\r
+\r
+       public void removeVWHDDRecorderSelectionListener(VWHDDRecorderSelectionListener l) {\r
+               lsnrs_recsel.remove(l);\r
+       }\r
+\r
+       /*******************************************************************************\r
         * リスナー\r
         ******************************************************************************/\r
 \r
@@ -779,8 +797,24 @@ public abstract class AbsToolBar extends JToolBar {
                @Override\r
                public void itemStateChanged(ItemEvent e) {\r
                        if (e.getStateChange() == ItemEvent.SELECTED) {\r
+                               // 旧ロジック\r
                                recorderSelectorChanged();\r
+                               \r
+                               // 新ロジック\r
+                               {\r
+                                       String selected = getSelectedRecorder();\r
+                                       HDDRecorderList recs = recorders.findInstance(selected);\r
+                                       \r
+                                       VWHDDRecorderSelectionEvent ev = new VWHDDRecorderSelectionEvent(e.getSource(),selected,recs);\r
+\r
+                                       if (debug) System.out.println(DBGID+"recorder selection rised selected="+selected);\r
+\r
+                                       for ( VWHDDRecorderSelectionListener l : lsnrs_recsel ) {\r
+                                               l.recorderSelected(ev);\r
+                                       }\r
+                               }\r
                        }\r
+                       \r
                }\r
        };\r
        \r
@@ -1129,11 +1163,8 @@ public abstract class AbsToolBar extends JToolBar {
                        jComboBox_select_recorder.setMinimumSize(d);\r
                        //jComboBox_select_recorder.setEnabled(false);\r
                        \r
-                       // 初期値\r
+                       // 初期値(ItemListenerは↓の中で追加される)\r
                        updateRecorderComboBox();\r
-                       \r
-                       // 選択された\r
-                       jComboBox_select_recorder.addItemListener(il_recorderSelected);\r
                }\r
                return(jComboBox_select_recorder);\r
        }\r
index 00fda8b..076d3c0 100644 (file)
@@ -119,7 +119,12 @@ public interface HDDRecorder {
        public ArrayList<ReserveList> getReserves();\r
        \r
        /**\r
-        * 予約一覧を返します。\r
+        * 自動予約一覧を返します。\r
+        */\r
+       public AutoReserveInfoList getAutoReserves();\r
+       \r
+       /**\r
+        * 録画結果一覧を返します。\r
         */\r
        public ArrayList<RecordedInfo> getRecorded();\r
        \r
@@ -141,6 +146,11 @@ public interface HDDRecorder {
         * @see #GetRdReserveDetails()\r
         */\r
        public boolean isThereAdditionalDetails();\r
+\r
+       /**\r
+        * 自動予約の編集をサポートしているかどうかを返します。\r
+        */\r
+       public boolean isEditAutoReserveSupported();\r
        \r
        /**\r
         * 自動エンコーダ選択を使用するかどうかを返します。\r
@@ -309,13 +319,19 @@ public interface HDDRecorder {
        public boolean GetRdSettings(boolean force);\r
        \r
        /**\r
-        * <P>レコーダから予約一覧(と各種設定の取得を行います。\r
+        * <P>レコーダから予約一覧(と各種設定の取得を行います。\r
         * <P>将来的には、各種設定の取得は別メソッドにわけたいところ。\r
         * @param force : trueの場合レコーダへのアクセスを強制します。falseの場合キャッシュファイルがあればそちらを利用します。\r
         * @see #GetRdSettings(boolean)\r
-        * @see #GetRdReserveDetails()\r
         */\r
        public boolean GetRdReserve(boolean force);\r
+       \r
+       /**\r
+        * <P>レコーダから自動予約一覧の取得を行います。\r
+        * @param force : trueの場合レコーダへのアクセスを強制します。falseの場合キャッシュファイルがあればそちらを利用します。\r
+        * @see #isEditAutoReserveSupported()\r
+        */\r
+       public boolean GetRdAutoReserve(boolean force);\r
 \r
        /**\r
         * <P>レコーダから録画結果一覧の取得を行います。\r
index 43bd57a..928d991 100644 (file)
@@ -14,20 +14,9 @@ public class HDDRecorderList extends ArrayList<HDDRecorder> {
 \r
        private static final HDDRecorderList mylist = new HDDRecorderList();\r
        \r
-       /*\r
-       // 重複チェックをしておく\r
-       @Override\r
-       public boolean add(HDDRecorder r) {\r
-               if ( this.get(r.getRecorderId()).size() > 0 ) {\r
-                       System.err.println("[DEBUG] プラグインのレコーダIDが重複しています: "+r.getRecorderId());   // これは余計だった\r
-               }\r
-               return super.add(r);\r
-       }\r
-       */\r
-       \r
        // レコーダIDから種類を調べる\r
        public RecType getRecId2Type(String recId) {\r
-               ArrayList<HDDRecorder> rl = this.get(recId);\r
+               ArrayList<HDDRecorder> rl = this.findPlugin(recId);\r
                if ( rl.size() > 0 ) {\r
                        return rl.get(0).getType();\r
                }\r
@@ -37,7 +26,7 @@ public class HDDRecorderList extends ArrayList<HDDRecorder> {
        /**\r
         *  レコーダIDに合ったプラグイン(種族)を探す\r
         */\r
-       public HDDRecorderList get(String recId) {\r
+       public HDDRecorderList findPlugin(String recId) {\r
                if ( recId == null ) {\r
                        return this;\r
                }\r
@@ -55,7 +44,7 @@ public class HDDRecorderList extends ArrayList<HDDRecorder> {
         * @return 本来{@link HDDRecorder}を返すべきだが、呼び出し側の処理を書きやすくするために{@link HDDRecorderList}を返す。よって、==nullではなく.size()==0で確認する。\r
         * @param myself 「すべて」を指定する場合はNULLをどうぞ\r
         */\r
-       public HDDRecorderList getMyself(String myself) {\r
+       public HDDRecorderList findInstance(String myself) {\r
                if (myself == null || myself.length() == 0) {\r
                        return this;\r
                }\r
@@ -63,6 +52,7 @@ public class HDDRecorderList extends ArrayList<HDDRecorder> {
                for ( HDDRecorder rec : this ) {\r
                        if ( rec.isMyself(myself) ) {\r
                                mylist.add(rec);\r
+                               break;\r
                        }\r
                }\r
                return mylist;\r
index c0fa333..cc022fc 100644 (file)
@@ -52,6 +52,8 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        @Override\r
        public boolean isThereAdditionalDetails() { return false; }\r
        @Override\r
+       public boolean isEditAutoReserveSupported() { return false; }\r
+       @Override\r
        public boolean isRepeatReserveSupported() { return true; }\r
        @Override\r
        public boolean isPursuesEditable() { return false; }\r
@@ -278,6 +280,12 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        private ArrayList<ReserveList> RESERVES = new ArrayList<ReserveList>();\r
        \r
        /**\r
+        * 自動予約一覧\r
+        */\r
+       public AutoReserveInfoList getAutoReserves() { return AUTORESERVES; }\r
+       private AutoReserveInfoList AUTORESERVES = new AutoReserveInfoList();\r
+       \r
+       /**\r
         * 録画済み一覧\r
         */\r
        public ArrayList<RecordedInfo> getRecorded() { return RECORDED; }\r
@@ -975,6 +983,13 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
                return entry;\r
        }\r
 \r
+       /**\r
+        * 自動予約一覧の置き換え\r
+        */\r
+       protected void setAutoReserves(AutoReserveInfoList l) {\r
+               AUTORESERVES = l;\r
+       }\r
+       \r
        /*******************************************************************************\r
         * ログと進捗ダイアログ\r
         ******************************************************************************/\r
@@ -1324,58 +1339,51 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        \r
        @Override\r
        public RecType getType() {\r
-               // TODO Auto-generated method stub\r
                return null;\r
        }\r
        @Override\r
        public ChannelCode getChCode() {\r
-               // TODO Auto-generated method stub\r
                return null;\r
        }\r
        @Override\r
        public boolean ChangeChannel(String Channel) {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
        @Override\r
        public boolean GetRdSettings(boolean force) {\r
-               // TODO Auto-generated method stub\r
                return true;\r
        }\r
        @Override\r
        public boolean GetRdReserve(boolean force) {\r
-               // TODO Auto-generated method stub\r
+               return true;\r
+       }\r
+       @Override\r
+       public boolean GetRdAutoReserve(boolean force) {\r
                return true;\r
        }\r
        @Deprecated\r
        @Override\r
        public boolean GetRdReserveDetails() {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
        @Override\r
        public boolean GetRdRecorded(boolean force) {\r
-               // TODO Auto-generated method stub\r
                return true;\r
        }\r
        @Override\r
        public boolean PostRdEntry(ReserveList r) {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
        @Override\r
        public boolean UpdateRdEntry(ReserveList o, ReserveList r) {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
        @Override\r
        public ReserveList RemoveRdEntry(String delno) {\r
-               // TODO Auto-generated method stub\r
                return null;\r
        }\r
        @Override\r
        public String getErrmsg() {\r
-               // TODO Auto-generated method stub\r
                return null;\r
        }\r
 }\r
index a1a1b02..81f9f52 100644 (file)
@@ -294,7 +294,8 @@ public class JTXTButton extends JLabel {
                        image = new BufferedImage(imgw, imgh, BufferedImage.TYPE_INT_ARGB);\r
                        Graphics2D g2 = (Graphics2D)image.createGraphics();\r
                        \r
-                       g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,aahint);\r
+                       g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,aahint);       // アンチエイリアスの設定\r
+                       g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_SPEED);\r
                        g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));\r
                        \r
                        float baseline = 0.0F;\r
index 7079bd8..e30ae04 100644 (file)
@@ -23,6 +23,7 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
        }\r
        \r
        private static final String thisEncoding = "MS932";\r
+       private static final String xmlEncoding = "utf8";\r
        \r
        /*******************************************************************************\r
         * 種族の特性\r
@@ -33,6 +34,9 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
        @Override\r
        public RecType getType() { return RecType.RECORDER; }\r
        \r
+       // 自動予約を編集できる\r
+       @Override\r
+       public boolean isEditAutoReserveSupported() { return true; }\r
        // 自動エンコーダ選択は禁止\r
        @Override\r
        public boolean isAutoEncSelectEnabled() { return false; }\r
@@ -414,10 +418,9 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
                return (getListTunerID().size()>0 && getListChValue().size()>0 && getListPresetID().size()>0);\r
        }\r
        \r
-       /*\r
+       /**\r
         *      レコーダーから予約一覧を取得する \r
         */\r
-       \r
        @Override\r
        public boolean GetRdReserve(boolean force)\r
        {\r
@@ -472,6 +475,30 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
        }\r
        \r
        /**\r
+        *      レコーダーから自動予約一覧を取得する \r
+        */\r
+       @Override\r
+       public boolean GetRdAutoReserve(boolean force)\r
+       {\r
+               System.out.println("レコーダから自動予約一覧を取得します("+force+")");\r
+               \r
+               errmsg = "";\r
+               \r
+               // おまじない\r
+               Authenticator.setDefault(new MyAuthenticator(getUser(), getPasswd()));\r
+               \r
+               AutoReserveInfoList newAutoReserveList = new AutoReserveInfoList();\r
+               if ( ! GetRdAutoReserveList(newAutoReserveList) ) {\r
+                       return false;\r
+               }\r
+               \r
+               setAutoReserves(newAutoReserveList);\r
+               \r
+               return true;\r
+       }\r
+       \r
+       /**\r
+        *      レコーダーから録画結果一覧を取得する \r
         * @see #GetRdSettings(boolean)\r
         */\r
        @Override\r
@@ -523,7 +550,7 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
                String response="";\r
                {\r
                        reportProgress("予約一覧を取得します.");\r
-                       String[] d = reqGET("http://"+getIPAddr()+":"+getPortNo()+"/api/EnumReserveInfo",null,"utf8");\r
+                       String[] d = reqGET("http://"+getIPAddr()+":"+getPortNo()+"/api/EnumReserveInfo",null,xmlEncoding);\r
                        response = d[1];\r
                        \r
                        if (response == null) {\r
@@ -1357,10 +1384,96 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
                return null;\r
        }\r
        \r
+       \r
        /**\r
-        *      録画結果一覧を取得する\r
+        * 自動予約一覧を取得する\r
         */\r
+       private boolean GetRdAutoReserveList(AutoReserveInfoList newAutoReserveList) {\r
+               \r
+               int maxpage = 1;\r
+               String firstResp = null;        // 2回呼びたくない\r
+               \r
+               String url = "http://"+getIPAddr()+":"+getPortNo()+"/autoaddepg.html&page=";\r
+               \r
+               {\r
+                       reportProgress("自動予約一覧のページ数を取得します.");\r
+                       String[] d = reqGET(url+"0",null);\r
+                       if (d[1] == null) {\r
+                               errmsg = "レコーダーが反応しません";\r
+                               return false;\r
+                       }\r
+                       \r
+                       firstResp = d[1];\r
+                       \r
+                       // maxpageの計算が入る\r
+                       Matcher ma = Pattern.compile("\"autoaddepg\\.html\\?page=\"").matcher(firstResp);\r
+                       while ( ma.find() ) {\r
+                               ++maxpage;\r
+                       }\r
+               }\r
+               \r
+               for ( int i=1; i<=maxpage; i++ ) {\r
+                       \r
+                       reportProgress(String.format("+自動予約一覧を取得します(%d/%d)",i,maxpage));\r
+                       \r
+                       String response;\r
+                       if ( i == 1 ) {\r
+                               response = firstResp;\r
+                       }\r
+                       else {\r
+                               // あとで\r
+                               String[] d = reqGET(url+String.valueOf(i),null);\r
+                               if (d[1] == null) {\r
+                                       errmsg = "レコーダーが反応しません";\r
+                                       return false;\r
+                               }\r
+                               \r
+                               response = d[1];\r
+                       }\r
+                       \r
+                       Matcher ma = Pattern.compile("<TR>(.+?)</TR>",Pattern.DOTALL).matcher(response);\r
+                       while ( ma.find() ) {\r
+                               // 入れ物用意\r
+                               AutoReserveInfo c = new AutoReserveInfo();\r
+                               \r
+                               // 分解\r
+                               Matcher mb = Pattern.compile("<TD>(.*?)</TD>",Pattern.DOTALL).matcher(ma.group(1));\r
+                               for ( int n=0; mb.find(); n++ ) {\r
+                                       switch (n) {\r
+                                       case 0: // title\r
+                                               c.setLabel(CommonUtils.unEscape(mb.group(1)));\r
+                                               break;\r
+                                       case 5: // id\r
+                                               Matcher mc = Pattern.compile("\"autoaddepginfo\\.html\\?id=(.+)\"",Pattern.DOTALL).matcher(mb.group(1));\r
+                                               if ( mc.find() ) {\r
+                                                       c.setId(mc.group(1));\r
+                                               }\r
+                                               break;\r
+                                       case 3: // channel\r
+                                               c.getChannels().add(CommonUtils.unEscape(mb.group(1)));\r
+                                               break;\r
+                                       case 1: // mark\r
+                                       case 2: // genre\r
+                                       case 4: // service\r
+                                       default:\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               if ( c.getId() == null ) {\r
+                                       c = null;\r
+                                       continue;       // 情報がみつからなかった\r
+                               }\r
+                               \r
+                               newAutoReserveList.add(c);\r
+                       }\r
+               }\r
+               \r
+               return true;\r
+       }\r
        \r
+       /**\r
+        *      録画結果一覧を取得する\r
+        */\r
        private boolean GetRdRecordedList(ArrayList<RecordedInfo> newRecordedList) {\r
                \r
                String critDate = null;\r
index b26e2cd..f247005 100644 (file)
@@ -292,7 +292,7 @@ public interface TVProgram {
        public static final String csCode = "cs";\r
        \r
        // タイトルの頭の邪魔な文字\r
-       public static final String titlePrefixRemoveExpr = "^(\\[(新|無|字|終|HV|無料)\\]|無料≫|【無料】)+\\s*"; \r
+       public static final String titlePrefixRemoveExpr = "^(\\[(新|無|字|終|HV|SS|無料)\\]|無料≫|【無料】)+\\s*"; \r
        public static final String epnoNormalizeExpr = "([第#(])(\\d\\D|\\d$)";\r
 \r
        // 種族の特性\r
index 006478f..78712ae 100644 (file)
@@ -19,6 +19,7 @@ public class VWMainWindow extends JPanel {
                PAPER   ("新聞形式"),\r
                RSVED   ("本体予約一覧"),\r
                RECED   ("録画結果一覧"),\r
+               AUTORES ("自動予約一覧"),\r
                SETTING ("各種設定"),\r
                RECSET  ("レコーダ設定"),\r
                CHSET   ("CH設定"),\r
index 7db0dce..4b706f8 100644 (file)
@@ -5,7 +5,7 @@ import java.util.regex.Pattern;
 \r
 \r
 public class VersionInfo {\r
-       private static final String Version = "タイニー番組ナビゲータ 3.22.1β";\r
+       private static final String Version = "タイニー番組ナビゲータ 3.22.2β";\r
        \r
        private static final String OSname = System.getProperty("os.name");\r
        private static final String OSvers = System.getProperty("os.version");\r
index 4226707..8dd2d6c 100644 (file)
@@ -341,6 +341,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
        private VWPaperView paper = null;\r
        private VWReserveListView reserved = null;\r
        private VWRecordedListView recorded = null;\r
+       private VWAutoReserveListView autores = null;\r
        private VWSettingView setting = null;\r
        private VWRecorderSettingView recsetting = null;\r
        private VWChannelSettingView chsetting = null;\r
@@ -726,7 +727,6 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
        }\r
        \r
        \r
-       \r
        /**\r
         * \r
         * 録画結果一覧の内部クラス\r
@@ -761,7 +761,24 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                @Override\r
                protected String getSelectedRecorderOnToolbar() { return toolBar.getSelectedRecorder(); }\r
        }\r
+       \r
+       \r
+       /**\r
+        * \r
+        * 録画結果一覧の内部クラス\r
+        * \r
+        */\r
+       private class VWAutoReserveListView extends AbsAutoReserveListView {\r
 \r
+               private static final long serialVersionUID = 1L;\r
+\r
+               // 環境設定の入れ物を渡す\r
+               @Override\r
+               protected Env getEnv() { return env; }\r
+               @Override\r
+               protected Bounds getBoundsEnv() { return bounds; }\r
+               \r
+       }\r
        \r
        /***\r
         * 各種設定の内部クラス\r
@@ -828,7 +845,11 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                        CommonUtils.setDebug(env.getDebug());\r
                        \r
                        SwingBackgroundWorker.setDebug(env.getDebug());\r
-                       \r
+\r
+                       // ほにゃらら\r
+                       toolBar.setDebug(env.getDebug());\r
+                       autores.setDebug(env.getDebug());\r
+\r
                        // PassedProgramListの設定変更\r
                        tvprograms.getPassed().setPassedDir(env.getPassedDir());\r
 \r
@@ -2711,7 +2732,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                                \r
                                HDDRecorderList recs;\r
                                if ( myself != null ) {\r
-                                       recs = recorders.getMyself(myself);\r
+                                       recs = recorders.findInstance(myself);\r
                                }\r
                                else {\r
                                        recs = recorders;\r
@@ -2816,6 +2837,16 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                                }\r
                        }\r
                        \r
+                       // 自動予約一覧の取得\r
+                       if ( recorder.isEditAutoReserveSupported() ) {\r
+                               if ( ! recorder.GetRdAutoReserve(force) ) {\r
+                                       // 取得に失敗\r
+                                       mwin.appendError(recorder.getErrmsg()+" "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
+                                       ringBeep();\r
+                                       return false;\r
+                               }\r
+                       }\r
+                       \r
                        // 録画結果一覧の取得\r
                        if ( env.getSkipGetRdRecorded() ) {\r
                                mwin.appendMessage("【!】録画結果一覧の取得はスキップされました");\r
@@ -2857,7 +2888,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                                \r
                                HDDRecorderList recs;\r
                                if ( myself != null ) {\r
-                                       recs = recorders.getMyself(myself);\r
+                                       recs = recorders.findInstance(myself);\r
                                }\r
                                else {\r
                                        recs = recorders;\r
@@ -3778,7 +3809,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                //\r
                recorders.clear();\r
                for ( RecorderInfo ri : recInfoList ) {\r
-                       ArrayList<HDDRecorder> rl = recPlugins.get(ri.getRecorderId());\r
+                       ArrayList<HDDRecorder> rl = recPlugins.findPlugin(ri.getRecorderId());\r
                        if ( rl.size() == 0 ) {\r
                                stwin.appendError("【レコーダプラグイン】プラグインがみつかりません: "+ri.getRecorderId()+"("+ri.getRecorderIPAddr()+":"+ri.getRecorderPortNo()+")");\r
                        }\r
@@ -4217,6 +4248,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                mainWindow.addTab(paper, MWinTab.PAPER);\r
                mainWindow.addTab(reserved, MWinTab.RSVED);\r
                mainWindow.addTab(recorded, MWinTab.RECED);\r
+               mainWindow.addTab(autores, MWinTab.AUTORES);\r
                mainWindow.addTab(setting, MWinTab.SETTING);\r
                mainWindow.addTab(recsetting, MWinTab.RECSET);\r
                mainWindow.addTab(chsetting, MWinTab.CHSET);\r
@@ -4238,9 +4270,6 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                        // 開いていたタブ\r
                        mainWindow.setShowSettingTabs(bounds.getShowSettingTabs());\r
                        \r
-                       // 選択していたレコーダ\r
-                       toolBar.setSelectedRecorder(bounds.getSelectedRecorderId());\r
-                       \r
                        // ステータスエリアの高さ\r
                        mwin.setRows(bounds.getStatusRows());\r
                        \r
@@ -4676,6 +4705,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                        paper = new VWPaperView();\r
                        reserved = new VWReserveListView();\r
                        recorded = new VWRecordedListView();\r
+                       autores = new VWAutoReserveListView();\r
                        setting = new VWSettingView();\r
                        recsetting = new VWRecorderSettingView();\r
                        chsetting = new VWChannelSettingView();\r
@@ -4683,6 +4713,10 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                        chsortsetting = new VWChannelSortView();\r
                        chconvsetting = new VWChannelConvertView();\r
                        \r
+                       // 設定のほにゃらら\r
+                       toolBar.setDebug(env.getDebug());\r
+                       autores.setDebug(env.getDebug());\r
+\r
                        // ページャーの設定\r
                        toolBar.setPagerItems();\r
                        \r
@@ -4731,7 +4765,7 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                        JOptionPane.showMessageDialog(cp, "レコーダが登録されていません。\n最初に登録を行ってください。\n番組表だけを使いたい場合は、\nNULLプラグインを登録してください。");\r
                }\r
                \r
-               // メインウィンドウを入れ替える\r
+               // メインウィンドウをスプラッシュからコンポーネントに入れ替える\r
                this.setVisible(false);\r
                this.setContentPane(mainWindow);\r
                setInitBounds();\r
@@ -4740,6 +4774,12 @@ public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener
                // タイトル更新\r
                setTitleBar();\r
                \r
+               // [ツールバー/レコーダ選択] 自動予約一覧\r
+               toolBar.addVWHDDRecorderSelectionListener(autores);\r
+               \r
+               // レコーダ選択イベントキック\r
+               toolBar.setSelectedRecorder(bounds.getSelectedRecorderId());\r
+               \r
                // [タイマー] タイトルバー更新/リスト形式の現在時刻ノード/新聞形式の現在時刻ノード\r
                timer_now.addVWTimerRiseListener(this);\r
                timer_now.addVWTimerRiseListener(listed);\r