package org.herac.tuxguitar.gui.util; import org.herac.tuxguitar.gui.TuxGuitar; import org.herac.tuxguitar.gui.system.language.LanguageLoader; class TGMusicKeyNames implements LanguageLoader { private final String[] names = new String[12]; private final String prefix; private final boolean sharp; public TGMusicKeyNames(boolean sharp, String prefix) { this.sharp = sharp; this.prefix = prefix; this.loadProperties(); TuxGuitar.instance().getLanguageManager().addLoader(this); } public String[] getNames() { return this.names; } public void loadProperties() { TGMusicKeyUtils.loadKeyNames(this.names, this.prefix, this.sharp); } } public class TGMusicKeyUtils { private static final String[][] DEFAULT_KEY_NAMES = new String[][] { { "C", "C#", "Cb" }, { "D", "D#", "Db" }, { "E", "E#", "Eb" }, { "F", "F#", "Fb" }, { "G", "G#", "Gb" }, { "A", "A#", "Ab" }, { "B", "B#", "Bb" } }; public static final String PREFIX_CHORD = "chord"; public static final String PREFIX_FRETBOARD = "fretboard"; public static final String PREFIX_MATRIX = "matrix"; public static final String PREFIX_SCALE = "scale"; public static final String PREFIX_TUNING = "tuning"; public static String[] getFlatKeyNames(String prefix) { return new TGMusicKeyNames(false, prefix).getNames(); } private static String getName(String prefix, int key, int signature) { String resource = ("key." + prefix + "." + key + "." + signature); return TuxGuitar.instance().getLanguageManager().getProperty(resource, DEFAULT_KEY_NAMES[key][signature]); } public static String[] getSharpKeyNames(String prefix) { return new TGMusicKeyNames(true, prefix).getNames(); } private static void loadFlatKeyNames(String[] names, String prefix) { names[0] = getName(prefix, 0, 0); names[1] = getName(prefix, 1, 2); names[2] = getName(prefix, 1, 0); names[3] = getName(prefix, 2, 2); names[4] = getName(prefix, 2, 0); names[5] = getName(prefix, 3, 0); names[6] = getName(prefix, 4, 2); names[7] = getName(prefix, 4, 0); names[8] = getName(prefix, 5, 2); names[9] = getName(prefix, 5, 0); names[10] = getName(prefix, 6, 2); names[11] = getName(prefix, 6, 0); } protected static void loadKeyNames(String[] names, String prefix, boolean sharp) { if (sharp) { loadSharpKeyNames(names, prefix); } else { loadFlatKeyNames(names, prefix); } } private static void loadSharpKeyNames(String[] names, String prefix) { names[0] = getName(prefix, 0, 0); names[1] = getName(prefix, 0, 1); names[2] = getName(prefix, 1, 0); names[3] = getName(prefix, 1, 1); names[4] = getName(prefix, 2, 0); names[5] = getName(prefix, 3, 0); names[6] = getName(prefix, 3, 1); names[7] = getName(prefix, 4, 0); names[8] = getName(prefix, 4, 1); names[9] = getName(prefix, 5, 0); names[10] = getName(prefix, 5, 1); names[11] = getName(prefix, 6, 0); } }