Lot of stuff
This commit is contained in:
84
src/main/java/app/settings/SettingsProvider.java
Normal file
84
src/main/java/app/settings/SettingsProvider.java
Normal 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();
|
||||
}
|
||||
|
||||
}
|
||||
9
src/main/java/app/settings/SettingsProviderI.java
Normal file
9
src/main/java/app/settings/SettingsProviderI.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package app.settings;
|
||||
|
||||
public interface SettingsProviderI {
|
||||
|
||||
void loadSettings();
|
||||
|
||||
void saveSettings();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user