1
package org.herac.tuxguitar.gui.tools.scale;
4
import java.util.ArrayList;
7
import org.herac.tuxguitar.gui.TuxGuitar;
8
import org.herac.tuxguitar.gui.tools.scale.xml.ScaleReader;
9
import org.herac.tuxguitar.gui.util.TGMusicKeyUtils;
10
import org.herac.tuxguitar.gui.util.TGFileUtils;
11
import org.herac.tuxguitar.song.models.TGScale;
13
public class ScaleManager {
14
private static final String[] KEY_NAMES = TGMusicKeyUtils.getSharpKeyNames(TGMusicKeyUtils.PREFIX_SCALE);
16
private static final String KEY_SEPARATOR = ",";
18
public static final int NONE_SELECTION = -1;
22
private TGScale scale;
24
private int selectionIndex;
26
private int selectionKey;
28
public ScaleManager(){
29
this.scales = new ArrayList();
30
this.scale = TuxGuitar.instance().getSongManager().getFactory().newScale();
31
this.selectionKey = 0;
32
this.selectionIndex = NONE_SELECTION;
36
public TGScale getScale() {
40
public void selectScale(int index,int key){
41
if(index == NONE_SELECTION){
44
else if(index >= 0 && index < this.scales.size()){
46
ScaleInfo info = (ScaleInfo)this.scales.get(index);
47
String[] keys = info.getKeys().split(KEY_SEPARATOR);
48
for (int i = 0; i < keys.length; i ++){
49
int note = (Integer.parseInt(keys[i]) - 1);
50
if(note >= 0 && note < 12){
51
getScale().setNote(note,true);
54
getScale().setKey(key);
56
this.selectionIndex = index;
57
this.selectionKey = key;
60
public String[] getScaleNames(){
61
String[] names = new String[this.scales.size()];
62
for(int i = 0;i < this.scales.size();i ++){
63
ScaleInfo info = (ScaleInfo)this.scales.get(i);
64
names[i] = info.getName();
69
public String[] getKeyNames(){
73
public int getSelectionIndex() {
74
return this.selectionIndex;
77
public int getSelectionKey() {
78
return this.selectionKey;
81
private void loadScales(){
83
new ScaleReader().loadScales(this.scales,getScalesFileName());
84
} catch (Throwable e) {
89
private String getScalesFileName(){
90
return TGFileUtils.PATH_SCALES + File.separator + "scales.xml";