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

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

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

revision 1687 by iliev, Mon Nov 19 22:22:22 2007 UTC revision 1688 by iliev, Thu Feb 14 16:52:36 2008 UTC
# Line 35  import java.beans.PropertyChangeListener Line 35  import java.beans.PropertyChangeListener
35  import javax.swing.BorderFactory;  import javax.swing.BorderFactory;
36  import javax.swing.Box;  import javax.swing.Box;
37  import javax.swing.BoxLayout;  import javax.swing.BoxLayout;
38    import javax.swing.JButton;
39  import javax.swing.JPanel;  import javax.swing.JPanel;
40    
41  import org.jdesktop.swingx.JXCollapsiblePane;  import org.jdesktop.swingx.JXCollapsiblePane;
# Line 53  public class DevicePane extends JPanel { Line 54  public class DevicePane extends JPanel {
54                    
55          private final JXCollapsiblePane mainPane = new JXCollapsiblePane();          private final JXCollapsiblePane mainPane = new JXCollapsiblePane();
56          private final JXCollapsiblePane optionsPane = new JXCollapsiblePane();          private final JXCollapsiblePane optionsPane = new JXCollapsiblePane();
57            private final JXCollapsiblePane confirmPane = new JXCollapsiblePane();
58            private final ConfirmRemovalPane confirmRemovalPane = new ConfirmRemovalPane();
59                    
60          /** Creates a new instance of <code>DevicePane</code> */          /** Creates a new instance of <code>DevicePane</code> */
61          public          public
# Line 97  public class DevicePane extends JPanel { Line 100  public class DevicePane extends JPanel {
100                  mainPane.add(p);                  mainPane.add(p);
101                                    
102                  optionsPane.setAlignmentX(LEFT_ALIGNMENT);                  optionsPane.setAlignmentX(LEFT_ALIGNMENT);
                 optionsPane.setAnimated(false);  
                 optionsPane.setCollapsed(true);  
                 optionsPane.setAnimated(preferences().getBoolProperty(ANIMATED));  
103                                    
104                  preferences().addPropertyChangeListener(ANIMATED, new PropertyChangeListener() {                  initCollasiblePane(optionsPane);
                         public void  
                         propertyChange(PropertyChangeEvent e) {  
                                 optionsPane.setAnimated(preferences().getBoolProperty(ANIMATED));  
                         }  
                 });  
105                                    
106                  mainPane.add(optionsPane);                  mainPane.add(optionsPane);
107                                    
108                    JPanel p2 = new JPanel();
109                    
110                    confirmPane.setContentPane(confirmRemovalPane);
111                    confirmPane.setAlignmentX(LEFT_ALIGNMENT);
112                    initCollasiblePane(confirmPane);
113                    
114                    mainPane.add(confirmPane);
115                    
116                  add(mainPane);                  add(mainPane);
117                                    
118                  mainPane.setAnimated(false);                  initCollasiblePane(mainPane);
                 mainPane.setCollapsed(true);  
                 mainPane.setAnimated(preferences().getBoolProperty(ANIMATED));  
119                  mainPane.setCollapsed(false);                  mainPane.setCollapsed(false);
120            }
121            
122            private void
123            initCollasiblePane(final JXCollapsiblePane pane) {
124                    pane.setAnimated(false);
125                    pane.setCollapsed(true);
126                    pane.setAnimated(preferences().getBoolProperty(ANIMATED));
127                                    
128                  preferences().addPropertyChangeListener(ANIMATED, new PropertyChangeListener() {                  preferences().addPropertyChangeListener(ANIMATED, new PropertyChangeListener() {
129                          public void                          public void
130                          propertyChange(PropertyChangeEvent e) {                          propertyChange(PropertyChangeEvent e) {
131                                  mainPane.setAnimated(preferences().getBoolProperty(ANIMATED));                                  pane.setAnimated(preferences().getBoolProperty(ANIMATED));
132                          }                          }
133                  });                  });
134          }          }
# Line 138  public class DevicePane extends JPanel { Line 146  public class DevicePane extends JPanel {
146          protected void          protected void
147          restoreDevice() {          restoreDevice() {
148                  btnDestroy.setSelected(true);                  btnDestroy.setSelected(true);
149                    confirmRemovalPane.restore();
150                  mainPane.setCollapsed(false);                  mainPane.setCollapsed(false);
                   
151          }          }
152                    
153          protected void          protected void
# Line 165  public class DevicePane extends JPanel { Line 173  public class DevicePane extends JPanel {
173                  p.setMinimumSize(p.getPreferredSize());                  p.setMinimumSize(p.getPreferredSize());
174                  p.setMaximumSize(new Dimension(Short.MAX_VALUE, 2));                  p.setMaximumSize(new Dimension(Short.MAX_VALUE, 2));
175                  return p;                  return p;
176          }                }
177            
178            private boolean
179            shouldConfirm() { return preferences().getBoolProperty(CONFIRM_DEVICE_REMOVAL); }
180            
181            private void
182            confirmRemoval() {
183                    confirmRemovalPane.showOptions = !optionsPane.isCollapsed();
184                    if(optionsPane.isCollapsed() || !optionsPane.isAnimated()) {
185                            if(btnOptions.isSelected()) btnOptions.doClick(0);
186                            btnOptions.setEnabled(false);
187                            confirmPane.setCollapsed(false);
188                            return;
189                    }
190                    
191                    final String s = JXCollapsiblePane.ANIMATION_STATE_KEY;
192                    optionsPane.addPropertyChangeListener(s, new PropertyChangeListener() {
193                            public void
194                            propertyChange(PropertyChangeEvent e) {
195                                    if(e.getNewValue() == "collapsed") {
196                                            confirmPane.setCollapsed(false);
197                                            optionsPane.removePropertyChangeListener(s, this);
198                                    }
199                            }
200                    });
201                    
202                    btnOptions.doClick(0);
203                    btnOptions.setEnabled(false);
204            }
205                    
206          private class OptionsButton extends PixmapToggleButton implements ActionListener {          private class OptionsButton extends PixmapToggleButton implements ActionListener {
207                  OptionsButton() {                  OptionsButton() {
# Line 173  public class DevicePane extends JPanel { Line 209  public class DevicePane extends JPanel {
209                          setRolloverIcon(Res.gfxOptionsOffRO);                          setRolloverIcon(Res.gfxOptionsOffRO);
210                          this.setRolloverSelectedIcon(Res.gfxOptionsOnRO);                          this.setRolloverSelectedIcon(Res.gfxOptionsOnRO);
211                          addActionListener(this);                          addActionListener(this);
212                            setToolTipText(i18n.getButtonLabel("DevicePane.ttShowOptions"));
213                  }                  }
214                                    
215                  public void                  public void
# Line 180  public class DevicePane extends JPanel { Line 217  public class DevicePane extends JPanel {
217                          showOptionsPane(isSelected());                          showOptionsPane(isSelected());
218                                                    
219                          String s;                          String s;
220                          if(isSelected()) s = i18n.getButtonLabel("OptionsButton.ttHideOptions");                          if(isSelected()) s = i18n.getButtonLabel("DevicePane.ttHideOptions");
221                          else s = i18n.getButtonLabel("OptionsButton.ttShowOptions");                          else s = i18n.getButtonLabel("DevicePane.ttShowOptions");
222                                                    
223                          setToolTipText(s);                          setToolTipText(s);
224                  }                  }
# Line 205  public class DevicePane extends JPanel { Line 242  public class DevicePane extends JPanel {
242                          addActionListener(this);                          addActionListener(this);
243                          String s = JXCollapsiblePane.ANIMATION_STATE_KEY;                          String s = JXCollapsiblePane.ANIMATION_STATE_KEY;
244                          mainPane.addPropertyChangeListener(s, this);                          mainPane.addPropertyChangeListener(s, this);
245                            setToolTipText(i18n.getButtonLabel("DevicePane.ttRemoveDevice"));
246                  }                  }
247                                    
248                  public void                  public void
249                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
250                            if(shouldConfirm()) {
251                                    if(isSelected()) confirmRemovalPane.onCancel();
252                                    else confirmRemoval();
253                                    return;
254                            }
255                            
256                          if(!mainPane.isAnimated()) {                          if(!mainPane.isAnimated()) {
257                                  destroyDevice();                                  destroyDevice();
258                                  return;                                  return;
# Line 225  public class DevicePane extends JPanel { Line 269  public class DevicePane extends JPanel {
269                  }                  }
270          }          }
271                    
272            private class ConfirmRemovalPane extends PixmapPane implements ActionListener {
273                    private final JButton btnRemove = new JButton(i18n.getButtonLabel("DevicePane.btnRemove"));
274                    private final JButton btnCancel = new JButton(i18n.getButtonLabel("cancel"));
275                    
276                    protected boolean showOptions = false;
277            
278                    ConfirmRemovalPane() {
279                            super(Res.gfxChannelOptions);
280                            
281                            setAlignmentX(LEFT_ALIGNMENT);
282                            
283                            setPixmapInsets(new Insets(1, 1, 1, 1));
284                            setLayout(new java.awt.BorderLayout());
285                            setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
286                            setOpaque(false);
287                            
288                            PixmapPane p = new PixmapPane(Res.gfxRoundBg7);
289                            p.setPixmapInsets(new Insets(3, 3, 3, 3));
290                            p.setOpaque(false);
291                            
292                            p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
293                            p.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
294                            
295                            p.add(Box.createGlue());
296                            p.add(btnRemove);
297                            p.add(Box.createRigidArea(new Dimension(5, 0)));
298                            p.add(btnCancel);
299                            
300                            add(p);
301                            
302                            btnRemove.addActionListener(this);
303                            
304                            btnCancel.addActionListener(new ActionListener() {
305                                    public void
306                                    actionPerformed(ActionEvent e) {
307                                            onCancel();
308                                    }
309                            });
310                    }
311                    
312                    protected void
313                    onCancel() {
314                            btnDestroy.setSelected(true);
315                            btnOptions.setEnabled(true);
316                            btnRemove.setEnabled(true);
317                            
318                            if(!showOptions) {
319                                    confirmPane.setCollapsed(true);
320                                    return;
321                            }
322                            showOptions = false;
323                            
324                            if(!confirmPane.isAnimated()) {
325                                    confirmPane.setCollapsed(true);
326                                    btnOptions.doClick(0);
327                                    return;
328                            }
329                            
330                            final String s = JXCollapsiblePane.ANIMATION_STATE_KEY;
331                            confirmPane.addPropertyChangeListener(s, new PropertyChangeListener() {
332                                    public void
333                                    propertyChange(PropertyChangeEvent e) {
334                                            if(e.getNewValue() == "collapsed") {
335                                                    btnOptions.doClick(0);
336                                                    confirmPane.removePropertyChangeListener(s, this);
337                                            }
338                                    }
339                            });
340                            
341                            confirmPane.setCollapsed(true);
342                    }
343                    
344                    protected void
345                    restore() {
346                            btnOptions.setEnabled(true);
347                            boolean b = confirmPane.isAnimated();
348                            confirmPane.setAnimated(false);
349                            confirmPane.setCollapsed(true);
350                            confirmPane.setAnimated(b);
351                            btnRemove.setEnabled(true);
352                            showOptions = false;
353                    }
354                    
355                    public void
356                    actionPerformed(ActionEvent e) {
357                            btnRemove.setEnabled(false);
358                            
359                            if(!mainPane.isAnimated()) {
360                                    destroyDevice();
361                                    return;
362                            }
363                            
364                            mainPane.setCollapsed(true);
365                    }
366            }
367  }  }

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

  ViewVC Help
Powered by ViewVC