Merge branch 'develop' into f/javadoc
This commit is contained in:
		| @@ -18,6 +18,7 @@ import javax.xml.datatype.DatatypeFactory; | ||||
|  | ||||
| import envoy.client.event.EventBus; | ||||
| import envoy.client.event.MessageCreationEvent; | ||||
| import envoy.client.util.EnvoyLog; | ||||
| import envoy.exception.EnvoyException; | ||||
| import envoy.schema.Message; | ||||
| import envoy.schema.Message.Metadata.MessageState; | ||||
| @@ -48,7 +49,7 @@ public class LocalDB { | ||||
| 	private Sync	sync				= objectFactory.createSync(); | ||||
| 	private Sync	readMessages		= objectFactory.createSync(); | ||||
|  | ||||
| 	private static final Logger logger = Logger.getLogger(LocalDB.class.getSimpleName()); | ||||
|   private static final Logger logger = EnvoyLog.getLogger(LocalDB.class.getSimpleName()); | ||||
|  | ||||
| 	/** | ||||
| 	 * Constructs an empty local database. To serialize any chats to the file | ||||
|   | ||||
| @@ -114,7 +114,7 @@ public class Settings { | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @return the name of the current Theme | ||||
| 	 * @return the name of the current theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public String getCurrentTheme() { return currentTheme; } | ||||
| @@ -122,7 +122,7 @@ public class Settings { | ||||
| 	/** | ||||
| 	 * Sets the currentTheme | ||||
| 	 *  | ||||
| 	 * @param themeName the name of the current theme | ||||
| 	 * @param themeName the name of the new current theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public void setCurrentTheme(String themeName) { currentTheme = themeName; } | ||||
|   | ||||
| @@ -16,3 +16,4 @@ public interface Event<T> { | ||||
| 	 */ | ||||
| 	T get(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -30,8 +30,10 @@ import envoy.client.Client; | ||||
| import envoy.client.Config; | ||||
| import envoy.client.LocalDB; | ||||
| import envoy.client.Settings; | ||||
| import envoy.client.util.EnvoyLog; | ||||
| import envoy.client.event.EventBus; | ||||
| import envoy.client.event.ThemeChangeEvent; | ||||
|  | ||||
| import envoy.schema.Message; | ||||
| import envoy.schema.User; | ||||
|  | ||||
| @@ -66,7 +68,7 @@ public class ChatWindow extends JFrame { | ||||
|  | ||||
| 	private static int space = 4; | ||||
|  | ||||
| 	private static final Logger logger = Logger.getLogger(ChatWindow.class.getSimpleName()); | ||||
| 	private static final Logger logger = EnvoyLog.getLogger(ChatWindow.class.getSimpleName()); | ||||
|  | ||||
| 	public ChatWindow(Client client, LocalDB localDB) { | ||||
| 		this.client		= client; | ||||
| @@ -167,9 +169,9 @@ public class ChatWindow extends JFrame { | ||||
|  | ||||
| 		settingsButton.addActionListener((evt) -> { | ||||
| 			try { | ||||
| 				SettingsScreen.open(); | ||||
| 				new SettingsScreen().setVisible(true); | ||||
| 				changeChatWindowColors(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme())); | ||||
| 			} catch (Exception e) { | ||||
| 				SettingsScreen.open(); | ||||
| 				logger.log(Level.WARNING, "An error occured while opening the settings screen", e); | ||||
| 				e.printStackTrace(); | ||||
| 			} | ||||
| @@ -236,7 +238,8 @@ public class ChatWindow extends JFrame { | ||||
|  | ||||
| 	/** | ||||
| 	 * Used to immediately reload the ChatWindow when settings were changed. | ||||
| 	 * | ||||
|      * | ||||
|      * @param theme the theme to change colors into | ||||
| 	 * @since Envoy v0.1-alpha | ||||
| 	 */ | ||||
| 	private void changeChatWindowColors(Theme theme) { | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import java.awt.Insets; | ||||
| import java.awt.event.ItemEvent; | ||||
| import java.awt.event.ItemListener; | ||||
| import java.util.Arrays; | ||||
| import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| import javax.swing.BoxLayout; | ||||
| @@ -25,8 +26,8 @@ import javax.swing.JPanel; | ||||
| import javax.swing.JTextPane; | ||||
| import javax.swing.ListSelectionModel; | ||||
|  | ||||
| import envoy.client.LocalDB; | ||||
| import envoy.client.Settings; | ||||
| import envoy.client.util.EnvoyLog; | ||||
| import envoy.client.event.EventBus; | ||||
| import envoy.client.event.ThemeChangeEvent; | ||||
|  | ||||
| @@ -56,44 +57,23 @@ public class SettingsScreen extends JDialog { | ||||
|  | ||||
| 	private GridBagConstraints gbc_themeContent = new GridBagConstraints(); | ||||
|  | ||||
| 	private Theme selectedTheme = Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()); | ||||
| 	private JButton	createNewThemeButton	= new JButton("Create New Theme"); | ||||
| 	private JPanel	colorsPanel				= new JPanel(); | ||||
| 	private JButton	okButton				= new JButton("Save"); | ||||
| 	private JButton	cancelButton			= new JButton("Cancel"); | ||||
|  | ||||
| 	private JButton createNewThemeButton = new JButton("Create New Theme"); | ||||
|  | ||||
| 	private JPanel		colorsPanel		= new JPanel(); | ||||
| 	private JButton		okButton		= new JButton("Save"); | ||||
| 	private JButton		cancelButton	= new JButton("Cancel"); | ||||
| 	private static int	space			= 5; | ||||
|  | ||||
| 	private Theme temporaryTheme; | ||||
| 	private Theme temporaryTheme, selectedTheme; | ||||
|  | ||||
| 	private static final Logger logger = Logger.getLogger(LocalDB.class.getSimpleName()); | ||||
|  | ||||
| 	private static SettingsScreen settingsScreen; | ||||
|  | ||||
| 	// TODO: Add a JPanel with all the Information necessary: | ||||
| 	// change (Picture,Username, Email, Password) and toggle(light/dark mode, | ||||
| 	// "ctrl+enter"/"enter" | ||||
| 	// to send a message directly) | ||||
|  | ||||
| 	/** | ||||
| 	 * Opens the settings screen.<br> | ||||
| 	 * | ||||
| 	 * @since Envoy v0.1-alpha | ||||
| 	 */ | ||||
| 	public static void open() { | ||||
| 		settingsScreen = new SettingsScreen(); | ||||
| 		settingsScreen.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); | ||||
| 		settingsScreen.setModal(true); | ||||
| 		settingsScreen.setVisible(true); | ||||
| 	} | ||||
| 	private static final Logger logger = EnvoyLog.getLogger(SettingsScreen.class.getSimpleName()); | ||||
|  | ||||
| 	/** | ||||
| 	 * Builds the settings screen. | ||||
| 	 * | ||||
| 	 * @since Envoy v0.1-alpha | ||||
| 	 */ | ||||
| 	private SettingsScreen() { | ||||
| 	public SettingsScreen() { | ||||
| 		logger.info(Settings.getInstance().getCurrentTheme()); | ||||
|  | ||||
| 		setBounds(10, 10, 450, 650); | ||||
| @@ -122,7 +102,7 @@ public class SettingsScreen extends JDialog { | ||||
| 					@SuppressWarnings("unchecked") | ||||
| 					final JList<String>	selectedOption	= (JList<String>) listSelectionEvent.getSource(); | ||||
| 					final String		option			= selectedOption.getSelectedValue(); | ||||
| 					System.out.println(option); | ||||
| 					logger.log(Level.FINEST, option); | ||||
|  | ||||
| 					switch (option) { | ||||
| 						case "Color Themes": | ||||
| @@ -173,7 +153,7 @@ public class SettingsScreen extends JDialog { | ||||
| 				@Override | ||||
| 				public void itemStateChanged(ItemEvent e) { | ||||
| 					String selectedValue = (String) themes.getSelectedItem(); | ||||
| 					System.out.println(selectedValue); | ||||
| 					logger.log(Level.FINEST, selectedValue); | ||||
| 					selectedTheme = Settings.getInstance().getThemes().get(selectedValue); | ||||
| 				} | ||||
| 			}); | ||||
| @@ -229,7 +209,7 @@ public class SettingsScreen extends JDialog { | ||||
| 			createNewThemeButton.addActionListener((evt) -> { | ||||
| 				try { | ||||
| 					String s = JOptionPane.showInputDialog("Enter a name for the new theme"); | ||||
| 					System.out.println(s); | ||||
| 					logger.log(Level.FINEST, s); | ||||
| 					Settings.getInstance() | ||||
| 						.addNewThemeToMap(new Theme(s, temporaryTheme.getBackgroundColor(), temporaryTheme.getCellColor(), | ||||
| 								temporaryTheme.getInteractableForegroundColor(), temporaryTheme.getInteractableBackgroundColor(), | ||||
| @@ -295,7 +275,7 @@ public class SettingsScreen extends JDialog { | ||||
| 						Settings.getInstance().setEnterToSend(Settings.getInstance().isEnterToSend());// still temporary | ||||
|  | ||||
| 						Settings.getInstance().setCurrentTheme(selectedTheme.getThemeName()); | ||||
| 						System.out.println(selectedTheme.getThemeName()); | ||||
| 						logger.log(Level.FINER, selectedTheme.getThemeName()); | ||||
|  | ||||
| 						final Theme currentTheme = Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()); | ||||
| 						changeSettingsScreenColors(currentTheme); | ||||
| @@ -306,13 +286,18 @@ public class SettingsScreen extends JDialog { | ||||
| 						revalidate(); | ||||
| 						repaint(); | ||||
| 					} catch (Exception e) { | ||||
| 						logger.info("Something went wrong when changing the setting"); | ||||
| 						settingsScreen.dispose(); | ||||
| 						logger.warning("Something went wrong when changing the setting"); | ||||
| 						JOptionPane.showMessageDialog(this, "Something went wrong when changing the setting"); | ||||
| 						dispose(); | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		changeSettingsScreenColors(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme())); | ||||
|          | ||||
|         setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); | ||||
| 		setModal(true); | ||||
| 	} | ||||
|  | ||||
| 	private void changeSettingsScreenColors(Theme theme) { | ||||
| @@ -447,8 +432,7 @@ public class SettingsScreen extends JDialog { | ||||
| 			try { | ||||
| 				Color newColor = JColorChooser.showDialog(null, "Choose a color", color); | ||||
| 				if (newColor.getRGB() != color.getRGB()) { | ||||
| 					System.out.println("New Color"); | ||||
| 					System.out.println(color.getRGB()); | ||||
| 					logger.log(Level.FINEST, "New Color: " + String.valueOf(color.getRGB())); | ||||
| 					// TODO: When Theme changed in same settings screen, color variable doesnt | ||||
| 					// update. | ||||
| 					temporaryTheme.setColor(yIndex, newColor); | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import javax.swing.JOptionPane; | ||||
| import envoy.client.Client; | ||||
| import envoy.client.Config; | ||||
| import envoy.client.LocalDB; | ||||
| import envoy.client.util.EnvoyLog; | ||||
| import envoy.exception.EnvoyException; | ||||
| import envoy.schema.User; | ||||
|  | ||||
| @@ -28,11 +29,9 @@ import envoy.schema.User; | ||||
|  */ | ||||
| public class Startup { | ||||
|  | ||||
| 	private static final Logger logger = Logger.getLogger(Startup.class.getSimpleName()); | ||||
| 	private static final Logger logger = EnvoyLog.getLogger(Startup.class.getSimpleName()); | ||||
|  | ||||
| 	public static void main(String[] args) { | ||||
| 		logger.setLevel(Level.ALL); | ||||
|  | ||||
| 		Config config = Config.getInstance(); | ||||
|  | ||||
| 		try { | ||||
| @@ -57,7 +56,7 @@ public class Startup { | ||||
| 			logger.severe("User name is not set or empty. Exiting..."); | ||||
| 			System.exit(1); | ||||
| 		} | ||||
| 		 | ||||
|  | ||||
| 		// Initialize the local database | ||||
| 		LocalDB localDB; | ||||
| 		try { | ||||
| @@ -81,19 +80,18 @@ public class Startup { | ||||
| 				// Try entering offline mode | ||||
| 				localDB.loadUsers(); | ||||
| 				User clientUser = localDB.getUsers().get(userName); | ||||
| 				if(clientUser == null) | ||||
| 					throw new EnvoyException("Could not enter offline mode: user name unknown"); | ||||
| 				if (clientUser == null) throw new EnvoyException("Could not enter offline mode: user name unknown"); | ||||
| 				client.setSender(clientUser); | ||||
| 			} catch(Exception e2) { | ||||
| 			} catch (Exception e2) { | ||||
| 				JOptionPane.showMessageDialog(null, e2.toString(), "Client error", JOptionPane.ERROR_MESSAGE); | ||||
| 				System.exit(1); | ||||
| 				return; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
|  | ||||
| 		// Set client user in local database | ||||
| 		localDB.setUser(client.getSender()); | ||||
| 		 | ||||
|  | ||||
| 		// Initialize chats in local database | ||||
| 		try { | ||||
| 			localDB.initializeDBFile(); | ||||
| @@ -105,13 +103,12 @@ public class Startup { | ||||
| 					"Local DB error", | ||||
| 					JOptionPane.WARNING_MESSAGE); | ||||
| 		} | ||||
| 		 | ||||
|  | ||||
| 		logger.info("Client user ID: " + client.getSender().getID()); | ||||
|  | ||||
| 		// Save all users to the local database | ||||
| 		if(client.isOnline()) | ||||
| 			localDB.setUsers(client.getUsers()); | ||||
| 		 | ||||
| 		if (client.isOnline()) localDB.setUsers(client.getUsers()); | ||||
|  | ||||
| 		EventQueue.invokeLater(() -> { | ||||
| 			try { | ||||
| 				ChatWindow chatWindow = new ChatWindow(client, localDB); | ||||
| @@ -119,7 +116,7 @@ public class Startup { | ||||
|  | ||||
| 				try { | ||||
| 					new StatusTrayIcon(chatWindow).show(); | ||||
| 					 | ||||
|  | ||||
| 					// If the tray icon is supported, hide the chat window on close | ||||
| 					chatWindow.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); | ||||
| 				} catch (EnvoyException e) { | ||||
|   | ||||
| @@ -1,161 +1,161 @@ | ||||
| package envoy.client.ui; | ||||
|  | ||||
| import java.awt.Color; | ||||
| import java.io.Serializable; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>Theme.java</strong><br> | ||||
|  * Created: <strong>23 Nov 2019</strong><br> | ||||
|  *  | ||||
|  * @author Maximilian Käfer | ||||
|  * @since Envoy v0.2-alpha | ||||
|  */ | ||||
| public class Theme implements Serializable { | ||||
|  | ||||
| 	private static final long serialVersionUID = 141727847527060352L; | ||||
|  | ||||
| 	private String	themeName; | ||||
| 	private Color	backgroundColor; | ||||
| 	private Color	cellColor; | ||||
| 	private Color	interactableBackgroundColor; | ||||
| 	private Color	userNameColor; | ||||
| 	private Color	interactableForegroundColor; | ||||
| 	private Color	messageColorChat; | ||||
| 	private Color	dateColorChat; | ||||
| 	private Color	selectionColor; | ||||
| 	private Color	typingMessageColor; | ||||
|  | ||||
| 	public Theme(String themeName, Color backgroundColor, Color cellColor, Color interactableForegroundColor, Color interactableBackgroundColor, | ||||
| 			Color messageColorChat, Color dateColorChat, Color selectionColor, Color typingMessageColor, Color userNameColor) { | ||||
|  | ||||
| 		this.themeName = themeName; | ||||
|  | ||||
| 		this.backgroundColor				= backgroundColor; | ||||
| 		this.cellColor						= cellColor; | ||||
| 		this.interactableForegroundColor	= interactableForegroundColor; | ||||
| 		this.interactableBackgroundColor	= interactableBackgroundColor; | ||||
| 		this.messageColorChat				= messageColorChat; | ||||
| 		this.dateColorChat					= dateColorChat; | ||||
| 		this.selectionColor					= selectionColor; | ||||
| 		this.typingMessageColor				= typingMessageColor; | ||||
| 		this.userNameColor					= userNameColor; | ||||
| 	} | ||||
|  | ||||
| 	public Theme(String name, Theme other) { | ||||
| 		this(name, other.backgroundColor, other.cellColor, other.interactableForegroundColor, | ||||
| 				other.interactableBackgroundColor, other.messageColorChat, other.dateColorChat, other.selectionColor, | ||||
| 				other.typingMessageColor, other.userNameColor); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @return name of the theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public String getThemeName() { return themeName; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return interactableForegroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getInteractableForegroundColor() { return interactableForegroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return messageColorChat | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getMessageColorChat() { return messageColorChat; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return dateColorChat | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getDateColorChat() { return dateColorChat; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return selectionColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getSelectionColor() { return selectionColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return typingMessageColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getTypingMessageColor() { return typingMessageColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return backgroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getBackgroundColor() { return backgroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return cellColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getCellColor() { return cellColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return interactableBackgroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getInteractableBackgroundColor() { return interactableBackgroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return userNameColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getUserNameColor() { return userNameColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * Sets the a specific {@link Color} in this theme to a new {@link Color} | ||||
| 	 *  | ||||
| 	 * @param index    - index of the color </br> | ||||
| 	 *                 0 = backgroundColor </br> | ||||
| 	 *                 1 = cellColor </br> | ||||
| 	 *                 2 = interactableForegroundColor </br> | ||||
| 	 *                 3 = interactableBackgroundColor </br> | ||||
| 	 *                 4 = messageColorChat </br> | ||||
| 	 *                 5 = dateColorChat </br> | ||||
| 	 *                 6 = selectionColor </br> | ||||
| 	 *                 7 = typingMessageColor </br> | ||||
| 	 *                 8 = userNameColor </br> | ||||
| 	 *                 </br> | ||||
| 	 *  | ||||
| 	 * @param newColor - new {@link Color} to be set | ||||
| 	 * @since Envoy 0.2-alpha | ||||
| 	 */ | ||||
| 	public void setColor(int index, Color newColor) { | ||||
| 		switch (index) { | ||||
| 			case 0: | ||||
| 				this.backgroundColor = newColor; | ||||
| 				break; | ||||
| 			case 1: | ||||
| 				this.cellColor = newColor; | ||||
| 				break; | ||||
| 			case 2: | ||||
| 				this.interactableForegroundColor = newColor; | ||||
| 				break; | ||||
| 			case 3: | ||||
| 				this.interactableBackgroundColor = newColor; | ||||
| 				break; | ||||
| 			case 4: | ||||
| 				this.messageColorChat = newColor; | ||||
| 				break; | ||||
| 			case 5: | ||||
| 				this.dateColorChat = newColor; | ||||
| 				break; | ||||
| 			case 6: | ||||
| 				this.selectionColor = newColor; | ||||
| 				break; | ||||
| 			case 7: | ||||
| 				this.typingMessageColor = newColor; | ||||
| 				break; | ||||
| 			case 8: | ||||
| 				this.userNameColor = newColor; | ||||
| 				break; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| } | ||||
| package envoy.client.ui; | ||||
|  | ||||
| import java.awt.Color; | ||||
| import java.io.Serializable; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>Theme.java</strong><br> | ||||
|  * Created: <strong>23 Nov 2019</strong><br> | ||||
|  *  | ||||
|  * @author Maximilian Käfer | ||||
|  * @since Envoy v0.2-alpha | ||||
|  */ | ||||
| public class Theme implements Serializable { | ||||
|  | ||||
| 	private static final long serialVersionUID = 141727847527060352L; | ||||
|  | ||||
| 	private String	themeName; | ||||
| 	private Color	backgroundColor; | ||||
| 	private Color	cellColor; | ||||
| 	private Color	interactableBackgroundColor; | ||||
| 	private Color	userNameColor; | ||||
| 	private Color	interactableForegroundColor; | ||||
| 	private Color	messageColorChat; | ||||
| 	private Color	dateColorChat; | ||||
| 	private Color	selectionColor; | ||||
| 	private Color	typingMessageColor; | ||||
|  | ||||
| 	public Theme(String themeName, Color backgroundColor, Color cellColor, Color interactableForegroundColor, Color interactableBackgroundColor, | ||||
| 			Color messageColorChat, Color dateColorChat, Color selectionColor, Color typingMessageColor, Color userNameColor) { | ||||
|  | ||||
| 		this.themeName = themeName; | ||||
|  | ||||
| 		this.backgroundColor				= backgroundColor; | ||||
| 		this.cellColor						= cellColor; | ||||
| 		this.interactableForegroundColor	= interactableForegroundColor; | ||||
| 		this.interactableBackgroundColor	= interactableBackgroundColor; | ||||
| 		this.messageColorChat				= messageColorChat; | ||||
| 		this.dateColorChat					= dateColorChat; | ||||
| 		this.selectionColor					= selectionColor; | ||||
| 		this.typingMessageColor				= typingMessageColor; | ||||
| 		this.userNameColor					= userNameColor; | ||||
| 	} | ||||
|  | ||||
| 	public Theme(String name, Theme other) { | ||||
| 		this(name, other.backgroundColor, other.cellColor, other.interactableForegroundColor, | ||||
| 				other.interactableBackgroundColor, other.messageColorChat, other.dateColorChat, other.selectionColor, | ||||
| 				other.typingMessageColor, other.userNameColor); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @return name of the theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public String getThemeName() { return themeName; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return interactableForegroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getInteractableForegroundColor() { return interactableForegroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return messageColorChat | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getMessageColorChat() { return messageColorChat; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return dateColorChat | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getDateColorChat() { return dateColorChat; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return selectionColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getSelectionColor() { return selectionColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return typingMessageColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getTypingMessageColor() { return typingMessageColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return backgroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getBackgroundColor() { return backgroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return cellColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getCellColor() { return cellColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return interactableBackgroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getInteractableBackgroundColor() { return interactableBackgroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return userNameColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getUserNameColor() { return userNameColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * Sets the a specific {@link Color} in this theme to a new {@link Color} | ||||
| 	 *  | ||||
| 	 * @param index    - index of the color </br> | ||||
| 	 *                 0 = backgroundColor </br> | ||||
| 	 *                 1 = cellColor </br> | ||||
| 	 *                 2 = interactableForegroundColor </br> | ||||
| 	 *                 3 = interactableBackgroundColor </br> | ||||
| 	 *                 4 = messageColorChat </br> | ||||
| 	 *                 5 = dateColorChat </br> | ||||
| 	 *                 6 = selectionColor </br> | ||||
| 	 *                 7 = typingMessageColor </br> | ||||
| 	 *                 8 = userNameColor </br> | ||||
| 	 *                 </br> | ||||
| 	 *  | ||||
| 	 * @param newColor - new {@link Color} to be set | ||||
| 	 * @since Envoy 0.2-alpha | ||||
| 	 */ | ||||
| 	public void setColor(int index, Color newColor) { | ||||
| 		switch (index) { | ||||
| 			case 0: | ||||
| 				this.backgroundColor = newColor; | ||||
| 				break; | ||||
| 			case 1: | ||||
| 				this.cellColor = newColor; | ||||
| 				break; | ||||
| 			case 2: | ||||
| 				this.interactableForegroundColor = newColor; | ||||
| 				break; | ||||
| 			case 3: | ||||
| 				this.interactableBackgroundColor = newColor; | ||||
| 				break; | ||||
| 			case 4: | ||||
| 				this.messageColorChat = newColor; | ||||
| 				break; | ||||
| 			case 5: | ||||
| 				this.dateColorChat = newColor; | ||||
| 				break; | ||||
| 			case 6: | ||||
| 				this.selectionColor = newColor; | ||||
| 				break; | ||||
| 			case 7: | ||||
| 				this.typingMessageColor = newColor; | ||||
| 				break; | ||||
| 			case 8: | ||||
| 				this.userNameColor = newColor; | ||||
| 				break; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -12,8 +12,8 @@ import envoy.schema.User; | ||||
| import envoy.schema.User.UserStatus; | ||||
|  | ||||
| /** | ||||
|  * Defines how the {@code UserList} is displayed. | ||||
|  *  | ||||
|  * Defines how the {@code UserList} is displayed.<br> | ||||
|  * <br> | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>UserListRenderer.java</strong><br> | ||||
|  * Created: <strong>12 Oct 2019</strong><br> | ||||
|   | ||||
							
								
								
									
										70
									
								
								src/main/java/envoy/client/util/EnvoyLog.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/main/java/envoy/client/util/EnvoyLog.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| package envoy.client.util; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.logging.ConsoleHandler; | ||||
| import java.util.logging.FileHandler; | ||||
| import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | ||||
| import java.util.logging.SimpleFormatter; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>EnvoyLogger.java</strong><br> | ||||
|  * Created: <strong>14 Dec 2019</strong><br> | ||||
|  *  | ||||
|  * @author Leon Hofmeister | ||||
|  * @since Envoy v0.2-alpha | ||||
|  */ | ||||
| public class EnvoyLog { | ||||
|  | ||||
| 	private static Level fileLevelBarrier = Level.CONFIG; | ||||
|  | ||||
| 	private EnvoyLog() {} | ||||
|  | ||||
| 	/** | ||||
| 	 * Creates a {@link Logger} with a specified name | ||||
| 	 * @param name the name of the {@link Logger} to create | ||||
| 	 * @return the created {@link Logger} | ||||
| 	 */ | ||||
| 	public static Logger getLogger(String name) { | ||||
| 		// Get a logger with the specified name | ||||
| 		Logger logger = Logger.getLogger(name); | ||||
| 		 | ||||
| 		final String logPath = "log/envoy_user.log"; | ||||
| 		new File(logPath).getParentFile().mkdirs(); | ||||
| 		 | ||||
| 		SimpleFormatter	formatter	= new SimpleFormatter(); | ||||
| 		 | ||||
| 		try { | ||||
| 			FileHandler fh = new FileHandler(logPath); | ||||
| 			fh.setLevel(fileLevelBarrier); | ||||
| 			fh.setFormatter(formatter); | ||||
| 			logger.addHandler(fh); | ||||
| 		} catch (SecurityException | IOException e) { | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 		 | ||||
| 		ConsoleHandler ch = new ConsoleHandler(); | ||||
| 		ch.setLevel(Level.FINEST); | ||||
| 		ch.setFormatter(formatter); | ||||
| 		logger.addHandler(ch); | ||||
| 		 | ||||
| 		return logger; | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * @return the fileLevelBarrier: The current barrier for writing logs to a file. | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public static Level getFileLevelBarrier() { return fileLevelBarrier; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @param fileLevelBarrier the severity below which logRecords will be written | ||||
| 	 *                         only to the console. At or above they'll also be | ||||
| 	 *                         logged in a file. Can be written either in Digits | ||||
| 	 *                         from 0 - 1000 or with the according name of the level | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public static void setFileLevel(String fileLevelBarrier) { EnvoyLog.fileLevelBarrier = Level.parse(fileLevelBarrier); } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 delvh
					delvh