package oripa.resource; import java.util.HashMap; import java.util.Locale; import java.util.ResourceBundle; /** * A singleton for resources. * All resources are loaded at the beginning. * * @author koji * */ public class ResourceHolder { private HashMap<ResourceKey, ResourceBundle> resources = new HashMap<>(); //---------------------------------------------------------- private static ResourceHolder instance = null; private ResourceHolder(){} public static ResourceHolder getInstance(){ if(instance == null){ instance = new ResourceHolder(); instance.load(); } return instance; } //---------------------------------------------------------- private static final String resourcePackage = "oripa.resource"; private void load(){ ResourceHolder resources = ResourceHolder.getInstance(); resources.addResource(ResourceKey.EXPLANATION, createResource(resourcePackage + ".ExplanationStringResource_en") ); resources.addResource(ResourceKey.LABEL, createResource(resourcePackage + ".LabelStringResource_en") ); resources.addResource(ResourceKey.WARNING, createResource(resourcePackage + ".WarningStringResource_en") ); } public static ResourceBundle createResource(String classPath){ ResourceBundle bundle; // get a resource for the location try { bundle = ResourceBundle.getBundle(classPath, Locale.getDefault()); } catch (Exception e) { bundle = ResourceBundle.getBundle(classPath, Locale.ENGLISH); } // sorry for forcing English... bundle = ResourceBundle.getBundle(classPath, Locale.ENGLISH); return bundle; } public void addResource(ResourceKey key, ResourceBundle resource){ resources.put(key, resource); } public ResourceBundle getResource(ResourceKey key){ return resources.get(key); } public String getString(ResourceKey key, String id){ return getResource(key).getString(id); } }