/[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 1777 by iliev, Thu Sep 11 18:48:36 2008 UTC revision 1778 by iliev, Sun Sep 28 20:38:36 2008 UTC
# Line 23  Line 23 
23  package org.jsampler.view.fantasia;  package org.jsampler.view.fantasia;
24    
25  import java.awt.BorderLayout;  import java.awt.BorderLayout;
26    import java.awt.Color;
27    import java.awt.Composite;
28  import java.awt.Dialog;  import java.awt.Dialog;
29  import java.awt.Dimension;  import java.awt.Dimension;
30  import java.awt.Frame;  import java.awt.Frame;
31  import java.awt.Graphics;  import java.awt.Graphics;
32    import java.awt.Graphics2D;
33  import java.awt.GridBagConstraints;  import java.awt.GridBagConstraints;
34  import java.awt.GridBagLayout;  import java.awt.GridBagLayout;
35  import java.awt.Insets;  import java.awt.Insets;
36    import java.awt.Paint;
37    
38  import java.awt.event.ActionEvent;  import java.awt.event.ActionEvent;
39  import java.awt.event.ActionListener;  import java.awt.event.ActionListener;
40  import java.awt.event.KeyEvent;  import java.awt.event.KeyEvent;
41    
42    import java.beans.PropertyChangeEvent;
43    import java.beans.PropertyChangeListener;
44    
45  import java.io.BufferedReader;  import java.io.BufferedReader;
46  import java.io.File;  import java.io.File;
47  import java.io.FileNotFoundException;  import java.io.FileNotFoundException;
# Line 44  import java.util.Vector; Line 51  import java.util.Vector;
51  import java.util.logging.Level;  import java.util.logging.Level;
52    
53  import javax.swing.BorderFactory;  import javax.swing.BorderFactory;
54    import javax.swing.BoxLayout;
55  import javax.swing.JCheckBoxMenuItem;  import javax.swing.JCheckBoxMenuItem;
56  import javax.swing.JFileChooser;  import javax.swing.JFileChooser;
57  import javax.swing.JMenu;  import javax.swing.JMenu;
# Line 82  import static org.jsampler.view.std.StdP Line 90  import static org.jsampler.view.std.StdP
90  public class MainFrame extends JSMainFrame {  public class MainFrame extends JSMainFrame {
91          private final StandardBar standardBar = new StandardBar();          private final StandardBar standardBar = new StandardBar();
92          private final FantasiaMenuBar menuBar = new FantasiaMenuBar();          private final FantasiaMenuBar menuBar = new FantasiaMenuBar();
93          private final JPanel rootPane = new JPanel();          private final JPanel rootPane = new RootPane();
94            private final BottomPane bottomPane;
95          private final MainPane mainPane = new MainPane();          private final MainPane mainPane = new MainPane();
96          private final PianoKeyboardPane pianoKeyboardPane;          private final PianoKeyboardPane pianoKeyboardPane;
97                    
# Line 90  public class MainFrame extends JSMainFra Line 99  public class MainFrame extends JSMainFra
99                  new JMenu(i18n.getMenuLabel("actions.recentScripts"));                  new JMenu(i18n.getMenuLabel("actions.recentScripts"));
100                    
101          private final JSplitPane hSplitPane;          private final JSplitPane hSplitPane;
         private final JSplitPane pianoRollSplitPane;  
102                    
103          private final LeftSidePane leftSidePane = new LeftSidePane();          private final LeftSidePane leftSidePane = new LeftSidePane();
104          private final RightSidePane rightSidePane = new RightSidePane();          private final RightSidePane rightSidePane = new RightSidePane();
# Line 120  public class MainFrame extends JSMainFra Line 128  public class MainFrame extends JSMainFra
128          public          public
129          MainFrame() {          MainFrame() {
130                  setTitle(i18n.getLabel("MainFrame.title"));                  setTitle(i18n.getLabel("MainFrame.title"));
131                                    //setUndecorated(true);
132                  if(Res.iconAppIcon != null) setIconImage(Res.iconAppIcon.getImage());                  if(Res.iconAppIcon != null) setIconImage(Res.iconAppIcon.getImage());
133                                    
134                  getContentPane().add(standardBar, BorderLayout.NORTH);                  getContentPane().add(standardBar, BorderLayout.NORTH);
                 //getContentPane().add(statusBar, BorderLayout.SOUTH);  
135                                    
136                  rightPane = createRightPane();                  rightPane = createRightPane();
137                                    
# Line 139  public class MainFrame extends JSMainFra Line 146  public class MainFrame extends JSMainFra
146                                    
147                  pianoKeyboardPane = new PianoKeyboardPane();                  pianoKeyboardPane = new PianoKeyboardPane();
148                  getChannelsPane(0).addListSelectionListener(pianoKeyboardPane);                  getChannelsPane(0).addListSelectionListener(pianoKeyboardPane);
149                    int h = preferences().getIntProperty("midiKeyboard.height");
150                    setMidiKeyboardHeight(h);
151                                    
152                  pianoRollSplitPane = new JSplitPane (                  PropertyChangeListener l = new PropertyChangeListener() {
153                          JSplitPane.VERTICAL_SPLIT,                          public void
154                          true,   // continuousLayout                          propertyChange(PropertyChangeEvent e) {
155                          rootPane, pianoKeyboardPane                                  int h = preferences().getIntProperty("midiKeyboard.height");
156                  );                                  setMidiKeyboardHeight(h);
157                            }
158                    };
159                    
160                    CC.preferences().addPropertyChangeListener("midiKeyboard.height", l);
161                                    
162                  pianoRollSplitPane.setResizeWeight(0.5);                  bottomPane = new BottomPane();
163                                    
164                  rootPane.setLayout(new BorderLayout());                  hSplitPane.setOpaque(false);
                 rootPane.setBorder(BorderFactory.createEmptyBorder(6, 0, 0, 0));  
                 rootPane.setOpaque(false);  
165                  rootPane.add(hSplitPane);                  rootPane.add(hSplitPane);
166                    rootPane.add(bottomPane, BorderLayout.SOUTH);
167                    add(rootPane);
168                                    
169                  addMenu();                  addMenu();
170                                    
                 getContentPane().add(pianoRollSplitPane);  
                   
171                  int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);                  int i = preferences().getIntProperty("MainFrame.hSplitDividerLocation", 220);
172                  hSplitPane.setDividerLocation(i);                  hSplitPane.setDividerLocation(i);
173                                    
# Line 167  public class MainFrame extends JSMainFra Line 178  public class MainFrame extends JSMainFra
178                    
179          private JPanel          private JPanel
180          createRightPane() {          createRightPane() {
181                  JPanel p = new JPanel();                  JPanel p = new FantasiaPanel();
182                    p.setOpaque(false);
183                    
184                  GridBagLayout gridbag = new GridBagLayout();                  GridBagLayout gridbag = new GridBagLayout();
185                  GridBagConstraints c = new GridBagConstraints();                  GridBagConstraints c = new GridBagConstraints();
186                                    
# Line 187  public class MainFrame extends JSMainFra Line 200  public class MainFrame extends JSMainFra
200                  c.gridy = 0;                  c.gridy = 0;
201                  c.weightx = 0.0;                  c.weightx = 0.0;
202                  c.weighty = 1.0;                  c.weighty = 1.0;
203                  c.insets = new Insets(0, 3, 0, 3);                  c.insets = new Insets(0, 0, 0, 3);
204                  c.fill = GridBagConstraints.VERTICAL;                  c.fill = GridBagConstraints.VERTICAL;
205                  gridbag.setConstraints(mainPane, c);                  gridbag.setConstraints(mainPane, c);
206                  p.add(mainPane);                  p.add(mainPane);
# Line 239  public class MainFrame extends JSMainFra Line 252  public class MainFrame extends JSMainFra
252                    
253                    
254          /** Invoked when this window is about to close. */          /** Invoked when this window is about to close. */
255            @Override
256          protected void          protected void
257          onWindowClose() {          onWindowClose() {
258                  boolean b = preferences().getBoolProperty(CONFIRM_APP_QUIT);                  boolean b = preferences().getBoolProperty(CONFIRM_APP_QUIT);
# Line 439  public class MainFrame extends JSMainFra Line 453  public class MainFrame extends JSMainFra
453                  cbmiMidiKeyboardVisible.addActionListener(new ActionListener() {                  cbmiMidiKeyboardVisible.addActionListener(new ActionListener() {
454                          public void                          public void
455                          actionPerformed(ActionEvent e) {                          actionPerformed(ActionEvent e) {
456                                  showMidiKeyboard(cbmiMidiKeyboardVisible.getState());                                  setMidiKeyboardVisible(cbmiMidiKeyboardVisible.getState());
457                          }                          }
458                  });                  });
459                                    
460                  b = preferences().getBoolProperty("midiKeyboard.visible");                  b = preferences().getBoolProperty("midiKeyboard.visible");
461                  cbmiMidiKeyboardVisible.setSelected(b);                  cbmiMidiKeyboardVisible.setSelected(b);
462                  showMidiKeyboard(b);                  setMidiKeyboardVisible(b);
463                                    
464                                    
465                  // Window                  // Window
# Line 484  public class MainFrame extends JSMainFra Line 498  public class MainFrame extends JSMainFra
498           * This method does nothing, because <b>Fantasia</b> has exactly           * This method does nothing, because <b>Fantasia</b> has exactly
499           * one pane containing sampler channels, which can not be changed.           * one pane containing sampler channels, which can not be changed.
500           */           */
501            @Override
502          public void          public void
503          insertChannelsPane(JSChannelsPane pane, int idx) {          insertChannelsPane(JSChannelsPane pane, int idx) {
504                                    
# Line 494  public class MainFrame extends JSMainFra Line 509  public class MainFrame extends JSMainFra
509           * because the <b>Fantasia</b> view has exactly one pane containing sampler channels.           * because the <b>Fantasia</b> view has exactly one pane containing sampler channels.
510           * @return The <code>JSChannelsPane</code> at index 0.           * @return The <code>JSChannelsPane</code> at index 0.
511           */           */
512            @Override
513          public JSChannelsPane          public JSChannelsPane
514          getSelectedChannelsPane() { return getChannelsPane(0); }          getSelectedChannelsPane() { return getChannelsPane(0); }
515                    
# Line 501  public class MainFrame extends JSMainFra Line 517  public class MainFrame extends JSMainFra
517           * This method does nothing because the <b>Fantasia</b> view has           * This method does nothing because the <b>Fantasia</b> view has
518           * exactly one pane containing sampler channels which is always shown.           * exactly one pane containing sampler channels which is always shown.
519           */           */
520            @Override
521          public void          public void
522          setSelectedChannelsPane(JSChannelsPane pane) { }          setSelectedChannelsPane(JSChannelsPane pane) { }
523                    
524            @Override
525          public void          public void
526          installJSamplerHome() {          installJSamplerHome() {
527                  JSamplerHomeChooser chooser = new JSamplerHomeChooser(this);                  JSamplerHomeChooser chooser = new JSamplerHomeChooser(this);
# Line 513  public class MainFrame extends JSMainFra Line 531  public class MainFrame extends JSMainFra
531                  CC.changeJSamplerHome(chooser.getJSamplerHome());                  CC.changeJSamplerHome(chooser.getJSamplerHome());
532          }          }
533                    
534            @Override
535          public void          public void
536          showDetailedErrorMessage(Frame owner, String err, String details) {          showDetailedErrorMessage(Frame owner, String err, String details) {
537                  JSDetailedErrorDlg dlg = new JSDetailedErrorDlg (                  JSDetailedErrorDlg dlg = new JSDetailedErrorDlg (
# Line 521  public class MainFrame extends JSMainFra Line 540  public class MainFrame extends JSMainFra
540                  dlg.setVisible(true);                  dlg.setVisible(true);
541          }          }
542                    
543            @Override
544          public void          public void
545          showDetailedErrorMessage(Dialog owner, String err, String details) {          showDetailedErrorMessage(Dialog owner, String err, String details) {
546                  JSDetailedErrorDlg dlg = new JSDetailedErrorDlg (                  JSDetailedErrorDlg dlg = new JSDetailedErrorDlg (
# Line 533  public class MainFrame extends JSMainFra Line 553  public class MainFrame extends JSMainFra
553           * Gets the server address to which to connect. If the server should be           * Gets the server address to which to connect. If the server should be
554           * manually selected, a dialog asking the user to choose a server is displayed.           * manually selected, a dialog asking the user to choose a server is displayed.
555           */           */
556            @Override
557          public Server          public Server
558          getServer() {          getServer() {
559                  boolean b = preferences().getBoolProperty(MANUAL_SERVER_SELECT_ON_STARTUP);                  boolean b = preferences().getBoolProperty(MANUAL_SERVER_SELECT_ON_STARTUP);
# Line 544  public class MainFrame extends JSMainFra Line 565  public class MainFrame extends JSMainFra
565           * manually selected, a dialog asking the user to choose a server is displayed.           * manually selected, a dialog asking the user to choose a server is displayed.
566           * @param manualSelect Determines whether the server should be manually selected.           * @param manualSelect Determines whether the server should be manually selected.
567           */           */
568            @Override
569          public Server          public Server
570          getServer(boolean manualSelect) {          getServer(boolean manualSelect) {
571                  if(manualSelect) {                  if(manualSelect) {
# Line 722  public class MainFrame extends JSMainFra Line 744  public class MainFrame extends JSMainFra
744                  });                  });
745          }          }
746                    
747          private void          public void
748          showMidiKeyboard(boolean b) {          setMidiKeyboardVisible(boolean b) {
749                  preferences().setBoolProperty("midiKeyboard.visible", b);                  preferences().setBoolProperty("midiKeyboard.visible", b);
750                  if(b) {                  pianoKeyboardPane.setVisible(b);
751                          getContentPane().remove(rootPane);                  
752                          pianoRollSplitPane.setTopComponent(rootPane);                  if(cbmiMidiKeyboardVisible.isSelected() != b) {
753                          getContentPane().add(pianoRollSplitPane);                          cbmiMidiKeyboardVisible.setSelected(b);
754                  } else {                  }
755                          getContentPane().remove(pianoRollSplitPane);                  
756                          pianoRollSplitPane.remove(rootPane);                  if(standardBar.btnMidiKeyboard.isSelected() != b) {
757                          getContentPane().add(rootPane);                          standardBar.btnMidiKeyboard.setSelected(b);
758                  }                  }
759                                    
760                  getContentPane().validate();                  if(pianoKeyboardPane.btnPower.isSelected() != b) {
761                  getContentPane().repaint();                          pianoKeyboardPane.btnPower.setSelected(b);
762                    }
763                    
764                    rootPane.validate();
765                    rootPane.repaint();
766            }
767            
768            public void
769            setMidiKeyboardHeight(int height) {
770                    Dimension d = pianoKeyboardPane.getPreferredSize();
771                    d = new Dimension(d.width, height);
772                    pianoKeyboardPane.setPreferredSize(d);
773                    pianoKeyboardPane.setMinimumSize(d);
774                    pianoKeyboardPane.revalidate();
775                    pianoKeyboardPane.repaint();
776          }          }
777                    
778          private void          private void
# Line 764  public class MainFrame extends JSMainFra Line 800  public class MainFrame extends JSMainFra
800                                    
801                  RecentScriptHandler(String script) { this.script = script; }                  RecentScriptHandler(String script) { this.script = script; }
802                                    
803                    @Override
804                  public void                  public void
805                  actionPerformed(ActionEvent e) {                  actionPerformed(ActionEvent e) {
806                          runScript(script);                          runScript(script);
# Line 783  public class MainFrame extends JSMainFra Line 820  public class MainFrame extends JSMainFra
820          }          }
821    
822          private class FantasiaMenuBar extends JMenuBar {          private class FantasiaMenuBar extends JMenuBar {
                 private Insets pixmapInsets = new Insets(6, 6, 0, 6);  
                 private Insets pixmapInsets2 = new Insets(6, 6, 6, 6);  
                   
823                  FantasiaMenuBar() {                  FantasiaMenuBar() {
824                          setOpaque(false);                          setOpaque(false);
825                            setBorder(BorderFactory.createEmptyBorder(2, 6, 0, 0));
826                  }                  }
827                                    
828                    @Override
829                  protected void                  protected void
830                  paintComponent(Graphics g) {                  paintComponent(Graphics g) {
831                          super.paintComponent(g);                          //super.paintComponent(g);
832                            Graphics2D g2 = (Graphics2D)g;
833                            
834                            Paint oldPaint = g2.getPaint();
835                            Composite oldComposite = g2.getComposite();
836                            
837                            double h = getSize().getHeight();
838                            double w = getSize().getWidth();
839                            
840                            FantasiaPainter.paintGradient(g2, 0.0, 0.0, w - 1, h - 1, FantasiaPainter.color6, FantasiaPainter.color5);
841                            
842                            FantasiaPainter.Border b;
843                            
844                            
845                          if(standardBar.isVisible()) {                          if(standardBar.isVisible()) {
846                                  PixmapPane.paintComponent(this, g, Res.gfxMenuBarBg, pixmapInsets);                                  b = new FantasiaPainter.Border(true, true, false, true);
847                                    FantasiaPainter.paintBoldOuterBorder(g2, 0, 0, w - 1, h + 1, b);
848                          } else {                          } else {
849                                  PixmapPane.paintComponent(this, g, Res.gfxRoundBg14, pixmapInsets2);                                  b = new FantasiaPainter.Border(true, true, true, true);
850                                    FantasiaPainter.paintBoldOuterBorder(g2, 0, 0, w - 1, h - 1, b);
851                          }                          }
852                            
853                            g2.setPaint(oldPaint);
854                            g2.setComposite(oldComposite);
855                    }
856            }
857            
858            class RootPane extends FantasiaSubPanel {
859                    private final Color color1 = new Color(0x454545);
860                    private final Color color2 = new Color(0x2e2e2e);
861                    
862                    RootPane() {
863                            setLayout(new BorderLayout());
864                            setBorder(BorderFactory.createEmptyBorder(9, 10, 6, 10));
865                            setOpaque(false);
866                    
867                    }
868            
869                    @Override
870                    public void
871                    paintComponent(Graphics g) {
872                            Graphics2D g2 = (Graphics2D)g;
873                            
874                            Paint oldPaint = g2.getPaint();
875                            Composite oldComposite = g2.getComposite();
876                            
877                            double h = getSize().getHeight();
878                            double w = getSize().getWidth();
879                            
880                            FantasiaPainter.paintBorder(g2, 0, -3, w - 1, h - 1, 6, false);
881                            paintComponent(g2, 5, 1, w - 10, h - 6, color1, color2);
882                            
883                            g2.setPaint(oldPaint);
884                            g2.setComposite(oldComposite);
885                    }
886            }
887            
888            class BottomPane extends FantasiaPanel {
889                    BottomPane() {
890                            setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
891                            setOpaque(false);
892                            add(pianoKeyboardPane);
893                            
894                  }                  }
895          }          }
896  }  }

Legend:
Removed from v.1777  
changed lines
  Added in v.1778

  ViewVC Help
Powered by ViewVC