/[svn]/jsampler/trunk/src/org/jsampler/view/classic/Channel.java
ViewVC logotype

Diff of /jsampler/trunk/src/org/jsampler/view/classic/Channel.java

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

revision 1143 by iliev, Mon Apr 2 21:18:31 2007 UTC revision 1540 by iliev, Mon Dec 3 23:22:02 2007 UTC
# Line 63  import javax.swing.JPanel; Line 63  import javax.swing.JPanel;
63  import javax.swing.JSeparator;  import javax.swing.JSeparator;
64  import javax.swing.JSlider;  import javax.swing.JSlider;
65  import javax.swing.JToggleButton;  import javax.swing.JToggleButton;
66    import javax.swing.JToolBar;
67  import javax.swing.TransferHandler;  import javax.swing.TransferHandler;
68    
69  import javax.swing.border.Border;  import javax.swing.border.Border;
# Line 78  import net.sf.juife.JuifeUtils; Line 79  import net.sf.juife.JuifeUtils;
79  import org.jsampler.AudioDeviceModel;  import org.jsampler.AudioDeviceModel;
80  import org.jsampler.CC;  import org.jsampler.CC;
81  import org.jsampler.HF;  import org.jsampler.HF;
82  import org.jsampler.Instrument;  import org.jsampler.OrchestraInstrument;
83  import org.jsampler.MidiDeviceModel;  import org.jsampler.MidiDeviceModel;
84  import org.jsampler.MidiInstrumentMap;  import org.jsampler.MidiInstrumentMap;
85  import org.jsampler.SamplerChannelModel;  import org.jsampler.SamplerChannelModel;
# Line 86  import org.jsampler.SamplerModel; Line 87  import org.jsampler.SamplerModel;
87    
88  import org.jsampler.event.ListEvent;  import org.jsampler.event.ListEvent;
89  import org.jsampler.event.ListListener;  import org.jsampler.event.ListListener;
90    import org.jsampler.event.MidiDeviceEvent;
91  import org.jsampler.event.MidiDeviceListEvent;  import org.jsampler.event.MidiDeviceListEvent;
92  import org.jsampler.event.MidiDeviceListListener;  import org.jsampler.event.MidiDeviceListListener;
93    import org.jsampler.event.MidiDeviceListener;
94  import org.jsampler.event.SamplerAdapter;  import org.jsampler.event.SamplerAdapter;
95  import org.jsampler.event.SamplerChannelAdapter;  import org.jsampler.event.SamplerChannelAdapter;
96  import org.jsampler.event.SamplerChannelEvent;  import org.jsampler.event.SamplerChannelEvent;
# Line 95  import org.jsampler.event.SamplerChannel Line 98  import org.jsampler.event.SamplerChannel
98  import org.jsampler.event.SamplerChannelListListener;  import org.jsampler.event.SamplerChannelListListener;
99  import org.jsampler.event.SamplerChannelListener;  import org.jsampler.event.SamplerChannelListener;
100  import org.jsampler.event.SamplerEvent;  import org.jsampler.event.SamplerEvent;
101    import org.jsampler.event.SamplerListener;
102    
103    import org.jsampler.view.std.JSChannelOutputRoutingDlg;
104    import org.jsampler.view.std.JSFxSendsPane;
105    import org.jsampler.view.std.JSInstrumentChooser;
106    
107  import org.linuxsampler.lscp.AudioOutputDevice;  import org.linuxsampler.lscp.AudioOutputDevice;
108  import org.linuxsampler.lscp.MidiInputDevice;  import org.linuxsampler.lscp.MidiInputDevice;
# Line 103  import org.linuxsampler.lscp.SamplerChan Line 111  import org.linuxsampler.lscp.SamplerChan
111  import org.linuxsampler.lscp.SamplerEngine;  import org.linuxsampler.lscp.SamplerEngine;
112    
113  import static org.jsampler.view.classic.ClassicI18n.i18n;  import static org.jsampler.view.classic.ClassicI18n.i18n;
114    import static org.jsampler.view.classic.ClassicPrefs.preferences;
115    import static org.jsampler.view.std.StdPrefs.*;
116    
117    
118  /**  /**
# Line 110  import static org.jsampler.view.classic. Line 120  import static org.jsampler.view.classic.
120   * @author Grigor Iliev   * @author Grigor Iliev
121   */   */
122  public class Channel extends org.jsampler.view.JSChannel {  public class Channel extends org.jsampler.view.JSChannel {
123            private final static ImageIcon iconEdit;
124            
125          private final static ImageIcon iconMuteOn;          private final static ImageIcon iconMuteOn;
126          private final static ImageIcon iconMuteOff;          private final static ImageIcon iconMuteOff;
127          private final static ImageIcon iconMutedBySolo;          private final static ImageIcon iconMutedBySolo;
# Line 134  public class Channel extends org.jsample Line 146  public class Channel extends org.jsample
146                  = new Vector<PropertyChangeListener>();                  = new Vector<PropertyChangeListener>();
147                    
148          static {          static {
149                    iconEdit = new ImageIcon(Channel.class.getResource("res/icons/edit.png"));
150                    
151                  String path = "org/jsampler/view/classic/res/icons/";                  String path = "org/jsampler/view/classic/res/icons/";
152                  URL url = ClassLoader.getSystemClassLoader().getResource(path + "mute_on.png");                  URL url = ClassLoader.getSystemClassLoader().getResource(path + "mute_on.png");
153                  iconMuteOn = new ImageIcon(url);                  iconMuteOn = new ImageIcon(url);
# Line 299  public class Channel extends org.jsample Line 313  public class Channel extends org.jsample
313          private final ChannelProperties propertiesPane;          private final ChannelProperties propertiesPane;
314          private final JButton btnInstr = new InstrumentButton(i18n.getLabel("Channel.btnInstr"));          private final JButton btnInstr = new InstrumentButton(i18n.getLabel("Channel.btnInstr"));
315          private final Action actInstr;          private final Action actInstr;
316            private final JButton btnEdit = new JButton(iconEdit);
317          private final JButton btnMute = new JButton();          private final JButton btnMute = new JButton();
318          private final JButton btnSolo = new JButton();          private final JButton btnSolo = new JButton();
319          private final JSlider slVolume = new JSlider(0, 100);          private final JSlider slVolume = new JSlider(0, 100);
# Line 328  public class Channel extends org.jsample Line 343  public class Channel extends org.jsample
343                                    
344                  mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));                  mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
345                  addMouseListener(getHandler());                  addMouseListener(getHandler());
346                    addHierarchyListener(getHandler());
347                                    
348                  JPanel p = new JPanel();                  JPanel p = new JPanel();
349                  p.setOpaque(false);                  p.setOpaque(false);
# Line 341  public class Channel extends org.jsample Line 357  public class Channel extends org.jsample
357                  p.add(btnInstr);                  p.add(btnInstr);
358                  p.add(Box.createRigidArea(new Dimension(6, 0)));                  p.add(Box.createRigidArea(new Dimension(6, 0)));
359                                    
360                    btnEdit.setToolTipText(i18n.getLabel("Channel.btnEdit.tt"));
361                    btnEdit.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
362                    p.add(btnEdit);
363                    p.add(Box.createRigidArea(new Dimension(6, 0)));
364                    
365                  lStreams.setHorizontalAlignment(JLabel.CENTER);                  lStreams.setHorizontalAlignment(JLabel.CENTER);
366                  lVoices.setHorizontalAlignment(JLabel.CENTER);                  lVoices.setHorizontalAlignment(JLabel.CENTER);
367                                    
# Line 409  public class Channel extends org.jsample Line 430  public class Channel extends org.jsample
430                  d = getPreferredSize();                  d = getPreferredSize();
431                  setMaximumSize(new Dimension(getMaximumSize().width, d.height));                  setMaximumSize(new Dimension(getMaximumSize().width, d.height));
432                                    
433                    int i = preferences().getIntProperty(MAXIMUM_CHANNEL_VOLUME);
434                    slVolume.setMaximum(i);
435                    String mcv = MAXIMUM_CHANNEL_VOLUME;
436                    preferences().addPropertyChangeListener(mcv, new PropertyChangeListener() {
437                            public void
438                            propertyChange(PropertyChangeEvent e) {
439                                    int j = preferences().getIntProperty(MAXIMUM_CHANNEL_VOLUME);
440                                    slVolume.setMaximum(j);
441                            }
442                    });
443                    
444                  getModel().addSamplerChannelListener(getHandler());                  getModel().addSamplerChannelListener(getHandler());
445                                    
446                  actInstr = new AbstractAction() {                  actInstr = new AbstractAction() {
# Line 420  public class Channel extends org.jsample Line 452  public class Channel extends org.jsample
452                                    
453                  btnInstr.addActionListener(actInstr);                  btnInstr.addActionListener(actInstr);
454                                    
455                    btnEdit.addActionListener(new ActionListener() {
456                            public void
457                            actionPerformed(ActionEvent e) {
458                                    CC.getSamplerModel().editBackendInstrument(getChannelId());
459                            }
460                    });
461                    
462                  btnMute.addActionListener(new ActionListener() {                  btnMute.addActionListener(new ActionListener() {
463                          public void                          public void
464                          actionPerformed(ActionEvent e) { changeMute(); }                          actionPerformed(ActionEvent e) { changeMute(); }
# Line 506  public class Channel extends org.jsample Line 545  public class Channel extends org.jsample
545                          if(sc.getInstrumentName() == null || sc.getInstrumentStatus() < 0)                          if(sc.getInstrumentName() == null || sc.getInstrumentStatus() < 0)
546                                  return null;                                  return null;
547                                                    
548                          Instrument instr = new Instrument();                          OrchestraInstrument instr = new OrchestraInstrument();
549                          instr.setName(sc.getInstrumentName());                          instr.setName(sc.getInstrumentName());
550                          instr.setInstrumentIndex(sc.getInstrumentIndex());                          instr.setInstrumentIndex(sc.getInstrumentIndex());
551                          instr.setPath(sc.getInstrumentFile());                          instr.setFilePath(sc.getInstrumentFile());
552                          return instr.getDnDString();                          return instr.getDnDString();
553                  }                  }
554                                    
555                  public void setInstrument(String instr) {                  public void setInstrument(String instr) {
556                          if(!Instrument.isDnDString(instr)) return;                          if(!OrchestraInstrument.isDnDString(instr)) return;
557                                                    
558                          String[] args = instr.split("\n");                          String[] args = instr.split("\n");
559                          if(args.length < 6) return;                          if(args.length < 6) return;
# Line 668  public class Channel extends org.jsample Line 707  public class Channel extends org.jsample
707                          else btnInstr.setText(i18n.getLabel("Channel.btnInstr"));                          else btnInstr.setText(i18n.getLabel("Channel.btnInstr"));
708                  }                  }
709                                    
710                    boolean b = status == 100;
711                    if(btnEdit.isEnabled() != b) btnEdit.setEnabled(b);
712                    
713                  updateMuteIcon(sc);                  updateMuteIcon(sc);
714                                    
715                  if(sc.isSoloChannel()) btnSolo.setIcon(iconSoloOn);                  if(sc.isSoloChannel()) btnSolo.setIcon(iconSoloOn);
# Line 675  public class Channel extends org.jsample Line 717  public class Channel extends org.jsample
717                                    
718                  slVolume.setValue((int)(sc.getVolume() * 100));                  slVolume.setValue((int)(sc.getVolume() * 100));
719                                    
720                  boolean b = sc.getEngine() != null;                  b = sc.getEngine() != null;
721                  slVolume.setEnabled(b);                  slVolume.setEnabled(b);
722                  btnSolo.setEnabled(b);                  btnSolo.setEnabled(b);
723                  btnMute.setEnabled(b);                  btnMute.setEnabled(b);
# Line 812  public class Channel extends org.jsample Line 854  public class Channel extends org.jsample
854                    
855          private void          private void
856          loadInstrument() {          loadInstrument() {
857                  InstrumentChooser dlg = new InstrumentChooser(CC.getMainFrame());                  JSInstrumentChooser dlg = new JSInstrumentChooser(CC.getMainFrame());
858                  dlg.setVisible(true);                  dlg.setVisible(true);
859                                    
860                  if(!dlg.isCancelled()) {                  if(dlg.isCancelled()) return;
861                          int idx = dlg.getInstrumentIndex();                  
862                          getModel().loadBackendInstrument(dlg.getFileName(), idx);                  SamplerEngine engine = getChannelInfo().getEngine();
863                    if(dlg.getEngine() != null) {
864                            if(engine == null || !dlg.getEngine().equals(engine.getName()));
865                                    getModel().setBackendEngineType(dlg.getEngine());
866                  }                  }
867                    
868                    int idx = dlg.getInstrumentIndex();
869                    getModel().loadBackendInstrument(dlg.getInstrumentFile(), idx);
870                    
871          }          }
872  }  }
873    
# Line 849  class ChannelProperties extends JPanel { Line 898  class ChannelProperties extends JPanel {
898          private InformationDialog fxSendsDlg = null;          private InformationDialog fxSendsDlg = null;
899                    
900          private SamplerChannelModel channelModel = null;          private SamplerChannelModel channelModel = null;
901            private MidiDeviceModel midiDevice = null;
902                    
903          private boolean update = false;          private boolean update = false;
904                    
905            private final SamplerListener samplerListener;
906            private final MapListListener mapListListener = new MapListListener();
907            
908          private class NoMap {          private class NoMap {
909                  public String                  public String
910                  toString() { return "[None]"; }                  toString() { return "[None]"; }
# Line 940  class ChannelProperties extends JPanel { Line 993  class ChannelProperties extends JPanel {
993                          channelChanged(SamplerChannelEvent e) { updateChannelProperties(); }                          channelChanged(SamplerChannelEvent e) { updateChannelProperties(); }
994                  });                  });
995                                    
996                  CC.getSamplerModel().addSamplerListener(new SamplerAdapter() {                  samplerListener = new SamplerAdapter() {
997                          /** Invoked when the default MIDI instrument map is changed. */                          /** Invoked when the default MIDI instrument map is changed. */
998                          public void                          public void
999                          defaultMapChanged(SamplerEvent e) {                          defaultMapChanged(SamplerEvent e) {
1000                                  updateCbInstrumentMapToolTipText();                                  updateCbInstrumentMapToolTipText();
                                   
1001                          }                          }
1002                  });                  };
1003                    
1004                    CC.getSamplerModel().addSamplerListener(samplerListener);
1005                                    
1006                  cbInstrumentMap.addItem(noMap);                  cbInstrumentMap.addItem(noMap);
1007                  cbInstrumentMap.addItem(defaultMap);                  cbInstrumentMap.addItem(defaultMap);
# Line 978  class ChannelProperties extends JPanel { Line 1032  class ChannelProperties extends JPanel {
1032                  CC.getSamplerModel().addMidiDeviceListListener(getHandler());                  CC.getSamplerModel().addMidiDeviceListListener(getHandler());
1033                  CC.getSamplerModel().addAudioDeviceListListener(getHandler());                  CC.getSamplerModel().addAudioDeviceListListener(getHandler());
1034                  CC.getSamplerModel().addSamplerChannelListListener(getHandler());                  CC.getSamplerModel().addSamplerChannelListListener(getHandler());
1035                                    CC.getSamplerModel().addMidiInstrumentMapListListener(mapListListener);
                 CC.getSamplerModel().addMidiInstrumentMapListListener(new MapListListener());  
1036                                    
1037                  btnAudioProps.setToolTipText(i18n.getLabel("ChannelProperties.routing"));                  btnAudioProps.setToolTipText(i18n.getLabel("ChannelProperties.routing"));
1038                    btnAudioProps.setEnabled(false);
1039                  btnAudioProps.addActionListener(new ActionListener() {                  btnAudioProps.addActionListener(new ActionListener() {
1040                          public void                          public void
1041                          actionPerformed(ActionEvent e) {                          actionPerformed(ActionEvent e) {
1042                                  SamplerChannel c = getModel().getChannelInfo();                                  SamplerChannel c = getModel().getChannelInfo();
1043                                  new ChannelOutputRoutingDlg(CC.getMainFrame(), c).setVisible(true);                                  new JSChannelOutputRoutingDlg(CC.getMainFrame(), c).setVisible(true);
1044                                                    
1045                          }                          }
1046                  });                  });
# Line 1003  class ChannelProperties extends JPanel { Line 1057  class ChannelProperties extends JPanel {
1057                                  FxSendsPane p = new FxSendsPane(getModel());                                  FxSendsPane p = new FxSendsPane(getModel());
1058                                  int id = getModel().getChannelId();                                  int id = getModel().getChannelId();
1059                                  fxSendsDlg = new InformationDialog(CC.getMainFrame(), p);                                  fxSendsDlg = new InformationDialog(CC.getMainFrame(), p);
1060                                  fxSendsDlg.setTitle(i18n.getLabel("FxSendsPane.title", id));                                  fxSendsDlg.setTitle(i18n.getLabel("FxSendsDlg.title", id));
1061                                  fxSendsDlg.setModal(false);                                  fxSendsDlg.setModal(false);
1062                                  fxSendsDlg.showCloseButton(false);                                  fxSendsDlg.showCloseButton(false);
1063                                  fxSendsDlg.setVisible(true);                                  fxSendsDlg.setVisible(true);
# Line 1015  class ChannelProperties extends JPanel { Line 1069  class ChannelProperties extends JPanel {
1069                  updateChannelProperties();                  updateChannelProperties();
1070          }          }
1071                    
1072            class FxSendsPane extends JSFxSendsPane {
1073                    FxSendsPane(SamplerChannelModel model) {
1074                            super(model);
1075                            
1076                            actionAddFxSend.putValue(Action.SMALL_ICON, Res.iconNew16);
1077                            actionRemoveFxSend.putValue(Action.SMALL_ICON, Res.iconDelete16);
1078                    }
1079                    
1080                    protected JToolBar
1081                    createToolBar() {
1082                            JToolBar tb = new JToolBar();
1083                            Dimension d = new Dimension(Short.MAX_VALUE, tb.getPreferredSize().height);
1084                            tb.setMaximumSize(d);
1085                            tb.setFloatable(false);
1086                            tb.setAlignmentX(JPanel.RIGHT_ALIGNMENT);
1087                            
1088                            tb.add(new ToolbarButton(actionAddFxSend));
1089                            tb.add(new ToolbarButton(actionRemoveFxSend));
1090                    
1091                            return tb;
1092                    }
1093            }
1094            
1095          private JPanel          private JPanel
1096          createEnginePane() {          createEnginePane() {
1097                  for(SamplerEngine e : CC.getSamplerModel().getEngines()) cbEngines.addItem(e);                  for(SamplerEngine e : CC.getSamplerModel().getEngines()) cbEngines.addItem(e);
# Line 1201  class ChannelProperties extends JPanel { Line 1278  class ChannelProperties extends JPanel {
1278                  SamplerModel sm = CC.getSamplerModel();                  SamplerModel sm = CC.getSamplerModel();
1279                  SamplerChannel sc = getModel().getChannelInfo();                  SamplerChannel sc = getModel().getChannelInfo();
1280                                    
1281                  MidiDeviceModel mm = sm.getMidiDeviceModel(sc.getMidiInputDevice());                  MidiDeviceModel mm = sm.getMidiDeviceById(sc.getMidiInputDevice());
1282                  AudioDeviceModel am = sm.getAudioDeviceModel(sc.getAudioOutputDevice());                  AudioDeviceModel am = sm.getAudioDeviceById(sc.getAudioOutputDevice());
1283                                    
1284                  if(isUpdate()) CC.getLogger().warning("Unexpected update state!");                  if(isUpdate()) CC.getLogger().warning("Unexpected update state!");
1285                                    
# Line 1214  class ChannelProperties extends JPanel { Line 1291  class ChannelProperties extends JPanel {
1291                          cbEngines.setSelectedItem(sc.getEngine());                          cbEngines.setSelectedItem(sc.getEngine());
1292                                                    
1293                          cbAudioDevice.setSelectedItem(am == null ? null : am.getDeviceInfo());                          cbAudioDevice.setSelectedItem(am == null ? null : am.getDeviceInfo());
1294                            btnAudioProps.setEnabled(am != null);
1295                  } catch(Exception x) {                  } catch(Exception x) {
1296                          CC.getLogger().log(Level.WARNING, "Unkown error", x);                          CC.getLogger().log(Level.WARNING, "Unkown error", x);
1297                  }                  }
1298                                    
1299                  if(sc.getEngine() != null) {                  if(sc.getEngine() != null) {
1300                          if(cbInstrumentMap.getItemCount() > 0) cbInstrumentMap.setEnabled(true);                          cbInstrumentMap.setEnabled(true);
1301                            int id = sc.getMidiInstrumentMapId();
1302                            Object o;
1303                            if(id == -2) o = defaultMap;
1304                            else if(id == -1) o = noMap;
1305                            else o = CC.getSamplerModel().getMidiInstrumentMapById(id);
1306                            
1307                            if(cbInstrumentMap.getSelectedItem() != o) {
1308                                    cbInstrumentMap.setSelectedItem(o);
1309                            }
1310                  } else {                  } else {
1311                          cbInstrumentMap.setSelectedItem(noMap);                          cbInstrumentMap.setSelectedItem(noMap);
1312                          cbInstrumentMap.setEnabled(false);                          cbInstrumentMap.setEnabled(false);
# Line 1241  class ChannelProperties extends JPanel { Line 1328  class ChannelProperties extends JPanel {
1328                  try {                  try {
1329                          cbMidiDevice.removeAllItems();                          cbMidiDevice.removeAllItems();
1330                                    
1331                          for(MidiDeviceModel m : sm.getMidiDeviceModels())                          for(MidiDeviceModel m : sm.getMidiDevices())
1332                                  cbMidiDevice.addItem(m.getDeviceInfo());                                  cbMidiDevice.addItem(m.getDeviceInfo());
1333                                    
1334                          MidiDeviceModel mm = sm.getMidiDeviceModel(sc.getMidiInputDevice());                          MidiDeviceModel mm = sm.getMidiDeviceById(sc.getMidiInputDevice());
1335                          cbMidiDevice.setSelectedItem(mm == null ? null : mm.getDeviceInfo());                          cbMidiDevice.setSelectedItem(mm == null ? null : mm.getDeviceInfo());
1336                  } catch(Exception x) {                  } catch(Exception x) {
1337                          CC.getLogger().log(Level.WARNING, "Unkown error", x);                          CC.getLogger().log(Level.WARNING, "Unkown error", x);
# Line 1266  class ChannelProperties extends JPanel { Line 1353  class ChannelProperties extends JPanel {
1353                  try {                  try {
1354                          cbAudioDevice.removeAllItems();                          cbAudioDevice.removeAllItems();
1355                                    
1356                          for(AudioDeviceModel m : sm.getAudioDeviceModels())                          for(AudioDeviceModel m : sm.getAudioDevices())
1357                                  cbAudioDevice.addItem(m.getDeviceInfo());                                  cbAudioDevice.addItem(m.getDeviceInfo());
1358                                    
1359                          AudioDeviceModel am = sm.getAudioDeviceModel(sc.getAudioOutputDevice());                          AudioDeviceModel am = sm.getAudioDeviceById(sc.getAudioOutputDevice());
1360                          cbAudioDevice.setSelectedItem(am == null ? null : am.getDeviceInfo());                          cbAudioDevice.setSelectedItem(am == null ? null : am.getDeviceInfo());
1361                  } catch(Exception x) {                  } catch(Exception x) {
1362                          CC.getLogger().log(Level.WARNING, "Unkown error", x);                          CC.getLogger().log(Level.WARNING, "Unkown error", x);
# Line 1287  class ChannelProperties extends JPanel { Line 1374  class ChannelProperties extends JPanel {
1374                          return;                          return;
1375                  }                  }
1376                                    
1377                    if(midiDevice != null) midiDevice.removeMidiDeviceListener(getHandler());
1378                    
1379                  cbMidiPort.removeAllItems();                  cbMidiPort.removeAllItems();
1380                                    
1381                  if(mid == null) {                  if(mid == null) {
1382                            midiDevice = null;
1383                          cbMidiPort.setEnabled(false);                          cbMidiPort.setEnabled(false);
1384                                                    
1385                          cbMidiChannel.setSelectedItem(null);                          cbMidiChannel.setSelectedItem(null);
1386                          cbMidiChannel.setEnabled(false);                          cbMidiChannel.setEnabled(false);
1387                  } else {                  } else {
1388                            midiDevice = CC.getSamplerModel().getMidiDeviceById(mid.getDeviceId());
1389                            if(midiDevice != null) midiDevice.addMidiDeviceListener(getHandler());
1390                            
1391                          cbMidiPort.setEnabled(true);                          cbMidiPort.setEnabled(true);
1392                                                    
1393                          MidiPort[] ports = mid.getMidiPorts();                          MidiPort[] ports = mid.getMidiPorts();
# Line 1336  class ChannelProperties extends JPanel { Line 1429  class ChannelProperties extends JPanel {
1429                  Object oldEngine = getModel().getChannelInfo().getEngine();                  Object oldEngine = getModel().getChannelInfo().getEngine();
1430                  SamplerEngine newEngine = (SamplerEngine)cbEngines.getSelectedItem();                  SamplerEngine newEngine = (SamplerEngine)cbEngines.getSelectedItem();
1431                                    
1432                    if(newEngine == null) cbEngines.setToolTipText(null);
1433                    else cbEngines.setToolTipText(newEngine.getDescription());
1434                    
1435                  if(oldEngine != null) { if(oldEngine.equals(newEngine)) return; }                  if(oldEngine != null) { if(oldEngine.equals(newEngine)) return; }
1436                  else if(newEngine == null) return;                  else if(newEngine == null) return;
1437                                    
# Line 1372  class ChannelProperties extends JPanel { Line 1468  class ChannelProperties extends JPanel {
1468          private Handler          private Handler
1469          getHandler() { return handler; }          getHandler() { return handler; }
1470                    
1471          private class Handler implements MidiDeviceListListener,          private class Handler implements MidiDeviceListListener, ListListener<AudioDeviceModel>,
1472                                  ListListener<AudioDeviceModel>, SamplerChannelListListener {                                          SamplerChannelListListener, MidiDeviceListener {
1473                                    
1474                  /**                  /**
1475                   * Invoked when a new MIDI device is created.                   * Invoked when a new MIDI device is created.
# Line 1432  class ChannelProperties extends JPanel { Line 1528  class ChannelProperties extends JPanel {
1528                  channelRemoved(SamplerChannelListEvent e) {                  channelRemoved(SamplerChannelListEvent e) {
1529                          // Some cleanup when the channel is removed.                          // Some cleanup when the channel is removed.
1530                          if(e.getChannelModel().getChannelId() == channelModel.getChannelId()) {                          if(e.getChannelModel().getChannelId() == channelModel.getChannelId()) {
1531                                  CC.getSamplerModel().removeMidiDeviceListListener(getHandler());                                  SamplerModel sm = CC.getSamplerModel();
1532                                  CC.getSamplerModel().removeAudioDeviceListListener(getHandler());                                  
1533                                    sm.removeMidiDeviceListListener(getHandler());
1534                                    sm.removeAudioDeviceListListener(getHandler());
1535                                    sm.removeMidiInstrumentMapListListener(mapListListener);
1536                                    sm.removeSamplerListener(samplerListener);
1537                                    sm.removeSamplerChannelListListener(getHandler());
1538                                    
1539                                    if(midiDevice != null) {
1540                                            midiDevice.removeMidiDeviceListener(getHandler());
1541                                    }
1542                            }
1543                    }
1544                    
1545                    public void
1546                    settingsChanged(MidiDeviceEvent e) {
1547                            if(isUpdate()) {
1548                                    CC.getLogger().warning("Invalid update state");
1549                                    return;
1550                          }                          }
1551                            
1552                            setUpdate(true);
1553                            int idx = cbMidiPort.getSelectedIndex();
1554                            MidiInputDevice d = e.getMidiDeviceModel().getDeviceInfo();
1555                            
1556                            cbMidiPort.removeAllItems();
1557                            for(MidiPort port : d.getMidiPorts()) cbMidiPort.addItem(port);
1558                            
1559                            if(idx >= cbMidiPort.getModel().getSize()) idx = 0;
1560                            
1561                            setUpdate(false);
1562                            
1563                            if(cbMidiPort.getModel().getSize() > 0) cbMidiPort.setSelectedIndex(idx);
1564                  }                  }
1565          }          }
1566                    
# Line 1442  class ChannelProperties extends JPanel { Line 1568  class ChannelProperties extends JPanel {
1568                  /** Invoked when a new MIDI instrument map is added to a list. */                  /** Invoked when a new MIDI instrument map is added to a list. */
1569                  public void                  public void
1570                  entryAdded(ListEvent<MidiInstrumentMap> e) {                  entryAdded(ListEvent<MidiInstrumentMap> e) {
                         //cbInstrumentMap.addItem(e.getEntry());  
1571                          cbInstrumentMap.insertItemAt(e.getEntry(), cbInstrumentMap.getItemCount());                          cbInstrumentMap.insertItemAt(e.getEntry(), cbInstrumentMap.getItemCount());
1572                          boolean b = getModel().getChannelInfo().getEngine() != null;                          boolean b = getModel().getChannelInfo().getEngine() != null;
1573                          if(b && !cbInstrumentMap.isEnabled()) cbInstrumentMap.setEnabled(true);                          if(b && !cbInstrumentMap.isEnabled()) cbInstrumentMap.setEnabled(true);

Legend:
Removed from v.1143  
changed lines
  Added in v.1540

  ViewVC Help
Powered by ViewVC