Lot of stuff

This commit is contained in:
Oystein
2021-04-20 17:37:50 +02:00
parent f0a724888d
commit d2f7ad1828
13 changed files with 362 additions and 152 deletions

View File

@@ -0,0 +1,84 @@
package app.settings;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import app.events.LanguageChangedEvent;
import app.events.ThemeChangedEvent;
import app.model.Model;
public class SettingsProvider implements SettingsProviderI {
private static EventBus eventBus;
private static final String SETTINGS_PATH = "/BNNsettings/settings.dat";
public SettingsProvider(EventBus eB) {
setEventBus(eB);
Model.setSettingsProvider(this);
}
public void setEventBus(EventBus eB) {
eventBus = eB;
SettingsProvider.eventBus.register(this);
}
@Override
public void loadSettings() {
List<String> settings = new ArrayList<>();
List<String> legalSettings = Arrays.asList("Java", "Markdown", "Monokai", "Solarized Light");
try (Scanner sc = new Scanner(new File(getClass().getResource(SETTINGS_PATH).getPath()))) {
while (sc.hasNextLine()) {
var nextLine = sc.nextLine().trim();
if (nextLine.isEmpty() || nextLine.startsWith("-")) {
continue;
} else {
settings.add(nextLine.substring(nextLine.indexOf("=") + 2));
}
}
if (legalSettings.containsAll(settings)) {
eventBus.post(new LanguageChangedEvent(settings.get(0)));
eventBus.post(new ThemeChangedEvent(settings.get(1)));
} else {
throw new IOException();
}
} catch (IOException e) {
eventBus.post(new LanguageChangedEvent("Java"));
eventBus.post(new ThemeChangedEvent("Monokai"));
}
}
@Override
public void saveSettings() {
try (PrintWriter writer = new PrintWriter(new File(getClass().getResource(SETTINGS_PATH).getPath()))) {
writer.println("- Settings:");
writer.println("Programming Language = " + Model.getLanguage().getName());
writer.println("Theme = " + Model.getTheme());
} catch (IOException e) {
System.err.println(e);
}
}
@Subscribe
private void handle(ThemeChangedEvent event) {
saveSettings();
}
@Subscribe
private void handle(LanguageChangedEvent event) {
saveSettings();
}
}

View File

@@ -0,0 +1,9 @@
package app.settings;
public interface SettingsProviderI {
void loadSettings();
void saveSettings();
}