1 package org.herac.tuxguitar.gui.util; 2 3 import org.herac.tuxguitar.gui.TuxGuitar; 4 import org.herac.tuxguitar.gui.system.language.LanguageLoader; 5 6 public class TGMusicKeyUtils { 7 8 public static final String PREFIX_CHORD = "chord"; 9 10 public static final String PREFIX_SCALE = "scale"; 11 12 public static final String PREFIX_TUNING = "tuning"; 13 14 public static final String PREFIX_FRETBOARD = "fretboard"; 15 16 public static final String PREFIX_MATRIX = "matrix"; 17 18 private static final String[][] DEFAULT_KEY_NAMES = new String[][]{ 19 {"C","C#","Cb"}, 20 {"D","D#","Db"}, 21 {"E","E#","Eb"}, 22 {"F","F#","Fb"}, 23 {"G","G#","Gb"}, 24 {"A","A#","Ab"}, 25 {"B","B#","Bb"} 26 }; 27 getSharpKeyNames(String prefix)28 public static String[] getSharpKeyNames(String prefix){ 29 return new TGMusicKeyNames(true,prefix).getNames(); 30 } 31 getFlatKeyNames(String prefix)32 public static String[] getFlatKeyNames(String prefix){ 33 return new TGMusicKeyNames(false,prefix).getNames(); 34 } 35 loadKeyNames(String[] names,String prefix,boolean sharp)36 protected static void loadKeyNames(String[] names,String prefix,boolean sharp){ 37 if(sharp){ 38 loadSharpKeyNames(names, prefix); 39 }else{ 40 loadFlatKeyNames(names, prefix); 41 } 42 } 43 loadSharpKeyNames(String[] names,String prefix)44 private static void loadSharpKeyNames(String[] names,String prefix){ 45 names[0] = getName(prefix,0,0); 46 names[1] = getName(prefix,0,1); 47 names[2] = getName(prefix,1,0); 48 names[3] = getName(prefix,1,1); 49 names[4] = getName(prefix,2,0); 50 names[5] = getName(prefix,3,0); 51 names[6] = getName(prefix,3,1); 52 names[7] = getName(prefix,4,0); 53 names[8] = getName(prefix,4,1); 54 names[9] = getName(prefix,5,0); 55 names[10] = getName(prefix,5,1); 56 names[11] = getName(prefix,6,0); 57 } 58 loadFlatKeyNames(String[] names,String prefix)59 private static void loadFlatKeyNames(String[] names,String prefix){ 60 names[0] = getName(prefix,0,0); 61 names[1] = getName(prefix,1,2); 62 names[2] = getName(prefix,1,0); 63 names[3] = getName(prefix,2,2); 64 names[4] = getName(prefix,2,0); 65 names[5] = getName(prefix,3,0); 66 names[6] = getName(prefix,4,2); 67 names[7] = getName(prefix,4,0); 68 names[8] = getName(prefix,5,2); 69 names[9] = getName(prefix,5,0); 70 names[10] = getName(prefix,6,2); 71 names[11] = getName(prefix,6,0); 72 } 73 getName(String prefix,int key,int signature)74 private static String getName(String prefix,int key,int signature){ 75 String resource = ("key." + prefix + "." + key + "." + signature); 76 return TuxGuitar.instance().getLanguageManager().getProperty(resource,DEFAULT_KEY_NAMES[key][signature]); 77 } 78 } 79 80 class TGMusicKeyNames implements LanguageLoader{ 81 82 private boolean sharp; 83 private String prefix; 84 private String[] names; 85 TGMusicKeyNames(boolean sharp,String prefix)86 public TGMusicKeyNames(boolean sharp,String prefix){ 87 this.sharp = sharp; 88 this.prefix = prefix; 89 this.names = new String[12]; 90 this.loadProperties(); 91 92 TuxGuitar.instance().getLanguageManager().addLoader(this); 93 } 94 getNames()95 public String[] getNames(){ 96 return this.names; 97 } 98 loadProperties()99 public void loadProperties() { 100 TGMusicKeyUtils.loadKeyNames(this.names, this.prefix, this.sharp); 101 } 102 } 103