OSDN Git Service

MIDI Device Connection から MIDI Editor へ意図しないオブジェクトを
[midichordhelper/MIDIChordHelper.git] / src / camidion / chordhelper / midieditor / MidiSequenceEditor.java
index 8c6b57c..6a21231 100644 (file)
@@ -9,9 +9,9 @@ import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.dnd.DnDConstants;
 import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetAdapter;
 import java.awt.dnd.DropTargetDragEvent;
 import java.awt.dnd.DropTargetDropEvent;
-import java.awt.dnd.DropTargetEvent;
 import java.awt.dnd.DropTargetListener;
 import java.awt.event.ActionEvent;
 import java.awt.event.ComponentAdapter;
@@ -79,10 +79,10 @@ import camidion.chordhelper.music.MIDISpec;
  * MIDIエディタ(MIDI Editor/Playlist for MIDI Chord Helper)
  *
  * @author
- *     Copyright (C) 2006-2014 Akiyoshi Kamide
+ *     Copyright (C) 2006-2016 Akiyoshi Kamide
  *     http://www.yk.rim.or.jp/~kamide/music/chordhelper/
  */
-public class MidiSequenceEditor extends JDialog implements DropTargetListener {
+public class MidiSequenceEditor extends JDialog {
        private static VirtualMidiDevice virtualMidiDevice = new AbstractVirtualMidiDevice() {
                {
                        info = new MyInfo();
@@ -162,38 +162,37 @@ public class MidiSequenceEditor extends JDialog implements DropTargetListener {
                        JOptionPane.WARNING_MESSAGE
                ) == JOptionPane.YES_OPTION ;
        }
-       @Override
-       public void dragEnter(DropTargetDragEvent event) {
-               if( event.isDataFlavorSupported(DataFlavor.javaFileListFlavor) ) {
-                       event.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
-               }
-       }
-       @Override
-       public void dragExit(DropTargetEvent event) {}
-       @Override
-       public void dragOver(DropTargetDragEvent event) {}
-       @Override
-       public void dropActionChanged(DropTargetDragEvent event) {}
-       @Override
-       @SuppressWarnings("unchecked")
-       public void drop(DropTargetDropEvent event) {
-               event.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
-               try {
-                       int action = event.getDropAction();
-                       if ( (action & DnDConstants.ACTION_COPY_OR_MOVE) != 0 ) {
-                               Transferable t = event.getTransferable();
-                               Object data = t.getTransferData(DataFlavor.javaFileListFlavor);
-                               loadAndPlay((List<File>)data);
-                               event.dropComplete(true);
-                               return;
+       /**
+        * ドロップされた複数のMIDIファイルを読み込むリスナー
+        */
+       public final DropTargetListener dropTargetListener = new DropTargetAdapter() {
+               @Override
+               public void dragEnter(DropTargetDragEvent event) {
+                       if( event.isDataFlavorSupported(DataFlavor.javaFileListFlavor) ) {
+                               event.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
                        }
-                       event.dropComplete(false);
                }
-               catch (Exception ex) {
-                       ex.printStackTrace();
+               @Override
+               @SuppressWarnings("unchecked")
+               public void drop(DropTargetDropEvent event) {
+                       event.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
+                       try {
+                               int action = event.getDropAction();
+                               if ( (action & DnDConstants.ACTION_COPY_OR_MOVE) != 0 ) {
+                                       Transferable t = event.getTransferable();
+                                       if( t.isDataFlavorSupported(DataFlavor.javaFileListFlavor) ) {
+                                               loadAndPlay((List<File>)t.getTransferData(DataFlavor.javaFileListFlavor));
+                                               event.dropComplete(true);
+                                               return;
+                                       }
+                               }
+                       }
+                       catch (Exception ex) {
+                               ex.printStackTrace();
+                       }
                        event.dropComplete(false);
                }
-       }
+       };
        /**
         * 複数のMIDIファイルを読み込み、再生されていなかったら再生します。
         * すでに再生されていた場合、このエディタダイアログを表示します。
@@ -1225,7 +1224,7 @@ public class MidiSequenceEditor extends JDialog implements DropTargetListener {
                setTitle("MIDI Editor/Playlist - MIDI Chord Helper");
                setBounds( 150, 200, 900, 500 );
                setLayout(new FlowLayout());
-               new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this, true);
+               new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, dropTargetListener, true);
                JPanel playlistPanel = new JPanel() {{
                        JPanel playlistOperationPanel = new JPanel() {{
                                setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));