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

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

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

revision 1688 by iliev, Thu Feb 14 16:52:36 2008 UTC revision 1871 by iliev, Sun Mar 22 18:11:39 2009 UTC
# Line 1  Line 1 
1  /*  /*
2   *   JSampler - a java front-end for LinuxSampler   *   JSampler - a java front-end for LinuxSampler
3   *   *
4   *   Copyright (C) 2005-2007 Grigor Iliev <grigor@grigoriliev.com>   *   Copyright (C) 2005-2009 Grigor Iliev <grigor@grigoriliev.com>
5   *   *
6   *   This file is part of JSampler.   *   This file is part of JSampler.
7   *   *
# Line 24  package org.jsampler.view.std; Line 24  package org.jsampler.view.std;
24    
25  import java.awt.event.ActionEvent;  import java.awt.event.ActionEvent;
26    
27    import java.io.File;
28  import java.io.FileOutputStream;  import java.io.FileOutputStream;
29    
30  import java.util.logging.Level;  import java.util.logging.Level;
31    
32  import javax.swing.AbstractAction;  import javax.swing.AbstractAction;
33  import javax.swing.Action;  import javax.swing.Action;
34  import javax.swing.JFileChooser;  
35    import javax.swing.JMenu;
36    import javax.swing.JMenuItem;
37    import javax.swing.SwingUtilities;
38    
39    import javax.swing.event.ListSelectionEvent;
40    import javax.swing.event.ListSelectionListener;
41    
42  import org.jsampler.CC;  import org.jsampler.CC;
43  import org.jsampler.HF;  import org.jsampler.HF;
44  import org.jsampler.JSPrefs;  import org.jsampler.JSPrefs;
45    
46  import org.jsampler.view.LscpFileFilter;  import org.jsampler.SamplerChannelModel;
47    
48    import org.jsampler.view.JSChannel;
49    import org.jsampler.view.JSChannelsPane;
50    
51  import static org.jsampler.view.std.StdI18n.i18n;  import static org.jsampler.view.std.StdI18n.i18n;
52    
# Line 54  public class StdA4n { Line 64  public class StdA4n {
64                    
65          protected void          protected void
66          exportSamplerConfig() {          exportSamplerConfig() {
67                  String s = preferences().getStringProperty("lastScriptLocation");                  File f = StdUtils.showSaveLscpFileChooser();
68                  JFileChooser fc = new JFileChooser(s);                  if(f == null) return;
69                  fc.setFileFilter(new LscpFileFilter());                  if(f.exists()) {
70                  int result = fc.showSaveDialog(CC.getMainFrame());                          String msg = i18n.getMessage("StdA4n.overwriteFile?");
71                  if(result != JFileChooser.APPROVE_OPTION) return;                          if(!HF.showYesNoDialog(CC.getMainFrame(), msg)) return;
72                                    }
                 String path = fc.getCurrentDirectory().getAbsolutePath();  
                 preferences().setStringProperty("lastScriptLocation", path);  
73                    
74                  try {                  try {
75                          FileOutputStream fos = new FileOutputStream(fc.getSelectedFile());                          FileOutputStream fos = new FileOutputStream(f);
76                          fos.write(CC.exportSessionToLscpScript().getBytes("US-ASCII"));                          fos.write(CC.exportSessionToLscpScript().getBytes("US-ASCII"));
77                          fos.close();                          fos.close();
78                  } catch(Exception x) {                  } catch(Exception x) {
# Line 75  public class StdA4n { Line 83  public class StdA4n {
83                    
84          protected void          protected void
85          exportMidiInstrumentMaps() {          exportMidiInstrumentMaps() {
86                  String s = preferences().getStringProperty("lastScriptLocation");                  File f = StdUtils.showSaveLscpFileChooser();
87                  JFileChooser fc = new JFileChooser(s);                  if(f == null) return;
88                  fc.setFileFilter(new LscpFileFilter());  
89                  int result = fc.showSaveDialog(CC.getMainFrame());                  if(f.exists()) {
90                  if(result != JFileChooser.APPROVE_OPTION) return;                          String msg = i18n.getMessage("StdA4n.overwriteFile?");
91                                            if(!HF.showYesNoDialog(CC.getMainFrame(), msg)) return;
92                  String path = fc.getCurrentDirectory().getAbsolutePath();                  }
                 preferences().setStringProperty("lastScriptLocation", path);  
93                                    
94                  try {                  try {
95                          FileOutputStream fos = new FileOutputStream(fc.getSelectedFile());                          FileOutputStream fos = new FileOutputStream(f);
96                          fos.write(CC.exportInstrMapsToLscpScript().getBytes("US-ASCII"));                          fos.write(CC.exportInstrMapsToLscpScript().getBytes("US-ASCII"));
97                          fos.close();                          fos.close();
98                  } catch(Exception x) {                  } catch(Exception x) {
99                          CC.getLogger().log(Level.FINE, HF.getErrorMessage(x), x);                          CC.getLogger().log(Level.FINE, HF.getErrorMessage(x), x);
100                          HF.showErrorMessage(x);                          HF.showErrorMessage(x);
101                  };                  }
102          }          }
103                    
104          public final Action connect = new Connect();          public final Action connect = new Connect();
# Line 103  public class StdA4n { Line 110  public class StdA4n {
110                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.connect.tt"));                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.connect.tt"));
111                  }                  }
112                                    
113                    @Override
114                  public void                  public void
115                  actionPerformed(ActionEvent e) { CC.reconnect(); }                  actionPerformed(ActionEvent e) { CC.reconnect(); }
116          }          }
# Line 116  public class StdA4n { Line 124  public class StdA4n {
124                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.refresh.tt"));                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.refresh.tt"));
125                  }                  }
126                                    
127                    @Override
128                  public void                  public void
129                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
130                          if(!CC.verifyConnection()) {                          if(!CC.verifyConnection()) {
# Line 135  public class StdA4n { Line 144  public class StdA4n {
144                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.resetSampler.tt"));                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.resetSampler.tt"));
145                  }                  }
146                                    
147                    @Override
148                  public void                  public void
149                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
150                          if(!CC.verifyConnection()) return;                          if(!CC.verifyConnection()) return;
# Line 156  public class StdA4n { Line 166  public class StdA4n {
166                                                    
167                  }                  }
168                                    
169                    @Override
170                  public void                  public void
171                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
172                          if(!CC.verifyConnection()) return;                          if(!CC.verifyConnection()) return;
# Line 173  public class StdA4n { Line 184  public class StdA4n {
184                          putValue(SHORT_DESCRIPTION, s);                          putValue(SHORT_DESCRIPTION, s);
185                  }                  }
186                                    
187                    @Override
188                  public void                  public void
189                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
190                          if(!CC.verifyConnection()) return;                          if(!CC.verifyConnection()) return;
# Line 189  public class StdA4n { Line 201  public class StdA4n {
201                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.changeBackend.tt"));                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("actions.changeBackend.tt"));
202                  }                  }
203                                    
204                    @Override
205                  public void                  public void
206                  actionPerformed(ActionEvent e) { CC.changeBackend(); }                  actionPerformed(ActionEvent e) { CC.changeBackend(); }
207          }          }
208                    
209            
210            public final Action moveChannelsOnTop = new MoveChannelsOnTop();
211            
212            private class MoveChannelsOnTop extends AbstractAction {
213                    MoveChannelsOnTop() {
214                            super(i18n.getMenuLabel("channels.moveOnTop"));
215                            
216                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.moveOnTop.tt"));
217                            setEnabled(false);
218                    }
219                    
220                    @Override
221                    public void
222                    actionPerformed(ActionEvent e) {
223                            JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
224                            p.moveSelectedChannelsOnTop();
225                    }
226            }
227            
228            public final Action moveChannelsUp = new MoveChannelsUp();
229            
230            private class MoveChannelsUp extends AbstractAction {
231                    MoveChannelsUp() {
232                            super(i18n.getMenuLabel("channels.moveUp"));
233                            
234                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.moveUp.tt"));
235                            setEnabled(false);
236                    }
237                    
238                    @Override
239                    public void
240                    actionPerformed(ActionEvent e) {
241                            JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
242                            p.moveSelectedChannelsUp();
243                    }
244            }
245            
246            public final Action moveChannelsDown = new MoveChannelsDown();
247            
248            private class MoveChannelsDown extends AbstractAction {
249                    MoveChannelsDown() {
250                            super(i18n.getMenuLabel("channels.moveDown"));
251                            
252                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.moveDown.tt"));
253                            setEnabled(false);
254                    }
255                    
256                    @Override
257                    public void
258                    actionPerformed(ActionEvent e) {
259                            JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
260                            p.moveSelectedChannelsDown();
261                    }
262            }
263            
264            public final Action moveChannelsAtBottom = new MoveChannelsAtBottom();
265            
266            private class MoveChannelsAtBottom extends AbstractAction {
267                    MoveChannelsAtBottom() {
268                            super(i18n.getMenuLabel("channels.moveAtBottom"));
269                            
270                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.moveAtBottom.tt"));
271                            setEnabled(false);
272                    }
273                    
274                    @Override
275                    public void
276                    actionPerformed(ActionEvent e) {
277                            JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
278                            p.moveSelectedChannelsAtBottom();
279                    }
280            }
281            
282            public final Action duplicateChannels = new DuplicateChannels();
283    
284            private static class DuplicateChannels extends AbstractAction {
285                    DuplicateChannels() {
286                            super(i18n.getMenuLabel("channels.duplicate"));
287                            
288                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.duplicateChannels.tt"));
289                            
290                            setEnabled(false);
291                    }
292                    
293                    @Override
294                    public void
295                    actionPerformed(ActionEvent e) {
296                            JSChannel[] channels =
297                                    CC.getMainFrame().getSelectedChannelsPane().getSelectedChannels();
298                            
299                            if(channels.length > 2) {
300                                    if(!HF.showYesNoDialog (
301                                            CC.getMainFrame(),
302                                            i18n.getMessage("StdA4n.duplicateChannels?")
303                                    )) return;
304                            }
305                            
306                            CC.getTaskQueue().add (
307                                    new org.jsampler.task.DuplicateChannels(channels)
308                            );
309                    }
310            }
311            
312            public final Action removeChannels = new RemoveChannels();
313            
314            private static class RemoveChannels extends AbstractAction {
315                    RemoveChannels() {
316                            super(i18n.getMenuLabel("channels.removeChannel"));
317                            
318                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.removeChannels.tt"));
319                            
320                            setEnabled(false);
321                    }
322                    
323                    @Override
324                    public void
325                    actionPerformed(ActionEvent e) {
326                            JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
327                            if(p.getSelectedChannelCount() > 1)
328                                    if(!HF.showYesNoDialog (
329                                            CC.getMainFrame(), i18n.getMessage("StdA4n.removeChannels?")
330                                    )) return;
331                            
332                            JSChannel[] chnS = p.getSelectedChannels();
333                            
334                            for(JSChannel c : chnS) removeChannel(c);
335                    }
336                    
337                    private void
338                    removeChannel(final JSChannel c) {
339                            final JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
340                            int id = c.getChannelInfo().getChannelId();
341                            
342                            CC.getSamplerModel().removeBackendChannel(id);
343                    }
344            }
345            
346            public static class
347            MoveChannelsToPanel extends AbstractAction implements ListSelectionListener {
348                    private final JSChannelsPane pane;
349                    
350                    public
351                    MoveChannelsToPanel(JSChannelsPane pane) {
352                            super(pane.getTitle());
353                            this.pane = pane;
354                            CC.getMainFrame().addChannelsPaneSelectionListener(this);
355                            valueChanged(null);
356                    }
357                    
358                    @Override
359                    public void
360                    actionPerformed(ActionEvent e) {
361                            JSChannelsPane acp = CC.getMainFrame().getSelectedChannelsPane();
362                            JSChannel[] chns = acp.getSelectedChannels();
363                            
364                            for(JSChannel c : chns) acp.removeChannel(c);
365                            
366                            pane.addChannels(chns);
367                            
368                            //CC.getMainFrame().setSelectedChannelsPane(pane);
369                            
370                    }
371                    
372                    @Override
373                    public void
374                    valueChanged(ListSelectionEvent e) {
375                            setEnabled(CC.getMainFrame().getSelectedChannelsPane() != pane);
376                    }
377            
378                    public JSChannelsPane
379                    getChannelsPane() { return pane; }
380            }
381            
382            public final Action selectAllChannels = new SelectAllChannels();
383            
384            private static class SelectAllChannels extends AbstractAction {
385                    SelectAllChannels() {
386                            super(i18n.getMenuLabel("channels.selectAll"));
387                            
388                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.selectAll.tt"));
389                    }
390                    
391                    @Override
392                    public void
393                    actionPerformed(ActionEvent e) {
394                            CC.getMainFrame().getSelectedChannelsPane().selectAll();
395                    }
396            }
397            
398            public final Action deselectChannels = new DeselectChannels();
399            
400            private static class DeselectChannels extends AbstractAction {
401                    DeselectChannels() {
402                            super(i18n.getMenuLabel("channels.selectNone"));
403                            
404                            putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("channels.selectNone.tt"));
405                    }
406                    
407                    @Override
408                    public void
409                    actionPerformed(ActionEvent e) {
410                            CC.getMainFrame().getSelectedChannelsPane().clearSelection();
411                    }
412            }
413            
414          public final Action browseOnlineTutorial = new BrowseOnlineTutorial();          public final Action browseOnlineTutorial = new BrowseOnlineTutorial();
415                                    
416          private class BrowseOnlineTutorial extends AbstractAction {          private class BrowseOnlineTutorial extends AbstractAction {
# Line 202  public class StdA4n { Line 420  public class StdA4n {
420                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("help.onlineTutorial.tt"));                          putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("help.onlineTutorial.tt"));
421                  }                  }
422                                    
423                    @Override
424                  public void                  public void
425                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
426                          StdUtils.browse("http://jsampler.sourceforge.net/");                          StdUtils.browse("http://jsampler.sourceforge.net/");
427                  }                  }
428          }          }
429            
430            public static abstract class LoadInstrumentAction extends AbstractAction {
431                    protected final SamplerChannelModel channelModel;
432                    
433                    LoadInstrumentAction(SamplerChannelModel model) { this(model, false); }
434                    
435                    LoadInstrumentAction(SamplerChannelModel model, boolean onPanel) {
436                            String s = onPanel ? "instrumentsdb.actions.loadInstrument.onPanel.channel"
437                                               : "instrumentsdb.actions.loadInstrument.onChannel";
438                            int i = CC.getMainFrame().getChannelNumber(model) + 1;
439                            putValue(Action.NAME, i18n.getMenuLabel(s, i));
440                            channelModel = model;
441                    }
442            }
443            
444            public static interface LoadInstrumentActionFactory {
445                    public LoadInstrumentAction
446                    createLoadInstrumentAction(SamplerChannelModel model, boolean onPanel);
447            }
448            
449            
450            
451            public static void
452            updateLoadInstrumentMenu(final JMenu menu, final LoadInstrumentActionFactory factory) {
453                    SwingUtilities.invokeLater(new Runnable() {
454                            public void
455                            run() { updateLoadInstrumentMenu0(menu, factory); }
456                    });
457            }
458            
459            private static void
460            updateLoadInstrumentMenu0(JMenu menu, LoadInstrumentActionFactory factory) {
461                    if(CC.getMainFrame() == null) return;
462                    menu.removeAll();
463                    int count = 0;
464                    JSChannelsPane chnPane = null;
465                    for(int i = 0; i < CC.getMainFrame().getChannelsPaneCount(); i++) {
466                            if(CC.getMainFrame().getChannelsPane(i).getChannelCount() == 0) continue;
467                            
468                            chnPane = CC.getMainFrame().getChannelsPane(i);
469                            count++;
470                            String s = "instrumentsdb.actions.loadInstrument.onPanel";
471                            JMenu m = new JMenu(i18n.getMenuLabel(s, i + 1));
472                            for(int j = 0; j < chnPane.getChannelCount(); j++) {
473                                    SamplerChannelModel chn = chnPane.getChannel(j).getModel();
474                                    m.add(new JMenuItem(factory.createLoadInstrumentAction(chn, true)));
475                            }
476                            menu.add(m);
477                    }
478                    
479                    if(count == 1 && CC.getMainFrame().getSelectedChannelsPane() == chnPane) {
480                            menu.removeAll();
481                            
482                            for(int j = 0; j < chnPane.getChannelCount(); j++) {
483                                    SamplerChannelModel chn = chnPane.getChannel(j).getModel();
484                                    menu.add(new JMenuItem(factory.createLoadInstrumentAction(chn, false)));
485                            }
486                    }
487            }
488  }  }

Legend:
Removed from v.1688  
changed lines
  Added in v.1871

  ViewVC Help
Powered by ViewVC