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;
* 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();
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ファイルを読み込み、再生されていなかったら再生します。
* すでに再生されていた場合、このエディタダイアログを表示します。
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));