1 package de.lathanda.eos.common.gui;
3 import java.awt.Toolkit;
5 import java.io.FileInputStream;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.io.OutputStream;
10 import java.util.LinkedList;
11 import java.util.Properties;
13 import de.lathanda.eos.base.ResourceLoader;
14 import de.lathanda.eos.base.util.ErrorBehavior;
15 import de.lathanda.eos.base.util.GuiToolkit;
32 private Properties configuration;
36 private boolean dirty;
52 private String language;
60 private int errorNumber;
65 }
catch (Exception e) {
78 private void load() throws IOException {
79 String home = System.getProperty(
"user.home");
80 File file =
new File(home +
"/.eos/guiconfig.ini");
82 try (InputStream in =
new FileInputStream(file)) {
86 try (InputStream in = ResourceLoader.getResourceAsStream(
"guiconfig.ini")) {
100 public void save() throws IOException {
101 String home = System.getProperty(
"user.home");
102 File dir =
new File(home +
"/.eos");
103 File file =
new File(home +
"/.eos/guiconfig.ini");
104 if (!(dir.exists() && dir.isDirectory())) {
107 save(
new FileOutputStream(file));
115 private void load(InputStream in)
throws IOException {
116 configuration =
new Properties();
117 configuration.load(in);
118 fontsize = Integer.valueOf(configuration.getProperty(
"fontsize"));
119 errorBehavior =
ErrorBehavior.
decode(Integer.valueOf(configuration.getProperty(
"errorbehavior")));
120 errorNumber = Integer.valueOf(configuration.getProperty(
"errornumber"));
121 dpi = Integer.valueOf(configuration.getProperty(
"dpi",
"0"));
122 unit = Double.valueOf(configuration.getProperty(
"unit",
"1"));
123 language = configuration.getProperty(
"language",
"eos2");
125 dpi = Toolkit.getDefaultToolkit().getScreenResolution();
127 GuiToolkit.setScreenResolution(dpi);
136 private void save(OutputStream out)
throws IOException {
137 configuration.setProperty(
"fontsize", Integer.toString(fontsize));
138 configuration.setProperty(
"errorbehavior", Integer.toString(errorBehavior.
encode()));
139 configuration.setProperty(
"errornumber", Integer.toString(errorNumber));
140 configuration.setProperty(
"dpi", Integer.toString(dpi));
141 configuration.setProperty(
"unit", Double.toString(unit));
142 configuration.setProperty(
"language", language);
143 configuration.store(out,
"EOS Configuration");
160 private void setDefault() {
172 if (this.fontsize != fontsize) {
173 this.fontsize = fontsize;
181 this.language = language;
189 this.errorNumber = errorNumber;
194 return errorBehavior;
198 if (this.errorBehavior != errorBehavior) {
199 this.errorBehavior = errorBehavior;
209 if (dpi != this.dpi) {
221 if (unit != this.unit) {
232 private LinkedList<GuiConfigurationListener> configurationListener =
new LinkedList<>();
239 configurationListener.add(cf);
247 configurationListener.remove(cf);
255 configurationListener.forEach(cf -> cf.fontsizeChanged(fontsize));
263 configurationListener.forEach(cf -> cf.errorBehaviorChanged(errorBehavior));
void setLanguage(String language)
int getNumberOfShownErrors()
ErrorBehavior getErrorBehavior()
synchronized void fireFontsizeChanged()
void setUnit(double unit)
synchronized void removeConfigurationListener(GuiConfigurationListener cf)
void setNumberOfShownErrors(int errorNumber)
synchronized void addConfigurationListener(GuiConfigurationListener cf)
void setFontsize(int fontsize)
static final GuiConfiguration def
void setErrorBehavior(ErrorBehavior errorBehavior)
synchronized void fireErrorBehaviorChanged()
static ErrorBehavior decode(int value)
default void fontsizeChanged(int fontsize)
default void errorBehaviorChanged(ErrorBehavior errorBehavior)