/**
* Catroid: An on-device visual programming system for Android devices
* Copyright (C) 2010-2013 The Catrobat Team
* (<http://developer.catrobat.org/credits>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* An additional term exception under section 7 of the GNU Affero
* General Public License, version 3, is available at
* http://developer.catrobat.org/license_additional_term
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.catrobat.musicdroid.instruments.piano;
import android.annotation.SuppressLint;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import org.catrobat.musicdroid.note.Octave;
/**
* @author musicdroid
*/
@SuppressLint("ViewConstructor")
public class PianoView extends LinearLayout {
private static final Octave[] SUPPORTED_OCTAVES = new Octave[] { Octave.createSmallOctave(),
Octave.createOneLineOctave(), Octave.createTwoLineOctave() };
private int activeOctaveIndex;
private PianoOctaveView pianoOctaveView;
private Button buttonLeft;
private Button buttonRight;
public PianoView(PianoActivity pianoActivity) {
super(pianoActivity);
activeOctaveIndex = 1;
initComponents();
}
private void initComponents() {
removeAllViews();
buttonLeft = new Button(getContext());
buttonLeft.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
decrementOctave();
initComponents();
}
});
buttonRight = new Button(getContext());
buttonRight.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
incrementOctave();
initComponents();
}
});
pianoOctaveView = new PianoOctaveView((PianoActivity) getContext(), SUPPORTED_OCTAVES[activeOctaveIndex]);
addView(buttonLeft);
addView(pianoOctaveView);
addView(buttonRight);
}
public void incrementOctave() {
int newOctaveIndex = activeOctaveIndex + 1;
if (newOctaveIndex == SUPPORTED_OCTAVES.length) {
buttonRight.setClickable(false);
return;
}
activeOctaveIndex = newOctaveIndex;
buttonLeft.setClickable(true);
}
public void decrementOctave() {
int newOctaveIndex = activeOctaveIndex - 1;
if (newOctaveIndex < 0) {
buttonLeft.setClickable(false);
return;
}
activeOctaveIndex = newOctaveIndex;
buttonRight.setClickable(true);
}
}