import java.util.MissingResourceException;
import java.util.Properties;
-import be.nikiroo.jvcard.resources.bundles.ColorBundle;
-import be.nikiroo.jvcard.resources.enums.ColorOption;
+import be.nikiroo.jvcard.resources.ColorBundle;
+import be.nikiroo.jvcard.resources.ColorOption;
import com.googlecode.lanterna.TextColor;
import com.googlecode.lanterna.graphics.PropertiesTheme;
* @author niki
*
*/
-public class UiColors extends ColorBundle {
+public class UiColors {
static private Object lock = new Object();
static private UiColors instance = null;
private Map<String, TextColor> colorMap = null;
+ private ColorBundle bundle;
private UiColors() {
- super();
+ bundle = new ColorBundle();
colorMap = new HashMap<String, TextColor>();
}
+ /**
+ * Return a {@link Theme} following the colours defined in
+ * colors.properties.
+ *
+ * @return the {@link Theme}
+ */
+ static public Theme getCustomTheme() {
+ // Create a properties-theme with our own custom values for some of it
+ Properties properties = new Properties();
+ try {
+ ClassLoader classLoader = AbstractTextGUI.class.getClassLoader();
+ InputStream resourceAsStream = classLoader
+ .getResourceAsStream("default-theme.properties");
+ if (resourceAsStream == null) {
+ resourceAsStream = new FileInputStream(
+ "src/main/resources/default-theme.properties");
+ }
+ properties.load(resourceAsStream);
+ resourceAsStream.close();
+ } catch (IOException e) {
+ }
+
+ // default colours:
+ String fg = getForegroundColor(ColorOption.DEFAULT).toString();
+ String bg = getBackgroundColor(ColorOption.DEFAULT).toString();
+ for (String def : new String[] { "com.googlecode.lanterna",
+ "com.googlecode.lanterna.gui2.TextBox",
+ "com.googlecode.lanterna.gui2.AbstractListBox",
+ "com.googlecode.lanterna.gui2.Borders$StandardBorder" }) {
+ properties.put(def + ".foreground", fg);
+ properties.put(def + ".background", bg);
+ }
+
+ // no bold on borders prelight:
+ properties
+ .put("com.googlecode.lanterna.gui2.Borders$StandardBorder.sgr[PRELIGHT]",
+ "");
+
+ // line answers:
+ fg = getForegroundColor(ColorOption.LINE_MESSAGE_ANS).toString();
+ bg = getBackgroundColor(ColorOption.LINE_MESSAGE_ANS).toString();
+ String prop = "com.googlecode.lanterna.gui2.TextBox";
+ properties.put(prop + ".foreground[ACTIVE]", fg);
+ properties.put(prop + ".background[ACTIVE]", bg);
+
+ PropertiesTheme theme = new PropertiesTheme(properties);
+ return theme;
+ }
+
/**
* Create a new {@link Label} with the colours of the given
* {@link ColorOption}.
if (!getInstance().colorMap.containsKey(el.name() + "_BG")) {
String value = null;
try {
- value = getInstance().map.getString(el.name() + "_BG");
+ value = getInstance().bundle.getStringX(el, "BG");
} catch (MissingResourceException mre) {
value = null;
}
if (!getInstance().colorMap.containsKey(el.name() + "_FG")) {
String value = null;
try {
- value = getInstance().map.getString(el.name() + "_FG");
+ value = getInstance().bundle.getStringX(el, "FG");
} catch (MissingResourceException mre) {
value = null;
}
return getInstance().colorMap.get(el.name() + "_FG");
}
- /**
- * Return a {@link Theme} following the colours defined in
- * display.properties.
- *
- * @return the {@link Theme}
- */
- static Theme getCustomTheme() {
- // Create a properties-theme with our own custom values for some of it
- Properties properties = new Properties();
- try {
- ClassLoader classLoader = AbstractTextGUI.class.getClassLoader();
- InputStream resourceAsStream = classLoader
- .getResourceAsStream("default-theme.properties");
- if (resourceAsStream == null) {
- resourceAsStream = new FileInputStream(
- "src/main/resources/default-theme.properties");
- }
- properties.load(resourceAsStream);
- resourceAsStream.close();
- } catch (IOException e) {
- }
- properties.put("com.googlecode.lanterna.background", "black");
- PropertiesTheme theme = new PropertiesTheme(properties);
-
- return theme;
- }
-
/**
* Get the (unique) instance of this class.
*