//----------------------------------------------------------------------------//
// //
// R u n s V i e w e r //
// //
//----------------------------------------------------------------------------//
// <editor-fold defaultstate="collapsed" desc="hdr"> //
// Copyright © Hervé Bitteur and others 2000-2013. All rights reserved. //
// This software is released under the GNU General Public License. //
// Goto http://kenai.com/projects/audiveris to report bugs or suggestions. //
//----------------------------------------------------------------------------//
// </editor-fold>
package omr.grid;
import omr.run.RunBoard;
import omr.run.RunsTable;
import omr.run.RunsTableView;
import omr.sheet.Sheet;
import omr.sheet.ui.BinarizationBoard;
import omr.sheet.ui.PixelBoard;
import omr.ui.BoardsPane;
import omr.ui.view.RubberPanel;
import omr.ui.view.ScrollView;
import java.awt.Graphics2D;
/**
* Class {@code RunsViewer} handles the display of instance(s) of
* {@link RunsTable} in the assembly of the related sheet.
*
* @author Hervé Bitteur
*/
public class RunsViewer
{
//~ Instance fields --------------------------------------------------------
/** The related sheet */
private final Sheet sheet;
/** The related lines retriever */
private final LinesRetriever linesRetriever;
/** The related bars retriever */
private final BarsRetriever barsRetriever;
//~ Constructors -----------------------------------------------------------
//------------//
// RunsViewer //
//------------//
/**
* Creates a new RunsViewer object.
*
* @param sheet the related sheet
* @param linesRetriever the related lines retriever
* @param barsRetriever the related bars retriever
*/
public RunsViewer (Sheet sheet,
LinesRetriever linesRetriever,
BarsRetriever barsRetriever)
{
this.sheet = sheet;
this.linesRetriever = linesRetriever;
this.barsRetriever = barsRetriever;
}
//~ Methods ----------------------------------------------------------------
//---------//
// display //
//---------//
/**
* Display a view on provided runs table
*
* @param table the runs to display
*/
public void display (RunsTable table)
{
RubberPanel view = new MyRunsTableView(table);
view.setName(table.getName());
view.setPreferredSize(table.getDimension());
BoardsPane boards = new BoardsPane(
new PixelBoard(sheet),
new BinarizationBoard(sheet),
new RunBoard(table, true));
sheet.getAssembly()
.addViewTab(table.getName(), new ScrollView(view), boards);
}
//~ Inner Classes ----------------------------------------------------------
//-----------------//
// MyRunsTableView //
//-----------------//
/**
* A specific runs view, which displays retrieved lines and bars
* on top of the runs.
*/
private class MyRunsTableView
extends RunsTableView
{
//~ Constructors -------------------------------------------------------
public MyRunsTableView (RunsTable table)
{
super(table, sheet.getLocationService());
}
//~ Methods ------------------------------------------------------------
@Override
protected void renderItems (Graphics2D g)
{
linesRetriever.renderItems(g);
barsRetriever.renderItems(g);
}
}
}