From: Akiyoshi Kamide Date: Wed, 29 Jun 2016 15:33:34 +0000 (+0900) Subject: リファクタリング X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=13c7c477961ca91433a5b1fc77aad47fbeefa3df;p=midichordhelper%2FMIDIChordHelper.git リファクタリング --- diff --git a/src/camidion/chordhelper/ChordHelperApplet.java b/src/camidion/chordhelper/ChordHelperApplet.java index 85d7d36..6289250 100644 --- a/src/camidion/chordhelper/ChordHelperApplet.java +++ b/src/camidion/chordhelper/ChordHelperApplet.java @@ -285,7 +285,7 @@ public class ChordHelperApplet extends JApplet { */ public static class VersionInfo { public static final String NAME = "MIDI Chord Helper"; - public static final String VERSION = "Ver.20160628.1"; + public static final String VERSION = "Ver.20160629.1"; public static final String COPYRIGHT = "Copyright (C) 2004-2016"; public static final String AUTHER = "@きよし - Akiyoshi Kamide"; public static final String URL = "http://www.yk.rim.or.jp/~kamide/music/chordhelper/"; diff --git a/src/camidion/chordhelper/mididevice/TransceiverListModel.java b/src/camidion/chordhelper/mididevice/AbstractTransceiverListModel.java similarity index 85% rename from src/camidion/chordhelper/mididevice/TransceiverListModel.java rename to src/camidion/chordhelper/mididevice/AbstractTransceiverListModel.java index fa32725..640534b 100644 --- a/src/camidion/chordhelper/mididevice/TransceiverListModel.java +++ b/src/camidion/chordhelper/mididevice/AbstractTransceiverListModel.java @@ -9,8 +9,8 @@ import javax.swing.AbstractListModel; /** * {@link Transmitter}または{@link Receiver}のリストを表す{@link javax.swing.ListModel}の基底抽象クラス */ -public abstract class TransceiverListModel extends AbstractListModel { - public TransceiverListModel(MidiDeviceModel deviceModel) { +public abstract class AbstractTransceiverListModel extends AbstractListModel { + public AbstractTransceiverListModel(MidiDeviceModel deviceModel) { this.deviceModel = deviceModel; } protected MidiDeviceModel deviceModel; diff --git a/src/camidion/chordhelper/mididevice/TransceiverListView.java b/src/camidion/chordhelper/mididevice/AbstractTransceiverListView.java similarity index 85% rename from src/camidion/chordhelper/mididevice/TransceiverListView.java rename to src/camidion/chordhelper/mididevice/AbstractTransceiverListView.java index ae195c0..9189242 100644 --- a/src/camidion/chordhelper/mididevice/TransceiverListView.java +++ b/src/camidion/chordhelper/mididevice/AbstractTransceiverListView.java @@ -11,14 +11,14 @@ import javax.swing.ListSelectionModel; /** * MIDIレシーバ({@link Receiver})またはMIDIトランスミッタ({@link Transmitter})のリストを表示する基底の抽象リストビューです。 */ -public abstract class TransceiverListView extends JList { +public abstract class AbstractTransceiverListView extends JList { /** * このリストによって表示されるリストを保持するデータモデルを返します。 * @return 表示されるリストを提供するデータモデル */ @Override - public TransceiverListModel getModel() { - return (TransceiverListModel) super.getModel(); + public AbstractTransceiverListModel getModel() { + return (AbstractTransceiverListModel) super.getModel(); } /** * このリストの座標系内の指定された位置にある要素を返します。 @@ -41,7 +41,7 @@ public abstract class TransceiverListView extends JList { * 仮想MIDI端子リストビューを生成します。 * @param model このビューから参照されるデータモデル */ - public TransceiverListView(TransceiverListModel model) { + public AbstractTransceiverListView(AbstractTransceiverListModel model) { super(model); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); setLayoutOrientation(JList.HORIZONTAL_WRAP); diff --git a/src/camidion/chordhelper/mididevice/MidiCablePane.java b/src/camidion/chordhelper/mididevice/MidiCablePane.java index c0d9152..c6186de 100644 --- a/src/camidion/chordhelper/mididevice/MidiCablePane.java +++ b/src/camidion/chordhelper/mididevice/MidiCablePane.java @@ -7,11 +7,6 @@ import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.Stroke; -import java.awt.dnd.DragSourceAdapter; -import java.awt.dnd.DragSourceDragEvent; -import java.awt.dnd.DragSourceDropEvent; -import java.awt.dnd.DragSourceListener; -import java.awt.dnd.DragSourceMotionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; @@ -37,32 +32,16 @@ public class MidiCablePane extends JComponent { static DraggingTransceiver dragging = new DraggingTransceiver(); private Point draggingPoint; /** - * ドラッグしている最中に再描画するためのソースモーションリスナー + * ドラッグ中の場所を更新し、再描画を予約します。 + * @param p ドラッグ中の場所(ドラッグ&ドロップ終了時はnullを指定) */ - public final DragSourceMotionListener dragSourceMotionListener = new DragSourceMotionListener() { - @Override - public void dragMouseMoved(DragSourceDragEvent dsde) { - setDraggingLocation(dsde.getLocation()); + public void updateDraggingLocation(Point p) { + if( (draggingPoint = p) == null ) { + dragging.setData(null); + } else { + Point origin = getLocationOnScreen(); + draggingPoint.translate(-origin.x, -origin.y); } - }; - public void setDraggingLocation(Point p) { - Point origin = getLocationOnScreen(); - draggingPoint = p; - draggingPoint.translate(-origin.x, -origin.y); - repaint(); - } - /** - * ドラッグ終了時に再描画するためのソースリスナー - */ - public final DragSourceListener dragSourceListener = new DragSourceAdapter() { - @Override - public void dragDropEnd(DragSourceDropEvent dsde) { - MidiCablePane.this.dragDropEnd(); - } - }; - public void dragDropEnd() { - dragging.setData(null); - draggingPoint = null; repaint(); } /** diff --git a/src/camidion/chordhelper/mididevice/ReceiverListModel.java b/src/camidion/chordhelper/mididevice/ReceiverListModel.java index 967738a..2b65802 100644 --- a/src/camidion/chordhelper/mididevice/ReceiverListModel.java +++ b/src/camidion/chordhelper/mididevice/ReceiverListModel.java @@ -10,7 +10,7 @@ import javax.sound.midi.Transmitter; /** * {@link Receiver} のリストを表す {@link javax.swing.ListModel} */ -public class ReceiverListModel extends TransceiverListModel { +public class ReceiverListModel extends AbstractTransceiverListModel { public ReceiverListModel(MidiDeviceModel deviceModel) { super(deviceModel); } protected List getTransceivers() { return deviceModel.getMidiDevice().getReceivers(); diff --git a/src/camidion/chordhelper/mididevice/ReceiverListView.java b/src/camidion/chordhelper/mididevice/ReceiverListView.java index c4d727d..145d21a 100644 --- a/src/camidion/chordhelper/mididevice/ReceiverListView.java +++ b/src/camidion/chordhelper/mididevice/ReceiverListView.java @@ -6,6 +6,10 @@ import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; +import java.awt.dnd.DragSourceAdapter; +import java.awt.dnd.DragSourceDragEvent; +import java.awt.dnd.DragSourceDropEvent; +import java.awt.dnd.DragSourceMotionListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDragEvent; @@ -18,10 +22,8 @@ import javax.swing.JList; /** * MIDIレシーバ({@link Receiver})のリストビューです。 - * レシーバをこのビューからドラッグし、 - * {@link TransmitterListView} のトランスミッタにドロップして接続できます。 */ -public class ReceiverListView extends TransceiverListView { +public class ReceiverListView extends AbstractTransceiverListView { /** * このリストによって表示される{@link Receiver}のリストを保持するデータモデルを返します。 * @return 表示される{@link Receiver}のリストを提供するデータモデル @@ -44,19 +46,29 @@ public class ReceiverListView extends TransceiverListView { return this; } }); + // ドラッグ DragSource dragSource = new DragSource(); DragGestureListener dgl = new DragGestureListener() { @Override public void dragGestureRecognized(DragGestureEvent event) { if( (event.getDragAction() & DnDConstants.ACTION_COPY_OR_MOVE) == 0 ) return; MidiCablePane.dragging.setData(getElementAt(event.getDragOrigin())); - event.startDrag(DragSource.DefaultLinkDrop, MidiCablePane.dragging, cablePane.dragSourceListener); + event.startDrag(DragSource.DefaultLinkDrop, MidiCablePane.dragging, new DragSourceAdapter() { + @Override + public void dragDropEnd(DragSourceDropEvent dsde) { + cablePane.updateDraggingLocation(null); + } + }); } }; dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, dgl); - dragSource.addDragSourceMotionListener(cablePane.dragSourceMotionListener); - // - // 外からドラッグされたトランスミッタを、ドロップした場所のレシーバに接続する + dragSource.addDragSourceMotionListener(new DragSourceMotionListener() { + @Override + public void dragMouseMoved(DragSourceDragEvent dsde) { + cablePane.updateDraggingLocation(dsde.getLocation()); + } + }); + // ドロップ DropTargetListener dtl = new DropTargetAdapter() { @Override public void dragEnter(DropTargetDragEvent event) { diff --git a/src/camidion/chordhelper/mididevice/TransmitterListModel.java b/src/camidion/chordhelper/mididevice/TransmitterListModel.java index c5421b2..653b88d 100644 --- a/src/camidion/chordhelper/mididevice/TransmitterListModel.java +++ b/src/camidion/chordhelper/mididevice/TransmitterListModel.java @@ -12,7 +12,7 @@ import javax.sound.midi.Transmitter; /** * {@link Transmitter} のリストを表す {@link javax.swing.ListModel} */ -public class TransmitterListModel extends TransceiverListModel { +public class TransmitterListModel extends AbstractTransceiverListModel { public TransmitterListModel(MidiDeviceModel deviceModel) { super(deviceModel); } protected List getTransceivers() { return deviceModel.getMidiDevice().getTransmitters(); diff --git a/src/camidion/chordhelper/mididevice/TransmitterListView.java b/src/camidion/chordhelper/mididevice/TransmitterListView.java index 13299dc..19d1f83 100644 --- a/src/camidion/chordhelper/mididevice/TransmitterListView.java +++ b/src/camidion/chordhelper/mididevice/TransmitterListView.java @@ -7,7 +7,9 @@ import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; import java.awt.dnd.DragSourceAdapter; +import java.awt.dnd.DragSourceDragEvent; import java.awt.dnd.DragSourceDropEvent; +import java.awt.dnd.DragSourceMotionListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDragEvent; @@ -20,10 +22,8 @@ import javax.swing.JList; /** * MIDIトランスミッタ({@link Transmitter})のリストビューです。 - * トランスミッタをこのビューからドラッグし、 - * {@link ReceiverListView} のレシーバにドロップして接続できます。 */ -public class TransmitterListView extends TransceiverListView { +public class TransmitterListView extends AbstractTransceiverListView { /** * このリストによって表示される{@link Transmitter}のリストを保持するデータモデルを返します。 * @return 表示される{@link Transmitter}のリストを提供するデータモデル @@ -51,6 +51,7 @@ public class TransmitterListView extends TransceiverListView { return this; } }); + // ドラッグ DragSource dragSource = new DragSource(); DragGestureListener dgl = new DragGestureListener() { @Override @@ -72,15 +73,19 @@ public class TransmitterListView extends TransceiverListView { exception.printStackTrace(); } } - cablePane.dragSourceListener.dragDropEnd(event); + cablePane.updateDraggingLocation(null); } }); } }; dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, dgl); - dragSource.addDragSourceMotionListener(cablePane.dragSourceMotionListener); - // - // 外からドラッグされたレシーバを、ドロップした場所のトランスミッタに接続する + dragSource.addDragSourceMotionListener(new DragSourceMotionListener() { + @Override + public void dragMouseMoved(DragSourceDragEvent dsde) { + cablePane.updateDraggingLocation(dsde.getLocation()); + } + }); + // ドロップ DropTargetListener dtl = new DropTargetAdapter() { @Override public void dragEnter(DropTargetDragEvent event) {