/[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 1325 by iliev, Wed Sep 5 17:29:11 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 89  import static org.jsampler.view.std.StdP Line 90  import static org.jsampler.view.std.StdP
90   * @author Grigor Iliev   * @author Grigor Iliev
91   */   */
92  public class MainFrame extends JSMainFrame {  public class MainFrame extends JSMainFrame {
         private final FantasiaMenuBar menuBar = new FantasiaMenuBar();  
93          private final StandardBar standardBar = new StandardBar();          private final StandardBar standardBar = new StandardBar();
94            private final FantasiaMenuBar menuBar = new FantasiaMenuBar();
95            private final JPanel rootPane = new JPanel();
96          private final MainPane mainPane = new MainPane();          private final MainPane mainPane = new MainPane();
97          private final DevicesPane devicesPane = new DevicesPane();          private final DevicesPane devicesPane = new DevicesPane();
98            private final JScrollPane spDevicesPane = new JScrollPane();
99                    
100          private final JMenu recentScriptsMenu =          private final JMenu recentScriptsMenu =
101                  new JMenu(i18n.getMenuLabel("actions.recentScripts"));                  new JMenu(i18n.getMenuLabel("actions.recentScripts"));
# Line 100  public class MainFrame extends JSMainFra Line 103  public class MainFrame extends JSMainFra
103          private final JSplitPane hSplitPane;          private final JSplitPane hSplitPane;
104                    
105          private final SidePane sidePane = new SidePane();          private final SidePane sidePane = new SidePane();
106            private final JPanel rightPane;
107                    
108          private final LSConsoleFrame lsConsoleFrame = new LSConsoleFrame();          private final LSConsoleFrame lsConsoleFrame = new LSConsoleFrame();
109          private final Vector<String> recentScripts = new Vector<String>();          private final Vector<String> recentScripts = new Vector<String>();
110                                    
111                    
112            private final JCheckBoxMenuItem cbmiToolBarVisible =
113                            new JCheckBoxMenuItem(i18n.getMenuLabel("view.toolBar"));
114            
115            private final JCheckBoxMenuItem cbmiSidePaneVisible =
116                            new JCheckBoxMenuItem(i18n.getMenuLabel("view.sidePane"));
117            
118            private final JCheckBoxMenuItem cbmiDevicesPaneVisible =
119                            new JCheckBoxMenuItem(i18n.getMenuLabel("view.devicesPane"));
120            
121          /** Creates a new instance of <code>MainFrame</code> */          /** Creates a new instance of <code>MainFrame</code> */
122          public          public
123          MainFrame() {          MainFrame() {
# Line 114  public class MainFrame extends JSMainFra Line 127  public class MainFrame extends JSMainFra
127                                    
128                  getContentPane().add(standardBar, BorderLayout.NORTH);                  getContentPane().add(standardBar, BorderLayout.NORTH);
129                                    
130                  addMenu();                  rightPane = createRightPane();
                   
                 addChannelsPane(mainPane.getChannelsPane());  
                   
                 JPanel rp = createRightPane();  
131                                    
132                  hSplitPane = new JSplitPane (                  hSplitPane = new JSplitPane (
133                          JSplitPane.HORIZONTAL_SPLIT,                          JSplitPane.HORIZONTAL_SPLIT,
134                          true,   // continuousLayout                          true,   // continuousLayout
135                          sidePane, rp                          sidePane, rightPane
136                  );                  );
137                    hSplitPane.setResizeWeight(0.5);
138                    
139                    rootPane.setLayout(new BorderLayout());
140                    rootPane.setBorder(BorderFactory.createEmptyBorder(6, 0, 0, 0));
141                    rootPane.setOpaque(false);
142                    rootPane.add(hSplitPane);
143                                    
144                  getContentPane().add(hSplitPane);                  addMenu();
145                    
146                    addChannelsPane(mainPane.getChannelsPane());
147                    
148                    getContentPane().add(rootPane);
149                                    
150                  int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);                  int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);
151                  hSplitPane.setDividerLocation(i);                  hSplitPane.setDividerLocation(i);
# Line 144  public class MainFrame extends JSMainFra Line 163  public class MainFrame extends JSMainFra
163                                    
164                  c.fill = GridBagConstraints.BOTH;                  c.fill = GridBagConstraints.BOTH;
165                                    
166                  JScrollPane sp = new JScrollPane(devicesPane);                  spDevicesPane.setViewportView(devicesPane);
167                  sp.setBorder(BorderFactory.createEmptyBorder());                  spDevicesPane.setBorder(BorderFactory.createEmptyBorder());
168                    int h = spDevicesPane.getMinimumSize().height;
169                    spDevicesPane.setMinimumSize(new Dimension(200, h));
170                                    
171                  c.gridx = 1;                  c.gridx = 1;
172                  c.gridy = 0;                  c.gridy = 0;
173                  c.weightx = 1.0;                  c.weightx = 1.0;
174                  c.weighty = 1.0;                  c.weighty = 1.0;
175                  c.insets = new Insets(0, 3, 3, 0);                  c.insets = new Insets(0, 3, 3, 0);
176                  gridbag.setConstraints(sp, c);                  gridbag.setConstraints(spDevicesPane, c);
177                  p.add(sp);                  p.add(spDevicesPane);
178                                    
179                  c.gridx = 0;                  c.gridx = 0;
180                  c.gridy = 0;                  c.gridy = 0;
# Line 307  public class MainFrame extends JSMainFra Line 328  public class MainFrame extends JSMainFra
328                  m = new FantasiaMenu(i18n.getMenuLabel("edit"));                  m = new FantasiaMenu(i18n.getMenuLabel("edit"));
329                  menuBar.add(m);                  menuBar.add(m);
330                                    
331                    mi = new JMenuItem(i18n.getMenuLabel("edit.addChannel"));
332                    m.add(mi);
333                    mi.addActionListener(new ActionListener() {
334                            public void
335                            actionPerformed(ActionEvent e) {
336                                    CC.getSamplerModel().addBackendChannel();
337                            }
338                    });
339                    
340                    m.addSeparator();
341                    
342                    mi = new JMenuItem(a4n.createMidiDevice);
343                    mi.setIcon(null);
344                    m.add(mi);
345                    
346                    mi = new JMenuItem(a4n.createAudioDevice);
347                    mi.setIcon(null);
348                    m.add(mi);
349                    
350                    m.addSeparator();
351                    
352                  mi = new JMenuItem(a4n.editPreferences);                  mi = new JMenuItem(a4n.editPreferences);
353                  mi.setIcon(null);                  mi.setIcon(null);
354                  mi.setAccelerator(KeyStroke.getKeyStroke (                  mi.setAccelerator(KeyStroke.getKeyStroke (
# Line 314  public class MainFrame extends JSMainFra Line 356  public class MainFrame extends JSMainFra
356                  ));                  ));
357                  m.add(mi);                  m.add(mi);
358                                    
359                    // View
360                    m = new FantasiaMenu(i18n.getMenuLabel("view"));
361                    menuBar.add(m);
362                    
363                    m.add(cbmiToolBarVisible);
364                    
365                    cbmiToolBarVisible.addActionListener(new ActionListener() {
366                            public void
367                            actionPerformed(ActionEvent e) {
368                                    showToolBar(cbmiToolBarVisible.getState());
369                            }
370                    });
371                    
372                    boolean b = preferences().getBoolProperty("toolBar.visible");
373                    cbmiToolBarVisible.setSelected(b);
374                    showToolBar(b);
375                    
376                    cbmiSidePaneVisible.setAccelerator(KeyStroke.getKeyStroke (
377                            KeyEvent.VK_L, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK
378                    ));
379                    m.add(cbmiSidePaneVisible);
380                    
381                    cbmiSidePaneVisible.addActionListener(new ActionListener() {
382                            public void
383                            actionPerformed(ActionEvent e) {
384                                    showSidePane(cbmiSidePaneVisible.getState());
385                            }
386                    });
387                    
388                    b = preferences().getBoolProperty("sidePane.visible");
389                    cbmiSidePaneVisible.setSelected(b);
390                    showSidePane(b);
391                    
392                    cbmiDevicesPaneVisible.setAccelerator(KeyStroke.getKeyStroke (
393                            KeyEvent.VK_R, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK
394                    ));
395                    m.add(cbmiDevicesPaneVisible);
396                    
397                    cbmiDevicesPaneVisible.addActionListener(new ActionListener() {
398                            public void
399                            actionPerformed(ActionEvent e) {
400                                    showDevicesPane(cbmiDevicesPaneVisible.getState());
401                            }
402                    });
403                    
404                    b = preferences().getBoolProperty("devicesPane.visible");
405                    cbmiDevicesPaneVisible.setSelected(b);
406                    showDevicesPane(b);
407                    
408                                    
409                  // Window                  // Window
410                  m = new FantasiaMenu(i18n.getMenuLabel("window"));                  m = new FantasiaMenu(i18n.getMenuLabel("window"));
# Line 463  public class MainFrame extends JSMainFra Line 554  public class MainFrame extends JSMainFra
554                  recentScriptsMenu.setEnabled(recentScripts.size() != 0);                  recentScriptsMenu.setEnabled(recentScripts.size() != 0);
555          }          }
556                    
557            private void
558            showToolBar(boolean b) {
559                    preferences().setBoolProperty("toolBar.visible", b);
560                    standardBar.setVisible(b);
561            }
562            
563            private void
564            showSidePane(boolean b) {
565                    preferences().setBoolProperty("sidePane.visible", b);
566                    rootPane.remove(rightPane);
567                    rootPane.remove(hSplitPane);
568                    
569                    if(b) {
570                            hSplitPane.setRightComponent(rightPane);
571                            rootPane.add(hSplitPane);
572                            int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);
573                            
574                            hSplitPane.setDividerLocation(i);
575                            hSplitPane.validate();
576                    } else {
577                            rootPane.add(rightPane);
578                            
579                    }
580                    
581                    int w = getPreferredSize().width;
582                    int h = getSize().height;
583                    setSize(new Dimension(w, h));
584                    
585                    rootPane.revalidate();
586                    rootPane.validate();
587                    rootPane.repaint();
588                    
589                    SwingUtilities.invokeLater(new Runnable() {
590                            public void
591                            run() { sidePanesVisibilityChanged(); }
592                    });
593            }
594            
595            private void
596            showDevicesPane(boolean b) {
597                    preferences().setBoolProperty("devicesPane.visible", b);
598                    
599                    int width = sidePane.getWidth();
600                    int height = sidePane.getPreferredSize().height;
601                    if(width != 0) sidePane.setPreferredSize(new Dimension(width, height));
602                    
603                    if(b) {
604                            int w = preferences().getIntProperty("devicesPane.width", 200);
605                            
606                            int h = spDevicesPane.getPreferredSize().height;
607                            spDevicesPane.setPreferredSize(new Dimension(w, h));
608                    } else {
609                            int w = spDevicesPane.getWidth();
610                            if(w > 0 && w < 200) w = 200;
611                            if(w != 0) preferences().setIntProperty("devicesPane.width", w);
612                    }
613                    
614                    hSplitPane.setResizeWeight(0.0);
615                    spDevicesPane.setVisible(b);
616                    hSplitPane.resetToPreferredSizes();
617                    
618                    int w = getPreferredSize().width;
619                    int h = getSize().height;
620                    setSize(new Dimension(w, h));
621                    
622                    rootPane.validate();
623                    rootPane.repaint();
624                    //hSplitPane.validate();
625                    
626                    SwingUtilities.invokeLater(new Runnable() {
627                            public void
628                            run() { sidePanesVisibilityChanged(); }
629                    });
630            }
631            
632            private void
633            sidePanesVisibilityChanged() {
634                    boolean sidePaneVisible = cbmiSidePaneVisible.isSelected();
635                    boolean devicesPaneVisible = cbmiDevicesPaneVisible.isSelected();
636                    
637                    if(sidePaneVisible && devicesPaneVisible) {
638                            hSplitPane.setResizeWeight(0.5);
639                    } else if(sidePaneVisible && !devicesPaneVisible) {
640                            hSplitPane.setResizeWeight(1.0);
641                    }
642                    
643                    if(!sidePaneVisible && !devicesPaneVisible) {
644                            standardBar.showFantasiaLogo(false);
645                            if(isResizable()) setResizable(false);
646                    } else {
647                            standardBar.showFantasiaLogo(true);
648                            if(!isResizable()) setResizable(true);
649                    }
650            }
651            
652          private class RecentScriptHandler implements ActionListener {          private class RecentScriptHandler implements ActionListener {
653                  private String script;                  private String script;
654                                    
# Line 485  public class MainFrame extends JSMainFra Line 671  public class MainFrame extends JSMainFra
671                  }                  }
672          }          }
673    
674          private static class FantasiaMenuBar extends JMenuBar {          private class FantasiaMenuBar extends JMenuBar {
675                  private static Insets pixmapInsets = new Insets(6, 6, 0, 6);                  private Insets pixmapInsets = new Insets(6, 6, 0, 6);
676                    private Insets pixmapInsets2 = new Insets(6, 6, 6, 6);
677                                    
678                  FantasiaMenuBar() {                  FantasiaMenuBar() {
679                          setOpaque(false);                          setOpaque(false);
# Line 495  public class MainFrame extends JSMainFra Line 682  public class MainFrame extends JSMainFra
682                  protected void                  protected void
683                  paintComponent(Graphics g) {                  paintComponent(Graphics g) {
684                          super.paintComponent(g);                          super.paintComponent(g);
685                                                    if(standardBar.isVisible()) {
686                          PixmapPane.paintComponent(this, g, Res.gfxMenuBarBg, pixmapInsets);                                  PixmapPane.paintComponent(this, g, Res.gfxMenuBarBg, pixmapInsets);
687                            } else {
688                                    PixmapPane.paintComponent(this, g, Res.gfxRoundBg14, pixmapInsets2);
689                            }
690                  }                  }
691          }          }
692  }  }

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

  ViewVC Help
Powered by ViewVC