Implemented a (not working) own version of a logger
and reformatted code
This commit is contained in:
		@@ -1,7 +1,5 @@
 | 
			
		||||
package envoy.client;
 | 
			
		||||
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
import javax.ws.rs.client.ClientBuilder;
 | 
			
		||||
import javax.ws.rs.client.Entity;
 | 
			
		||||
import javax.ws.rs.client.WebTarget;
 | 
			
		||||
@@ -10,6 +8,7 @@ import javax.xml.bind.JAXBContext;
 | 
			
		||||
import javax.xml.bind.JAXBException;
 | 
			
		||||
import javax.xml.bind.Marshaller;
 | 
			
		||||
 | 
			
		||||
import envoy.client.event.EnvoyLogger;
 | 
			
		||||
import envoy.schema.ObjectFactory;
 | 
			
		||||
import envoy.schema.Sync;
 | 
			
		||||
import envoy.schema.User;
 | 
			
		||||
@@ -30,7 +29,7 @@ public class Client {
 | 
			
		||||
	private Config			config;
 | 
			
		||||
	private User			sender, recipient;
 | 
			
		||||
 | 
			
		||||
	private static final Logger logger = Logger.getLogger(Client.class.getSimpleName());
 | 
			
		||||
	private static final EnvoyLogger logger = new EnvoyLogger(Client.class.getSimpleName());
 | 
			
		||||
 | 
			
		||||
	public Client(Config config, String username) {
 | 
			
		||||
		this.config	= config;
 | 
			
		||||
@@ -63,9 +62,7 @@ public class Client {
 | 
			
		||||
		user.setID(-1);
 | 
			
		||||
		sendSync.getUsers().add(user);
 | 
			
		||||
 | 
			
		||||
		Sync returnSendSync = post(
 | 
			
		||||
				String
 | 
			
		||||
					.format("%s:%d/envoy-server/rest/sync/syncData?userId=%d", config.getServer(), config.getPort(), 0),
 | 
			
		||||
		Sync returnSendSync = post(String.format("%s:%d/envoy-server/rest/sync/syncData?userId=%d", config.getServer(), config.getPort(), 0),
 | 
			
		||||
				sendSync,
 | 
			
		||||
				Sync.class);
 | 
			
		||||
		return returnSendSync;
 | 
			
		||||
@@ -85,9 +82,7 @@ public class Client {
 | 
			
		||||
		user.setName(name);
 | 
			
		||||
		senderSync.getUsers().add(user);
 | 
			
		||||
 | 
			
		||||
		Sync returnSenderSync = post(
 | 
			
		||||
				String
 | 
			
		||||
					.format("%s:%d/envoy-server/rest/sync/syncData?userId=%d", config.getServer(), config.getPort(), 0),
 | 
			
		||||
		Sync returnSenderSync = post(String.format("%s:%d/envoy-server/rest/sync/syncData?userId=%d", config.getServer(), config.getPort(), 0),
 | 
			
		||||
				senderSync,
 | 
			
		||||
				Sync.class);
 | 
			
		||||
 | 
			
		||||
@@ -134,7 +129,8 @@ public class Client {
 | 
			
		||||
	 * their updated UserStatus to the client.) <br>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param userId the id of the {@link Client} who sends the {@link Sync}
 | 
			
		||||
	 * @param sync the sync object (yet to be converted from java class to sync.xml)
 | 
			
		||||
	 * @param sync   the sync object (yet to be converted from java class to
 | 
			
		||||
	 *               sync.xml)
 | 
			
		||||
	 * @return a returnSync.xml file
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
@@ -151,10 +147,7 @@ public class Client {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Send sync
 | 
			
		||||
		return post(String
 | 
			
		||||
			.format("%s:%d/envoy-server/rest/sync/syncData?userId=%d", config.getServer(), config.getPort(), userId),
 | 
			
		||||
				sync,
 | 
			
		||||
				Sync.class);
 | 
			
		||||
		return post(String.format("%s:%d/envoy-server/rest/sync/syncData?userId=%d", config.getServer(), config.getPort(), userId), sync, Sync.class);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -71,9 +71,7 @@ public class Config {
 | 
			
		||||
	 * @return {@code true} if server, port and localDB directory are known.
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isInitialized() {
 | 
			
		||||
		return server != null && !server.isEmpty() && port > 0 && port < 65566 && localDB != null;
 | 
			
		||||
	}
 | 
			
		||||
	public boolean isInitialized() { return server != null && !server.isEmpty() && port > 0 && port < 65566 && localDB != null; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the host name of the Envoy server
 | 
			
		||||
@@ -114,7 +112,7 @@ public class Config {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Changes the default local database.
 | 
			
		||||
	 * Exclusively intended for development purposes.
 | 
			
		||||
   	 *
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param localDB the file containing the local database
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 **/
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ import java.util.logging.Logger;
 | 
			
		||||
import javax.xml.datatype.DatatypeConfigurationException;
 | 
			
		||||
import javax.xml.datatype.DatatypeFactory;
 | 
			
		||||
 | 
			
		||||
import envoy.client.event.EnvoyLogger;
 | 
			
		||||
import envoy.client.event.EventBus;
 | 
			
		||||
import envoy.client.event.MessageCreationEvent;
 | 
			
		||||
import envoy.exception.EnvoyException;
 | 
			
		||||
@@ -44,7 +45,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 = new EnvoyLogger(LocalDB.class.getSimpleName());
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Constructs an empty local database.
 | 
			
		||||
 
 | 
			
		||||
@@ -73,9 +73,9 @@ public class Settings {
 | 
			
		||||
		// 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;
 | 
			
		||||
			if (obj instanceof HashMap) themes = (Map<String, Theme>) obj;
 | 
			
		||||
		} catch (IOException | ClassNotFoundException e) {
 | 
			
		||||
			themes = new HashMap<>();
 | 
			
		||||
			themes			= new HashMap<>();
 | 
			
		||||
			currentTheme	= "dark";
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
		}
 | 
			
		||||
@@ -95,15 +95,15 @@ public class Settings {
 | 
			
		||||
	 * @throws IOException
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void save() throws IOException{
 | 
			
		||||
	public void save() throws IOException {
 | 
			
		||||
		prefs.put("username", getUsername());
 | 
			
		||||
		prefs.put("email", getEmail());
 | 
			
		||||
		prefs.put("theme", currentTheme);
 | 
			
		||||
		prefs.putBoolean("enterToSend", isEnterToSend());
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		// Save themes to theme file
 | 
			
		||||
		themeFile.createNewFile();
 | 
			
		||||
		try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(themeFile))) {
 | 
			
		||||
		try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(themeFile))) {
 | 
			
		||||
			out.writeObject(themes);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										103
									
								
								src/main/java/envoy/client/event/EnvoyLogger.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								src/main/java/envoy/client/event/EnvoyLogger.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
			
		||||
package envoy.client.event;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.logging.ConsoleHandler;
 | 
			
		||||
import java.util.logging.FileHandler;
 | 
			
		||||
import java.util.logging.Handler;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.LogRecord;
 | 
			
		||||
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 EnvoyLogger extends Logger {
 | 
			
		||||
 | 
			
		||||
	private Logger	logger;
 | 
			
		||||
	private int		fileLevel	= 800;
 | 
			
		||||
 | 
			
		||||
	private Handler handler = new Handler() {
 | 
			
		||||
 | 
			
		||||
		@Override
 | 
			
		||||
		public void publish(LogRecord arg0) {
 | 
			
		||||
			ConsoleHandler	ch;
 | 
			
		||||
			FileHandler		fh;
 | 
			
		||||
			SimpleFormatter	formatter	= new SimpleFormatter();
 | 
			
		||||
			if (arg0.getLevel().intValue() >= fileLevel) {// Case if level >= info
 | 
			
		||||
				try {
 | 
			
		||||
					fh = new FileHandler("Envoy_user.log");
 | 
			
		||||
					logger.addHandler(fh);
 | 
			
		||||
					formatter.formatMessage(arg0);
 | 
			
		||||
					fh.setFormatter(formatter);
 | 
			
		||||
				} catch (SecurityException | IOException e) {
 | 
			
		||||
					e.printStackTrace();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			ch = new ConsoleHandler();
 | 
			
		||||
			logger.addHandler(ch);
 | 
			
		||||
			formatter.formatMessage(arg0);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		@Override
 | 
			
		||||
		public void flush() {}
 | 
			
		||||
 | 
			
		||||
		@Override
 | 
			
		||||
		public void close() throws SecurityException {}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	public EnvoyLogger(String name) {
 | 
			
		||||
		super(name, null);
 | 
			
		||||
		logger.addHandler(handler);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Logs a message. If the problem severity is above the FileLevel-barrier, then
 | 
			
		||||
	 * the log entry will be written to a file. Regardless of problem severity,
 | 
			
		||||
	 * everything will be printed to the console.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param level the problem severity
 | 
			
		||||
	 * @param msg   the message to be written in the log
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void log(Level level, String msg) {
 | 
			
		||||
		LogRecord lr = new LogRecord(level, msg);
 | 
			
		||||
		logger.log(lr);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Logs a message. If the problem severity is above the {@code FileLevel}
 | 
			
		||||
	 * barrier, then the log entry will be written to a file.
 | 
			
		||||
	 * Regardless of problem severity, everything will be printed to the console.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param logRecord the LogRecord (Level and String) to be treated by the
 | 
			
		||||
	 *                  Logger.
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void log(LogRecord logRecord) { logger.log(logRecord); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the fileLevel: The current barrier for writing logs to a file. It can
 | 
			
		||||
	 *         range from 100-1000 in steps of one hundred with 1000 being
 | 
			
		||||
	 *         Level.SEVERE
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public int getFileLevel() { return fileLevel; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param fileLevel the severity above which on logRecords will be written in a
 | 
			
		||||
	 *                  file instead of the console
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setFileLevel(int fileLevel) {
 | 
			
		||||
		if (fileLevel <= 10) fileLevel *= 100;
 | 
			
		||||
		this.fileLevel = fileLevel;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -6,6 +6,7 @@ package envoy.client.event;
 | 
			
		||||
 * Created: <strong>04.12.2019</strong><br>
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @param <T> the type of our Event
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public interface Event<T> {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,6 @@ import java.awt.event.WindowAdapter;
 | 
			
		||||
import java.awt.event.WindowEvent;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
import javax.swing.DefaultListModel;
 | 
			
		||||
import javax.swing.JButton;
 | 
			
		||||
@@ -33,6 +32,7 @@ import envoy.client.Client;
 | 
			
		||||
import envoy.client.Config;
 | 
			
		||||
import envoy.client.LocalDB;
 | 
			
		||||
import envoy.client.Settings;
 | 
			
		||||
import envoy.client.event.EnvoyLogger;
 | 
			
		||||
import envoy.schema.Message;
 | 
			
		||||
import envoy.schema.Sync;
 | 
			
		||||
import envoy.schema.User;
 | 
			
		||||
@@ -68,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 EnvoyLogger logger = new EnvoyLogger(ChatWindow.class.getSimpleName());
 | 
			
		||||
 | 
			
		||||
	public ChatWindow(Client client, LocalDB localDB) {
 | 
			
		||||
		this.client		= client;
 | 
			
		||||
@@ -132,8 +132,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
			@Override
 | 
			
		||||
			public void keyReleased(KeyEvent e) {
 | 
			
		||||
				if (e.getKeyCode() == KeyEvent.VK_ENTER
 | 
			
		||||
						&& ((Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0)
 | 
			
		||||
								|| (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))) {
 | 
			
		||||
						&& ((Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0) || (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))) {
 | 
			
		||||
					postMessage(messageList);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
@@ -180,10 +179,9 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
 | 
			
		||||
		settingsButton.addActionListener((evt) -> {
 | 
			
		||||
			try {
 | 
			
		||||
				SettingsScreen.open();
 | 
			
		||||
				changeChatWindowColors(Settings.getInstance().getCurrentTheme());			
 | 
			
		||||
                } catch (Exception e) {
 | 
			
		||||
				SettingsScreen.open();
 | 
			
		||||
				new SettingsScreen().setVisible(true);
 | 
			
		||||
				changeChatWindowColors(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
			} catch (Exception e) {
 | 
			
		||||
				logger.log(Level.WARNING, "An error occured while opening the settings screen", e);
 | 
			
		||||
				e.printStackTrace();
 | 
			
		||||
			}
 | 
			
		||||
@@ -235,7 +233,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
		gbc_userList.insets	= new Insets(space, space, space, space);
 | 
			
		||||
 | 
			
		||||
		changeChatWindowColors(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
		contentPane.add(userList, gbc_userList);
 | 
			
		||||
		contentPane.revalidate();
 | 
			
		||||
 | 
			
		||||
@@ -244,7 +242,6 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
 | 
			
		||||
		contentPane.revalidate();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Used to immediately reload the ChatWindow when settings were changed.
 | 
			
		||||
@@ -287,18 +284,14 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
 | 
			
		||||
	private void postMessage(JList<Message> messageList) {
 | 
			
		||||
		if (!client.hasRecipient()) {
 | 
			
		||||
			JOptionPane.showMessageDialog(this,
 | 
			
		||||
					"Please select a recipient!",
 | 
			
		||||
					"Cannot send message",
 | 
			
		||||
					JOptionPane.INFORMATION_MESSAGE);
 | 
			
		||||
			JOptionPane.showMessageDialog(this, "Please select a recipient!", "Cannot send message", JOptionPane.INFORMATION_MESSAGE);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!messageEnterTextArea.getText().isEmpty()) try {
 | 
			
		||||
 | 
			
		||||
			// Create and send message object
 | 
			
		||||
			final Message message = localDB.createMessage(messageEnterTextArea.getText(),
 | 
			
		||||
					currentChat.getRecipient().getID());
 | 
			
		||||
			final Message message = localDB.createMessage(messageEnterTextArea.getText(), currentChat.getRecipient().getID());
 | 
			
		||||
			currentChat.appendMessage(message);
 | 
			
		||||
			messageList.setModel(currentChat.getModel());
 | 
			
		||||
 | 
			
		||||
@@ -348,8 +341,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
			new Thread(() -> {
 | 
			
		||||
 | 
			
		||||
				// Synchronize
 | 
			
		||||
				localDB.applySync(
 | 
			
		||||
						client.sendSync(client.getSender().getID(), localDB.fillSync(client.getSender().getID())));
 | 
			
		||||
				localDB.applySync(client.sendSync(client.getSender().getID(), localDB.fillSync(client.getSender().getID())));
 | 
			
		||||
 | 
			
		||||
				// Process unread messages
 | 
			
		||||
				localDB.addUnreadMessagesToLocalDB();
 | 
			
		||||
@@ -359,8 +351,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
				readCurrentChat();
 | 
			
		||||
 | 
			
		||||
				// Update UI
 | 
			
		||||
				SwingUtilities
 | 
			
		||||
					.invokeLater(() -> { updateUserStates(); contentPane.revalidate(); contentPane.repaint(); });
 | 
			
		||||
				SwingUtilities.invokeLater(() -> { updateUserStates(); contentPane.revalidate(); contentPane.repaint(); });
 | 
			
		||||
			}).start();
 | 
			
		||||
		}).start();
 | 
			
		||||
	}
 | 
			
		||||
@@ -377,4 +368,3 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 */
 | 
			
		||||
	private void readCurrentChat() { if (currentChat != null) { localDB.setMessagesToRead(currentChat); } }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -42,22 +42,18 @@ public class MessageListRenderer extends JLabel implements ListCellRenderer<Mess
 | 
			
		||||
		final String	text	= value.getContent().get(0).getText();
 | 
			
		||||
		final String	state	= value.getMetadata().getState().toString();
 | 
			
		||||
		final String	date	= value.getMetadata().getDate() == null ? ""
 | 
			
		||||
				: new SimpleDateFormat("dd.MM.yyyy HH:mm ")
 | 
			
		||||
					.format(value.getMetadata().getDate().toGregorianCalendar().getTime());
 | 
			
		||||
				: new SimpleDateFormat("dd.MM.yyyy HH:mm ").format(value.getMetadata().getDate().toGregorianCalendar().getTime());
 | 
			
		||||
 | 
			
		||||
		// Getting the MessageColor in the Chat of the current theme
 | 
			
		||||
		String textColor = null;
 | 
			
		||||
 | 
			
		||||
		textColor = toHex(
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getMessageColorChat());
 | 
			
		||||
		textColor = toHex(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getMessageColorChat());
 | 
			
		||||
 | 
			
		||||
		// Getting the DateColor in the Chat of the current theme
 | 
			
		||||
		String dateColor = null;
 | 
			
		||||
		dateColor = toHex(
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getDateColorChat());
 | 
			
		||||
		dateColor = toHex(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getDateColorChat());
 | 
			
		||||
 | 
			
		||||
		setText(String.format(
 | 
			
		||||
				"<html><p style=\"color:%s\"><b><small>%s</b></small><br><p style=\"color:%s\">%s :%s</html>",
 | 
			
		||||
		setText(String.format("<html><p style=\"color:%s\"><b><small>%s</b></small><br><p style=\"color:%s\">%s :%s</html>",
 | 
			
		||||
				dateColor,
 | 
			
		||||
				date,
 | 
			
		||||
				textColor,
 | 
			
		||||
 
 | 
			
		||||
@@ -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.event.EnvoyLogger;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class provides the GUI to change the user specific settings.
 | 
			
		||||
@@ -54,45 +55,28 @@ 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		selectedTheme	= Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
	private Theme		temporaryTheme;
 | 
			
		||||
 | 
			
		||||
	private boolean	colorChanged	= false;
 | 
			
		||||
	private Theme	temporaryTheme;
 | 
			
		||||
 | 
			
		||||
	private static final Logger logger = Logger.getLogger(LocalDB.class.getSimpleName());
 | 
			
		||||
 | 
			
		||||
	private static SettingsScreen settingsScreen;
 | 
			
		||||
	private static final Logger logger = new EnvoyLogger(SettingsScreen.class.getSimpleName());
 | 
			
		||||
 | 
			
		||||
	// 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);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Builds the settings screen.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	private SettingsScreen() {
 | 
			
		||||
	public SettingsScreen() {
 | 
			
		||||
		logger.info(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
 | 
			
		||||
		setBounds(10, 10, 450, 650);
 | 
			
		||||
@@ -101,8 +85,7 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
			createNewThemeButton.setEnabled(false);
 | 
			
		||||
 | 
			
		||||
			temporaryTheme = new Theme("temporaryTheme",
 | 
			
		||||
					Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
 | 
			
		||||
			temporaryTheme = new Theme("temporaryTheme", Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()));
 | 
			
		||||
 | 
			
		||||
			// Content pane
 | 
			
		||||
			GridBagLayout gbl_contentPanel = new GridBagLayout();
 | 
			
		||||
@@ -122,7 +105,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":
 | 
			
		||||
@@ -183,7 +166,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);
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
@@ -200,20 +183,8 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
			colorsPanel.setLayout(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(),
 | 
			
		||||
@@ -228,41 +199,11 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
					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;
 | 
			
		||||
@@ -281,18 +222,16 @@ 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(), 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]);
 | 
			
		||||
@@ -355,7 +294,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());
 | 
			
		||||
 | 
			
		||||
						changeSettingsScreenColors(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
						updateColorVariables(Settings.getInstance().getCurrentTheme());
 | 
			
		||||
@@ -365,13 +304,17 @@ 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().getCurrentTheme());
 | 
			
		||||
 | 
			
		||||
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
 | 
			
		||||
		setModal(true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private void changeSettingsScreenColors(String key) {
 | 
			
		||||
@@ -412,21 +355,12 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
		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();
 | 
			
		||||
@@ -513,8 +447,7 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
	private void setContent(JPanel content, GridBagConstraints layout) { contentPanel.add(content, layout); }
 | 
			
		||||
 | 
			
		||||
	private 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());
 | 
			
		||||
@@ -528,15 +461,11 @@ 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());
 | 
			
		||||
					// TODO: When Theme changed in same settings screen, color variable doesnt
 | 
			
		||||
					// update.
 | 
			
		||||
					logger.log(Level.FINEST, String.valueOf(color.getRGB()));
 | 
			
		||||
					Color[] colorsArray = temporaryTheme.getAllColors();
 | 
			
		||||
					for (int i = 0; i < colorsArray.length; i++) {
 | 
			
		||||
						if (color.getRGB() == colorsArray[i].getRGB()) {
 | 
			
		||||
							temporaryTheme.setColor(i, newColor);
 | 
			
		||||
							colorChanged = true;
 | 
			
		||||
							createNewThemeButton.setEnabled(true);
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@ import envoy.client.Client;
 | 
			
		||||
import envoy.client.Config;
 | 
			
		||||
import envoy.client.LocalDB;
 | 
			
		||||
import envoy.client.Settings;
 | 
			
		||||
import envoy.client.event.EnvoyLogger;
 | 
			
		||||
import envoy.exception.EnvoyException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -28,7 +29,7 @@ import envoy.exception.EnvoyException;
 | 
			
		||||
 */
 | 
			
		||||
public class Startup {
 | 
			
		||||
 | 
			
		||||
	private static final Logger logger = Logger.getLogger(Startup.class.getSimpleName());
 | 
			
		||||
	private static final Logger logger = new EnvoyLogger(Startup.class.getSimpleName());
 | 
			
		||||
 | 
			
		||||
	public static void main(String[] args) {
 | 
			
		||||
		logger.setLevel(Level.ALL);
 | 
			
		||||
 
 | 
			
		||||
@@ -75,14 +75,10 @@ public class StatusTrayIcon implements EventHandler {
 | 
			
		||||
		focusTarget.addWindowFocusListener(new WindowAdapter() {
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public void windowGainedFocus(WindowEvent e) {
 | 
			
		||||
				displayMessages = false;
 | 
			
		||||
			}
 | 
			
		||||
			public void windowGainedFocus(WindowEvent e) { displayMessages = false; }
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public void windowLostFocus(WindowEvent e) {
 | 
			
		||||
				displayMessages = true;
 | 
			
		||||
			}
 | 
			
		||||
			public void windowLostFocus(WindowEvent e) { displayMessages = true; }
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		// Start processing message events
 | 
			
		||||
 
 | 
			
		||||
@@ -26,9 +26,8 @@ public class Theme implements Serializable {
 | 
			
		||||
	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) {
 | 
			
		||||
	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;
 | 
			
		||||
 | 
			
		||||
@@ -42,11 +41,10 @@ public class Theme implements Serializable {
 | 
			
		||||
		this.typingMessageColor				= typingMessageColor;
 | 
			
		||||
		this.userNameColor					= userNameColor;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	public Theme(String name, Theme other) {
 | 
			
		||||
		this(name, other.backgroundColor, other.cellColor, other.interactableBackgroundColor,
 | 
			
		||||
				other.interactableForegroundColor, other.messageColorChat, other.dateColorChat, other.selectionColor,
 | 
			
		||||
				other.typingMessageColor, other.userNameColor);
 | 
			
		||||
		this(name, other.backgroundColor, other.cellColor, other.interactableBackgroundColor, other.interactableForegroundColor,
 | 
			
		||||
				other.messageColorChat, other.dateColorChat, other.selectionColor, other.typingMessageColor, other.userNameColor);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -26,7 +26,6 @@ public class UserListRenderer extends JLabel implements ListCellRenderer<User> {
 | 
			
		||||
 | 
			
		||||
	private static final long serialVersionUID = 5164417379767181198L;
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("incomplete-switch")
 | 
			
		||||
	@Override
 | 
			
		||||
	public Component getListCellRendererComponent(JList<? extends User> list, User value, int index, boolean isSelected, boolean cellHasFocus) {
 | 
			
		||||
		if (isSelected) {
 | 
			
		||||
@@ -44,23 +43,16 @@ public class UserListRenderer extends JLabel implements ListCellRenderer<User> {
 | 
			
		||||
		final UserStatus	status	= value.getStatus();
 | 
			
		||||
 | 
			
		||||
		// Getting the UserNameColor of the current theme
 | 
			
		||||
		String				textColor	= null;
 | 
			
		||||
		textColor = toHex(
 | 
			
		||||
				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getUserNameColor());
 | 
			
		||||
		String textColor = null;
 | 
			
		||||
		textColor = toHex(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getUserNameColor());
 | 
			
		||||
		switch (status) {
 | 
			
		||||
			case ONLINE:
 | 
			
		||||
				setText(String.format(
 | 
			
		||||
						"<html><p style=\"color:#03fc20\"><b><small>%s</b></small><br><p style=\"color:%s\">%s</html>",
 | 
			
		||||
						status,
 | 
			
		||||
						textColor,
 | 
			
		||||
						name));
 | 
			
		||||
				setText(String
 | 
			
		||||
					.format("<html><p style=\"color:#03fc20\"><b><small>%s</b></small><br><p style=\"color:%s\">%s</html>", status, textColor, name));
 | 
			
		||||
				break;
 | 
			
		||||
			case OFFLINE:
 | 
			
		||||
				setText(String.format(
 | 
			
		||||
						"<html><p style=\"color:#fc0303\"><b><small>%s</b></small><br><p style=\"color:%s\">%s</html>",
 | 
			
		||||
						status,
 | 
			
		||||
						textColor,
 | 
			
		||||
						name));
 | 
			
		||||
				setText(String
 | 
			
		||||
					.format("<html><p style=\"color:#fc0303\"><b><small>%s</b></small><br><p style=\"color:%s\">%s</html>", status, textColor, name));
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
		return this;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user