/[svn]/jsampler/trunk/src/org/jsampler/view/fantasia/MidiDevicesPane.java
ViewVC logotype

Diff of /jsampler/trunk/src/org/jsampler/view/fantasia/MidiDevicesPane.java

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

revision 1444 by iliev, Fri Aug 10 20:24:23 2007 UTC revision 1445 by iliev, Mon Oct 15 20:55:33 2007 UTC
# Line 22  Line 22 
22    
23  package org.jsampler.view.fantasia;  package org.jsampler.view.fantasia;
24    
25    import java.awt.BorderLayout;
26  import java.awt.Cursor;  import java.awt.Cursor;
27  import java.awt.Dimension;  import java.awt.Dimension;
28  import java.awt.Insets;  import java.awt.Insets;
29    
30    import java.awt.event.ActionEvent;
31    import java.awt.event.ActionListener;
32  import java.awt.event.MouseAdapter;  import java.awt.event.MouseAdapter;
33  import java.awt.event.MouseEvent;  import java.awt.event.MouseEvent;
34    
35    import java.beans.PropertyChangeEvent;
36    import java.beans.PropertyChangeListener;
37    
38    import javax.swing.BorderFactory;
39  import javax.swing.Box;  import javax.swing.Box;
40  import javax.swing.BoxLayout;  import javax.swing.BoxLayout;
41  import javax.swing.JPanel;  import javax.swing.JPanel;
# Line 38  import net.sf.juife.ComponentList; Line 45  import net.sf.juife.ComponentList;
45  import net.sf.juife.ComponentListModel;  import net.sf.juife.ComponentListModel;
46  import net.sf.juife.DefaultComponentListModel;  import net.sf.juife.DefaultComponentListModel;
47    
48    import net.sf.juife.event.TaskEvent;
49    import net.sf.juife.event.TaskListener;
50    
51    import org.jdesktop.swingx.JXCollapsiblePane;
52    
53  import org.jsampler.CC;  import org.jsampler.CC;
54  import org.jsampler.MidiDeviceModel;  import org.jsampler.MidiDeviceModel;
55    
56  import org.jsampler.event.MidiDeviceListEvent;  import org.jsampler.event.MidiDeviceListEvent;
57  import org.jsampler.event.MidiDeviceListListener;  import org.jsampler.event.MidiDeviceListListener;
58    
59    import org.jsampler.task.Midi;
60    
61    import org.jsampler.view.std.JSNewMidiDeviceDlg;
62    
63    import org.linuxsampler.lscp.MidiInputDriver;
64    
65  import static org.jsampler.view.fantasia.A4n.a4n;  import static org.jsampler.view.fantasia.A4n.a4n;
66  import static org.jsampler.view.fantasia.FantasiaI18n.i18n;  import static org.jsampler.view.fantasia.FantasiaI18n.i18n;
67    import static org.jsampler.view.fantasia.FantasiaPrefs.*;
68    
69  /**  /**
70   *   *
# Line 111  public class MidiDevicesPane extends JPa Line 130  public class MidiDevicesPane extends JPa
130          }          }
131                    
132                    
133          class NewDevicePane extends PixmapPane {          class NewDevicePane extends JPanel {
134                  private final PixmapButton btnNew =                  private final PixmapButton btnNew = new PixmapButton(Res.gfxPowerOff18);
135                          new PixmapButton(a4n.createMidiDevice, Res.gfxPowerOff18);                  private JXCollapsiblePane createDevicePane = null;
136                    private boolean createDevice = false;
137                                    
138                  NewDevicePane() {                  NewDevicePane() {
139                          super(Res.gfxDeviceBg);                          setLayout(new BorderLayout());
140                          setPixmapInsets(new Insets(1, 1, 1, 1));                          
141                            PixmapPane p = new PixmapPane(Res.gfxDeviceBg);
142                            p.setPixmapInsets(new Insets(1, 1, 1, 1));
143                                                    
144                          setLayout(new BoxLayout(this, BoxLayout.X_AXIS));                          p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
145                          add(Box.createRigidArea(new Dimension(3, 0)));                          p.add(Box.createRigidArea(new Dimension(3, 0)));
146                          add(btnNew);                          p.add(btnNew);
147                          add(Box.createRigidArea(new Dimension(3, 0)));                          p.add(Box.createRigidArea(new Dimension(3, 0)));
148                                                    
149                          add(createVSeparator());                          p.add(createVSeparator());
150                                                    
151                          Dimension d = new Dimension(77, 24);                          Dimension d = new Dimension(77, 24);
152                          setPreferredSize(d);                          p.setPreferredSize(d);
153                          setMinimumSize(d);                          p.setMinimumSize(d);
154                          setMaximumSize(new Dimension(Short.MAX_VALUE, 24));                          p.setMaximumSize(new Dimension(Short.MAX_VALUE, 24));
155                                                    
156                          btnNew.setPressedIcon(Res.gfxPowerOn18);                          btnNew.setPressedIcon(Res.gfxPowerOn18);
157                                                    
158                          addMouseListener(new MouseAdapter() {                          btnNew.addActionListener(new ActionListener() {
159                                    public void
160                                    actionPerformed(ActionEvent e) {
161                                            showHidePopup();
162                                    }
163                            });
164                            
165                            p.addMouseListener(new MouseAdapter() {
166                                  public void                                  public void
167                                  mouseClicked(MouseEvent e) {                                  mouseClicked(MouseEvent e) {
168                                          if(e.getButton() != e.BUTTON1) {                                          if(e.getButton() != e.BUTTON1) {
169                                                  return;                                                  return;
170                                          }                                          }
171                                                                                    
172                                          a4n.createMidiDevice.actionPerformed(null);                                          showHidePopup();
173                                  }                                  }
174                          });                          });
175                                                    
176                          setAlignmentX(LEFT_ALIGNMENT);                          p.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                         setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));  
177                                                    
178                          String s = i18n.getLabel("MidiDevicesPane.newDevice");                          String s = i18n.getLabel("MidiDevicesPane.newDevice");
179                          btnNew.setToolTipText(s);                          btnNew.setToolTipText(s);
180                          setToolTipText(s);                          p.setToolTipText(s);
181                            
182                            add(p, BorderLayout.NORTH);
183                            setAlignmentX(LEFT_ALIGNMENT);
184                  }                  }
185                                    
186                  private JPanel                  private JPanel
# Line 161  public class MidiDevicesPane extends JPa Line 192  public class MidiDevicesPane extends JPa
192                          p.setMaximumSize(p.getPreferredSize());                          p.setMaximumSize(p.getPreferredSize());
193                          return p;                          return p;
194                  }                  }
195                    
196                    private JXCollapsiblePane
197                    getCreateDevicePane() {
198                            if(createDevicePane != null) return createDevicePane;
199                            
200                            createDevicePane = new JXCollapsiblePane();
201                            final JSNewMidiDeviceDlg.Pane pane = new JSNewMidiDeviceDlg.Pane();
202                            
203                            PixmapPane p1 = new PixmapPane(Res.gfxChannelOptions);
204                            p1.setPixmapInsets(new Insets(1, 1, 1, 1));
205                            p1.setLayout(new BorderLayout());
206                            p1.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
207                            
208                            PixmapPane p2 = new PixmapPane(Res.gfxBorder);
209                            p2.setPixmapInsets(new Insets(1, 1, 1, 1));
210                            p2.setLayout(new BorderLayout());
211                            p2.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
212                            p2.add(pane);
213                            p1.add(p2);
214                            
215                            p1.setPreferredSize(new Dimension(getWidth(), 210));
216                            p1.setPreferredSize(new Dimension(100, 210));
217                            
218                            createDevicePane.setContentPane(p1);
219                            createDevicePane.setAnimated(false);
220                            createDevicePane.setCollapsed(true);
221                            createDevicePane.setAnimated(preferences().getBoolProperty(ANIMATED));
222                    
223                            preferences().addPropertyChangeListener(ANIMATED, new PropertyChangeListener() {
224                                    public void
225                                    propertyChange(PropertyChangeEvent e) {
226                                            boolean b = preferences().getBoolProperty(ANIMATED);
227                                            createDevicePane.setAnimated(b);
228                                    }
229                            });
230                            
231                            String s = JXCollapsiblePane.ANIMATION_STATE_KEY;
232                            createDevicePane.addPropertyChangeListener(s, new PropertyChangeListener() {
233                                    public void
234                                    propertyChange(PropertyChangeEvent e) {
235                                            if(e.getNewValue() == "collapsed") {
236                                                    if(createDevice) {
237                                                            createMidiDevice0(pane);
238                                                            createDevice = false;
239                                                    }
240                                            }
241                                    }
242                            });
243                            
244                            add(createDevicePane);
245                            
246                            pane.btnCancel.addActionListener(new ActionListener() {
247                                    public void
248                                    actionPerformed(ActionEvent e) {
249                                            createDevicePane.setCollapsed(true);
250                                    }
251                            });
252                            
253                            pane.btnCreate.addActionListener(new ActionListener() {
254                                    public void
255                                    actionPerformed(ActionEvent e) {
256                                            createMidiDevice(pane);
257                                    }
258                            });
259                            
260                            return createDevicePane;
261                    }
262                    
263                    private void
264                    showHidePopup() {
265                            getCreateDevicePane().setCollapsed(!getCreateDevicePane().isCollapsed());
266                    }
267                    
268                    private void
269                    createMidiDevice(final JSNewMidiDeviceDlg.Pane pane) {
270                            if(!createDevicePane.isAnimated()) {
271                                    createMidiDevice0(pane);
272                                    return;
273                            }
274                            
275                            createDevice = true;
276                            createDevicePane.setCollapsed(true);
277                    }
278                    
279                    private void
280                    createMidiDevice0(final JSNewMidiDeviceDlg.Pane pane) {
281                            pane.btnCreate.setEnabled(false);
282                            final MidiInputDriver driver = pane.getSelectedDriver();
283                            final Midi.CreateDevice cmd =
284                                    new  Midi.CreateDevice(driver.getName(), driver.getParameters());
285                                    
286                            cmd.addTaskListener(new TaskListener() {
287                                    public void
288                                    taskPerformed(TaskEvent e) {
289                                            pane.btnCreate.setEnabled(true);
290                                            getCreateDevicePane().setCollapsed(true);
291                                    }
292                            });
293                            
294                            CC.getTaskQueue().add(cmd);
295                    }
296          }          }
297                    
298          private final EventHandler eventHandler = new EventHandler();          private final EventHandler eventHandler = new EventHandler();

Legend:
Removed from v.1444  
changed lines
  Added in v.1445

  ViewVC Help
Powered by ViewVC