/[svn]/jsampler/trunk/src/org/jsampler/view/std/JSSamplerTree.java
ViewVC logotype

Diff of /jsampler/trunk/src/org/jsampler/view/std/JSSamplerTree.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2192 by iliev, Fri Jun 24 21:34:51 2011 UTC revision 2195 by iliev, Tue Jun 28 22:44:39 2011 UTC
# Line 21  Line 21 
21   */   */
22  package org.jsampler.view.std;  package org.jsampler.view.std;
23    
 import java.awt.event.ActionEvent;  
 import java.awt.event.ActionListener;  
24  import java.awt.event.MouseAdapter;  import java.awt.event.MouseAdapter;
25  import java.awt.event.MouseEvent;  import java.awt.event.MouseEvent;
26    
 import javax.swing.JMenuItem;  
 import javax.swing.JPopupMenu;  
27  import javax.swing.tree.TreeSelectionModel;  import javax.swing.tree.TreeSelectionModel;
28    
 import org.jsampler.CC;  
29  import org.jsampler.view.AbstractSamplerTree;  import org.jsampler.view.AbstractSamplerTree;
30  import org.jsampler.view.SamplerTreeModel;  import org.jsampler.view.SamplerTreeModel;
31    
32  import static org.jsampler.view.SamplerTreeModel.*;  import static org.jsampler.view.SamplerTreeModel.*;
 import static org.jsampler.view.std.StdI18n.i18n;  
33    
34  /**  /**
35   *   *
36   * @author Grigor Iliev   * @author Grigor Iliev
37   */   */
38  public class JSSamplerTree extends AbstractSamplerTree {  public class JSSamplerTree extends AbstractSamplerTree implements SamplerBrowser.ContextMenuOwner {
39          /**          /**
40           * Creates a new instance of <code>JSSamplerTree</code>.           * Creates a new instance of <code>JSSamplerTree</code>.
41           */           */
# Line 58  public class JSSamplerTree extends Abstr Line 52  public class JSSamplerTree extends Abstr
52                          }                          }
53                  });                  });
54                                    
55                  ContextMenu contextMenu = new ContextMenu();                  addMouseListener(new SamplerBrowser.ContextMenu(this));
                 addMouseListener(contextMenu);  
56          }          }
57                    
58          class ContextMenu extends MouseAdapter {          @Override
59                  private final JPopupMenu aodMenu = new JPopupMenu();          public Object
60                  private final JPopupMenu secMenu = new JPopupMenu();          getSelectedItem() {
61                  private final JPopupMenu eiMenu = new JPopupMenu();                  return getSelectionModel().getSelectionPath().getLastPathComponent();
                   
                   
                 ContextMenu() {  
                         String s = i18n.getMenuLabel("JSSamplerTree.cm.aodMenu.addChain");  
                         JMenuItem mi = new JMenuItem(s);  
                         aodMenu.add(mi);  
                         mi.addActionListener(new ActionListener() {  
                                 public void  
                                 actionPerformed(ActionEvent e) {  
                                         AudioDeviceTreeNode node = getAudioDeviceTreeNode();  
                                         if(node == null) return;  
                                         node.getAudioDevice().addBackendSendEffectChain();  
                                 }  
                         });  
                           
                         // Send Effect Chain menu  
                           
                         s = i18n.getMenuLabel("JSSamplerTree.cm.secMenu.remove");  
                         mi = new JMenuItem(s);  
                         secMenu.add(mi);  
                         mi.addActionListener(new ActionListener() {  
                                 public void  
                                 actionPerformed(ActionEvent e) {  
                                         SendEffectChainTreeNode node = getSendEffectChainTreeNode();  
                                         if(node == null) return;  
                                         node.getAudioDevice().removeBackendSendEffectChain(node.getChainId());  
                                 }  
                         });  
                           
                         s = i18n.getMenuLabel("JSSamplerTree.cm.secMenu.appendEffectInstance");  
                         mi = new JMenuItem(s);  
                         secMenu.add(mi);  
                         mi.addActionListener(new ActionListener() {  
                                 public void  
                                 actionPerformed(ActionEvent e) {  
                                         SendEffectChainTreeNode node = getSendEffectChainTreeNode();  
                                         if(node == null) return;  
                                           
                                         JSAddEffectInstancesDlg dlg = new JSAddEffectInstancesDlg();  
                                         dlg.setVisible(true);  
                                         if(dlg.isCancelled()) return;  
                                           
                                         node.getAudioDevice().addBackendEffectInstances (  
                                                 dlg.getSelectedEffects(), node.getChainId(), -1  
                                         );  
                                 }  
                         });  
                           
                         // Effect Instance menu  
                         s = i18n.getMenuLabel("JSSamplerTree.cm.eiMenu.remove");  
                         mi = new JMenuItem(s);  
                         eiMenu.add(mi);  
                         mi.addActionListener(new ActionListener() {  
                                 public void  
                                 actionPerformed(ActionEvent e) {  
                                         EffectInstanceTreeNode node = getEffectInstanceTreeNode();  
                                         if(node == null) return;  
                                           
                                         node.getParent().getAudioDevice().removeBackendEffectInstance (  
                                                 node.getParent().getChainId(), node.getInstanceId()  
                                         );  
                                 }  
                         });  
                           
                         s = i18n.getMenuLabel("JSSamplerTree.cm.eiMenu.insertInstances");  
                         mi = new JMenuItem(s);  
                         eiMenu.add(mi);  
                         mi.addActionListener(new ActionListener() {  
                                 public void  
                                 actionPerformed(ActionEvent e) {  
                                         EffectInstanceTreeNode node = getEffectInstanceTreeNode();  
                                         if(node == null) return;  
                                           
                                         JSAddEffectInstancesDlg dlg = new JSAddEffectInstancesDlg();  
                                         dlg.setVisible(true);  
                                         if(dlg.isCancelled()) return;  
                                           
                                         SendEffectChainTreeNode parent = node.getParent();  
                                         int idx = parent.getEffectChain().getIndex(node.getInstanceId());  
                                           
                                         parent.getAudioDevice().addBackendEffectInstances (  
                                                 dlg.getSelectedEffects(), parent.getChainId(), idx  
                                         );  
                                 }  
                         });  
                 }  
                   
                 public void  
                 mousePressed(MouseEvent e) {  
                         if(e.isPopupTrigger()) show(e);  
                 }  
           
                 public void  
                 mouseReleased(MouseEvent e) {  
                         if(e.isPopupTrigger()) show(e);  
                 }  
           
                 void  
                 show(MouseEvent e) {  
                         Object o = getSelectionModel().getSelectionPath().getLastPathComponent();  
                         if(o == null) return;  
                         if(o instanceof AudioDeviceTreeNode) {  
                                 aodMenu.show(e.getComponent(), e.getX(), e.getY());  
                         } else if(o instanceof SendEffectChainTreeNode) {  
                                 secMenu.show(e.getComponent(), e.getX(), e.getY());  
                         } else if(o instanceof EffectInstanceTreeNode) {  
                                 eiMenu.show(e.getComponent(), e.getX(), e.getY());  
                         }  
                           
                 }  
                   
                 private AudioDeviceTreeNode  
                 getAudioDeviceTreeNode() {  
                         Object o = getSelectionModel().getSelectionPath().getLastPathComponent();  
                         if(o == null || !(o instanceof AudioDeviceTreeNode)) return null;  
                         return (AudioDeviceTreeNode)o;  
                 }  
                   
                 private SendEffectChainTreeNode  
                 getSendEffectChainTreeNode() {  
                         Object o = getSelectionModel().getSelectionPath().getLastPathComponent();  
                         if(o == null || !(o instanceof SendEffectChainTreeNode)) return null;  
                         return (SendEffectChainTreeNode)o;  
                 }  
                   
                 private EffectInstanceTreeNode  
                 getEffectInstanceTreeNode() {  
                         Object o = getSelectionModel().getSelectionPath().getLastPathComponent();  
                         if(o == null || !(o instanceof EffectInstanceTreeNode)) return null;  
                         return (EffectInstanceTreeNode)o;  
                 }  
62          }          }
63  }  }

Legend:
Removed from v.2192  
changed lines
  Added in v.2195

  ViewVC Help
Powered by ViewVC