OSDN Git Service

[予約ダイアログ]自動予約編集への対応に伴うレイアウト変更
authorpeeweedee <peeweedee@users.sourceforge.jp>
Fri, 21 Jun 2013 22:43:22 +0000 (07:43 +0900)
committerpeeweedee <peeweedee@users.sourceforge.jp>
Fri, 21 Jun 2013 22:43:22 +0000 (07:43 +0900)
17 files changed:
TinyBannavi/05_history.txt
TinyBannavi/src/tainavi/AbsAutoReserveListView.java
TinyBannavi/src/tainavi/AbsKeywordDialog.java
TinyBannavi/src/tainavi/AbsReserveDialog.java
TinyBannavi/src/tainavi/AbsReserveListView.java
TinyBannavi/src/tainavi/AbstractExecButtonColumn.java [new file with mode: 0644]
TinyBannavi/src/tainavi/AutoReserveInfo.java
TinyBannavi/src/tainavi/HDDRecorderUtils.java
TinyBannavi/src/tainavi/JComboBoxPanel.java
TinyBannavi/src/tainavi/JListSortDialog.java
TinyBannavi/src/tainavi/JWideComboBox.java
TinyBannavi/src/tainavi/PlugIn_RecRD_EDCB.java
TinyBannavi/src/tainavi/VWColorChooserDialog.java
TinyBannavi/src/tainavi/VWKeywordGroupDialog.java
TinyBannavi/src/tainavi/VWTraceKeyDialog.java
TinyBannavi/src/tainavi/WideComponent.java [new file with mode: 0644]
TinyBannavi/src/todo.txt

index 7d73869..0fcd019 100644 (file)
 3.22.2β+1.5.12(2013-06-XX)\r
 ■変更点\r
  ・(レコーダ対応[DIGA BWT2100/BZT710/720]) 録画結果一覧の取得に仮対応(最大3ページ60タイトルまでなので、仮)\r
+ ・(予約ダイアログ) レイアウト変更 ※番組情報ブロックと録画設定ブロックを設定して、各コンポーネントを再配置\r
 ■バグ修正\r
  ・(その他) SwingWorkerで生成したサブスレッド内で想定外のruntime exceptionが発生するとサブスレッドがログも出さずに死んでしまってエラー原因を調査できなかったが、ログが出るように仕掛けをしたのでその仕掛けがうまく動くようなら今後改善が進んでいくはず\r
  ・(予約ダイアログ) 類似予約テーブルで「類似予約を選択しない」を選んでも、番組ID取得ボタンがリセットされない場合がある問題を修正\r
+ ・(予約ダイアログ他) ウィンドウサイズの設定において、ウィンドウ枠についてtop部分の高さしか考慮してないところがあったのでbottom,left,rigth分も加味するように修正\r
 \r
 3.22.1β+1.5.12(2013-05-23)\r
 ■変更点\r
index 9a3812f..cdac686 100644 (file)
@@ -2,17 +2,19 @@ package tainavi;
 \r
 import java.awt.BorderLayout;\r
 import java.awt.Color;\r
+import java.awt.Component;\r
 import java.awt.Dimension;\r
+import java.awt.event.ActionEvent;\r
 import java.util.ArrayList;\r
 import java.util.HashMap;\r
 \r
+import javax.swing.ImageIcon;\r
 import javax.swing.JPanel;\r
 import javax.swing.JScrollPane;\r
 import javax.swing.JTable;\r
-import javax.swing.event.ChangeEvent;\r
-import javax.swing.event.ChangeListener;\r
 import javax.swing.table.DefaultTableColumnModel;\r
 import javax.swing.table.DefaultTableModel;\r
+import javax.swing.table.TableCellRenderer;\r
 import javax.swing.table.TableColumn;\r
 import javax.swing.table.TableModel;\r
 \r
@@ -45,6 +47,7 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
        private static final String ERRID = "[ERROR]"+MSGID;\r
        private static final String DBGID = "[DEBUG]"+MSGID;\r
        \r
+       private static final String ICONFILE_EXEC                       = "icon/media-record-3.png";\r
        \r
        /*******************************************************************************\r
         * 部品\r
@@ -54,6 +57,7 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
        private final Env env = getEnv();\r
        private final Bounds bounds = getBoundsEnv();\r
        \r
+       private final ImageIcon execicon = new ImageIcon(ICONFILE_EXEC);\r
        \r
        /**\r
         * カラム定義\r
@@ -117,6 +121,10 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
                @Override\r
                protected void myrefresh(RowItem o) {\r
                        AutoRsvItem c = (AutoRsvItem) o;\r
+                       \r
+                       c.addData(c.autorsv.getExec());\r
+                       c.addData(c.autorsv.getLabel());\r
+                       c.addData(c.autorsv.getChName());\r
                }\r
                \r
                public AutoRsvItem clone() {\r
@@ -135,21 +143,18 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
                @Override\r
                public Object getValueAt(int row, int column) {\r
                        AutoRsvItem c = rDat.get(row);\r
-                       AutoRsvColumn v = AutoRsvColumn.getColumnValue(column);\r
-                       switch (v) {\r
-                       case EXEC:\r
-                               break;\r
-                       case TITLE:\r
-                               return c.autorsv.getLabel();\r
-                       case CHNAME:\r
-                               return c.autorsv.getChNames();\r
-                       default:\r
-                               break;\r
+                       if ( c.getColumnCount() > column ) {\r
+                               return c.get(column);\r
                        }\r
                        return null;\r
                }\r
                \r
                @Override\r
+               public void setValueAt(Object aValue, int row, int column) {\r
+                       // ダミー\r
+               }\r
+               \r
+               @Override\r
                public int getRowCount() {\r
                        return (rDat!=null) ? rDat.size() : 0;  // ↓ のsuper()で呼ばれるのでnullチェックが必要\r
                }\r
@@ -354,6 +359,12 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
                                //column.setPreferredWidth(bounds.getRecordedColumnSize().get(rc.toString()));\r
                                column.setPreferredWidth(rc.getIniWidth());\r
                        }\r
+\r
+                       // 特殊なカラムの設定\r
+                       ButtonColumn buttonColumn = new ButtonColumn(execicon);\r
+                       jt_list.getColumn(AutoRsvColumn.EXEC.getName()).setCellRenderer(buttonColumn);\r
+                       jt_list.getColumn(AutoRsvColumn.EXEC.getName()).setCellEditor(buttonColumn);\r
+                       jt_list.getColumn(AutoRsvColumn.EXEC.getName()).setResizable(false);\r
                        \r
                        // 詳細表示\r
                        //jt_list.getSelectionModel().addListSelectionListener(lsSelectListner);\r
@@ -382,6 +393,59 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
 \r
                private static final long serialVersionUID = 1L;\r
                \r
+               public void setDisabledColor(Color c) { disabledColor = c; }\r
+               private Color disabledColor = new Color(180,180,180);\r
+               \r
+               private int prechkrow = -1;\r
+               private boolean prechkdisabled = false;\r
+               \r
+               @Override\r
+               public Component prepareRenderer(TableCellRenderer tcr, int row, int column) {\r
+                       Component c = super.prepareRenderer(tcr, row, column);\r
+                       Color bgColor = null;\r
+                       if(isRowSelected(row)) {\r
+                               bgColor = this.getSelectionBackground();\r
+                       }\r
+                       else {\r
+                               isRowPassed(row);\r
+                               if ( prechkdisabled ) {\r
+                                       bgColor = disabledColor;\r
+                               }\r
+                               else {\r
+                                       bgColor = (isSepRowColor && row%2 == 1)?(evenColor):(super.getBackground());\r
+                               }\r
+                       }\r
+                       c.setBackground(bgColor);\r
+                       return c;\r
+               }\r
+               \r
+               // 連続して同じ行へのアクセスがあったら計算を行わず前回のままにする\r
+               private boolean isRowPassed(int prow) {\r
+                       \r
+                       if(prechkrow == prow) {\r
+                               return prechkdisabled;\r
+                       }\r
+\r
+                       int row = this.convertRowIndexToModel(prow);\r
+                       AutoRsvItem c = rowViewTemp.get(row);\r
+\r
+                       {\r
+                               // 実行可能かどうか\r
+                               prechkrow = prow;\r
+                               prechkdisabled = ! c.autorsv.getExec();\r
+                       }\r
+                       \r
+                       return true;\r
+               }\r
+               \r
+               @Override\r
+               public boolean isCellEditable(int row, int column) {\r
+                       if ( column == AutoRsvColumn.EXEC.getColumn() ) {\r
+                               return true;\r
+                       }\r
+                       return false;\r
+               }\r
+               \r
                // コンストラクタ\r
                \r
                public JNETableAutoReserve(boolean b) {\r
@@ -392,5 +456,37 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
                }\r
                \r
        }\r
-       \r
+\r
+       /**\r
+        * EXECボタン\r
+        */\r
+       private class ButtonColumn extends AbstractExecButtonColumn {\r
+\r
+               private static final long serialVersionUID = 1L;\r
+\r
+               public ButtonColumn(ImageIcon icon) {\r
+                       super(icon);\r
+               }\r
+\r
+               @Override\r
+               protected void toggleAction(ActionEvent e) {\r
+                       \r
+                       fireEditingStopped();\r
+                       \r
+                       int vrow = jt_list.getSelectedRow();\r
+                       int row = jt_list.convertRowIndexToModel(vrow);\r
+                       \r
+                       AutoRsvItem c = rowViewTemp.get(row);\r
+\r
+                       //if ( doExecOnOff( ! c.exec, c.title, c.chname, c.hide_rsvid, c.recorder) )\r
+                       {\r
+                               c.autorsv.setExec( ! c.autorsv.getExec());\r
+                               c.fireChanged();\r
+                       }\r
+                       \r
+                       jt_list.clearSelection();\r
+                       jt_list.setRowSelectionInterval(vrow, vrow);\r
+               }\r
+       }\r
+\r
 }\r
index f4d230d..43285fa 100644 (file)
@@ -190,7 +190,9 @@ abstract class AbsKeywordDialog extends JDialog {
                // タイトルバーの高さも考慮する必要がある\r
                Dimension d = getJPanel().getPreferredSize();\r
                this.pack();\r
-               this.setPreferredSize(new Dimension(d.width, d.height+this.getInsets().top));\r
+               this.setPreferredSize(new Dimension(\r
+                               d.width+(this.getInsets().left+this.getInsets().right),\r
+                               d.height+(this.getInsets().top+this.getInsets().bottom)));\r
                this.setResizable(false);\r
                //\r
                this.setTitle(windowTitle);\r
index 4039bce..ba9e594 100644 (file)
@@ -1,5 +1,6 @@
 package tainavi;\r
 \r
+import java.awt.BorderLayout;\r
 import java.awt.Color;\r
 import java.awt.Component;\r
 import java.awt.Dimension;\r
@@ -113,31 +114,34 @@ abstract class AbsReserveDialog extends JDialog {
        \r
        // レイアウト関連\r
        \r
-       private static final int TITLE_WIDTH = 370;\r
-       private static final int CHNAME_WIDTH = 240;\r
-       private static final int RECORDER_WIDTH = 300;\r
-       private static final int ENCODER_WIDTH = 150;\r
-       private static final int BOX_WIDTH = 730;\r
-       private static final int LIKELIST_WIDTH = BOX_WIDTH;\r
-       private static final int LIKELIST_ROWS = 4;\r
-       \r
        private static final int PARTS_HEIGHT = 25;\r
        private static final int SEP_WIDTH = 10;\r
        private static final int SEP_WIDTH_NARROW = 5;\r
        private static final int SEP_HEIGHT = 10;\r
        private static final int SEP_HEIGHT_NALLOW = 5;\r
-\r
-       private static final int LABEL_WIDTH = 150;\r
+       \r
        private static final int COMBO_WIDTH = 115;\r
        private static final int COMBO_WIDTH_WIDE = 155;\r
        private static final int COMBO_HEIGHT = 50;\r
 \r
-       private static final int PANEL_WIDTH = 760;\r
+       private static final int TITLE_WIDTH = COMBO_WIDTH_WIDE+COMBO_WIDTH*2+SEP_WIDTH*2;\r
+       private static final int CHNAME_WIDTH = COMBO_WIDTH*2+SEP_WIDTH;\r
+       private static final int DETAIL_WIDTH = TITLE_WIDTH+CHNAME_WIDTH+SEP_WIDTH;\r
+       private static final int DETAIL_HEIGHT = 100;\r
+       private static final int DATE_WIDTH = 175;\r
+       private static final int LIKELIST_WIDTH = 730;\r
+       private static final int LIKELIST_ROWS = 4;\r
+       \r
+       private static final int LABEL_WIDTH = 150;\r
+       private static final int BUTTON_WIDTH = 75;\r
+\r
+       private static final int RECORDER_WIDTH = COMBO_WIDTH_WIDE*2+SEP_WIDTH_NARROW;\r
+       private static final int ENCODER_WIDTH = COMBO_WIDTH*2+SEP_WIDTH_NARROW;\r
        \r
        private static final int LRT_HEADER_WIDTH = 20;\r
        private static final int LRT_TITLE_WIDTH = 325;\r
        private static final int LRT_START_WIDTH = 115;\r
-       private static final int LRT_RECORDER_WIDTH = 185;\r
+       private static final int LRT_RECORDER_WIDTH = 200;\r
        private static final int LRT_ENCODER_WIDTH = 60;\r
        \r
        public static enum LikeRsvColumn {\r
@@ -190,46 +194,63 @@ abstract class AbsReserveDialog extends JDialog {
        \r
        private JPanel jContentPane_rsv = null;\r
 \r
+       // 番組設定\r
+       \r
+       private JPanel jPane_title = null;\r
+       \r
        private JLabel jLabel_title = null;\r
-       private JComboBox jComboBox_ch = null;\r
-       private JLabel jLabel_ch= null;\r
-       private JLabel jLabel_encoder = null;\r
-       private JComboBoxWithPopup jComboBox_title = null;\r
-       private JWideComboBox jComboBox_encoder = null;\r
        private JButton jButton_getEventId = null;\r
+       private JButton jButton_addDate = null;\r
+       private JComboBoxWithPopup jComboBox_title = null;\r
+       private JLabel jLabel_ch = null;\r
+       private JComboBox jComboBox_ch = null;\r
+       \r
+       private JComboBoxPanel jCBXPanel_recorder = null;\r
+       private JComboBoxPanel jCBXPanel_encoder = null;\r
        private JLabel jLabel_encoderemptywarn = null;\r
+       \r
        private JLabel jLabel_date = null;\r
-       private JLabel jLabel_ahh = null;\r
-       private JLabel jLabel_zhh = null;\r
-       private JLabel jLabel_recorders = null;\r
-       private JComboBox jComboBox_recorder = null;\r
        private JComboBox jComboBox_date = null;\r
+       \r
+       private JLabel jLabel_ahh = null;\r
        private JTextField jTextField_ahh = null;\r
-       private JTextField jTextField_amm = null;\r
        private JLabel jLabel_asep = null;\r
+       private JTextField jTextField_amm = null;\r
        private JButton jButton_amm_up = null;\r
        private JButton jButton_amm_down = null;\r
        private JTextField jTextField_Xahh = null;\r
-       private JTextField jTextField_Xamm = null;\r
        private JLabel jLabel_Xasep = null;\r
+       private JTextField jTextField_Xamm = null;\r
+       \r
+       private JLabel jLabel_zhh = null;\r
        private JTextField jTextField_zhh = null;\r
-       private JTextField jTextField_zmm = null;\r
        private JLabel jLabel_zsep = null;\r
+       private JTextField jTextField_zmm = null;\r
        private JButton jButton_zmm_up = null;\r
        private JButton jButton_zmm_down = null;\r
        private JTextField jTextField_Xzhh = null;\r
-       private JTextField jTextField_Xzmm = null;\r
        private JLabel jLabel_Xzsep = null;\r
+       private JTextField jTextField_Xzmm = null;\r
+       \r
        private JButton jButton_Xreset = null;\r
+       \r
        private JLabel jLabel_detail = null;\r
        private JScrollPane jScrollPane_detail = null;\r
        private JTextAreaWithPopup jTextArea_detail = null;\r
+       \r
        private JCheckBoxPanel jCheckBox_OverlapDown2 = null;\r
        private JCheckBoxPanel jCheckBox_spoex_extend = null;\r
-       private JLabel jLabel_rectype = null;\r
-       private JButton jButton_load = null;\r
-       private JButton jButton_save = null;\r
-       private JButton jButton_savedefault = null;\r
+       \r
+       private JCheckBoxPanel jCheckBox_Exec = null;\r
+       private JCheckBoxPanel jCheckBox_Autocomplete = null;\r
+\r
+       private JButton jButton_update = null;\r
+       private JButton jButton_record = null;\r
+       private JButton jButton_cancel = null;\r
+\r
+       // 録画設定\r
+       private JPanel jPane_recsetting = null;\r
+\r
        private JComboBoxPanel jCBXPanel_genre = null;\r
        private JComboBoxPanel jCBXPanel_subgenre = null;\r
        private JComboBoxPanel jCBXPanel_videorate = null;\r
@@ -242,21 +263,22 @@ abstract class AbsReserveDialog extends JDialog {
        private JComboBoxPanel jCBXPanel_lvoice = null;\r
        private JComboBoxPanel jCBXPanel_autodel = null;\r
        private JComboBoxPanel jCBXPanel_pursues = null;\r
-       private JButton jButton_update = null;\r
-       private JButton jButton_record = null;\r
-       private JButton jButton_cancel = null;\r
-       private JCheckBoxPanel jCheckBox_Exec = null;\r
-       private JCheckBoxPanel jCheckBox_Autocomplete = null;\r
-       private JButton jButton_addDate = null;\r
-       \r
-       private LikeRsvRowHeader likersvrowheader = null;\r
-       private JScrollPane likersvpane = null;\r
-       private LikeRsvTable likersvtable = null;\r
-       \r
        private JComboBoxPanel jCBXPanel_xChapter = null;\r
        private JComboBoxPanel jCBXPanel_msChapter = null;\r
        private JComboBoxPanel jCBXPanel_mvChapter = null;\r
        \r
+       private JLabel jLabel_rectype = null;\r
+       private JButton jButton_load = null;\r
+       private JButton jButton_save = null;\r
+       private JButton jButton_savedefault = null;\r
+       \r
+       // 類似予約\r
+       \r
+       private JScrollPane jPane_likersv = null;\r
+       \r
+       private LikeRsvTable likersvtable = null;\r
+       private LikeRsvRowHeader likersvrowheader = null;\r
+       \r
        /*\r
         * その他\r
         */\r
@@ -325,7 +347,11 @@ abstract class AbsReserveDialog extends JDialog {
                // タイトルバーの高さも考慮する必要がある\r
                Dimension d = getJContentPane_rsv().getPreferredSize();\r
                this.pack();\r
-               this.setBounds(x, y, d.width, d.height+this.getInsets().top);\r
+               this.setBounds(\r
+                               x,\r
+                               y,\r
+                               d.width+(this.getInsets().left+this.getInsets().right),\r
+                               d.height+(this.getInsets().top+this.getInsets().bottom));\r
                this.setResizable(false);\r
                //\r
                this.setTitle("録画設定");\r
@@ -357,7 +383,7 @@ abstract class AbsReserveDialog extends JDialog {
                r.setZhh(String.format("%02d", Integer.valueOf(getJTextField_zhh().getText())));\r
                r.setZmm(String.format("%02d", Integer.valueOf(getJTextField_zmm().getText())));\r
                r.setRec_min("");                       // PostRdEntry()中で取得するのでここはダミー\r
-               r.setTuner((String)jComboBox_encoder.getSelectedItem());\r
+               r.setTuner((String)jCBXPanel_encoder.getSelectedItem());\r
                r.setRec_mode((String)jCBXPanel_videorate.getSelectedItem());\r
                r.setRec_audio((String)jCBXPanel_audiorate.getSelectedItem());\r
                r.setRec_folder((String)jCBXPanel_folder.getSelectedItem());\r
@@ -397,7 +423,7 @@ abstract class AbsReserveDialog extends JDialog {
                        @Override\r
                        protected Object doWorks() throws Exception {\r
                                for ( HDDRecorder recorder : recorders ) {\r
-                                       if (recorder.isMyself((String)jComboBox_recorder.getSelectedItem()) == true) {\r
+                                       if (recorder.isMyself((String)jCBXPanel_recorder.getSelectedItem()) == true) {\r
                                                StWin.appendMessage(MSGID+"予約を登録します:"+r.getTitle());\r
                                                //recorder.setProgressArea(StWin);\r
                                                if (recorder.PostRdEntry(r)) {\r
@@ -472,7 +498,7 @@ abstract class AbsReserveDialog extends JDialog {
                newRsv.setZhh(String.format("%02d", Integer.valueOf(getJTextField_zhh().getText())));\r
                newRsv.setZmm(String.format("%02d", Integer.valueOf(getJTextField_zmm().getText())));\r
                newRsv.setRec_min("");                  // UpdateRdEntry()中で取得するのでここはダミー\r
-               newRsv.setTuner((String)jComboBox_encoder.getSelectedItem());\r
+               newRsv.setTuner((String)jCBXPanel_encoder.getSelectedItem());\r
                newRsv.setRec_mode((String)jCBXPanel_videorate.getSelectedItem());;\r
                newRsv.setRec_audio((String)jCBXPanel_audiorate.getSelectedItem());\r
                newRsv.setRec_folder((String)jCBXPanel_folder.getSelectedItem());\r
@@ -779,20 +805,20 @@ abstract class AbsReserveDialog extends JDialog {
        private void setInitFixies(HDDRecorder myrec, ReserveList myrsv) {\r
                // レコーダコンボボックスの設定\r
                {\r
-                       jComboBox_recorder.removeAllItems();\r
+                       jCBXPanel_recorder.removeAllItems();\r
                        for ( HDDRecorder rec : recorders ) {\r
                                if ( rec.isBackgroundOnly() ) {\r
                                        continue;       // Googleカレンダープラグインとかははずす\r
                                }\r
-                               jComboBox_recorder.addItem(rec.Myself());\r
+                               jCBXPanel_recorder.addItem(rec.Myself());\r
                        }\r
-                       jComboBox_recorder.setEnabled( jComboBox_recorder.getItemCount() > 0 );\r
+                       jCBXPanel_recorder.setEnabled( jCBXPanel_recorder.getItemCount() > 0 );\r
                        \r
                        if ( vals.hide_atreservedlist ) {\r
-                               jComboBox_recorder.setEnabled(false);\r
+                               jCBXPanel_recorder.setEnabled(false);\r
                        }\r
                        else {\r
-                               jComboBox_recorder.setEnabled(true);\r
+                               jCBXPanel_recorder.setEnabled(true);\r
                        }\r
                }\r
                \r
@@ -1052,11 +1078,11 @@ abstract class AbsReserveDialog extends JDialog {
                \r
                // エンコーダ\r
                {\r
-                       jComboBox_encoder.removeAllItems();\r
+                       jCBXPanel_encoder.removeAllItems();\r
                        for ( String enc : getFilteredEncoders(myrec, vals.hide_tvd.center) ) {\r
-                               jComboBox_encoder.addItem(enc);\r
+                               jCBXPanel_encoder.addItem(enc);\r
                        }\r
-                       jComboBox_encoder.setEnabled( jComboBox_encoder.getItemCount() > 0 );\r
+                       jCBXPanel_encoder.setEnabled( jCBXPanel_encoder.getItemCount() > 0 );\r
                }\r
                \r
                // 日付\r
@@ -1163,7 +1189,7 @@ abstract class AbsReserveDialog extends JDialog {
                }\r
 \r
                // レコーダ\r
-               jComboBox_recorder.setSelectedItem(myrec.Myself());\r
+               jCBXPanel_recorder.setSelectedItem(myrec.Myself());\r
                \r
                // エンコーダ(移動しました)\r
                \r
@@ -1189,9 +1215,9 @@ abstract class AbsReserveDialog extends JDialog {
                {\r
                        \r
                        if ( vals.hide_atreservedlist ) {\r
-                               jComboBox_encoder.setSelectedItem(myrsv.getTuner());\r
+                               jCBXPanel_encoder.setSelectedItem(myrsv.getTuner());\r
                        }\r
-                       else if ( jComboBox_encoder.getItemCount() > 0 ) {\r
+                       else if ( jCBXPanel_encoder.getItemCount() > 0 ) {\r
                                // 裏番組チェックとかやるよ\r
                                String vrate = ( isVARDIA(myrec.getRecorderId()) ) ? ((String) jCBXPanel_videorate.getSelectedItem()) : (null);\r
                                String starttm = vals.hide_tvd.start;\r
@@ -1213,21 +1239,21 @@ abstract class AbsReserveDialog extends JDialog {
                                \r
                                if ( myrsv != null ) {\r
                                        // 類似予約最優先\r
-                                       jComboBox_encoder.setSelectedItem(myrsv.getTuner());\r
+                                       jCBXPanel_encoder.setSelectedItem(myrsv.getTuner());\r
                                }\r
                                else if ( myrec.isAutoEncSelectEnabled() && ! vals.hide_atreservedlist ) {\r
                                        // 番組情報に近い予約を探してエンコーダを絞り込む\r
-                                       jComboBox_encoder.setSelectedItem(enc);\r
+                                       jCBXPanel_encoder.setSelectedItem(enc);\r
                                        showUraList(myrec.Myself());\r
                                }\r
-                               else if ( jComboBox_encoder.getItemCount() > 0 ) {\r
+                               else if ( jCBXPanel_encoder.getItemCount() > 0 ) {\r
                                        // 類似予約や自動選択がない場合は極力もとのエンコーダを選択したい\r
                                        if ( myenc != null ) {\r
-                                               jComboBox_encoder.setSelectedItem(myenc);\r
-                                               myenc = (String) jComboBox_encoder.getSelectedItem();\r
+                                               jCBXPanel_encoder.setSelectedItem(myenc);\r
+                                               myenc = (String) jCBXPanel_encoder.getSelectedItem();\r
                                        }\r
                                        if ( myenc == null ) {\r
-                                               jComboBox_encoder.setSelectedIndex(0);\r
+                                               jCBXPanel_encoder.setSelectedIndex(0);\r
                                        }\r
                                        showUraList(myrec.Myself());\r
                                }\r
@@ -1410,25 +1436,25 @@ abstract class AbsReserveDialog extends JDialog {
         */\r
        private void setEnabledSelectionListeners(boolean b) {\r
                // 重複呼び出しがこわいので一回全部削除してしまう\r
-               jComboBox_encoder.removeItemListener(il_encoderChanged);\r
+               jCBXPanel_encoder.removeItemListener(il_encoderChanged);\r
                jCBXPanel_videorate.removeItemListener(il_videorateChanged);\r
-               jComboBox_recorder.removeItemListener(il_recorderChanged);\r
+               jCBXPanel_recorder.removeItemListener(il_recorderChanged);\r
                jCBXPanel_genre.removeItemListener(il_genreChanged);\r
                likersvtable.removeMouseListener(ml_likelistSelected);\r
                if ( b ) {\r
                        // 必要なら追加する\r
-                       jComboBox_encoder.addItemListener(il_encoderChanged);\r
+                       jCBXPanel_encoder.addItemListener(il_encoderChanged);\r
                        jCBXPanel_videorate.addItemListener(il_videorateChanged);\r
-                       jComboBox_recorder.addItemListener(il_recorderChanged);\r
+                       jCBXPanel_recorder.addItemListener(il_recorderChanged);\r
                        jCBXPanel_genre.addItemListener(il_genreChanged);\r
                        likersvtable.addMouseListener(ml_likelistSelected);\r
                }\r
        }\r
        \r
        private void removeAllSelectionItems() {\r
-               jComboBox_encoder.removeAllItems();\r
+               jCBXPanel_encoder.removeAllItems();\r
                jCBXPanel_videorate.removeAllItems();\r
-               jComboBox_recorder.removeAllItems();\r
+               jCBXPanel_recorder.removeAllItems();\r
                jCBXPanel_genre.removeAllItems();\r
                //likersvtable.removeAllItems();\r
        }\r
@@ -1955,18 +1981,18 @@ abstract class AbsReserveDialog extends JDialog {
         */\r
        private void setEncoderComboBoxByVrate(String enc1, String enc2) {\r
                int index = -1;\r
-               for (int i=0; i<jComboBox_encoder.getItemCount(); i++) {\r
-                       if (enc1 != null && jComboBox_encoder.getItemAt(i).equals(enc1)) {\r
+               for (int i=0; i<jCBXPanel_encoder.getItemCount(); i++) {\r
+                       if (enc1 != null && jCBXPanel_encoder.getItemAt(i).equals(enc1)) {\r
                                index = i;\r
                                break;\r
                        }\r
-                       if (enc2 != null && jComboBox_encoder.getItemAt(i).equals(enc2)) {\r
+                       if (enc2 != null && jCBXPanel_encoder.getItemAt(i).equals(enc2)) {\r
                                index = i;\r
                                break;\r
                        }\r
                }\r
                if (index >= 0) {\r
-                       jComboBox_encoder.setSelectedIndex(index);\r
+                       jCBXPanel_encoder.setSelectedIndex(index);\r
                }\r
        }\r
        \r
@@ -1974,7 +2000,7 @@ abstract class AbsReserveDialog extends JDialog {
         * 自分のかツールバーのかわかりにくいので名前にMyって付け足した\r
         */\r
        private HDDRecorder getMySelectedRecorder() {\r
-               String myself = (String) jComboBox_recorder.getSelectedItem();\r
+               String myself = (String) jCBXPanel_recorder.getSelectedItem();\r
                if ( myself == null ) {\r
                        return null;\r
                }\r
@@ -2141,12 +2167,12 @@ abstract class AbsReserveDialog extends JDialog {
                        // 選択中のレコーダ\r
                        myrec = getMySelectedRecorder();\r
                        if ( myrec == null ) {\r
-                               System.err.println(ERRID+"選択したレコーダの情報が登録されていません: "+(String) jComboBox_recorder.getSelectedItem());\r
+                               System.err.println(ERRID+"選択したレコーダの情報が登録されていません: "+(String) jCBXPanel_recorder.getSelectedItem());\r
                                return;\r
                        }\r
                \r
                        // 選択中のエンコーダ\r
-                       myenc = (String) jComboBox_encoder.getSelectedItem();\r
+                       myenc = (String) jCBXPanel_encoder.getSelectedItem();\r
                        \r
                        if ( env.getGivePriorityToReserved() ) {\r
                                // 類似予約の選択(選択中のレコーダに一致するものがあれば)\r
@@ -2205,7 +2231,7 @@ abstract class AbsReserveDialog extends JDialog {
                                return;\r
                        }\r
 \r
-                       String myself = (String) jComboBox_recorder.getSelectedItem();\r
+                       String myself = (String) jCBXPanel_recorder.getSelectedItem();\r
                        if ( myself == null ) {\r
                                return;\r
                        }\r
@@ -2214,7 +2240,7 @@ abstract class AbsReserveDialog extends JDialog {
                                return;\r
                        }\r
                        \r
-                       String encoder = (String) jComboBox_encoder.getSelectedItem();\r
+                       String encoder = (String) jCBXPanel_encoder.getSelectedItem();\r
                        if ( encoder == null ) {\r
                                return;\r
                        }\r
@@ -2246,7 +2272,7 @@ abstract class AbsReserveDialog extends JDialog {
                                return;\r
                        }\r
 \r
-                       String myself = (String) jComboBox_recorder.getSelectedItem();\r
+                       String myself = (String) jCBXPanel_recorder.getSelectedItem();\r
                        if ( myself == null ) {\r
                                return;\r
                        }\r
@@ -2366,7 +2392,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.findInstance((String) jComboBox_recorder.getSelectedItem()).get(0).getRecorderId();\r
+                       String recId = recorders.findInstance((String) jCBXPanel_recorder.getSelectedItem()).get(0).getRecorderId();\r
                        setSelectedAVItems(recId, null, getSelectedAVs(key_genre, key_webChName, recId));\r
                        MWin.appendMessage(MSGID+"画質・音質等の設定を取得しました");\r
                }\r
@@ -2377,7 +2403,7 @@ abstract class AbsReserveDialog extends JDialog {
         */\r
        private final ActionListener al_saveAction = new ActionListener() {\r
                public void actionPerformed(ActionEvent e) {\r
-                       Matcher ma = Pattern.compile("^.+?:.+?:(.+?)$").matcher((String)jComboBox_recorder.getSelectedItem());\r
+                       Matcher ma = Pattern.compile("^.+?:.+?:(.+?)$").matcher((String)jCBXPanel_recorder.getSelectedItem());\r
                        if (ma.find()) {\r
                                if (env.getEnableCHAVsetting()) {\r
                                        String key_webChName = (String) jComboBox_ch.getSelectedItem();\r
@@ -2396,7 +2422,7 @@ abstract class AbsReserveDialog extends JDialog {
         */\r
        private final ActionListener al_saveDefault = new ActionListener() {\r
                public void actionPerformed(ActionEvent e) {\r
-                       Matcher ma = Pattern.compile("^.+?:.+?:(.+?)$").matcher((String)jComboBox_recorder.getSelectedItem());\r
+                       Matcher ma = Pattern.compile("^.+?:.+?:(.+?)$").matcher((String)jCBXPanel_recorder.getSelectedItem());\r
                        if (ma.find()) {\r
                                _save_avsettings(ma.group(1),null);\r
                        }\r
@@ -2483,7 +2509,7 @@ abstract class AbsReserveDialog extends JDialog {
                                                        vals.hide_tvd.progid = vals.hide_content_id;\r
                                                        vals.hide_tvd.setContentIdStr();\r
                                                }\r
-                                               HDDRecorderList recs = recorders.findInstance((String) jComboBox_recorder.getSelectedItem());\r
+                                               HDDRecorderList recs = recorders.findInstance((String) jCBXPanel_recorder.getSelectedItem());\r
                                                if ( recs.size() > 0 ) {\r
                                                        jCBXPanel_pursues.setEnabled(recs.get(0).isPursuesEditable());\r
                                                }\r
@@ -2673,156 +2699,214 @@ abstract class AbsReserveDialog extends JDialog {
        private JPanel getJContentPane_rsv() {\r
                if (jContentPane_rsv == null) {\r
                        jContentPane_rsv = new JPanel();\r
-                       jContentPane_rsv.setLayout(new SpringLayout());\r
                        \r
-                       int y = 0;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_title("予約名"), 40, PARTS_HEIGHT, 5, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_getEventId("番組ID取得"), LABEL_WIDTH, PARTS_HEIGHT, 55, y);\r
+                       jContentPane_rsv.setLayout(new BorderLayout());\r
                        \r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_addDate("日付追加"), 100, PARTS_HEIGHT, 270, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_ch("CH"), LABEL_WIDTH, PARTS_HEIGHT, 335+60, y);\r
+                       jContentPane_rsv.add(getJPane_title(),BorderLayout.NORTH);\r
+                       jContentPane_rsv.add(getJPane_recsetting(),BorderLayout.CENTER);\r
+                       jContentPane_rsv.add(getJPane_likersv(),BorderLayout.SOUTH);\r
+               }\r
+               return jContentPane_rsv;\r
+       }\r
+       \r
+       /**\r
+        * 番組情報のエリア\r
+        */\r
+       private JPanel getJPane_title() {\r
+               if ( jPane_title == null ) {\r
+                       jPane_title = new JPanel();\r
+                       //jPane_title.setBorder(new LineBorder(Color.BLACK, 1));\r
+                       jPane_title.setLayout(new SpringLayout());\r
                        \r
-                       int spHeight2 = y;\r
+                       int y = SEP_HEIGHT_NALLOW;\r
+                       int x = SEP_WIDTH_NARROW;\r
                        \r
-                       y += PARTS_HEIGHT;\r
-                       int x = 10;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJComboBox_title(), TITLE_WIDTH, PARTS_HEIGHT, x, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJComboBox_ch(), CHNAME_WIDTH, PARTS_HEIGHT, x+=TITLE_WIDTH+SEP_WIDTH, y);\r
-\r
-                       y += PARTS_HEIGHT;\r
-                       x = 35;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_recorders("レコーダ"), LABEL_WIDTH, PARTS_HEIGHT, x, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_encoder("エンコーダ"), LABEL_WIDTH, PARTS_HEIGHT, x+=RECORDER_WIDTH, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJLabel_title("予約名"), 40, PARTS_HEIGHT, x, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJComboBox_title(), TITLE_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, y+PARTS_HEIGHT);\r
                        \r
-                       y += PARTS_HEIGHT;\r
-                       x = 35+SEP_WIDTH_NARROW;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJComboBox_recorder(), RECORDER_WIDTH, PARTS_HEIGHT, x, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJComboBox_encoder(), ENCODER_WIDTH, PARTS_HEIGHT, x+=RECORDER_WIDTH+SEP_WIDTH, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_encoderemptywarn(""),LABEL_WIDTH,PARTS_HEIGHT,x+=ENCODER_WIDTH+SEP_WIDTH,y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJButton_getEventId("番組ID取得"), LABEL_WIDTH, PARTS_HEIGHT, x+50, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJButton_addDate("日付追加"),        100, PARTS_HEIGHT, 270, y);\r
+                       \r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJLabel_ch("CH"), LABEL_WIDTH, PARTS_HEIGHT, x+TITLE_WIDTH+SEP_WIDTH, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJComboBox_ch(), CHNAME_WIDTH, PARTS_HEIGHT, x+TITLE_WIDTH+SEP_WIDTH+SEP_WIDTH_NARROW, y+PARTS_HEIGHT);\r
 \r
-                       y += PARTS_HEIGHT;\r
-                       x = 35;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_date("録画日付"), LABEL_WIDTH, PARTS_HEIGHT, x, y);\r
+                       y += PARTS_HEIGHT*2+SEP_HEIGHT_NALLOW;\r
                        \r
-                       int hmx = 210;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_ahh("開始時刻"), 75, PARTS_HEIGHT, hmx-SEP_WIDTH_NARROW, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_zhh("終了時刻"), 75, PARTS_HEIGHT, hmx+120-SEP_WIDTH_NARROW, y);\r
-               \r
-                       y += PARTS_HEIGHT;\r
-                       x = 35+SEP_WIDTH_NARROW;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJComboBox_date(), LABEL_WIDTH, PARTS_HEIGHT, x, y);\r
+                       {\r
+                               int hmx = x;\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJLabel_date("録画日付"),    LABEL_WIDTH,    PARTS_HEIGHT,   hmx,y);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJComboBox_date(),               DATE_WIDTH,             PARTS_HEIGHT,   hmx+=SEP_WIDTH_NARROW, y+PARTS_HEIGHT);\r
+                               \r
+                               hmx += DATE_WIDTH+SEP_WIDTH;\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJLabel_ahh("開始時刻"),     75,     PARTS_HEIGHT,   hmx, y);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJTextField_ahh(),               40,     PARTS_HEIGHT,   hmx+=SEP_WIDTH_NARROW, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJLabel_asep(":"),               10,     PARTS_HEIGHT,   hmx+=40, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJTextField_amm(),               40,     PARTS_HEIGHT,   hmx+=10, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_amm_up(),               20,     12,                             hmx+=42, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_amm_down(),             20,     12,                             hmx, y+PARTS_HEIGHT+13);\r
+                               \r
+                               hmx += 20+SEP_WIDTH_NARROW;\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJLabel_zhh("終了時刻"),     75,     PARTS_HEIGHT,   hmx, y);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJTextField_zhh(),               40,     PARTS_HEIGHT,   hmx+=SEP_WIDTH_NARROW, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJLabel_zsep(":"),               10,     PARTS_HEIGHT,   hmx+=40, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJTextField_zmm(),               40,     PARTS_HEIGHT,   hmx+=10, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_zmm_up(),               20,     12,                             hmx+=42, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_zmm_down(),             20,     12,                             hmx, y+PARTS_HEIGHT+13);\r
+                       \r
+                               hmx += 20+SEP_WIDTH;\r
+                               \r
+                               CommonSwingUtils.putComponentOn(jPane_title, jCheckBox_Autocomplete = new JCheckBoxPanel("タイトル自動補完",LABEL_WIDTH,true),  200, PARTS_HEIGHT, hmx, y);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJCheckBox_spoex_extend("スポーツ延長",LABEL_WIDTH,true),                                          200, PARTS_HEIGHT, hmx, y+PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJCheckBox_OverlapDown2("終了時刻1分短縮",LABEL_WIDTH,true),                                    200, PARTS_HEIGHT, hmx, y+PARTS_HEIGHT*2);\r
+                               \r
+                               jCheckBox_Autocomplete.setSelected(env.getUseAutocomplete());\r
+                       }\r
                        \r
-                       hmx = 210;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_ahh(), 40, PARTS_HEIGHT, hmx, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_asep(":"), 10, PARTS_HEIGHT, hmx+=40, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_amm(), 40, PARTS_HEIGHT, hmx+=10, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_amm_up(), 20, 12, hmx+=42, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_amm_down(), 20, 12, hmx, y+13);\r
-                       \r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_zhh(), 40, PARTS_HEIGHT, hmx+=28, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_zsep(":"), 10, PARTS_HEIGHT, hmx+=40, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_zmm(), 40, PARTS_HEIGHT, hmx+=10, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_zmm_up(), 20, 12, hmx+=42, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_zmm_down(), 20, 12, hmx, y+13);\r
-\r
-                       int exy = y-12;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJCheckBox_spoex_extend("スポーツ延長",LABEL_WIDTH,true), 200, PARTS_HEIGHT, hmx+=28, exy);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJCheckBox_OverlapDown2("終了時刻1分短縮",LABEL_WIDTH,true), 200, PARTS_HEIGHT, hmx, exy+PARTS_HEIGHT);\r
-\r
+                       getJTextField_Xahh();\r
+                       getJTextField_Xamm();\r
+                       getJTextField_Xzhh();\r
+                       getJTextField_Xzmm();\r
+                       \r
+                       /*\r
                        y += PARTS_HEIGHT+2;\r
                        hmx = 210;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_Xahh(), 40, 21, hmx, y+2);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_Xasep(":"), 10, 21, hmx+=40, y+2);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_Xamm(), 40, 21, hmx+=10, y+2);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_Xzhh(), 40, 21, hmx+=70, y+2);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_Xzsep(":"), 10, 21, hmx+=40, y+2);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJTextField_Xzmm(), 40, 21, hmx+=10, y+2);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_Xreset(""), 20, 15, hmx+=42, y+5);\r
-                       \r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_detail("番組詳細"), 100, PARTS_HEIGHT, 35, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJTextField_Xahh(), 40, 21, hmx, y+2);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJLabel_Xasep(":"), 10, 21, hmx+=40, y+2);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJTextField_Xamm(), 40, 21, hmx+=10, y+2);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJTextField_Xzhh(), 40, 21, hmx+=70, y+2);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJLabel_Xzsep(":"), 10, 21, hmx+=40, y+2);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJTextField_Xzmm(), 40, 21, hmx+=10, y+2);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJButton_Xreset(""), 20, 15, hmx+=42, y+5);\r
+                       */\r
+\r
+                       y += PARTS_HEIGHT*2+SEP_WIDTH_NARROW;\r
+\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJLabel_detail("番組詳細"), 100, PARTS_HEIGHT, x, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_title, getJScrollPane_detail(), DETAIL_WIDTH, DETAIL_HEIGHT, x+SEP_WIDTH_NARROW, y+PARTS_HEIGHT);\r
                        \r
                        y += PARTS_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJScrollPane_detail(), 600, 95, 40, y);\r
                        \r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCheckBox_Exec = new JCheckBoxPanel("予約実行",LABEL_WIDTH,true), 200, PARTS_HEIGHT, 650, y);\r
-                       jCheckBox_Exec.setSelected(true);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCheckBox_Autocomplete = new JCheckBoxPanel("タイトル自動補完",LABEL_WIDTH,true), 200, PARTS_HEIGHT, 650, y+PARTS_HEIGHT);\r
-                       jCheckBox_Autocomplete.setSelected(env.getUseAutocomplete());\r
-                       //CommonSwingUtils.putComponentOn(jContentPane_rsv, jCheckBox_Pursues = new JCheckBoxPanel("番組追従",LABEL_WIDTH,true), 200, PARTS_HEIGHT, 650, y+50);\r
-                       //jCheckBox_Pursues.setSelected(false);\r
-                       //jCheckBox_Pursues.setEnabled(false);\r
-                       \r
-                       y += 95;\r
-                       int BoxTop = y+5;\r
-                       \r
-                       y += 10;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_genre = new JComboBoxPanel("ジャンル",110,150), COMBO_WIDTH_WIDE, COMBO_HEIGHT, 25, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_subgenre = new JComboBoxPanel("サブジャンル",110,150), COMBO_WIDTH_WIDE, COMBO_HEIGHT, 190, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_autodel = new JComboBoxPanel("自動削除",110,100), COMBO_WIDTH, COMBO_HEIGHT, 420, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_xChapter = new JComboBoxPanel("無音部分チャプタ分割",110,100), COMBO_WIDTH, COMBO_HEIGHT, 535, y);\r
-                       \r
-                       y += PARTS_HEIGHT+PARTS_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_videorate = new JComboBoxPanel("画質",110,150), COMBO_WIDTH_WIDE, COMBO_HEIGHT, 25, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_audiorate = new JComboBoxPanel("音質",110,100), COMBO_WIDTH, COMBO_HEIGHT, 190, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_bvperf = new JComboBoxPanel("高レート節約",110,100), COMBO_WIDTH, COMBO_HEIGHT, 305, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_lvoice = new JComboBoxPanel("ライン音声選択",110,100), COMBO_WIDTH, COMBO_HEIGHT, 420, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_msChapter = new JComboBoxPanel("DVD/シーンチャプタ分割",110,100), COMBO_WIDTH, COMBO_HEIGHT, 535, y);\r
-                       \r
-                       int spHeight1 = y;\r
-                       \r
-                       y += PARTS_HEIGHT+PARTS_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_folder = new JComboBoxPanel("記録先フォルダ",100,150), COMBO_WIDTH_WIDE, COMBO_HEIGHT, 25, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_device = new JComboBoxPanel("記録先デバイス",110,100), COMBO_WIDTH, COMBO_HEIGHT, 190, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_dvdcompat = new JComboBoxPanel("BD/DVD互換モード",110,100), COMBO_WIDTH, COMBO_HEIGHT, 305, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_aspect = new JComboBoxPanel("DVD記録時画面比",110,100), COMBO_WIDTH, COMBO_HEIGHT, 420, y);\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_mvChapter = new JComboBoxPanel("音多/本編チャプタ分割",110,100), COMBO_WIDTH, COMBO_HEIGHT, 535, y);\r
-\r
-                       y += PARTS_HEIGHT+PARTS_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jCBXPanel_pursues = new JComboBoxPanel("番組追従",110,100), COMBO_WIDTH, COMBO_HEIGHT, 535, y);\r
-\r
-                       y += PARTS_HEIGHT+PARTS_HEIGHT;\r
-\r
-                       // 録画設定を囲む枠線\r
-                       JLabel jl = null;\r
-                       int BoxBottom = y+SEP_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, jl = new JLabel(), BOX_WIDTH, BoxBottom-BoxTop, 15, BoxTop);\r
-                       jl.setBorder(new LineBorder(Color.GRAY,1));\r
-\r
-                       y = BoxBottom+SEP_HEIGHT_NALLOW;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getLikeRsvPane(), LIKELIST_WIDTH, PARTS_HEIGHT*LIKELIST_ROWS, 15, y);\r
-                       \r
-                       y += PARTS_HEIGHT*LIKELIST_ROWS+SEP_HEIGHT;\r
-                       Dimension d = new Dimension(PANEL_WIDTH,y);\r
-                       jContentPane_rsv.setPreferredSize(d);\r
-\r
-                       // 特殊配置(1)\r
-                       y = spHeight1+8;\r
-                       if (env.getEnableCHAVsetting()) {\r
-                               CommonSwingUtils.putComponentOn(jContentPane_rsv, new JLabel("放送局別"), LABEL_WIDTH, PARTS_HEIGHT, 655, y);\r
+                       \r
+                       \r
+                       y += DETAIL_HEIGHT+SEP_HEIGHT_NALLOW;\r
+                       \r
+                       // 特殊配置\r
+                       {\r
+                               int spy = SEP_HEIGHT_NALLOW+PARTS_HEIGHT;\r
+                               x = SEP_WIDTH_NARROW+DETAIL_WIDTH+SEP_WIDTH*2;\r
+                               \r
+                               CommonSwingUtils.putComponentOn(jPane_title, new JLabel("予約"),                              BUTTON_WIDTH, PARTS_HEIGHT, x, spy);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_record("新規"),               BUTTON_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, spy+=PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_update("更新"),               BUTTON_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, spy+=PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_title, getJButton_cancel("キャンセル"),      BUTTON_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, spy+=PARTS_HEIGHT);\r
                        }\r
-                       else {\r
-                               CommonSwingUtils.putComponentOn(jContentPane_rsv, new JLabel("ジャンル別"), LABEL_WIDTH, PARTS_HEIGHT, 655, y);\r
+                       \r
+                       x+=BUTTON_WIDTH+SEP_WIDTH_NARROW*2;\r
+                       \r
+                       Dimension d = new Dimension(x,y);\r
+                       jPane_title.setPreferredSize(d);\r
+               }\r
+               return jPane_title;\r
+       }\r
+       \r
+       /**\r
+        * 録画設定のエリア\r
+        */\r
+       private JPanel getJPane_recsetting() {\r
+               if ( jPane_recsetting == null ) {\r
+                       jPane_recsetting = new JPanel();\r
+                       jPane_recsetting.setBorder(new LineBorder(Color.BLACK, 1));\r
+                       jPane_recsetting.setLayout(new SpringLayout());\r
+                       \r
+                       //int y = SEP_HEIGHT_NALLOW;\r
+                       int y = 0;\r
+                       int x = SEP_WIDTH_NARROW;\r
+                       \r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_recorder = new JComboBoxPanel("レコーダ",RECORDER_WIDTH,RECORDER_WIDTH),        RECORDER_WIDTH+5,       COMBO_HEIGHT, x, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_encoder = new JComboBoxPanel("エンコーダ",ENCODER_WIDTH,ENCODER_WIDTH),                ENCODER_WIDTH+5,        COMBO_HEIGHT, x+=RECORDER_WIDTH+5+SEP_WIDTH, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, getJLabel_encoderemptywarn(""), LABEL_WIDTH, PARTS_HEIGHT, x+=ENCODER_WIDTH+5+SEP_WIDTH+5, y+PARTS_HEIGHT);\r
+\r
+                       // ポップアップした時に追加される幅\r
+                       jCBXPanel_recorder.addPopupWidth(100);\r
+                       jCBXPanel_encoder.addPopupWidth(100);\r
+\r
+                       y += COMBO_HEIGHT+SEP_HEIGHT*2;\r
+                       x = SEP_WIDTH_NARROW;\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_genre = new JComboBoxPanel("ジャンル",110,150),                         COMBO_WIDTH_WIDE,       COMBO_HEIGHT, x, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_subgenre = new JComboBoxPanel("サブジャンル",110,150),                        COMBO_WIDTH_WIDE,       COMBO_HEIGHT, x+=(COMBO_WIDTH_WIDE+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_autodel = new JComboBoxPanel("自動削除",110,110),                       COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH)*2, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_xChapter = new JComboBoxPanel("無音部分チャプタ分割",110,110), COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+                       \r
+                       y += COMBO_HEIGHT;\r
+                       x = SEP_WIDTH_NARROW;\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_videorate = new JComboBoxPanel("画質",110,150),                           COMBO_WIDTH_WIDE,       COMBO_HEIGHT, x, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_audiorate = new JComboBoxPanel("音質",110,110),                           COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH_WIDE+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_bvperf = new JComboBoxPanel("高レート節約",110,110),                  COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_lvoice = new JComboBoxPanel("ライン音声選択",110,110),                       COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_msChapter = new JComboBoxPanel("DVD/シーンチャプタ分割",110,110),       COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+                       \r
+                       y += COMBO_HEIGHT;\r
+                       x = SEP_WIDTH_NARROW;\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_folder = new JComboBoxPanel("記録先フォルダ",100,150),                       COMBO_WIDTH_WIDE,       COMBO_HEIGHT, x, y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_device = new JComboBoxPanel("記録先デバイス",110,110),                       COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH_WIDE+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_dvdcompat = new JComboBoxPanel("BD/DVD互換モード",110,110),    COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_aspect = new JComboBoxPanel("DVD記録時画面比",110,110),               COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_mvChapter = new JComboBoxPanel("音多/本編チャプタ分割",110,110),       COMBO_WIDTH,            COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);\r
+\r
+                       y += COMBO_HEIGHT;\r
+                       //x = SEP_WIDTH_NARROW;\r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCBXPanel_pursues = new JComboBoxPanel("番組追従",110,110), COMBO_WIDTH, COMBO_HEIGHT, x, y);\r
+                       \r
+                       CommonSwingUtils.putComponentOn(jPane_recsetting, jCheckBox_Exec = new JCheckBoxPanel("予約実行",75,true), 75, PARTS_HEIGHT, x+COMBO_WIDTH+SEP_WIDTH*2, y+PARTS_HEIGHT);\r
+                       \r
+                       jCheckBox_Exec.setSelected(true);\r
+\r
+                       y += COMBO_HEIGHT;\r
+                       \r
+                       // 特殊配置\r
+                       {\r
+                               int spy = SEP_HEIGHT_NALLOW+(PARTS_HEIGHT+SEP_HEIGHT_NALLOW)*2;\r
+                               x = SEP_WIDTH_NARROW+(COMBO_WIDTH_WIDE+SEP_WIDTH)+(COMBO_WIDTH+SEP_WIDTH)*4+SEP_WIDTH;\r
+                               \r
+                               if (env.getEnableCHAVsetting()) {\r
+                                       CommonSwingUtils.putComponentOn(jPane_recsetting, new JLabel("放送局別の"), LABEL_WIDTH, PARTS_HEIGHT, x, spy);\r
+                               }\r
+                               else {\r
+                                       CommonSwingUtils.putComponentOn(jPane_recsetting, new JLabel("ジャンル別の"), LABEL_WIDTH, PARTS_HEIGHT, x, spy);\r
+                               }\r
+                               \r
+                               spy+=PARTS_HEIGHT-5;\r
+                               CommonSwingUtils.putComponentOn(jPane_recsetting, getJLabel_rectype("録画設定の選択"),   LABEL_WIDTH,  PARTS_HEIGHT, x, spy);\r
+                               CommonSwingUtils.putComponentOn(jPane_recsetting, getJButton_load("開く"),                            BUTTON_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, spy+=PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_recsetting, getJButton_save("保存"),                            BUTTON_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, spy+=PARTS_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPane_recsetting, getJButton_savedefault("既定化"),          BUTTON_WIDTH, PARTS_HEIGHT, x+SEP_WIDTH_NARROW, spy+=(PARTS_HEIGHT+SEP_HEIGHT));\r
                        }\r
-                       y+=17;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJLabel_rectype("録画設定の選択"), LABEL_WIDTH, PARTS_HEIGHT, 655, y);\r
-                       y += PARTS_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_load("開く"), 75, PARTS_HEIGHT, 660, y);\r
-                       y += 30;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_save("保存"), 75, PARTS_HEIGHT, 660, y);\r
-                       y += 40;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_savedefault("既定化"), 75, PARTS_HEIGHT, 660, y);\r
-                       \r
-                       // 特殊配置(2)\r
-                       y = spHeight2+20;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, new JLabel("予約"), LABEL_WIDTH, PARTS_HEIGHT, 655, y);\r
-                       y += PARTS_HEIGHT;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_record("新規"), 75, PARTS_HEIGHT, 660, y);\r
-                       y += 30;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_update("更新"), 75, PARTS_HEIGHT, 660, y);\r
-                       y += 30;\r
-                       CommonSwingUtils.putComponentOn(jContentPane_rsv, getJButton_cancel("キャンセル"), 75, PARTS_HEIGHT, 660, y);\r
+                       \r
+                       x+=BUTTON_WIDTH+SEP_WIDTH_NARROW*2;\r
+                       \r
+                       Dimension d = new Dimension(x,y);\r
+                       jPane_recsetting.setPreferredSize(d);\r
+\r
                }\r
-               return jContentPane_rsv;\r
+               return jPane_recsetting;\r
+       }\r
+\r
+       private JScrollPane getJPane_likersv() {\r
+               if (jPane_likersv == null ) {\r
+                       jPane_likersv = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);\r
+                       //jPane_likersv.setBorder(new LineBorder(Color.BLACK, 1));\r
+                       jPane_likersv.setRowHeaderView(likersvrowheader = new LikeRsvRowHeader());\r
+                       jPane_likersv.setViewportView(getLikeRsvTable());\r
+                       \r
+                       Dimension dh = new Dimension(LRT_HEADER_WIDTH,0);\r
+                       jPane_likersv.getRowHeader().setPreferredSize(dh);\r
+                       \r
+                       jPane_likersv.getRowHeader().setVisible(true);\r
+                       \r
+                       Dimension d = new Dimension(LIKELIST_WIDTH, PARTS_HEIGHT*LIKELIST_ROWS);\r
+                       jPane_likersv.setPreferredSize(d);\r
+               }\r
+               return jPane_likersv;\r
        }\r
        \r
        private JLabel getJLabel_date(String s)\r
@@ -2940,15 +3024,6 @@ abstract class AbsReserveDialog extends JDialog {
                return(jLabel_ch);\r
        }\r
        \r
-       private JLabel getJLabel_encoder(String s)\r
-       {\r
-               if (jLabel_encoder == null) {\r
-                       jLabel_encoder = new JLabel();\r
-                       jLabel_encoder.setText(s);\r
-               }\r
-               return(jLabel_encoder);\r
-       }\r
-       \r
        private JLabel getJLabel_encoderemptywarn(String s)\r
        {\r
                if (jLabel_encoderemptywarn == null) {\r
@@ -2961,15 +3036,6 @@ abstract class AbsReserveDialog extends JDialog {
                return(jLabel_encoderemptywarn);\r
        }\r
 \r
-       private JLabel getJLabel_recorders(String s)\r
-       {\r
-               if (jLabel_recorders == null) {\r
-                       jLabel_recorders = new JLabel();\r
-                       jLabel_recorders.setText(s);\r
-               }\r
-               return(jLabel_recorders);\r
-       }\r
-       \r
        private JLabel getJLabel_ahh(String s)\r
        {\r
                if (jLabel_ahh == null) {\r
@@ -3028,21 +3094,6 @@ abstract class AbsReserveDialog extends JDialog {
                return jComboBox_ch;\r
        }\r
        \r
-       private JComboBox getJComboBox_encoder() {\r
-               if (jComboBox_encoder == null) {\r
-                       jComboBox_encoder = new JWideComboBox();\r
-                       jComboBox_encoder.addPopupWidth(100);\r
-               }\r
-               return jComboBox_encoder;\r
-       }\r
-       \r
-       private JComboBox getJComboBox_recorder() {\r
-               if (jComboBox_recorder == null) {\r
-                       jComboBox_recorder = new JComboBox();\r
-               }\r
-               return jComboBox_recorder;\r
-       }\r
-\r
        // 開始時刻\r
        private JTextField getJTextField_Xahh() {\r
                if (jTextField_Xahh == null) {\r
@@ -3189,20 +3240,6 @@ abstract class AbsReserveDialog extends JDialog {
                return(jButton_Xreset);\r
        }\r
        \r
-       private JScrollPane getLikeRsvPane() {\r
-               if (likersvpane == null ) {\r
-                       likersvpane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);\r
-                       likersvpane.setRowHeaderView(likersvrowheader = new LikeRsvRowHeader());\r
-                       likersvpane.setViewportView(getLikeRsvTable());\r
-                       \r
-                       Dimension d = new Dimension(LRT_HEADER_WIDTH,0);\r
-                       likersvpane.getRowHeader().setPreferredSize(d);\r
-                       \r
-                       likersvpane.getRowHeader().setVisible(true);\r
-               }\r
-               return likersvpane;\r
-       }\r
-       \r
        private LikeRsvTable getLikeRsvTable() {\r
                if (likersvtable == null) {\r
                        \r
index 53dad62..b97a772 100644 (file)
@@ -138,7 +138,7 @@ public abstract class AbsReserveListView extends JScrollPane {
        //private void StWinSetVisible(boolean b) { StWin.setVisible(b); }\r
        //private void StWinSetLocationCenter(Component frame) { CommonSwingUtils.setLocationCenter(frame, (VWStatusWindow)StWin); }\r
 \r
-       ImageIcon execicon = new ImageIcon(ICONFILE_EXEC);\r
+       private final ImageIcon execicon = new ImageIcon(ICONFILE_EXEC);\r
                        \r
        /**\r
         * カラム定義\r
@@ -820,7 +820,7 @@ public abstract class AbsReserveListView extends JScrollPane {
                        VWColorCharCellRenderer renderer = new VWColorCharCellRenderer(JLabel.CENTER); \r
                        if ( CommonUtils.isMac() ) renderer.setMacMarkFont();\r
                        jTable_rsved.getColumn(RsvedColumn.DUPMARK.toString()).setCellRenderer(renderer);\r
-                       ButtonColumn buttonColumn = new ButtonColumn();\r
+                       ButtonColumn buttonColumn = new ButtonColumn(execicon);\r
                        jTable_rsved.getColumn(RsvedColumn.EXEC.toString()).setCellRenderer(buttonColumn);\r
                        jTable_rsved.getColumn(RsvedColumn.EXEC.toString()).setCellEditor(buttonColumn);\r
                        jTable_rsved.getColumn(RsvedColumn.EXEC.toString()).setResizable(false);\r
@@ -957,61 +957,32 @@ public abstract class AbsReserveListView extends JScrollPane {
        /**\r
         * EXECボタン\r
         */\r
-       private class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { \r
+       private class ButtonColumn extends AbstractExecButtonColumn {\r
 \r
                private static final long serialVersionUID = 1L;\r
 \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
-                       \r
-                       editorButton = new JButton(LABEL);\r
-                       editorButton.addActionListener(al_toggle);\r
+               // コンストラクタ\r
+               public ButtonColumn(ImageIcon icon) {\r
+                       super(icon);\r
                }\r
                \r
-               private final ActionListener al_toggle = new ActionListener() {\r
+               @Override\r
+               protected void toggleAction(ActionEvent e) {\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 = ((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
-                               }\r
-                               \r
-                               jTable_rsved.clearSelection();\r
-                               jTable_rsved.setRowSelectionInterval(vrow, vrow);\r
+                       fireEditingStopped();\r
+                       \r
+                       int vrow = jTable_rsved.getSelectedRow();\r
+                       int row = jTable_rsved.convertRowIndexToModel(vrow);\r
+                       \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
                        }\r
-               };\r
-               \r
-               public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\r
-                       renderButton.setIcon((Boolean) value ? execicon : null);\r
-                       renderButton.setPressedIcon((Boolean) value ? execicon : null);\r
-                       return renderButton;\r
-               }\r
-               \r
-               public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { \r
-                       editorButton.setIcon((Boolean) value ? execicon : null);\r
-                       editorButton.setPressedIcon((Boolean) value ? execicon : null);\r
-                       return editorButton;\r
-               }\r
-               \r
-               public Object getCellEditorValue() {\r
-                       return renderButton.getIcon() != null; \r
+                       \r
+                       jTable_rsved.clearSelection();\r
+                       jTable_rsved.setRowSelectionInterval(vrow, vrow);\r
                }\r
        }\r
 }\r
diff --git a/TinyBannavi/src/tainavi/AbstractExecButtonColumn.java b/TinyBannavi/src/tainavi/AbstractExecButtonColumn.java
new file mode 100644 (file)
index 0000000..1fb3112
--- /dev/null
@@ -0,0 +1,79 @@
+package tainavi;\r
+\r
+import java.awt.Component;\r
+import java.awt.Insets;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\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.JTable;\r
+import javax.swing.table.TableCellEditor;\r
+import javax.swing.table.TableCellRenderer;\r
+\r
+\r
+/**\r
+ * JTableのセルに張り付けるON・OFFトグルボタン\r
+ */\r
+public abstract class AbstractExecButtonColumn  extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {\r
+\r
+       private static final long serialVersionUID = 1L;\r
+\r
+       /**\r
+        * トグル時に処理を実行するメソッド\r
+        */\r
+       protected abstract void toggleAction(ActionEvent e);\r
+       \r
+       // 定数\r
+       private static final String LABEL = ""; // ""にしないとボタンに文字が\r
+       \r
+       // 部品\r
+       private final ImageIcon icon;\r
+       private final JButton renderButton;\r
+       private final JButton editorButton;\r
+       \r
+       /**\r
+        * コンストラクタ\r
+        */\r
+       public AbstractExecButtonColumn(ImageIcon icon) {\r
+               super();\r
+\r
+               this.icon = icon;\r
+               \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
+               \r
+               editorButton = new JButton(LABEL);\r
+               editorButton.addActionListener(al_toggle);\r
+       }\r
+       \r
+       private final ActionListener al_toggle = new ActionListener() {\r
+               @Override\r
+               public void actionPerformed(ActionEvent e) {\r
+                       toggleAction(e);\r
+               }\r
+       };\r
+\r
+       @Override\r
+       public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\r
+               renderButton.setIcon((Boolean) value ? icon : null);\r
+               renderButton.setPressedIcon((Boolean) value ? icon : null);\r
+               return renderButton;\r
+       }\r
+       \r
+       @Override\r
+       public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { \r
+               editorButton.setIcon((Boolean) value ? icon : null);\r
+               editorButton.setPressedIcon((Boolean) value ? icon : null);\r
+               return editorButton;\r
+       }\r
+       \r
+       @Override\r
+       public Object getCellEditorValue() {\r
+               return renderButton.getIcon() != null; \r
+       }\r
+}\r
index bf00432..727d880 100644 (file)
@@ -69,6 +69,8 @@ public class AutoReserveInfo implements Cloneable {
         *  SHOWN PARAMS\r
         */\r
        \r
+       private boolean exec;                           // 有効・無効\r
+       \r
        private String label;                                   // 一覧表示用\r
        \r
        private String keyword;                                 // 絞り込みキーワード\r
@@ -84,12 +86,14 @@ public class AutoReserveInfo implements Cloneable {
        private boolean recordedCheck;                  // 録画済み無効[E]\r
        private int recordedCheckTerm;                  // 録画済み無効遡り範囲[E]\r
        \r
-       private String adate;                                   // 開始日[T]\r
-       private String zdate;                                   // 終了日[T]\r
+       private String adate;                                   // 条件の開始日[T]\r
+       private String zdate;                                   // 条件の終了日[T]\r
+       \r
+       private ArrayList<String> chNames = new ArrayList<String>();                            // チャンネル名 ※Web番組表の放送局名でどうぞ\r
+       private ArrayList<String> chCodes = new ArrayList<String>();                            // CHコード ※[E]予約操作時と同じ、[T]コントローラの値と同じ(ただしこちらはHEX表記でのやりとりとなる)\r
        \r
-       private ArrayList<String> chNames = new ArrayList<String>();                            // チャンネル名 ※CHコード:[E]予約操作時と同じ、[T]コントローラの値と同じ(ただしこちらはHEX表記)\r
        private ArrayList<ProgSubgenre> subgenres = new ArrayList<ProgSubgenre>();      // ジャンル\r
-       private ArrayList<ProgOption> options =  new ArrayList<ProgOption>();           // 番組属性 ※[E]無料/有料のみ\r
+       private ArrayList<ProgOption> options =  new ArrayList<ProgOption>();           // 番組属性 ※[E]無料/有料のみ、[T]そこはかとなく任意\r
        \r
        private ReserveInfo recSetting;                         // 録画設定\r
 \r
@@ -101,6 +105,9 @@ public class AutoReserveInfo implements Cloneable {
        public String getId() { return id; }\r
        public void setId(String s) { id = s; }\r
        \r
+       public boolean getExec() { return exec; }\r
+       public void setExec(boolean b) { exec = b; }\r
+       \r
        public String getLabel() { return label; }\r
        public void setLabel(String s) { label = s; }\r
 \r
@@ -126,7 +133,13 @@ public class AutoReserveInfo implements Cloneable {
         * 使用しない曜日の場合はnullを代入する\r
         */\r
        public ArrayList<String> getTimeslots() { return timeslots; }\r
-       public ArrayList<String> getChannels() { return chNames; }\r
+       public void setTimeslots(ArrayList<String> a) { timeslots = a; }\r
+       \r
+       //public ArrayList<String> getChannels() { return chNames; }    // 表示用のデータなのでファイル出力しない\r
+       //public void getChannels(ArrayList<String> a) { chNames = a; }\r
+       \r
+       public ArrayList<String> getChCodes() { return chCodes; }\r
+       public void setChCodes(ArrayList<String> a) { chCodes = a; }\r
        \r
        public ReserveInfo getRecSetting() { return recSetting; }\r
        public void setRecSetting(ReserveInfo r) { recSetting = r; } \r
@@ -135,7 +148,25 @@ public class AutoReserveInfo implements Cloneable {
         * extra\r
         ******************************************************************************/\r
        \r
-       public String getChNames() { return (chNames.size() > 0) ? chNames.get(0) : null; }\r
-\r
+       /**\r
+        * CHコード→放送局名変換の結果を設定する\r
+        */\r
+       public void addChName(String chName) { chNames.add(chName); }\r
+       public void clearChNames() { chNames.clear(); }\r
+       \r
+       /**\r
+        * テーブルの放送局欄に表示する値を取得する\r
+        */\r
+       public String getChName() {\r
+               if ( chNames.size() >= 2 ) {\r
+                       return chNames.get(0)+" ほか";        // 複数局あるなら何個かピックアップしたいよね\r
+               }\r
+               else if ( chNames.size() >= 1 ) {\r
+                       return chNames.get(0);\r
+               }\r
+               else {\r
+                       return null;\r
+               }\r
+       }\r
 \r
 }\r
index fbb29b5..db173a4 100644 (file)
@@ -984,9 +984,17 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        }\r
 \r
        /**\r
-        * 自動予約一覧の置き換え\r
+        * <P>自動予約一覧の置き換え\r
+        * <P>chCode→chName変換もこの中でやる\r
         */\r
        protected void setAutoReserves(AutoReserveInfoList l) {\r
+               for ( AutoReserveInfo r : l ) {\r
+                       r.clearChNames();\r
+                       for ( String chCode : r.getChCodes() ) {\r
+                               String chName = getChCode().getCH_CODE2WEB(chCode);\r
+                               r.addChName((chName!=null) ? chName : chCode);\r
+                       }\r
+               }\r
                AUTORESERVES = l;\r
        }\r
        \r
index d96c9e8..f786a1b 100644 (file)
@@ -12,7 +12,7 @@ import javax.swing.JComboBox;
 import javax.swing.JLabel;\r
 import javax.swing.JPanel;\r
 \r
-public class JComboBoxPanel extends JPanel implements ItemSelectable {\r
+public class JComboBoxPanel extends JPanel implements ItemSelectable,WideComponent {\r
 \r
        private static final long serialVersionUID = 1L;\r
 \r
@@ -140,6 +140,11 @@ public class JComboBoxPanel extends JPanel implements ItemSelectable {
        }\r
        \r
        // オーバーライド\r
+\r
+       @Override\r
+       public void addPopupWidth(int w) {\r
+               this.jcombobox.addPopupWidth(w);\r
+       }\r
        \r
        @Override\r
        public void addItemListener(ItemListener l) {\r
index 78114d2..66b02b2 100644 (file)
@@ -50,7 +50,9 @@ public class JListSortDialog extends JDialog {
                // タイトルバーの高さも考慮する必要がある\r
                Dimension d = jpan.getPreferredSize();\r
                this.pack();\r
-               this.setPreferredSize(new Dimension(d.width, d.height+this.getInsets().top));\r
+               this.setPreferredSize(new Dimension(\r
+                               d.width+(this.getInsets().left+this.getInsets().right),\r
+                               d.height+(this.getInsets().top+this.getInsets().bottom)));\r
                this.setResizable(false);\r
        }\r
        \r
index 8d343ef..83f761b 100644 (file)
@@ -12,7 +12,7 @@ import javax.swing.JList;
 /**\r
  * コンボボックスの幅よりポップアップの幅を広げる\r
  */\r
-public class JWideComboBox extends JComboBox {\r
+public class JWideComboBox extends JComboBox implements WideComponent {\r
        \r
        private static final long serialVersionUID = 1L;\r
        \r
@@ -52,12 +52,13 @@ public class JWideComboBox extends JComboBox {
     \r
        private int w = 50;\r
        \r
+       @Override\r
        public void addPopupWidth(int w) {\r
                this.w = w;\r
        }\r
        \r
        @Override\r
-       public void doLayout() { \r
+       public void doLayout() {\r
                try { \r
                        layingOut = true; \r
                        super.doLayout(); \r
index e0e334d..8a854ba 100644 (file)
@@ -1550,6 +1550,7 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
        private boolean getAutorsvDetailAll(AutoReserveInfoList newAutoReserveList) {\r
                \r
                String url = "http://"+getIPAddr()+":"+getPortNo()+"/autoaddepginfo.html?id=";\r
+               String pstr = "presetID=65535&dataID=";\r
                \r
                int cnt = 0;\r
                for ( AutoReserveInfo c : newAutoReserveList ) {\r
@@ -1557,7 +1558,7 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
                        ++cnt;\r
                        \r
                        reportProgress(String.format("自動予約詳細を取得します(%d/%d)",cnt,newAutoReserveList.size()));\r
-                       String[] d = reqGET(url+c.getId(),null);\r
+                       String[] d = reqPOST(url+c.getId(), pstr+c.getId(), null);\r
                        if (d[1] == null) {\r
                                errmsg = "レコーダーが反応しません";\r
                                return false;\r
@@ -1624,8 +1625,10 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
                                                // 放送局\r
                                                Matcher mc = Pattern.compile("<option value=\"(\\d+?)\" selected>", Pattern.DOTALL).matcher(mb.group(2));\r
                                                while ( mc.find() ) {\r
-                                                       String chName = cc.getCH_CODE2WEB(mc.group(1));\r
-                                                       c.getChannels().add((chName!=null) ? chName : mc.group(1));\r
+                                                       String chCode = mc.group(1);\r
+                                                       c.getChCodes().add(chCode);\r
+                                                       \r
+                                                       // code->name変換は setAutoReserves() 内で行う\r
                                                }\r
                                        }\r
                                        \r
@@ -1638,6 +1641,8 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
                        ReserveInfo r = new ReserveInfo();\r
                        decodeRsvDetail(r, data[1], null);\r
                        c.setRecSetting(r);\r
+                       \r
+                       c.setExec(r.getExec());\r
                }\r
                \r
                return true;\r
index 3a3587a..bf1b3dd 100644 (file)
@@ -44,7 +44,9 @@ public class VWColorChooserDialog extends JDialog {
                // タイトルバーの高さも考慮する必要がある\r
                Dimension d = getJPanel().getPreferredSize();\r
                this.pack();\r
-               this.setPreferredSize(new Dimension(d.width, d.height+this.getInsets().top));\r
+               this.setPreferredSize(new Dimension(\r
+                               d.width+(this.getInsets().left+this.getInsets().right),\r
+                               d.height+(this.getInsets().top+this.getInsets().bottom)));\r
                this.setResizable(false);\r
                \r
                //\r
index d6f2fe0..69ff50b 100644 (file)
@@ -150,7 +150,9 @@ public class VWKeywordGroupDialog extends JDialog {
                // タイトルバーの高さも考慮する必要がある\r
                Dimension d = getJPanel().getPreferredSize();\r
                this.pack();\r
-               this.setPreferredSize(new Dimension(d.width, d.height+this.getInsets().top));\r
+               this.setPreferredSize(new Dimension(\r
+                               d.width+(this.getInsets().left+this.getInsets().right),\r
+                               d.height+(this.getInsets().top+this.getInsets().bottom)));\r
                this.setResizable(false);\r
                //\r
                this.setTitle("キーワードグループの設定");\r
index 277cb2c..50a9f7d 100644 (file)
@@ -324,7 +324,11 @@ public class VWTraceKeyDialog extends JDialog {
                // タイトルバーの高さも考慮する必要がある\r
                Dimension d = getJPanel().getPreferredSize();\r
                this.pack();\r
-               this.setBounds(x, y, d.width, d.height+this.getInsets().top);\r
+               this.setBounds(\r
+                               x,\r
+                               y, \r
+                               d.width+(this.getInsets().left+this.getInsets().right),\r
+                               d.height+(this.getInsets().top+this.getInsets().bottom));\r
                this.setResizable(false);\r
                //\r
                this.setTitle("番組追跡の設定");\r
diff --git a/TinyBannavi/src/tainavi/WideComponent.java b/TinyBannavi/src/tainavi/WideComponent.java
new file mode 100644 (file)
index 0000000..1101892
--- /dev/null
@@ -0,0 +1,7 @@
+package tainavi;\r
+\r
+public interface WideComponent {\r
+\r
+       public void addPopupWidth(int w);\r
+       \r
+}\r
index 5e7ddcf..d9b7d9f 100644 (file)
@@ -13,6 +13,8 @@
 \r
 【新聞形式】snapshotで落ちる →バグじゃないかも?\r
 \r
+【番組追跡】リピート放送検出の改善>番組追跡履歴の保存  →帯での再放送だと、リピート放送検出がうまくないので\r
+\r
 ---優先度高\r
 \r
 【自動予約登録】EDCBとTVRockの自動予約登録編集機能の追加(~6月中旬厳守) やばい!やばい!やばい!\r
@@ -23,7 +25,6 @@
 【過去ログ】日時ファイル単位での管理をやめる →放送局名の変更に対応できていないので\r
 \r
 【CHコンバート設定】さっさと編集を実装する →2012/11月から放置だから…\r
-【番組追跡】リピート放送検出の改善>番組追跡履歴の保存 \r
 【レコーダ対応(EDCB/TvRock)】番組IDの取得をレコーダから取得するように変更 →番組表がとれるので、そこから探し出すようにする\r
 【レコーダ対応(TVRock)】UTF-8→ShiftJISに変換できない文字が化けるので、他の文字で置換するようにする →ちるだとかなー\r
 \r