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

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

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

revision 1318 by iliev, Sat Sep 1 13:46:04 2007 UTC revision 1496 by iliev, Mon Nov 19 22:22:22 2007 UTC
# Line 50  import javax.swing.BorderFactory; Line 50  import javax.swing.BorderFactory;
50  import javax.swing.Box;  import javax.swing.Box;
51  import javax.swing.BoxLayout;  import javax.swing.BoxLayout;
52  import javax.swing.JCheckBoxMenuItem;  import javax.swing.JCheckBoxMenuItem;
53    import javax.swing.JComponent;
54  import javax.swing.JDialog;  import javax.swing.JDialog;
55  import javax.swing.JFileChooser;  import javax.swing.JFileChooser;
56  import javax.swing.JFrame;  import javax.swing.JFrame;
# Line 76  import org.jsampler.view.JSChannelsPane; Line 77  import org.jsampler.view.JSChannelsPane;
77  import org.jsampler.view.JSMainFrame;  import org.jsampler.view.JSMainFrame;
78  import org.jsampler.view.LscpFileFilter;  import org.jsampler.view.LscpFileFilter;
79    
80    import org.jsampler.view.std.JSDetailedErrorDlg;
81  import org.jsampler.view.std.JSamplerHomeChooser;  import org.jsampler.view.std.JSamplerHomeChooser;
82    
83  import static org.jsampler.view.fantasia.A4n.a4n;  import static org.jsampler.view.fantasia.A4n.a4n;
# Line 89  import static org.jsampler.view.std.StdP Line 91  import static org.jsampler.view.std.StdP
91   * @author Grigor Iliev   * @author Grigor Iliev
92   */   */
93  public class MainFrame extends JSMainFrame {  public class MainFrame extends JSMainFrame {
         private final FantasiaMenuBar menuBar = new FantasiaMenuBar();  
94          private final StandardBar standardBar = new StandardBar();          private final StandardBar standardBar = new StandardBar();
95            private final FantasiaMenuBar menuBar = new FantasiaMenuBar();
96            private final JPanel rootPane = new JPanel();
97          private final MainPane mainPane = new MainPane();          private final MainPane mainPane = new MainPane();
98          private final DevicesPane devicesPane = new DevicesPane();          private final DevicesPane devicesPane = new DevicesPane();
99            private final JScrollPane spDevicesPane = new JScrollPane();
100                    
101          private final JMenu recentScriptsMenu =          private final JMenu recentScriptsMenu =
102                  new JMenu(i18n.getMenuLabel("actions.recentScripts"));                  new JMenu(i18n.getMenuLabel("actions.recentScripts"));
# Line 100  public class MainFrame extends JSMainFra Line 104  public class MainFrame extends JSMainFra
104          private final JSplitPane hSplitPane;          private final JSplitPane hSplitPane;
105                    
106          private final SidePane sidePane = new SidePane();          private final SidePane sidePane = new SidePane();
107            private final JPanel rightPane;
108                    
109          private final LSConsoleFrame lsConsoleFrame = new LSConsoleFrame();          private final LSConsoleFrame lsConsoleFrame = new LSConsoleFrame();
110          private final Vector<String> recentScripts = new Vector<String>();          private final Vector<String> recentScripts = new Vector<String>();
111                                    
112                    
113            private final JCheckBoxMenuItem cbmiToolBarVisible =
114                            new JCheckBoxMenuItem(i18n.getMenuLabel("view.toolBar"));
115            
116            private final JCheckBoxMenuItem cbmiSidePaneVisible =
117                            new JCheckBoxMenuItem(i18n.getMenuLabel("view.sidePane"));
118            
119            private final JCheckBoxMenuItem cbmiDevicesPaneVisible =
120                            new JCheckBoxMenuItem(i18n.getMenuLabel("view.devicesPane"));
121            
122          /** Creates a new instance of <code>MainFrame</code> */          /** Creates a new instance of <code>MainFrame</code> */
123          public          public
124          MainFrame() {          MainFrame() {
# Line 114  public class MainFrame extends JSMainFra Line 128  public class MainFrame extends JSMainFra
128                                    
129                  getContentPane().add(standardBar, BorderLayout.NORTH);                  getContentPane().add(standardBar, BorderLayout.NORTH);
130                                    
131                  addMenu();                  rightPane = createRightPane();
                   
                 addChannelsPane(mainPane.getChannelsPane());  
                   
                 JPanel rp = createRightPane();  
132                                    
133                  hSplitPane = new JSplitPane (                  hSplitPane = new JSplitPane (
134                          JSplitPane.HORIZONTAL_SPLIT,                          JSplitPane.HORIZONTAL_SPLIT,
135                          true,   // continuousLayout                          true,   // continuousLayout
136                          sidePane, rp                          sidePane, rightPane
137                  );                  );
138                    hSplitPane.setResizeWeight(0.5);
139                    
140                    rootPane.setLayout(new BorderLayout());
141                    rootPane.setBorder(BorderFactory.createEmptyBorder(6, 0, 0, 0));
142                    rootPane.setOpaque(false);
143                    rootPane.add(hSplitPane);
144                    
145                    addMenu();
146                    
147                    addChannelsPane(mainPane.getChannelsPane());
148                                    
149                  getContentPane().add(hSplitPane);                  getContentPane().add(rootPane);
150                                    
151                  int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);                  int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);
152                  hSplitPane.setDividerLocation(i);                  hSplitPane.setDividerLocation(i);
# Line 144  public class MainFrame extends JSMainFra Line 164  public class MainFrame extends JSMainFra
164                                    
165                  c.fill = GridBagConstraints.BOTH;                  c.fill = GridBagConstraints.BOTH;
166                                    
167                  JScrollPane sp = new JScrollPane(devicesPane);                  spDevicesPane.setViewportView(devicesPane);
168                  sp.setBorder(BorderFactory.createEmptyBorder());                  spDevicesPane.setBorder(BorderFactory.createEmptyBorder());
169                    int h = spDevicesPane.getMinimumSize().height;
170                    spDevicesPane.setMinimumSize(new Dimension(200, h));
171                                    
172                  c.gridx = 1;                  c.gridx = 1;
173                  c.gridy = 0;                  c.gridy = 0;
174                  c.weightx = 1.0;                  c.weightx = 1.0;
175                  c.weighty = 1.0;                  c.weighty = 1.0;
176                  c.insets = new Insets(0, 3, 3, 0);                  c.insets = new Insets(0, 3, 3, 0);
177                  gridbag.setConstraints(sp, c);                  gridbag.setConstraints(spDevicesPane, c);
178                  p.add(sp);                  p.add(spDevicesPane);
179                                    
180                  c.gridx = 0;                  c.gridx = 0;
181                  c.gridy = 0;                  c.gridy = 0;
# Line 307  public class MainFrame extends JSMainFra Line 329  public class MainFrame extends JSMainFra
329                  m = new FantasiaMenu(i18n.getMenuLabel("edit"));                  m = new FantasiaMenu(i18n.getMenuLabel("edit"));
330                  menuBar.add(m);                  menuBar.add(m);
331                                    
332                    mi = new JMenuItem(i18n.getMenuLabel("edit.addChannel"));
333                    m.add(mi);
334                    mi.addActionListener(new ActionListener() {
335                            public void
336                            actionPerformed(ActionEvent e) {
337                                    CC.getSamplerModel().addBackendChannel();
338                            }
339                    });
340                    
341                    m.addSeparator();
342                    
343                    mi = new JMenuItem(a4n.createMidiDevice);
344                    mi.setIcon(null);
345                    m.add(mi);
346                    
347                    mi = new JMenuItem(a4n.createAudioDevice);
348                    mi.setIcon(null);
349                    m.add(mi);
350                    
351                    m.addSeparator();
352                    
353                  mi = new JMenuItem(a4n.editPreferences);                  mi = new JMenuItem(a4n.editPreferences);
354                  mi.setIcon(null);                  mi.setIcon(null);
355                  mi.setAccelerator(KeyStroke.getKeyStroke (                  mi.setAccelerator(KeyStroke.getKeyStroke (
# Line 314  public class MainFrame extends JSMainFra Line 357  public class MainFrame extends JSMainFra
357                  ));                  ));
358                  m.add(mi);                  m.add(mi);
359                                    
360                    // View
361                    m = new FantasiaMenu(i18n.getMenuLabel("view"));
362                    menuBar.add(m);
363                    
364                    m.add(cbmiToolBarVisible);
365                    
366                    cbmiToolBarVisible.addActionListener(new ActionListener() {
367                            public void
368                            actionPerformed(ActionEvent e) {
369                                    showToolBar(cbmiToolBarVisible.getState());
370                            }
371                    });
372                    
373                    boolean b = preferences().getBoolProperty("toolBar.visible");
374                    cbmiToolBarVisible.setSelected(b);
375                    showToolBar(b);
376                    
377                    cbmiSidePaneVisible.setAccelerator(KeyStroke.getKeyStroke (
378                            KeyEvent.VK_L, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK
379                    ));
380                    m.add(cbmiSidePaneVisible);
381                    
382                    cbmiSidePaneVisible.addActionListener(new ActionListener() {
383                            public void
384                            actionPerformed(ActionEvent e) {
385                                    showSidePane(cbmiSidePaneVisible.getState());
386                            }
387                    });
388                    
389                    b = preferences().getBoolProperty("sidePane.visible");
390                    cbmiSidePaneVisible.setSelected(b);
391                    showSidePane(b);
392                    
393                    cbmiDevicesPaneVisible.setAccelerator(KeyStroke.getKeyStroke (
394                            KeyEvent.VK_R, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK
395                    ));
396                    m.add(cbmiDevicesPaneVisible);
397                    
398                    cbmiDevicesPaneVisible.addActionListener(new ActionListener() {
399                            public void
400                            actionPerformed(ActionEvent e) {
401                                    showDevicesPane(cbmiDevicesPaneVisible.getState());
402                            }
403                    });
404                    
405                    b = preferences().getBoolProperty("devicesPane.visible");
406                    cbmiDevicesPaneVisible.setSelected(b);
407                    showDevicesPane(b);
408                    
409                                    
410                  // Window                  // Window
411                  m = new FantasiaMenu(i18n.getMenuLabel("window"));                  m = new FantasiaMenu(i18n.getMenuLabel("window"));
# Line 331  public class MainFrame extends JSMainFra Line 423  public class MainFrame extends JSMainFra
423                  // Help                  // Help
424                  m = new FantasiaMenu(i18n.getMenuLabel("help"));                  m = new FantasiaMenu(i18n.getMenuLabel("help"));
425                                    
426                    mi = new JMenuItem(a4n.browseOnlineTutorial);
427                    mi.setIcon(null);
428                    m.add(mi);
429                    
430                    m.addSeparator();
431                    
432                  mi = new JMenuItem(a4n.helpAbout);                  mi = new JMenuItem(a4n.helpAbout);
433                  mi.setIcon(null);                  mi.setIcon(null);
434                  m.add(mi);                  m.add(mi);
# Line 373  public class MainFrame extends JSMainFra Line 471  public class MainFrame extends JSMainFra
471                    
472          public void          public void
473          showDetailedErrorMessage(Frame owner, String err, String details) {          showDetailedErrorMessage(Frame owner, String err, String details) {
474                  // TODO:                  JSDetailedErrorDlg dlg = new JSDetailedErrorDlg (
475                            owner, Res.iconWarning32, i18n.getError("error"), err, details
476                    );
477                    dlg.setVisible(true);
478          }          }
479                    
480          public void          public void
481          showDetailedErrorMessage(Dialog owner, String err, String details) {          showDetailedErrorMessage(Dialog owner, String err, String details) {
482                  // TODO:                  JSDetailedErrorDlg dlg = new JSDetailedErrorDlg (
483                            owner, Res.iconWarning32, i18n.getError("error"), err, details
484                    );
485                    dlg.setVisible(true);
486          }          }
487                    
488          protected LSConsoleModel          protected LSConsoleModel
# Line 463  public class MainFrame extends JSMainFra Line 567  public class MainFrame extends JSMainFra
567                  recentScriptsMenu.setEnabled(recentScripts.size() != 0);                  recentScriptsMenu.setEnabled(recentScripts.size() != 0);
568          }          }
569                    
570            private void
571            showToolBar(boolean b) {
572                    preferences().setBoolProperty("toolBar.visible", b);
573                    standardBar.setVisible(b);
574            }
575            
576            private void
577            showSidePane(boolean b) {
578                    preferences().setBoolProperty("sidePane.visible", b);
579                    rootPane.remove(rightPane);
580                    rootPane.remove(hSplitPane);
581                    
582                    if(b) {
583                            hSplitPane.setRightComponent(rightPane);
584                            rootPane.add(hSplitPane);
585                            int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);
586                            
587                            hSplitPane.setDividerLocation(i);
588                            hSplitPane.validate();
589                    } else {
590                            rootPane.add(rightPane);
591                            
592                    }
593                    
594                    int w = getPreferredSize().width;
595                    int h = getSize().height;
596                    setSize(new Dimension(w, h));
597                    
598                    rootPane.revalidate();
599                    rootPane.validate();
600                    rootPane.repaint();
601                    
602                    SwingUtilities.invokeLater(new Runnable() {
603                            public void
604                            run() { sidePanesVisibilityChanged(); }
605                    });
606            }
607            
608            private void
609            showDevicesPane(boolean b) {
610                    preferences().setBoolProperty("devicesPane.visible", b);
611                    
612                    int width = sidePane.getWidth();
613                    int height = sidePane.getPreferredSize().height;
614                    if(width != 0) sidePane.setPreferredSize(new Dimension(width, height));
615                    
616                    if(b) {
617                            int w = preferences().getIntProperty("devicesPane.width", 200);
618                            
619                            int h = spDevicesPane.getPreferredSize().height;
620                            spDevicesPane.setPreferredSize(new Dimension(w, h));
621                    } else {
622                            int w = spDevicesPane.getWidth();
623                            if(w > 0 && w < 200) w = 200;
624                            if(w != 0) preferences().setIntProperty("devicesPane.width", w);
625                    }
626                    
627                    hSplitPane.setResizeWeight(0.0);
628                    spDevicesPane.setVisible(b);
629                    hSplitPane.resetToPreferredSizes();
630                    
631                    int w = getPreferredSize().width;
632                    int h = getSize().height;
633                    setSize(new Dimension(w, h));
634                    
635                    rootPane.validate();
636                    rootPane.repaint();
637                    //hSplitPane.validate();
638                    
639                    SwingUtilities.invokeLater(new Runnable() {
640                            public void
641                            run() { sidePanesVisibilityChanged(); }
642                    });
643            }
644            
645            private void
646            sidePanesVisibilityChanged() {
647                    boolean sidePaneVisible = cbmiSidePaneVisible.isSelected();
648                    boolean devicesPaneVisible = cbmiDevicesPaneVisible.isSelected();
649                    
650                    if(sidePaneVisible && devicesPaneVisible) {
651                            hSplitPane.setResizeWeight(0.5);
652                    } else if(sidePaneVisible && !devicesPaneVisible) {
653                            hSplitPane.setResizeWeight(1.0);
654                    }
655                    
656                    if(!sidePaneVisible && !devicesPaneVisible) {
657                            standardBar.showFantasiaLogo(false);
658                            if(isResizable()) setResizable(false);
659                    } else {
660                            standardBar.showFantasiaLogo(true);
661                            if(!isResizable()) setResizable(true);
662                    }
663            }
664            
665          private class RecentScriptHandler implements ActionListener {          private class RecentScriptHandler implements ActionListener {
666                  private String script;                  private String script;
667                                    
# Line 485  public class MainFrame extends JSMainFra Line 684  public class MainFrame extends JSMainFra
684                  }                  }
685          }          }
686    
687          private static class FantasiaMenuBar extends JMenuBar {          private class FantasiaMenuBar extends JMenuBar {
688                  private static Insets pixmapInsets = new Insets(6, 6, 0, 6);                  private Insets pixmapInsets = new Insets(6, 6, 0, 6);
689                    private Insets pixmapInsets2 = new Insets(6, 6, 6, 6);
690                                    
691                  FantasiaMenuBar() {                  FantasiaMenuBar() {
692                          setOpaque(false);                          setOpaque(false);
# Line 495  public class MainFrame extends JSMainFra Line 695  public class MainFrame extends JSMainFra
695                  protected void                  protected void
696                  paintComponent(Graphics g) {                  paintComponent(Graphics g) {
697                          super.paintComponent(g);                          super.paintComponent(g);
698                                                    if(standardBar.isVisible()) {
699                          PixmapPane.paintComponent(this, g, Res.gfxMenuBarBg, pixmapInsets);                                  PixmapPane.paintComponent(this, g, Res.gfxMenuBarBg, pixmapInsets);
700                            } else {
701                                    PixmapPane.paintComponent(this, g, Res.gfxRoundBg14, pixmapInsets2);
702                            }
703                  }                  }
704          }          }
705  }  }

Legend:
Removed from v.1318  
changed lines
  Added in v.1496

  ViewVC Help
Powered by ViewVC