package org.herac.tuxguitar.player.impl.jsa.assistant;
import java.net.URL;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Soundbank;
import javax.swing.JOptionPane;
import org.herac.tuxguitar.gui.TuxGuitar;
import org.herac.tuxguitar.gui.system.config.TGConfig;
public class SBAssistant {
private static SBAssistant instance;
private Soundbank soundbank;
private SBAssistant(){
this.soundbank = null;
}
public static SBAssistant instance() {
if (instance == null) {
synchronized (SBAssistant.class) {
instance = new SBAssistant();
}
}
return instance;
}
public Soundbank getSoundbank(){
if(this.soundbank == null){
this.loadSoundbank();
}
return this.soundbank;
}
public void setSoundbank(Soundbank soundbank){
this.soundbank = soundbank;
}
public void loadSoundbank(){
try {
if(TGConfig.SOUNDBANK_URL != null){
URL url = new URL(TGConfig.SOUNDBANK_URL);
if(isConfirmed()){
LOG.debug("Try to get soundbank from: " + TGConfig.SOUNDBANK_URL);
this.setSoundbank( MidiSystem.getSoundbank( url.openStream() ) );
}
}
}catch (Throwable throwable) {
throwable.printStackTrace();
}
}
/** The Logger for this class. */
public static final transient Logger LOG = Logger.getLogger(SBAssistant.class);
public boolean isConfirmed(){
String title = "Soundbank Assistant";
String message = "You don't seem to have any soundbank installed.\nDo you want to open one from internet?";
int type = JOptionPane.YES_NO_OPTION;
int result = JOptionPane.showConfirmDialog(TuxGuitar.instance().getShell(),message,title,type);
return ( result == JOptionPane.YES_OPTION );
}
}