1 |
/* |
/* |
2 |
* JSampler - a java front-end for LinuxSampler |
* JSampler - a java front-end for LinuxSampler |
3 |
* |
* |
4 |
* Copyright (C) 2005-2006 Grigor Iliev <grigor@grigoriliev.com> |
* Copyright (C) 2005-2007 Grigor Iliev <grigor@grigoriliev.com> |
5 |
* |
* |
6 |
* This file is part of JSampler. |
* This file is part of JSampler. |
7 |
* |
* |
22 |
|
|
23 |
package org.jsampler.view.classic; |
package org.jsampler.view.classic; |
24 |
|
|
25 |
|
import java.awt.event.ActionEvent; |
26 |
|
import java.awt.event.ActionListener; |
27 |
import java.awt.event.MouseAdapter; |
import java.awt.event.MouseAdapter; |
28 |
import java.awt.event.MouseEvent; |
import java.awt.event.MouseEvent; |
29 |
|
|
30 |
|
import javax.swing.JMenuItem; |
31 |
|
import javax.swing.JPopupMenu; |
32 |
import javax.swing.JTree; |
import javax.swing.JTree; |
33 |
|
|
34 |
|
import javax.swing.event.TreeSelectionEvent; |
35 |
|
import javax.swing.event.TreeSelectionListener; |
36 |
|
|
37 |
import javax.swing.tree.DefaultMutableTreeNode; |
import javax.swing.tree.DefaultMutableTreeNode; |
38 |
import javax.swing.tree.DefaultTreeCellRenderer; |
import javax.swing.tree.DefaultTreeCellRenderer; |
39 |
import javax.swing.tree.DefaultTreeModel; |
import javax.swing.tree.DefaultTreeModel; |
83 |
if(e.getButton() != e.BUTTON3) return; |
if(e.getButton() != e.BUTTON3) return; |
84 |
setSelectionPath(getClosestPathForLocation(e.getX(), e.getY())); |
setSelectionPath(getClosestPathForLocation(e.getX(), e.getY())); |
85 |
} |
} |
86 |
|
|
87 |
|
public void |
88 |
|
mouseClicked(MouseEvent e) { |
89 |
|
if(e.getButton() != e.BUTTON1) return; |
90 |
|
if(e.getClickCount() > 1) editSelectedInstrument(); |
91 |
|
} |
92 |
}); |
}); |
93 |
|
|
94 |
setMidiInstrumentMap(null); |
setMidiInstrumentMap(null); |
95 |
|
|
96 |
getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); |
getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); |
97 |
|
ContextMenu contextMenu = new ContextMenu(); |
98 |
|
addMouseListener(contextMenu); |
99 |
|
addTreeSelectionListener(contextMenu); |
100 |
} |
} |
101 |
|
|
102 |
/** |
/** |
366 |
public boolean |
public boolean |
367 |
isLeaf() { return true; } |
isLeaf() { return true; } |
368 |
} |
} |
369 |
|
|
370 |
|
private void |
371 |
|
editSelectedInstrument() { |
372 |
|
MidiInstrument i = getSelectedInstrument(); |
373 |
|
if(i == null) return; |
374 |
|
EditMidiInstrumentDlg dlg = new EditMidiInstrumentDlg(i.getInfo()); |
375 |
|
dlg.setVisible(true); |
376 |
|
|
377 |
|
if(dlg.isCancelled()) return; |
378 |
|
|
379 |
|
MidiInstrumentInfo info = dlg.getInstrument(); |
380 |
|
CC.getSamplerModel().mapBackendMidiInstrument ( |
381 |
|
info.getMapId(), info.getMidiBank(), info.getMidiProgram(), info |
382 |
|
); |
383 |
|
} |
384 |
|
|
385 |
private final EventHandler eventHandler = new EventHandler(); |
private final EventHandler eventHandler = new EventHandler(); |
386 |
|
|
414 |
e.getInstrument().removeMidiInstrumentListener(getHandler()); |
e.getInstrument().removeMidiInstrumentListener(getHandler()); |
415 |
} |
} |
416 |
} |
} |
417 |
|
|
418 |
|
class ContextMenu extends MouseAdapter implements TreeSelectionListener { |
419 |
|
private final JPopupMenu cmenu = new JPopupMenu(); |
420 |
|
JMenuItem miEdit = new JMenuItem(i18n.getMenuLabel("ContextMenu.edit")); |
421 |
|
|
422 |
|
ContextMenu() { |
423 |
|
cmenu.add(miEdit); |
424 |
|
miEdit.addActionListener(new ActionListener() { |
425 |
|
public void |
426 |
|
actionPerformed(ActionEvent e) { |
427 |
|
editSelectedInstrument(); |
428 |
|
} |
429 |
|
}); |
430 |
|
|
431 |
|
JMenuItem mi = new JMenuItem(i18n.getMenuLabel("ContextMenu.delete")); |
432 |
|
cmenu.add(mi); |
433 |
|
mi.addActionListener(new ActionListener() { |
434 |
|
public void |
435 |
|
actionPerformed(ActionEvent e) { |
436 |
|
removeSelectedInstrumentOrBank(); |
437 |
|
} |
438 |
|
}); |
439 |
|
|
440 |
|
} |
441 |
|
|
442 |
|
public void |
443 |
|
mousePressed(MouseEvent e) { |
444 |
|
if(e.isPopupTrigger()) show(e); |
445 |
|
} |
446 |
|
|
447 |
|
public void |
448 |
|
mouseReleased(MouseEvent e) { |
449 |
|
if(e.isPopupTrigger()) show(e); |
450 |
|
} |
451 |
|
|
452 |
|
void |
453 |
|
show(MouseEvent e) { |
454 |
|
cmenu.show(e.getComponent(), e.getX(), e.getY()); |
455 |
|
} |
456 |
|
|
457 |
|
public void |
458 |
|
valueChanged(TreeSelectionEvent e) { |
459 |
|
miEdit.setVisible(getSelectedInstrument() != null); |
460 |
|
} |
461 |
|
} |
462 |
} |
} |