X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=MooView.java;h=d64f8852610d874a4039291e392b3970e1c8a1bd;hp=0e103b89774c815b7ef512afec2c445afc45d83e;hb=948e069926266ead58bc5466520e131941f2466c;hpb=5be64978516f7eff3346d8afbad3bc2ca221f7dd diff --git a/MooView.java b/MooView.java index 0e103b8..d64f885 100644 --- a/MooView.java +++ b/MooView.java @@ -10,35 +10,26 @@ import java.beans.*; * @author Einar Pehrson */ -public class MooView extends JPanel { +public class MooView extends JScrollPane { private JPanel trackPanel; private JPanel titlePanel; private int numberOfTracks; - private JScrollPane trackViews; /** * Creates the main view */ public MooView(Track[] tracks) { - trackViews = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + super(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); trackPanel = new JPanel(new GridLayout(1,3), true); - trackViews.setViewportView(trackPanel); + setViewportView(trackPanel); titlePanel = new JPanel(new GridLayout(1,3),true); JViewport columnHeader = new JViewport(); columnHeader.setView(titlePanel); - trackViews.setColumnHeaderView(columnHeader); - numberOfTracks = tracks.length; + setColumnHeaderView(columnHeader); setTracks(tracks); - setLayout(new BorderLayout()); - add(trackViews, BorderLayout.CENTER); - - trackViews.addPropertyChangeListener(new PropertyChangeListener(){ - public void propertyChange(PropertyChangeEvent e){ - System.out.println(e.getSource()); - }}); } /** @@ -46,10 +37,15 @@ public class MooView extends JPanel { * @param tracks the tracks for which to add views */ public void setTracks(Track[] tracks) { - if (tracks.length == 1) { + setDoubleBuffered(true); + numberOfTracks = tracks.length; + trackPanel.removeAll(); + titlePanel.removeAll(); + if (numberOfTracks == 1) { // If MIDI file is of type 0, creates a view for the track. + trackPanel.setLayout(new FlowLayout()); trackPanel.add(new MooTrackView(tracks[0])); - titlePanel.add(new MooTrackTitle(tracks[0])); + titlePanel.add(new MooTrackTitle(tracks[0],0)); } else { // Creates dialog for progress bar. JDialog progressDialog = new JDialog(Moosique.getGUI(), "Visualizing...", false); @@ -62,23 +58,33 @@ public class MooView extends JPanel { progressDialog.setVisible(true); // Starts filling the track panel with track views, while updating the progress bar. - trackPanel.removeAll(); - trackPanel.setLayout(new GridLayout(1,tracks.length)); + trackPanel.setLayout(new GridLayout(1,numberOfTracks)); for (int i = 1; i < tracks.length; i++) { trackPanel.add(new MooTrackView(tracks[i])); - titlePanel.add(new MooTrackTitle(tracks[i])); - progressBar.setValue(i+1); + titlePanel.add(new MooTrackTitle(tracks[i],i)); + progressBar.setValue(i); } progressDialog.dispose(); } +/* JPanel filler = new JPanel(); + int totalViewLength = trackPanel.getComponents().length * MooTrackView.VIEW_WIDTH; + if (totalViewLength < getWidth()) { + System.out.println("Adding filler since width = " + getWidth() + " and tracks = " + totalViewLength); + ((GridLayout)trackPanel.getLayout()).setColumns(numberOfTracks + 1); + filler.setPreferredSize(new Dimension(getWidth() - totalViewLength, 140 * MooTrackView.NOTE_HEIGHT)); + trackPanel.add(filler); + setPreferredSize(new Dimension(getWidth(), getHeight())); + } +*/ trackPanel.validate(); - trackViews.setViewportView(trackPanel); + setViewportView(trackPanel); } /** * Calls on each track view to update itself. */ public void update(long tickPosition) { + getViewport().setViewPosition(new Point((int)getViewport().getViewPosition().getX(), (int)(tickPosition / (Moosique.getSequence().getResolution() / 4)) * MooTrackView.NOTE_HEIGHT)); Component[] comps = getComponents(); for (int i = 0; i < comps.length; i++) { if(comps[i] instanceof MooTrackView) ((MooTrackView)comps[i]).update(tickPosition); @@ -94,7 +100,7 @@ public class MooView extends JPanel { ((GridLayout)trackPanel.getLayout()).setColumns(++numberOfTracks); ((GridLayout)titlePanel.getLayout()).setColumns(++numberOfTracks); trackPanel.add(new MooTrackView(track), index); - titlePanel.add(new MooTrackTitle(track), index); + titlePanel.add(new MooTrackTitle(track,index), index); validate(); }