/*
 ==============================================================================

 This file is part of the JUCETICE project - Copyright 2009 by Lucio Asnaghi.

 JUCETICE is based around the JUCE library - "Jules' Utility Class Extensions"
 Copyright 2007 by Julian Storer.

 ------------------------------------------------------------------------------

 JUCE and JUCETICE can be redistributed and/or modified under the terms of
 the GNU General Public License, as published by the Free Software Foundation;
 either version 2 of the License, or (at your option) any later version.

 JUCE and JUCETICE are distributed in the hope that they will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with JUCE and JUCETICE; if not, visit www.gnu.org/licenses or write to
 Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 Boston, MA 02111-1307 USA

 ==============================================================================
*/

BEGIN_JUCE_NAMESPACE

#include "jucetice_PianoGrid.h"

//==============================================================================
PianoGridHeader::PianoGridHeader (MidiGrid* owner_)
  : owner (owner_)
{
    setOpaque (true);
}

PianoGridHeader::~PianoGridHeader()
{
}

void PianoGridHeader::mouseUp (const MouseEvent& e)
{
    owner->notifyListenersOfPlayingPositionChanged (e.x / (float) getWidth());
}

void PianoGridHeader::paint (Graphics& g)
{
    int numBars = owner->getNumBars ();
    int numBeats = owner->getTimeDivision ();
    int barWidth = getWidth () / numBars;
    int beatWidth = barWidth / numBeats;

    Colour backCol = findColour (PianoGrid::headerColourId);
    g.fillAll (backCol);

    g.setColour (backCol.contrasting ());
    for (int i = 0; i < numBars; i++)
    {
        g.setFont (Font (10.0f, Font::plain));
        g.drawText (String (i + 1),
                    barWidth * i + 1, 0, 22, getHeight(),
                    Justification::centredLeft,
                    false);

        if (barWidth >= 80)
        {
            g.setFont (Font (8.0f, Font::plain));
            for (int j = 1; j < numBeats; j++)
            {
                g.drawText (String (j + 1) + "/" + String (numBeats),
                            barWidth * i + beatWidth * j - 2, 0, 18, getHeight(),
                            Justification::bottomLeft,
                            false);
            }
        }
    }
}

END_JUCE_NAMESPACE
