Implemented theme serialization to a file
This commit is contained in:
		@@ -1,12 +1,17 @@
 | 
			
		||||
package envoy.client;
 | 
			
		||||
 | 
			
		||||
import java.awt.Color;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileInputStream;
 | 
			
		||||
import java.io.FileOutputStream;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.ObjectInputStream;
 | 
			
		||||
import java.io.ObjectOutputStream;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.prefs.Preferences;
 | 
			
		||||
 | 
			
		||||
import envoy.client.ui.Theme;
 | 
			
		||||
import envoy.schema.User;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Project: <strong>envoy-client</strong><br>
 | 
			
		||||
@@ -15,19 +20,32 @@ import envoy.schema.User;
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Settings {
 | 
			
		||||
 | 
			
		||||
	// Actual settings accessible by the rest of the application
 | 
			
		||||
	private String				username;
 | 
			
		||||
	private String				email;
 | 
			
		||||
	private boolean				enterToSend	= true;
 | 
			
		||||
	private Map<String, Theme>	themes		= new HashMap<>();
 | 
			
		||||
	private Map<String, Theme>	themes;
 | 
			
		||||
	private String				currentTheme;
 | 
			
		||||
 | 
			
		||||
	private String currentTheme;
 | 
			
		||||
	// private Image profilePic;
 | 
			
		||||
	private static Settings	settings;
 | 
			
		||||
	private Preferences		prefs	= Preferences.userNodeForPackage(Settings.class);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Required to save the settings.
 | 
			
		||||
	 */
 | 
			
		||||
	private Preferences prefs = Preferences.userNodeForPackage(Settings.class);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * User-defined themes are stored inside this file.
 | 
			
		||||
	 */
 | 
			
		||||
	private File themeFile = new File("themes.ser");
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Singleton instance of this class.
 | 
			
		||||
	 */
 | 
			
		||||
	private static Settings settings = new Settings();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * The way to instantiate the settings.
 | 
			
		||||
@@ -35,7 +53,7 @@ public class Settings {
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	private Settings() {}
 | 
			
		||||
	private Settings() { load(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * This method is used to ensure that there is only one instance of Settings.
 | 
			
		||||
@@ -43,54 +61,44 @@ public class Settings {
 | 
			
		||||
	 * @return the instance of Settings
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public static Settings getInstance() {
 | 
			
		||||
		if (settings == null) {
 | 
			
		||||
			settings = new Settings();
 | 
			
		||||
			settings.load();
 | 
			
		||||
	public static Settings getInstance() { return settings; }
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("unchecked")
 | 
			
		||||
	private void load() {
 | 
			
		||||
		setUsername(prefs.get("username", ""));
 | 
			
		||||
		setEmail(prefs.get("email", ""));
 | 
			
		||||
		setEnterToSend(prefs.getBoolean("enterToSend", true));
 | 
			
		||||
		setCurrentTheme(prefs.get("theme", "dark"));
 | 
			
		||||
 | 
			
		||||
		// Load themes from theme file
 | 
			
		||||
		try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(themeFile))) {
 | 
			
		||||
			Object obj = in.readObject();
 | 
			
		||||
			if(obj instanceof HashMap) themes = (Map<String, Theme>) obj;
 | 
			
		||||
		} catch (IOException | ClassNotFoundException e) {
 | 
			
		||||
			themes = new HashMap<>();
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
		}
 | 
			
		||||
		return settings;
 | 
			
		||||
 | 
			
		||||
		// Load standard themes not defined in the themes file
 | 
			
		||||
		themes.put("dark",
 | 
			
		||||
				new Theme("dark", Color.black, Color.darkGray, Color.white, Color.blue, Color.white, Color.orange, Color.blue, Color.white,
 | 
			
		||||
						Color.white));
 | 
			
		||||
		themes.put("light",
 | 
			
		||||
				new Theme("light", new Color(235, 235, 235), Color.white, Color.white, Color.darkGray, Color.black, Color.orange, Color.darkGray,
 | 
			
		||||
						Color.black, Color.black));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void load() {
 | 
			
		||||
		settings.setUsername(prefs.get("username", ""));
 | 
			
		||||
		settings.setEmail(prefs.get("email", ""));
 | 
			
		||||
		settings.setEnterToSend(prefs.getBoolean("enterToSend", true));
 | 
			
		||||
		// currentTheme = "dark"; Activate once if NullPointerException on currentTheme
 | 
			
		||||
		// and change theme to dark or white in Settings
 | 
			
		||||
		settings.setCurrentTheme(prefs.get("theme", "dark"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void save() {
 | 
			
		||||
		prefs.put("username", settings.getUsername());
 | 
			
		||||
		prefs.put("email", settings.getEmail());
 | 
			
		||||
	public void save() throws IOException{
 | 
			
		||||
		prefs.put("username", getUsername());
 | 
			
		||||
		prefs.put("email", getEmail());
 | 
			
		||||
		prefs.put("theme", currentTheme);
 | 
			
		||||
		System.out.println(currentTheme);
 | 
			
		||||
		prefs.putBoolean("enterToSend", settings.isEnterToSend());
 | 
			
		||||
		// TODO: override themes map
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void firstSave(User user) {
 | 
			
		||||
 | 
			
		||||
		// TODO: load themes
 | 
			
		||||
 | 
			
		||||
		settings.getThemes()
 | 
			
		||||
			.put("dark",
 | 
			
		||||
					new Theme("dark", Color.black, Color.darkGray, Color.white, Color.blue, Color.white, Color.orange,
 | 
			
		||||
							Color.blue, Color.white, Color.white));
 | 
			
		||||
		settings.getThemes()
 | 
			
		||||
			.put("light",
 | 
			
		||||
					new Theme("light", new Color(235, 235, 235), Color.white, Color.white, Color.darkGray, Color.black,
 | 
			
		||||
							Color.orange, Color.darkGray, Color.black, Color.black));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		prefs.put("username", user.getName());
 | 
			
		||||
		// prefs.put("email", user.getEmail());
 | 
			
		||||
		// prefs.putBoolean("darkMode", true);
 | 
			
		||||
		// prefs.putBoolean("enterToSend", true);
 | 
			
		||||
		prefs.putBoolean("enterToSend", isEnterToSend());
 | 
			
		||||
		
 | 
			
		||||
		// Save themes to theme file
 | 
			
		||||
		themeFile.createNewFile();
 | 
			
		||||
		try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(themeFile))) {
 | 
			
		||||
			out.writeObject(themes);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void addNewThemeToMap(Theme theme) {
 | 
			
		||||
@@ -103,13 +111,13 @@ public class Settings {
 | 
			
		||||
	public void setCurrentTheme(String themeName) { currentTheme = themeName; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the username
 | 
			
		||||
	 * @return the user name
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getUsername() { return username; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param username the username to set
 | 
			
		||||
	 * @param username the user name to set
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setUsername(String username) { this.username = username; }
 | 
			
		||||
@@ -145,18 +153,4 @@ public class Settings {
 | 
			
		||||
	public Map<String, Theme> getThemes() { return themes; }
 | 
			
		||||
 | 
			
		||||
	public void setThemes(Map<String, Theme> themes) { this.themes = themes; }
 | 
			
		||||
 | 
			
		||||
	// /**
 | 
			
		||||
	// * @return the profilePic
 | 
			
		||||
	// * @since Envoy v0.2-alpha
 | 
			
		||||
	// */
 | 
			
		||||
	// public Image getProfilePic() { return profilePic; }
 | 
			
		||||
	//
 | 
			
		||||
	// /**
 | 
			
		||||
	// * @param profilePic the profilePic to set
 | 
			
		||||
	// * @since Envoy v0.1-alpha
 | 
			
		||||
	// */
 | 
			
		||||
	// public void setProfilePic(Image profilePic) { this.profilePic = profilePic; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@@ -81,6 +81,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
			public void windowClosing(WindowEvent e) {
 | 
			
		||||
				try {
 | 
			
		||||
					localDB.saveToLocalDB();
 | 
			
		||||
					Settings.getInstance().save();
 | 
			
		||||
				} catch (IOException e1) {
 | 
			
		||||
					e1.printStackTrace();
 | 
			
		||||
					System.err.println("Could not save localDB");
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@ import envoy.client.Settings;
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 */
 | 
			
		||||
public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
@@ -62,10 +63,10 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
	private JButton		cancelButton	= new JButton("Cancel");
 | 
			
		||||
	private static int	space			= 5;
 | 
			
		||||
 | 
			
		||||
	private boolean colorChanged = false;
 | 
			
		||||
	private boolean	colorChanged	= false;
 | 
			
		||||
	private Theme	temporaryTheme;
 | 
			
		||||
 | 
			
		||||
	private Theme					temporaryTheme;
 | 
			
		||||
	private static SettingsScreen	settingsScreen;
 | 
			
		||||
	private static SettingsScreen settingsScreen;
 | 
			
		||||
 | 
			
		||||
	// TODO: Add a JPanel with all the Information necessary:
 | 
			
		||||
	// change (Picture,Username, Email, Password) and toggle(light/dark mode,
 | 
			
		||||
@@ -78,8 +79,6 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public static void open() {
 | 
			
		||||
 | 
			
		||||
		// UIColors.getInstance(Settings.getInstance().isDarkMode());
 | 
			
		||||
		settingsScreen = new SettingsScreen();
 | 
			
		||||
		settingsScreen.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
 | 
			
		||||
		settingsScreen.setModal(true);
 | 
			
		||||
@@ -87,7 +86,7 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Builds the settings screen.<br>
 | 
			
		||||
	 * Builds the settings screen.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
@@ -101,9 +100,9 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
			createNewThemeButton.setEnabled(false);
 | 
			
		||||
 | 
			
		||||
			temporaryTheme = new Theme("temporaryTheme",
 | 
			
		||||
					Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
 | 
			
		||||
			// ContentPane------------------------------------------------------
 | 
			
		||||
			temporaryTheme = new Theme("temporaryTheme", Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
 | 
			
		||||
 | 
			
		||||
			// Content pane
 | 
			
		||||
			GridBagLayout gbl_contentPanel = new GridBagLayout();
 | 
			
		||||
 | 
			
		||||
			gbl_contentPanel.columnWidths	= new int[] { 1, 1 };
 | 
			
		||||
@@ -155,7 +154,7 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
			contentPanel.add(options, gbc_optionsList);
 | 
			
		||||
 | 
			
		||||
			// ThemeContent ---
 | 
			
		||||
			// Theme content
 | 
			
		||||
 | 
			
		||||
			gbc_themeContent		= new GridBagConstraints();
 | 
			
		||||
			gbc_themeContent.fill	= GridBagConstraints.BOTH;
 | 
			
		||||
@@ -166,8 +165,6 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
			GridBagLayout gbl_themeLayout = new GridBagLayout();
 | 
			
		||||
 | 
			
		||||
			// themeContent.setSelectionForeground(theme.getUserNameColor());
 | 
			
		||||
			// themeContent.setSelectionBackground(theme.getSelectionColor());
 | 
			
		||||
			themeContent.setForeground(theme.getUserNameColor());
 | 
			
		||||
			themeContent.setBackground(theme.getCellColor());
 | 
			
		||||
 | 
			
		||||
@@ -181,7 +178,6 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
			themes.setBackground(theme.getUserNameColor());
 | 
			
		||||
			themes.setForeground(theme.getBackgroundColor());
 | 
			
		||||
			themes.setSelectedItem(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
			// themes.setBorder(null);
 | 
			
		||||
 | 
			
		||||
			themes.addItemListener(new ItemListener() {
 | 
			
		||||
 | 
			
		||||
@@ -191,7 +187,6 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
					System.out.println(selectedValue);
 | 
			
		||||
					selectedTheme = Settings.getInstance().getThemes().get(selectedValue);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			GridBagConstraints gbc_themes = new GridBagConstraints();
 | 
			
		||||
@@ -206,24 +201,9 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
			colorsPanel.setLayout((LayoutManager) new BoxLayout(colorsPanel, BoxLayout.Y_AXIS));
 | 
			
		||||
			colorsPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
 | 
			
		||||
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getBackgroundColor(), "Background", 1);
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getCellColor(), "Cells", 2);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getBackgroundColor(),
 | 
			
		||||
					"Background",
 | 
			
		||||
					1);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getCellColor(),
 | 
			
		||||
					"Cells",
 | 
			
		||||
					2);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
@@ -231,53 +211,17 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
					"Interactable Foreground",
 | 
			
		||||
					3);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getInteractableBackgroundColor(),
 | 
			
		||||
					"Interactable Background",
 | 
			
		||||
					4);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getMessageColorChat(),
 | 
			
		||||
					"Messages Chat",
 | 
			
		||||
					5);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getDateColorChat(),
 | 
			
		||||
					"Date Chat",
 | 
			
		||||
					6);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getSelectionColor(),
 | 
			
		||||
					"Selection",
 | 
			
		||||
					7);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getTypingMessageColor(),
 | 
			
		||||
					"Typing Message",
 | 
			
		||||
					8);
 | 
			
		||||
			buildCustomizeElement(new JPanel(),
 | 
			
		||||
 | 
			
		||||
					new JButton(),
 | 
			
		||||
					new JTextPane(),
 | 
			
		||||
					theme,
 | 
			
		||||
					theme.getUserNameColor(),
 | 
			
		||||
					"User Names",
 | 
			
		||||
					9);
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getMessageColorChat(), "Messages Chat", 5);
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getDateColorChat(), "Date Chat", 6);
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getSelectionColor(), "Selection", 7);
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getTypingMessageColor(), "Typing Message", 8);
 | 
			
		||||
			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getUserNameColor(), "User Names", 9);
 | 
			
		||||
 | 
			
		||||
			GridBagConstraints gbc_colorsPanel = new GridBagConstraints();
 | 
			
		||||
			gbc_colorsPanel.fill		= GridBagConstraints.HORIZONTAL;
 | 
			
		||||
@@ -298,16 +242,14 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
					String s = JOptionPane.showInputDialog("Enter a name for the new theme");
 | 
			
		||||
					System.out.println(s);
 | 
			
		||||
					Settings.getInstance()
 | 
			
		||||
						.addNewThemeToMap(new Theme(s, temporaryTheme.getBackgroundColor(),
 | 
			
		||||
								temporaryTheme.getCellColor(), temporaryTheme.getInteractableForegroundColor(),
 | 
			
		||||
								temporaryTheme.getInteractableBackgroundColor(), temporaryTheme.getMessageColorChat(),
 | 
			
		||||
								temporaryTheme.getDateColorChat(), temporaryTheme.getSelectionColor(),
 | 
			
		||||
						.addNewThemeToMap(new Theme(s, temporaryTheme.getBackgroundColor(), temporaryTheme.getCellColor(),
 | 
			
		||||
								temporaryTheme.getInteractableForegroundColor(), temporaryTheme.getInteractableBackgroundColor(),
 | 
			
		||||
								temporaryTheme.getMessageColorChat(), temporaryTheme.getDateColorChat(), temporaryTheme.getSelectionColor(),
 | 
			
		||||
								temporaryTheme.getTypingMessageColor(), temporaryTheme.getUserNameColor()));
 | 
			
		||||
					themeArray							= Arrays.copyOf(themeArray, themeArray.length + 1);
 | 
			
		||||
					themeArray[themeArray.length - 1]	= Settings.getInstance().getThemes().get(s).getThemeName();
 | 
			
		||||
 | 
			
		||||
					temporaryTheme = new Theme("temporaryTheme",
 | 
			
		||||
							Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
 | 
			
		||||
					temporaryTheme = new Theme("temporaryTheme", Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
 | 
			
		||||
 | 
			
		||||
					createNewThemeButton.setEnabled(false);
 | 
			
		||||
					themes.addItem(themeArray[themeArray.length - 1]);
 | 
			
		||||
@@ -421,27 +363,18 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void updateColorVariables(String key) {
 | 
			
		||||
	private void updateColorVariables(String key) {
 | 
			
		||||
		Theme theme = Settings.getInstance().getThemes().get(key);
 | 
			
		||||
 | 
			
		||||
		temporaryTheme = new Theme("temporaryTheme",
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getBackgroundColor(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getCellColor(),
 | 
			
		||||
				Settings.getInstance()
 | 
			
		||||
					.getThemes()
 | 
			
		||||
					.get(Settings.getInstance().getCurrentTheme())
 | 
			
		||||
					.getInteractableForegroundColor(),
 | 
			
		||||
				Settings.getInstance()
 | 
			
		||||
					.getThemes()
 | 
			
		||||
					.get(Settings.getInstance().getCurrentTheme())
 | 
			
		||||
					.getInteractableBackgroundColor(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getInteractableForegroundColor(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getInteractableBackgroundColor(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getMessageColorChat(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getDateColorChat(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getSelectionColor(),
 | 
			
		||||
				Settings.getInstance()
 | 
			
		||||
					.getThemes()
 | 
			
		||||
					.get(Settings.getInstance().getCurrentTheme())
 | 
			
		||||
					.getTypingMessageColor(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getTypingMessageColor(),
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getUserNameColor());
 | 
			
		||||
 | 
			
		||||
		colorsPanel.removeAll();
 | 
			
		||||
@@ -526,10 +459,9 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
		colorsPanel.add(createNewThemeButton, gbc_createNewTheme);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setContent(JPanel content, GridBagConstraints layout) { contentPanel.add(content, layout); }
 | 
			
		||||
	private void setContent(JPanel content, GridBagConstraints layout) { contentPanel.add(content, layout); }
 | 
			
		||||
 | 
			
		||||
	public void buildCustomizeElement(JPanel panel, JButton button, JTextPane textPane, Theme theme, Color color,
 | 
			
		||||
			String name, int yIndex) {
 | 
			
		||||
	private void buildCustomizeElement(JPanel panel, JButton button, JTextPane textPane, Theme theme, Color color, String name, int yIndex) {
 | 
			
		||||
		textPane.setFont(new Font("Arial", Font.PLAIN, 14));
 | 
			
		||||
		textPane.setBackground(theme.getBackgroundColor());
 | 
			
		||||
		textPane.setForeground(theme.getUserNameColor());
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ import envoy.exception.EnvoyException;
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Startup {
 | 
			
		||||
@@ -61,7 +62,7 @@ public class Startup {
 | 
			
		||||
					"Local DB error",
 | 
			
		||||
					JOptionPane.WARNING_MESSAGE);
 | 
			
		||||
		}
 | 
			
		||||
		Settings.getInstance().firstSave(client.getSender());
 | 
			
		||||
		Settings.getInstance().setUsername(userName);
 | 
			
		||||
		
 | 
			
		||||
		EventQueue.invokeLater(() -> {
 | 
			
		||||
			try {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user