OSDN Git Service

MIDIデバイス画面にツールチップを追加(ツリーノード/Tx/Rx)
authorAkiyoshi Kamide <kamide@yk.rim.or.jp>
Mon, 16 May 2016 16:57:34 +0000 (01:57 +0900)
committerAkiyoshi Kamide <kamide@yk.rim.or.jp>
Mon, 16 May 2016 16:57:34 +0000 (01:57 +0900)
src/camidion/chordhelper/ChordHelperApplet.java
src/camidion/chordhelper/mididevice/MidiDeviceTreeView.java
src/camidion/chordhelper/mididevice/MidiOpenedDevicesView.java
src/camidion/chordhelper/mididevice/MidiTransceiverListView.java

index 0828ad6..1c92dbe 100644 (file)
@@ -287,7 +287,7 @@ public class ChordHelperApplet extends JApplet {
         */
        public static class VersionInfo {
                public static final String      NAME = "MIDI Chord Helper";
-               public static final String      VERSION = "Ver.20160514.1";
+               public static final String      VERSION = "Ver.20160516.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/";
index ff02560..8a93741 100644 (file)
@@ -15,6 +15,7 @@ import java.awt.dnd.DragSourceListener;
 import javax.swing.JInternalFrame;
 import javax.swing.JTree;
 import javax.swing.ListModel;
+import javax.swing.ToolTipManager;
 import javax.swing.event.InternalFrameAdapter;
 import javax.swing.event.InternalFrameEvent;
 import javax.swing.event.InternalFrameListener;
@@ -91,15 +92,26 @@ public class MidiDeviceTreeView extends JTree {
                                        boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)
                        {
                                super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
+                               setToolTipText(value.toString());
                                if(leaf) {
-                                       setIcon(MidiTransceiverListView.MIDI_CONNECTER_ICON);
-                                       setDisabledIcon(MidiTransceiverListView.MIDI_CONNECTER_ICON);
-                                       setEnabled( ! ((MidiTransceiverListModel)value).getMidiDevice().isOpen() );
+                                       MidiTransceiverListModel deviceModel = (MidiTransceiverListModel)value;
+                                       if( deviceModel.getMidiDevice().isOpen() ) {
+                                               setDisabledIcon(MidiTransceiverListView.MIDI_CONNECTER_ICON);
+                                               setEnabled(false);
+                                               setToolTipText(getToolTipText()+"はすでに開いています");
+                                       } else {
+                                               setIcon(MidiTransceiverListView.MIDI_CONNECTER_ICON);
+                                               setEnabled(true);
+                                               setToolTipText("ドラッグ&ドロップで"+getToolTipText()+"が開きます");
+                                       }
                                }
                                return this;
                        }
                });
                // 初期状態でツリーノードを開いた状態にする
                for( int row = 0; row < getRowCount() ; row++ ) expandRow(row);
+               //
+               // ツリーノードのToolTipを有効化
+               ToolTipManager.sharedInstance().registerComponent(this);
        }
 }
index ea79610..060727e 100644 (file)
@@ -41,8 +41,10 @@ public class MidiOpenedDevicesView extends JDesktopPane implements TreeSelection
                                MidiTransceiverListModel deviceModel = (MidiTransceiverListModel)lastSelected;
                                if( deviceModel.getMidiDevice().isOpen() ) {
                                        // 開いているMIDIデバイスがツリー上で選択されたら、対応するフレームを選択
+                                       MidiDeviceFrame deviceFrame = modelToFrame.get(deviceModel);
+                                       deviceFrame.toFront();
                                        try {
-                                               modelToFrame.get(deviceModel).setSelected(true);
+                                               deviceFrame.setSelected(true);
                                        } catch( PropertyVetoException ex ) {
                                                ex.printStackTrace();
                                        }
index c16c90e..7027bc5 100644 (file)
@@ -28,6 +28,7 @@ import javax.swing.ListCellRenderer;
 import javax.swing.ListSelectionModel;
 
 import camidion.chordhelper.ButtonIcon;
+import camidion.chordhelper.mididevice.MidiTransceiverListModel.NewTransmitter;
 
 /**
  * MIDI端子({@link Transmitter}と{@link Receiver})のリストビューです。
@@ -45,13 +46,28 @@ public class MidiTransceiverListView extends JList<AutoCloseable> {
                                JList<? extends AutoCloseable> list, AutoCloseable value, int index,
                                boolean isSelected, boolean cellHasFocus)
                {
-                       String text;
-                       if( value == null ) text = null;
-                       else if( value instanceof Receiver ) text = "Rx";
-                       else if( value instanceof Transmitter ) text = "Tx";
-                       else text = value.toString();
-                       setText(text);
+                       setEnabled(list.isEnabled());
+                       setFont(list.getFont());
+                       setOpaque(true);
                        setIcon(MIDI_CONNECTER_ICON);
+                       if( value == null ) {
+                               setText(null);
+                               setToolTipText(null);
+                       } else if( value instanceof Receiver ) {
+                               setText("Rx");
+                               setToolTipText("Rxをドラッグ&ドロップしてTxに接続");
+                       } else if( value instanceof Transmitter ) {
+                               setText("Tx");
+                               if( value instanceof NewTransmitter ) {
+                                       setToolTipText("Txをドラッグ&ドロップしてRxに接続");
+                               } else {
+                                       setToolTipText("Txをドラッグ&ドロップして切断、またはRx切替");
+                               }
+                       }
+                       else {
+                               setText(value.toString());
+                               setToolTipText(value.toString());
+                       }
                        if (isSelected) {
                                setBackground(list.getSelectionBackground());
                                setForeground(list.getSelectionForeground());
@@ -59,9 +75,6 @@ public class MidiTransceiverListView extends JList<AutoCloseable> {
                                setBackground(list.getBackground());
                                setForeground(list.getForeground());
                        }
-                       setEnabled(list.isEnabled());
-                       setFont(list.getFont());
-                       setOpaque(true);
                        return this;
                }
        }