OSDN Git Service

MIDI Editor の表のセル幅調整
[midichordhelper/MIDIChordHelper.git] / src / MIDIEditor.java
index ff9f50b..46ab1c3 100644 (file)
@@ -82,6 +82,7 @@ import javax.swing.table.JTableHeader;
 import javax.swing.table.TableCellEditor;\r
 import javax.swing.table.TableCellRenderer;\r
 import javax.swing.table.TableColumn;\r
+import javax.swing.table.TableColumnModel;\r
 import javax.swing.table.TableModel;\r
 \r
 /**\r
@@ -263,6 +264,9 @@ class MidiEditor extends JDialog implements DropTargetListener {
                                        }\r
                                };\r
                        }\r
+                       TableColumnModel colModel = getColumnModel();\r
+                       for( SequenceListTableModel.Column c : SequenceListTableModel.Column.values() )\r
+                               colModel.getColumn(c.ordinal()).setPreferredWidth(c.preferredWidth);\r
                }\r
                @Override\r
                public void tableChanged(TableModelEvent event) {\r
@@ -276,7 +280,9 @@ class MidiEditor extends JDialog implements DropTargetListener {
                        // 列モデルからではヘッダタイトルが再描画されないことがある。\r
                        // そこで、ヘッダビューから repaint() で突っついて再描画させる。\r
                        JTableHeader th = getTableHeader();\r
-                       if( th != null ) th.repaint();\r
+                       if( th != null ) {\r
+                               th.repaint();\r
+                       }\r
                }\r
                /**\r
                 * プレイボタンを埋め込んだセルエディタ\r
@@ -489,6 +495,9 @@ class MidiEditor extends JDialog implements DropTargetListener {
                        trackSelectionListener = new TrackSelectionListener();\r
                        titleLabel = new TitleLabel();\r
                        model.sequenceListTableModel.sequenceListSelectionModel.addListSelectionListener(titleLabel);\r
+                       TableColumnModel colModel = getColumnModel();\r
+                       for( SequenceTrackListTableModel.Column c : SequenceTrackListTableModel.Column.values() )\r
+                               colModel.getColumn(c.ordinal()).setPreferredWidth(c.preferredWidth);\r
                }\r
                /**\r
                 * このテーブルビューが表示するデータを提供する\r
@@ -609,6 +618,10 @@ class MidiEditor extends JDialog implements DropTargetListener {
                        //\r
                        eventSelectionListener = new EventSelectionListener();\r
                        titleLabel = new TitleLabel();\r
+                       //\r
+                       TableColumnModel colModel = getColumnModel();\r
+                       for( TrackEventListTableModel.Column c : TrackEventListTableModel.Column.values() )\r
+                               colModel.getColumn(c.ordinal()).setPreferredWidth(c.preferredWidth);\r
                }\r
                /**\r
                 * このテーブルビューが表示するデータを提供する\r
@@ -1470,21 +1483,21 @@ class SequenceListTableModel extends AbstractTableModel {
         */\r
        public enum Column {\r
                /** MIDIシーケンスの番号 */\r
-               SEQ_NUMBER("No.", Integer.class),\r
+               SEQ_NUMBER("No.", Integer.class, 20),\r
                /** 変更済みフラグ */\r
-               MODIFIED("Modified", Boolean.class) {\r
+               MODIFIED("Modified", Boolean.class, 50) {\r
                        @Override\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
                                return sequenceModel.isModified();\r
                        }\r
                },\r
                /** 再生ボタン */\r
-               SEQ_PLAY("Sequencer", String.class) {\r
+               SEQ_PLAY("Play/Stop", String.class, 60) {\r
                        @Override\r
                        public boolean isCellEditable() { return true; }\r
                },\r
                /** 再生中の時間位置(分:秒) */\r
-               SEQ_POSITION("Position", String.class) {\r
+               SEQ_POSITION("Position", String.class, 60) {\r
                        @Override\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
                                return sequenceModel.isOnSequencer()\r
@@ -1492,7 +1505,7 @@ class SequenceListTableModel extends AbstractTableModel {
                        }\r
                },\r
                /** シーケンスの時間長(分:秒) */\r
-               SEQ_LENGTH("Length", String.class) {\r
+               SEQ_LENGTH("Length", String.class, 80) {\r
                        @Override\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
                                long usec = sequenceModel.getSequence().getMicrosecondLength();\r
@@ -1501,7 +1514,7 @@ class SequenceListTableModel extends AbstractTableModel {
                        }\r
                },\r
                /** ファイル名 */\r
-               FILENAME("Filename", String.class) {\r
+               FILENAME("Filename", String.class, 100) {\r
                        @Override\r
                        public boolean isCellEditable() { return true; }\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
@@ -1510,7 +1523,7 @@ class SequenceListTableModel extends AbstractTableModel {
                        }\r
                },\r
                /** シーケンス名(最初のトラックの名前) */\r
-               SEQ_NAME("Sequence name", String.class) {\r
+               SEQ_NAME("Sequence name", String.class, 250) {\r
                        @Override\r
                        public boolean isCellEditable() { return true; }\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
@@ -1519,21 +1532,21 @@ class SequenceListTableModel extends AbstractTableModel {
                        }\r
                },\r
                /** タイミング解像度 */\r
-               RESOLUTION("Resolution", Integer.class) {\r
+               RESOLUTION("Resolution", Integer.class, 60) {\r
                        @Override\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
                                return sequenceModel.getSequence().getResolution();\r
                        }\r
                },\r
                /** トラック数 */\r
-               TRACKS("Tracks", Integer.class) {\r
+               TRACKS("Tracks", Integer.class, 40) {\r
                        @Override\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
                                return sequenceModel.getSequence().getTracks().length;\r
                        }\r
                },\r
                /** タイミング分割形式 */\r
-               DIVISION_TYPE("DivType", String.class) {\r
+               DIVISION_TYPE("DivType", String.class, 50) {\r
                        @Override\r
                        public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
                                float divType = sequenceModel.getSequence().getDivisionType();\r
@@ -1547,14 +1560,16 @@ class SequenceListTableModel extends AbstractTableModel {
                };\r
                String title;\r
                Class<?> columnClass;\r
+               int preferredWidth;\r
                /**\r
                 * 列の識別子を構築します。\r
                 * @param title 列のタイトル\r
                 * @param columnClass 列のクラス\r
                 */\r
-               private Column(String title, Class<?> columnClass) {\r
+               private Column(String title, Class<?> columnClass, int preferredWidth) {\r
                        this.title = title;\r
                        this.columnClass = columnClass;\r
+                       this.preferredWidth = preferredWidth;\r
                }\r
                public boolean isCellEditable() { return false; }\r
                public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
@@ -1872,30 +1887,32 @@ class SequenceTrackListTableModel extends AbstractTableModel {
         */\r
        public enum Column {\r
                /** トラック番号 */\r
-               TRACK_NUMBER("No.", Integer.class),\r
+               TRACK_NUMBER("No.", Integer.class, 20),\r
                /** イベント数 */\r
-               EVENTS("Events", Integer.class),\r
+               EVENTS("Events", Integer.class, 40),\r
                /** Mute */\r
-               MUTE("Mute", Boolean.class),\r
+               MUTE("Mute", Boolean.class, 30),\r
                /** Solo */\r
-               SOLO("Solo", Boolean.class),\r
+               SOLO("Solo", Boolean.class, 30),\r
                /** 録音するMIDIチャンネル */\r
-               RECORD_CHANNEL("RecCh", String.class),\r
+               RECORD_CHANNEL("RecCh", String.class, 40),\r
                /** MIDIチャンネル */\r
-               CHANNEL("Ch", String.class),\r
+               CHANNEL("Ch", String.class, 30),\r
                /** トラック名 */\r
-               TRACK_NAME("Track name", String.class);\r
+               TRACK_NAME("Track name", String.class, 100);\r
                String title;\r
                Class<?> columnClass;\r
+               int preferredWidth;\r
                /**\r
                 * 列の識別子を構築します。\r
                 * @param title 列のタイトル\r
                 * @param widthRatio 幅の割合\r
                 * @param columnClass 列のクラス\r
                 */\r
-               private Column(String title, Class<?> columnClass) {\r
+               private Column(String title, Class<?> columnClass, int preferredWidth) {\r
                        this.title = title;\r
                        this.columnClass = columnClass;\r
+                       this.preferredWidth = preferredWidth;\r
                }\r
        }\r
        /**\r
@@ -2247,28 +2264,30 @@ class TrackEventListTableModel extends AbstractTableModel {
         */\r
        public enum Column {\r
                /** MIDIイベント番号 */\r
-               EVENT_NUMBER("No.", Integer.class),\r
+               EVENT_NUMBER("No.", Integer.class, 20),\r
                /** tick位置 */\r
-               TICK_POSITION("TickPos.", Long.class),\r
+               TICK_POSITION("TickPos.", Long.class, 40),\r
                /** tick位置に対応する小節 */\r
-               MEASURE_POSITION("Measure", Integer.class),\r
+               MEASURE_POSITION("Measure", Integer.class, 40),\r
                /** tick位置に対応する拍 */\r
-               BEAT_POSITION("Beat", Integer.class),\r
+               BEAT_POSITION("Beat", Integer.class, 20),\r
                /** tick位置に対応する余剰tick(拍に収まらずに余ったtick数) */\r
-               EXTRA_TICK_POSITION("ExTick", Integer.class),\r
+               EXTRA_TICK_POSITION("ExTick", Integer.class, 20),\r
                /** MIDIメッセージ */\r
-               MESSAGE("MIDI Message", String.class);\r
+               MESSAGE("MIDI Message", String.class, 200);\r
                private String title;\r
                private Class<?> columnClass;\r
+               int preferredWidth;\r
                /**\r
                 * 列の識別子を構築します。\r
                 * @param title 列のタイトル\r
                 * @param widthRatio 幅の割合\r
                 * @param columnClass 列のクラス\r
                 */\r
-               private Column(String title, Class<?> columnClass) {\r
+               private Column(String title, Class<?> columnClass, int preferredWidth) {\r
                        this.title = title;\r
                        this.columnClass = columnClass;\r
+                       this.preferredWidth = preferredWidth;\r
                }\r
        }\r
        /**\r