OSDN Git Service

リファクタリング:MIDIデバイスのListView/ListModel関連のクラス階層を最適化
[midichordhelper/MIDIChordHelper.git] / src / camidion / chordhelper / mididevice / TransceiverListView.java
1 package camidion.chordhelper.mididevice;
2
3 import java.awt.Point;
4 import java.awt.Rectangle;
5
6 import javax.sound.midi.Receiver;
7 import javax.sound.midi.Transmitter;
8 import javax.swing.JList;
9 import javax.swing.ListSelectionModel;
10
11 /**
12  * MIDIレシーバ({@link Receiver})またはMIDIトランスミッタ({@link Transmitter})のリストを表示する基底の抽象リストビューです。
13  */
14 public abstract class TransceiverListView<E> extends JList<E> {
15         /**
16          * このリストによって表示されるリストを保持するデータモデルを返します。
17          * @return 表示されるリストを提供するデータモデル
18          */
19         @Override
20         public TransceiverListModel<E> getModel() {
21                 return (TransceiverListModel<E>) super.getModel();
22         }
23         /**
24          * このリストの座標系内の指定された位置にある要素を返します。
25          * @param p 位置
26          */
27         public E getElementAt(Point p) {
28                 return getModel().getElementAt(locationToIndex(p));
29         }
30         /**
31          * 引数で指定された{@link Receiver}または{@link Transmitter}のセル範囲を示す、
32          * リストの座標系内の境界の矩形を返します。対応するセルがない場合はnullを返します。
33          * @param trx {@link Receiver}または{@link Transmitter}
34          * @return セル範囲を示す境界の矩形、またはnull
35          */
36         public Rectangle getCellBounds(E trx) {
37                 int index = getModel().indexOf(trx);
38                 return getCellBounds(index,index);
39         }
40         /**
41          * 仮想MIDI端子リストビューを生成します。
42          * @param model このビューから参照されるデータモデル
43          */
44         public TransceiverListView(TransceiverListModel<E> model) {
45                 super(model);
46                 setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
47                 setLayoutOrientation(JList.HORIZONTAL_WRAP);
48                 setVisibleRowCount(0);
49         }
50 }