Normalized since tags to fit envoy-common and envoy-server
Envoy vXXX -> Envoy Client vXXX
This commit is contained in:
		@@ -34,7 +34,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 * @since Envoy Client v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Startup {
 | 
			
		||||
 | 
			
		||||
@@ -51,7 +51,7 @@ public class Startup {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param args the command line arguments may contain configuration parameters
 | 
			
		||||
	 *             and are parsed by the {@link Config} class
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public static void main(String[] args) {
 | 
			
		||||
		ClientConfig config = ClientConfig.getInstance();
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 *
 | 
			
		||||
 * @param <T> the type of cached elements
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Cache<T> implements Consumer<T>, Serializable {
 | 
			
		||||
 | 
			
		||||
@@ -31,7 +31,7 @@ public class Cache<T> implements Consumer<T>, Serializable {
 | 
			
		||||
	 * Adds an element to the cache.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param element the element to add
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void accept(T element) {
 | 
			
		||||
@@ -43,7 +43,7 @@ public class Cache<T> implements Consumer<T>, Serializable {
 | 
			
		||||
	 * Sets the processor to which cached elements are relayed.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param processor the processor to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setProcessor(Consumer<T> processor) { this.processor = processor; }
 | 
			
		||||
 | 
			
		||||
@@ -51,7 +51,7 @@ public class Cache<T> implements Consumer<T>, Serializable {
 | 
			
		||||
	 * Relays all cached elements to the processor.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws IllegalStateException if the processor is not initialized
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void relay() {
 | 
			
		||||
		if (processor == null) throw new IllegalStateException("Processor is not defined");
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ import envoy.event.MessageStatusChangeEvent;
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 * @since Envoy Client v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Chat implements Serializable {
 | 
			
		||||
 | 
			
		||||
@@ -35,7 +35,7 @@ public class Chat implements Serializable {
 | 
			
		||||
	 * Saves the Messages in the corresponding chat at that Point.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param recipient the user who receives the messages
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Chat(User recipient) { this.recipient = recipient; }
 | 
			
		||||
 | 
			
		||||
@@ -43,7 +43,7 @@ public class Chat implements Serializable {
 | 
			
		||||
	 * Appends a message to the bottom of this chat
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param message the message to append
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void appendMessage(Message message) { model.add(message); }
 | 
			
		||||
 | 
			
		||||
@@ -56,7 +56,7 @@ public class Chat implements Serializable {
 | 
			
		||||
	 *                   the message status changes
 | 
			
		||||
	 * @throws IOException if a {@link MessageStatusChangeEvent} could not be
 | 
			
		||||
	 *                     delivered to the server
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void read(WriteProxy writeProxy) throws IOException {
 | 
			
		||||
		for (int i = model.size() - 1; i >= 0; --i) {
 | 
			
		||||
@@ -72,19 +72,19 @@ public class Chat implements Serializable {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return {@code true} if the newest message received in the chat doesn't have
 | 
			
		||||
	 *         the status {@code READ}
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isUnread() { return !model.isEmpty() && model.get(model.size() - 1).getStatus() != MessageStatus.READ; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return all messages in the current chat
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Model<Message> getModel() { return model; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the recipient of a message
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public User getRecipient() { return recipient; }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ import envoy.data.LoginCredentials;
 | 
			
		||||
 * Created: <strong>01.03.2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class ClientConfig extends Config {
 | 
			
		||||
 | 
			
		||||
@@ -26,7 +26,7 @@ public class ClientConfig extends Config {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the singleton instance of the client config
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static ClientConfig getInstance() {
 | 
			
		||||
		if (config == null) config = new ClientConfig();
 | 
			
		||||
@@ -47,68 +47,68 @@ public class ClientConfig extends Config {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the host name of the Envoy server
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getServer() { return (String) items.get("server").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the port at which the Envoy server is located on the host
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Integer getPort() { return (Integer) items.get("port").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the local database specific to the client user
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public File getLocalDB() { return (File) items.get("localDB").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return {@code true} if the local database is to be ignored
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Boolean isIgnoreLocalDB() { return (Boolean) items.get("ignoreLocalDB").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the directory in which all local files are saves
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public File getHomeDirectory() { return (File) items.get("homeDirectory").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the minimal {@link Level} to log inside the log file
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Level getFileLevelBarrier() { return (Level) items.get("fileLevelBarrier").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the minimal {@link Level} to log inside the console
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Level getConsoleLevelBarrier() { return (Level) items.get("consoleLevelBarrier").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the user name
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getUser() { return (String) items.get("user").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the password
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public char[] getPassword() { return (char[]) items.get("password").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return {@code true} if user name and password are set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean hasLoginCredentials() { return getUser() != null && getPassword() != null; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return login credentials for the specified user name and password, without
 | 
			
		||||
	 *         the registration option
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public LoginCredentials getLoginCredentials() {
 | 
			
		||||
		try {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ import envoy.event.MessageStatusChangeEvent;
 | 
			
		||||
 * Created: <strong>3 Feb 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public abstract class LocalDb {
 | 
			
		||||
 | 
			
		||||
@@ -30,7 +30,7 @@ public abstract class LocalDb {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initializes a storage space for a user-specific list of chats.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void initializeUserStorage() {}
 | 
			
		||||
 | 
			
		||||
@@ -39,7 +39,7 @@ public abstract class LocalDb {
 | 
			
		||||
	 * as well. The message id generator will also be saved if present.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws Exception if the saving process failed
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void save() throws Exception {}
 | 
			
		||||
 | 
			
		||||
@@ -47,7 +47,7 @@ public abstract class LocalDb {
 | 
			
		||||
	 * Loads all user data.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws Exception if the loading process failed
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void loadUsers() throws Exception {}
 | 
			
		||||
 | 
			
		||||
@@ -55,21 +55,21 @@ public abstract class LocalDb {
 | 
			
		||||
	 * Loads all data of the client user.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws Exception if the loading process failed
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void loadUserData() throws Exception {}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Loads the ID generator. Any exception thrown during this process is ignored.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void loadIdGenerator() {}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return a {@code Map<String, User>} of all users stored locally with their
 | 
			
		||||
	 *         user names as keys
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, User> getUsers() { return users; }
 | 
			
		||||
 | 
			
		||||
@@ -81,7 +81,7 @@ public abstract class LocalDb {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return all saved {@link Chat} objects that list the client user as the
 | 
			
		||||
	 *         sender
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 **/
 | 
			
		||||
	public List<Chat> getChats() { return chats; }
 | 
			
		||||
 | 
			
		||||
@@ -92,55 +92,55 @@ public abstract class LocalDb {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the {@link User} who initialized the local database
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public User getUser() { return user; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param user the user to set
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setUser(User user) { this.user = user; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the message ID generator
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public IdGenerator getIdGenerator() { return idGenerator; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param idGenerator the message ID generator to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setIdGenerator(IdGenerator idGenerator) { this.idGenerator = idGenerator; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return {@code true} if an {@link IdGenerator} is present
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean hasIdGenerator() { return idGenerator != null; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the offline message cache
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Cache<Message> getMessageCache() { return messageCache; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param messageCache the offline message cache to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setMessageCache(Cache<Message> messageCache) { this.messageCache = messageCache; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the offline status cache
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Cache<MessageStatusChangeEvent> getStatusCache() { return statusCache; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param statusCache the offline status cache to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setStatusCache(Cache<MessageStatusChangeEvent> statusCache) { this.statusCache = statusCache; }
 | 
			
		||||
 | 
			
		||||
@@ -150,7 +150,7 @@ public abstract class LocalDb {
 | 
			
		||||
	 * @param id the ID of the message to search for
 | 
			
		||||
	 * @return the message with the corresponding ID, or {@code null} if no message
 | 
			
		||||
	 *         has been found
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Message getMessage(long id) {
 | 
			
		||||
		for (Chat c : chats)
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ import envoy.util.SerializationUtils;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 * @since Envoy Client v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class PersistentLocalDb extends LocalDb {
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +32,7 @@ public class PersistentLocalDb extends LocalDb {
 | 
			
		||||
	 * This constructor shall be used in conjunction with the {@code ignoreLocalDB}
 | 
			
		||||
	 * {@link ConfigItem}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public PersistentLocalDb() {}
 | 
			
		||||
 | 
			
		||||
@@ -42,7 +42,7 @@ public class PersistentLocalDb extends LocalDb {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param localDbDir the directory in which to store users and chats
 | 
			
		||||
	 * @throws IOException if the PersistentLocalDb could not be initialized
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public PersistentLocalDb(File localDbDir) throws IOException {
 | 
			
		||||
		localDBDir = localDbDir;
 | 
			
		||||
@@ -58,7 +58,7 @@ public class PersistentLocalDb extends LocalDb {
 | 
			
		||||
	 * Creates a database file for a user-specific list of chats.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws NullPointerException if the client user is not yet specified
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void initializeUserStorage() {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import envoy.util.SerializationUtils;
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Settings {
 | 
			
		||||
 | 
			
		||||
@@ -49,7 +49,7 @@ public class Settings {
 | 
			
		||||
	 * The way to instantiate the settings.
 | 
			
		||||
	 * Is set to private to deny other instances of that object.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	private Settings() {
 | 
			
		||||
		// Load settings from settings file
 | 
			
		||||
@@ -81,7 +81,7 @@ public class Settings {
 | 
			
		||||
	 * This method is used to ensure that there is only one instance of Settings.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return the instance of Settings
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public static Settings getInstance() { return settings; }
 | 
			
		||||
 | 
			
		||||
@@ -90,7 +90,7 @@ public class Settings {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws IOException if an error occurs while saving the themes to the theme
 | 
			
		||||
	 *                     file
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void save() throws IOException {
 | 
			
		||||
		// Save settings to settings file
 | 
			
		||||
@@ -110,19 +110,19 @@ public class Settings {
 | 
			
		||||
	 * Adds new theme to the theme map.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param theme the {@link Theme} to add
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void addNewThemeToMap(Theme theme) { getThemes().put(theme.getThemeName(), theme); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the name of the currently active {@link Theme}
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getCurrentThemeName() { return (String) items.get("currentTheme").get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the currently active {@link Theme}
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Theme getCurrentTheme() { return getTheme(getCurrentThemeName()); }
 | 
			
		||||
 | 
			
		||||
@@ -130,7 +130,7 @@ public class Settings {
 | 
			
		||||
	 * Sets the name of the current {@link Theme}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param themeName the name to set
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setCurrentTheme(String themeName) { ((SettingsItem<String>) items.get("currentTheme")).set(themeName); }
 | 
			
		||||
 | 
			
		||||
@@ -138,7 +138,7 @@ public class Settings {
 | 
			
		||||
	 * @return {@code true}, if pressing the {@code Enter} key suffices to send a
 | 
			
		||||
	 *         message. Otherwise it has to be pressed in conjunction with the
 | 
			
		||||
	 *         {@code Control} key.
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Boolean isEnterToSend() { return (Boolean) items.get("enterToSend").get(); }
 | 
			
		||||
 | 
			
		||||
@@ -148,13 +148,13 @@ public class Settings {
 | 
			
		||||
	 * @param enterToSend If set to {@code true} a message can be sent by pressing
 | 
			
		||||
	 *                    the {@code Enter} key. Otherwise it has to be pressed in
 | 
			
		||||
	 *                    conjunction with the {@code Control} key.
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setEnterToSend(boolean enterToSend) { ((SettingsItem<Boolean>) items.get("enterToSend")).set(enterToSend); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the current on close mode.
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Boolean getCurrentOnCloseMode() { return (Boolean) items.get("onCloseMode").get(); }
 | 
			
		||||
 | 
			
		||||
@@ -162,7 +162,7 @@ public class Settings {
 | 
			
		||||
	 * Sets the current on close mode.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param currentOnCloseMode the on close mode that should be set.
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setCurrentOnCloseMode(boolean currentOnCloseMode) { ((SettingsItem<Boolean>) items.get("onCloseMode")).set(currentOnCloseMode); }
 | 
			
		||||
 | 
			
		||||
@@ -178,7 +178,7 @@ public class Settings {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return a {@code Map<String, Theme>} of all themes with their names as keys
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, Theme> getThemes() { return themes; }
 | 
			
		||||
 | 
			
		||||
@@ -186,14 +186,14 @@ public class Settings {
 | 
			
		||||
	 * Sets the {@code Map<String, Theme>} of all themes with their names as keys
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param themes the theme map to set
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setThemes(Map<String, Theme> themes) { this.themes = themes; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param themeName the name of the {@link Theme} to get
 | 
			
		||||
	 * @return the {@link Theme} with the specified name
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Theme getTheme(String themeName) { return themes.get(themeName); }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ import envoy.client.ui.primary.PrimaryToggleSwitch;
 | 
			
		||||
 * 
 | 
			
		||||
 * @param <T> the type of this {@link SettingsItem}'s value
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class SettingsItem<T> implements Serializable {
 | 
			
		||||
 | 
			
		||||
@@ -45,7 +45,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
	 * @param value            the default value
 | 
			
		||||
	 * @param userFriendlyName the user friendly name (short)
 | 
			
		||||
	 * @param description      the description (long)
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public SettingsItem(T value, String userFriendlyName, String description) {
 | 
			
		||||
		this(value, componentClasses.get(value.getClass()));
 | 
			
		||||
@@ -61,7 +61,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param value the default value
 | 
			
		||||
	 * @param componentClass the class of the {@link JComponent} to represent this {@link SettingsItem} with
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public SettingsItem(T value, Class<? extends JComponent> componentClass) {
 | 
			
		||||
		this.value			= value;
 | 
			
		||||
@@ -72,7 +72,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
	 * @return an instance of the {@link JComponent} that represents this {@link SettingsItem}
 | 
			
		||||
	 * @throws ReflectiveOperationException if the component initialization failed
 | 
			
		||||
	 * @throws SecurityException if the component initialization failed
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public JComponent getComponent() throws ReflectiveOperationException, SecurityException {
 | 
			
		||||
		if (componentClass == null) throw new NullPointerException("Component class is null");
 | 
			
		||||
@@ -81,7 +81,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the value
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public T get() { return value; }
 | 
			
		||||
 | 
			
		||||
@@ -90,7 +90,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
	 * defined, it will be invoked with this value.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param value the value to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void set(T value) {
 | 
			
		||||
		if (changeHandler != null && value != this.value) changeHandler.accept(value);
 | 
			
		||||
@@ -99,37 +99,37 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the componentClass
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Class<? extends JComponent> getComponentClass() { return componentClass; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param componentClass the componentClass to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setComponentClass(Class<? extends JComponent> componentClass) { this.componentClass = componentClass; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the userFriendlyName
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getUserFriendlyName() { return userFriendlyName; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param userFriendlyName the userFriendlyName to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setUserFriendlyName(String userFriendlyName) { this.userFriendlyName = userFriendlyName; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the description
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getDescription() { return description; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param description the description to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setDescription(String description) { this.description = description; }
 | 
			
		||||
 | 
			
		||||
@@ -139,7 +139,7 @@ public class SettingsItem<T> implements Serializable {
 | 
			
		||||
	 * when the value changes.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param changeHandler the changeHandler to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setChangeHandler(Consumer<T> changeHandler) {
 | 
			
		||||
		this.changeHandler = changeHandler;
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ package envoy.client.data;
 | 
			
		||||
 * Created: <strong>3 Feb 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class TransientLocalDb extends LocalDb {
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,6 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.data;
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import envoy.event.Event;
 | 
			
		||||
 * Created: <strong>8 Feb 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class HandshakeSuccessfulEvent extends Event.Valueless {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import envoy.event.Event;
 | 
			
		||||
 * Created: <strong>4 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class MessageCreationEvent extends Event<Message> {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import envoy.event.Event;
 | 
			
		||||
 * Created: <strong>4 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class MessageModificationEvent extends Event<Message> {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import envoy.event.Event;
 | 
			
		||||
 * 
 | 
			
		||||
 * @author: Maximilian Käfer
 | 
			
		||||
 * 
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class SendEvent extends Event<Event<?>> {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import envoy.event.Event;
 | 
			
		||||
 * Created: <strong>15 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class ThemeChangeEvent extends Event<Theme> {
 | 
			
		||||
 | 
			
		||||
@@ -20,7 +20,7 @@ public class ThemeChangeEvent extends Event<Theme> {
 | 
			
		||||
	 * of the {@link Theme} currently in use
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param theme the new currently used {@link Theme} object
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public ThemeChangeEvent(Theme theme) { super(theme); }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,6 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.event;
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ import envoy.util.SerializationUtils;
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 * @since Envoy Client v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Client implements Closeable {
 | 
			
		||||
 | 
			
		||||
@@ -124,7 +124,7 @@ public class Client implements Closeable {
 | 
			
		||||
	 *                             initialization
 | 
			
		||||
	 * @throws IOException if no {@link IdGenerator} is present and none could be
 | 
			
		||||
	 *                     requested from the server
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void initReceiver(LocalDb localDb, Cache<Message> receivedMessageCache) throws IOException {
 | 
			
		||||
		checkOnline();
 | 
			
		||||
@@ -181,7 +181,7 @@ public class Client implements Closeable {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param message the message to send
 | 
			
		||||
	 * @throws IOException if the message does not reach the server
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void sendMessage(Message message) throws IOException {
 | 
			
		||||
		writeObject(message);
 | 
			
		||||
@@ -200,7 +200,7 @@ public class Client implements Closeable {
 | 
			
		||||
	 * Requests a new {@link IdGenerator} from the server.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws IOException if the request does not reach the server
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void requestIdGenerator() throws IOException {
 | 
			
		||||
		logger.info("Requesting new id generator...");
 | 
			
		||||
@@ -210,7 +210,7 @@ public class Client implements Closeable {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return a {@code Map<String, User>} of all users on the server with their
 | 
			
		||||
	 *         user names as keys
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, User> getUsers() {
 | 
			
		||||
		checkOnline();
 | 
			
		||||
@@ -232,7 +232,7 @@ public class Client implements Closeable {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the sender object that represents this client.
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public User getSender() { return sender; }
 | 
			
		||||
 | 
			
		||||
@@ -240,7 +240,7 @@ public class Client implements Closeable {
 | 
			
		||||
	 * Sets the client user which is used to send messages.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param sender the client user to set
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setSender(User sender) { this.sender = sender; }
 | 
			
		||||
 | 
			
		||||
@@ -251,19 +251,19 @@ public class Client implements Closeable {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return {@code true} if a connection to the server could be established
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isOnline() { return online; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the contacts of this {@link Client}
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Contacts getContacts() { return contacts; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param contacts the contacts to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setContacts(Contacts contacts) { this.contacts = contacts; }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * Created: <strong>4 Feb 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class MessageStatusChangeEventProcessor implements Consumer<MessageStatusChangeEvent> {
 | 
			
		||||
 | 
			
		||||
@@ -25,7 +25,7 @@ public class MessageStatusChangeEventProcessor implements Consumer<MessageStatus
 | 
			
		||||
	 * {@code RECEIVED} or {@code READ}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param evt the status change event
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void accept(MessageStatusChangeEvent evt) {
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * Created: <strong>31.12.2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class ReceivedMessageProcessor implements Consumer<Message> {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ import envoy.util.SerializationUtils;
 | 
			
		||||
 * Created: <strong>30.12.2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Receiver extends Thread {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import envoy.event.UserStatusChangeEvent;
 | 
			
		||||
 * Created: <strong>2 Feb 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class UserStatusChangeProcessor implements Consumer<UserStatusChangeEvent> {
 | 
			
		||||
 | 
			
		||||
@@ -20,7 +20,7 @@ public class UserStatusChangeProcessor implements Consumer<UserStatusChangeEvent
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param localDb the local database in which status updates will by applied
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public UserStatusChangeProcessor(LocalDb localDb) { this.localDb = localDb; }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * Created: <strong>6 Feb 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class WriteProxy {
 | 
			
		||||
 | 
			
		||||
@@ -36,7 +36,7 @@ public class WriteProxy {
 | 
			
		||||
	 *                events
 | 
			
		||||
	 * @param localDb the local database used to cache messages and message status
 | 
			
		||||
	 *                change events
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public WriteProxy(Client client, LocalDb localDb) {
 | 
			
		||||
		this.client		= client;
 | 
			
		||||
@@ -68,7 +68,7 @@ public class WriteProxy {
 | 
			
		||||
	 * Sends cached {@link Message}s and {@link MessageStatusChangeEvent}s to the
 | 
			
		||||
	 * server.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void flushCache() {
 | 
			
		||||
		// Send messages
 | 
			
		||||
@@ -84,7 +84,7 @@ public class WriteProxy {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param message the message to send
 | 
			
		||||
	 * @throws IOException if the message could not be sent
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void writeMessage(Message message) throws IOException {
 | 
			
		||||
		if (client.isOnline()) client.sendMessage(message);
 | 
			
		||||
@@ -97,7 +97,7 @@ public class WriteProxy {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param evt the event to send
 | 
			
		||||
	 * @throws IOException if the event could not be sent
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void writeMessageStatusChangeEvent(MessageStatusChangeEvent evt) throws IOException {
 | 
			
		||||
		if (client.isOnline()) client.sendEvent(evt);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,6 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.net;
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import java.awt.color.ColorSpace;
 | 
			
		||||
 * Created: <strong>23.12.2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
@SuppressWarnings("javadoc")
 | 
			
		||||
public class Color extends java.awt.Color {
 | 
			
		||||
@@ -102,13 +102,13 @@ public class Color extends java.awt.Color {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the inversion of this {@link Color} by replacing the red, green and
 | 
			
		||||
	 *         blue values by subtracting them form 255
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color invert() { return new Color(255 - getRed(), 255 - getGreen(), 255 - getBlue()); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the hex value of this {@link Color}
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String toHex() { return String.format("#%02x%02x%02x", getRed(), getGreen(), getBlue()); }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ import javax.swing.*;
 | 
			
		||||
 * Created: <strong>17 Mar 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class ContextMenu extends JPopupMenu {
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +54,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param parent the component which will call this
 | 
			
		||||
	 *               {@link ContextMenu}
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu(Component parent) { setInvoker(parent); }
 | 
			
		||||
 | 
			
		||||
@@ -72,7 +72,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * @param itemMnemonics    the keyboard shortcuts that need to be pressed to
 | 
			
		||||
	 *                         automatically execute the {@link JMenuItem} with the
 | 
			
		||||
	 *                         given text
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu(String label, Component parent, Map<String, ActionListener> itemsWithActions, Map<String, Icon> itemIcons,
 | 
			
		||||
			Map<String, Integer> itemMnemonics) {
 | 
			
		||||
@@ -89,7 +89,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return this instance of {@link ContextMenu} to allow chaining behind the
 | 
			
		||||
	 *         constructor
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu build() {
 | 
			
		||||
		items.forEach((text, action) -> {
 | 
			
		||||
@@ -119,7 +119,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param label the string that a UI may use to display as a title for the
 | 
			
		||||
	 *              pop-up menu.
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu(String label) { super(label); }
 | 
			
		||||
 | 
			
		||||
@@ -149,7 +149,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Removes all subcomponents of this menu.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void clear() {
 | 
			
		||||
		removeAll();
 | 
			
		||||
@@ -160,33 +160,33 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the items
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, ActionListener> getItems() { return items; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param items the items with the displayed text and the according action to
 | 
			
		||||
	 *              take once called
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setItems(Map<String, ActionListener> items) { this.items = items; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the icons
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, Icon> getIcons() { return icons; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param icons the icons to set
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setIcons(Map<String, Icon> icons) { this.icons = icons; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the mnemonics (the keyboard shortcuts that automatically execute the
 | 
			
		||||
	 *         command for a {@link JMenuItem} with corresponding text)
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, Integer> getMnemonics() { return mnemonics; }
 | 
			
		||||
 | 
			
		||||
@@ -194,7 +194,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * @param mnemonics the keyboard shortcuts that need to be pressed to
 | 
			
		||||
	 *                  automatically execute the {@link JMenuItem} with the given
 | 
			
		||||
	 *                  text
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setMnemonics(Map<String, Integer> mnemonics) { this.mnemonics = mnemonics; }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ import javax.swing.ImageIcon;
 | 
			
		||||
 * Created: <strong>16.03.2020</strong>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class IconUtil {
 | 
			
		||||
 | 
			
		||||
@@ -30,7 +30,7 @@ public class IconUtil {
 | 
			
		||||
	 * @param size the size to scale the icon to
 | 
			
		||||
	 * @return the scaled icon
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static ImageIcon load(String path, int size) throws IOException {
 | 
			
		||||
		return new ImageIcon(ImageIO.read(IconUtil.class.getResourceAsStream(path)).getScaledInstance(size, size, Image.SCALE_SMOOTH));
 | 
			
		||||
@@ -49,7 +49,7 @@ public class IconUtil {
 | 
			
		||||
	 * @return a map containing the loaded icons with the corresponding enum
 | 
			
		||||
	 *         constants as keys
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static <T extends Enum<T>> EnumMap<T, ImageIcon> loadByEnum(Class<T> enumClass, int size) throws IOException {
 | 
			
		||||
		var	icons	= new EnumMap<T, ImageIcon>(enumClass);
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ import envoy.exception.EnvoyException;
 | 
			
		||||
 * Created: <strong>3 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class StatusTrayIcon {
 | 
			
		||||
 | 
			
		||||
@@ -41,7 +41,7 @@ public class StatusTrayIcon {
 | 
			
		||||
	 *                    notifications are displayed
 | 
			
		||||
	 * @throws EnvoyException if the currently used OS does not support the System
 | 
			
		||||
	 *                        Tray API
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public StatusTrayIcon(Window focusTarget) throws EnvoyException {
 | 
			
		||||
		if (!SystemTray.isSupported()) throw new EnvoyException("The Envoy tray icon is not supported.");
 | 
			
		||||
@@ -85,7 +85,7 @@ public class StatusTrayIcon {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws EnvoyException if the status icon could not be attaches to the system
 | 
			
		||||
	 *                        tray for system-internal reasons
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void show() throws EnvoyException {
 | 
			
		||||
		try {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import java.util.Map;
 | 
			
		||||
 * Created: <strong>23 Nov 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class Theme implements Serializable {
 | 
			
		||||
 | 
			
		||||
@@ -35,7 +35,7 @@ public class Theme implements Serializable {
 | 
			
		||||
	 * @param selectionColor              the section color
 | 
			
		||||
	 * @param typingMessageColor          the color of currently typed messages
 | 
			
		||||
	 * @param userNameColor               the color of user names
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Theme(String themeName, Color backgroundColor, Color cellColor, Color interactableForegroundColor, Color interactableBackgroundColor,
 | 
			
		||||
			Color textColor, Color dateColorChat, Color selectionColor, Color typingMessageColor, Color userNameColor) {
 | 
			
		||||
@@ -59,7 +59,7 @@ public class Theme implements Serializable {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param name  the name of the {@link Theme}
 | 
			
		||||
	 * @param other the {@link Theme} to copy
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Theme(String name, Theme other) {
 | 
			
		||||
		themeName = name;
 | 
			
		||||
@@ -69,69 +69,69 @@ public class Theme implements Serializable {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return a {@code Map<String, Color>} of all colors defined for this theme
 | 
			
		||||
	 *         with their names as keys
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, Color> getColors() { return colors; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return name of the theme
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public String getThemeName() { return themeName; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return interactableForegroundColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getInteractableForegroundColor() { return colors.get("interactableForegroundColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the {@link Color} in which the text content of a message should be
 | 
			
		||||
	 *         displayed
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getTextColor() { return colors.get("textColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the {@link Color} in which the creation date of a message should be
 | 
			
		||||
	 *         displayed
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getDateColor() { return colors.get("dateColorChat"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return selectionColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getSelectionColor() { return colors.get("selectionColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return typingMessageColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getTypingMessageColor() { return colors.get("typingMessageColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return backgroundColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getBackgroundColor() { return colors.get("backgroundColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return cellColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getCellColor() { return colors.get("cellColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return interactableBackgroundColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getInteractableBackgroundColor() { return colors.get("interactableBackgroundColor"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return userNameColor
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public Color getUserNameColor() { return colors.get("userNameColor"); }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 * @since Envoy Client v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class ChatWindow extends JFrame {
 | 
			
		||||
 | 
			
		||||
@@ -103,7 +103,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 * Initializes a {@link JFrame} with UI elements used to send and read messages
 | 
			
		||||
	 * to different users.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public ChatWindow() {
 | 
			
		||||
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 | 
			
		||||
@@ -481,7 +481,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 * Used to immediately reload the {@link ChatWindow} when settings were changed.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param theme the theme to change colors into
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	private void applyTheme(Theme theme) {
 | 
			
		||||
		// contentPane
 | 
			
		||||
@@ -532,7 +532,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Sends a new message to the server based on the text entered in the textArea.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private void postMessage() {
 | 
			
		||||
		if (userList.isSelectionEmpty()) {
 | 
			
		||||
@@ -557,7 +557,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param message   the message to forward
 | 
			
		||||
	 * @param recipient the new recipient of the message
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private void forwardMessage(Message message, User... recipients) {
 | 
			
		||||
		Arrays.stream(recipients).forEach(recipient -> {
 | 
			
		||||
@@ -576,7 +576,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 * Sends a {@link Message} to the server.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param message the message to send
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private void sendMessage(final Message message) {
 | 
			
		||||
		try {
 | 
			
		||||
@@ -639,7 +639,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 * @param writeProxy the write proxy used to send messages and status change
 | 
			
		||||
	 *                   events to the server or cache them inside the local
 | 
			
		||||
	 *                   database
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void initContent(Client client, LocalDb localDb, WriteProxy writeProxy) {
 | 
			
		||||
		this.client		= client;
 | 
			
		||||
@@ -668,7 +668,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
	 * {@link ChatWindow#MAX_MESSAGE_LENGTH}
 | 
			
		||||
	 * and splits the text into the allowed part, if that is the case.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private void checkMessageTextLength() {
 | 
			
		||||
		String input = messageEnterTextArea.getText();
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ import envoy.data.User;
 | 
			
		||||
 * Created: <strong>15 Mar 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class ContactsChooserDialog extends JDialog {
 | 
			
		||||
 | 
			
		||||
@@ -64,7 +64,7 @@ public class ContactsChooserDialog extends JDialog {
 | 
			
		||||
	 * @param users   the users that should be displayed
 | 
			
		||||
	 * @return the selected Element (yet has to be casted to the wanted type due to
 | 
			
		||||
	 *         the Generics limitations in Java)
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static List<User> showForwardingDialog(String title, Component parent, Message message, Collection<User> users) {
 | 
			
		||||
		ContactsChooserDialog dialog = new ContactsChooserDialog(parent);
 | 
			
		||||
@@ -89,7 +89,7 @@ public class ContactsChooserDialog extends JDialog {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param parent this @{@link Component} will be parsed to
 | 
			
		||||
	 *               {@link java.awt.Window#setLocationRelativeTo(Component)}
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private ContactsChooserDialog(Component parent) {
 | 
			
		||||
		contactList.setSelectionMode(SelectionMode.MULTIPLE);
 | 
			
		||||
@@ -138,7 +138,7 @@ public class ContactsChooserDialog extends JDialog {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the underlying {@link ComponentList}
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private ComponentList<User> getContactList() { return contactList; }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ import envoy.client.ui.Theme;
 | 
			
		||||
 * Created: <strong>17 Mar 2020</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class ContextMenu extends JPopupMenu {
 | 
			
		||||
 | 
			
		||||
@@ -59,7 +59,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param parent the component which will call this
 | 
			
		||||
	 *               {@link ContextMenu}
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu(Component parent) {
 | 
			
		||||
		setInvoker(parent);
 | 
			
		||||
@@ -80,7 +80,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * @param itemMnemonics    the keyboard shortcuts that need to be pressed to
 | 
			
		||||
	 *                         automatically execute the {@link JMenuItem} with the
 | 
			
		||||
	 *                         given text
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu(String label, Component parent, Map<String, ActionListener> itemsWithActions, Map<String, Icon> itemIcons,
 | 
			
		||||
			Map<String, Integer> itemMnemonics) {
 | 
			
		||||
@@ -94,7 +94,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param label the string that a UI may use to display as a title for the
 | 
			
		||||
	 *              pop-up menu.
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu(String label) {
 | 
			
		||||
		super(label);
 | 
			
		||||
@@ -107,7 +107,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return this instance of {@link ContextMenu} to allow chaining behind the
 | 
			
		||||
	 *         constructor
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContextMenu build() {
 | 
			
		||||
		items.forEach((text, action) -> {
 | 
			
		||||
@@ -162,7 +162,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Removes all subcomponents of this menu.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void clear() {
 | 
			
		||||
		removeAll();
 | 
			
		||||
@@ -173,33 +173,33 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the items
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, ActionListener> getItems() { return items; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param items the items with the displayed text and the according action to
 | 
			
		||||
	 *              take once called
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setItems(Map<String, ActionListener> items) { this.items = items; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the icons
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, Icon> getIcons() { return icons; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param icons the icons to set
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setIcons(Map<String, Icon> icons) { this.icons = icons; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the mnemonics (the keyboard shortcuts that automatically execute the
 | 
			
		||||
	 *         command for a {@link JMenuItem} with corresponding text)
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Map<String, Integer> getMnemonics() { return mnemonics; }
 | 
			
		||||
 | 
			
		||||
@@ -207,7 +207,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * @param mnemonics the keyboard shortcuts that need to be pressed to
 | 
			
		||||
	 *                  automatically execute the {@link JMenuItem} with the given
 | 
			
		||||
	 *                  text
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setMnemonics(Map<String, Integer> mnemonics) { this.mnemonics = mnemonics; }
 | 
			
		||||
 | 
			
		||||
@@ -216,7 +216,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * Additionally sets the foreground of all subcomponents of this
 | 
			
		||||
	 * {@link ContextMenu}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void setForeground(Color color) {
 | 
			
		||||
@@ -230,7 +230,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * Additionally sets the background of all subcomponents of this
 | 
			
		||||
	 * {@link ContextMenu}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void setBackground(Color color) {
 | 
			
		||||
@@ -246,7 +246,7 @@ public class ContextMenu extends JPopupMenu {
 | 
			
		||||
	 * Envoy-exclusive object.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param theme the theme to use
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	protected void applyTheme(Theme theme) {
 | 
			
		||||
		setBackground(theme.getCellColor());
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class LoginDialog extends JDialog {
 | 
			
		||||
 | 
			
		||||
@@ -74,7 +74,7 @@ public class LoginDialog extends JDialog {
 | 
			
		||||
	 * @param localDb              the local database in which data is persisted
 | 
			
		||||
	 * @param receivedMessageCache the cache that stored messages received during
 | 
			
		||||
	 *                             the handshake
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public LoginDialog(Client client, LocalDb localDb, Cache<Message> receivedMessageCache) {
 | 
			
		||||
		this.client					= client;
 | 
			
		||||
@@ -283,7 +283,7 @@ public class LoginDialog extends JDialog {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Resets the text stored in the password fields.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	private void clearPasswordFields() {
 | 
			
		||||
		passwordField.setText(null);
 | 
			
		||||
@@ -337,7 +337,7 @@ public class LoginDialog extends JDialog {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Shuts the system down properly if the login was aborted.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private void abortLogin() {
 | 
			
		||||
		logger.info("The login process has been cancelled. Exiting...");
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,6 @@
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui.container;
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ import javax.swing.*;
 | 
			
		||||
 *
 | 
			
		||||
 * @param <E> the type of object displayed in this list
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class ComponentList<E> extends JPanel {
 | 
			
		||||
 | 
			
		||||
@@ -34,7 +34,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Defines the possible modes of selection that can be performed by the user
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static enum SelectionMode {
 | 
			
		||||
		/**
 | 
			
		||||
@@ -56,7 +56,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Creates an instance of {@link ComponentList}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public ComponentList() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); }
 | 
			
		||||
 | 
			
		||||
@@ -64,7 +64,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	 * Removes all child components and then adds all components representing the
 | 
			
		||||
	 * elements of the {@link Model}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void synchronizeModel() {
 | 
			
		||||
		if (model != null) {
 | 
			
		||||
@@ -79,7 +79,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	 * removed from the selection.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param index the index of the selected component
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void selectElement(int index) {
 | 
			
		||||
		final JComponent element = getComponent(index);
 | 
			
		||||
@@ -112,7 +112,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Removes the current selection.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void clearSelection() {
 | 
			
		||||
		if (selectionHandler != null) selection.forEach(i -> selectionHandler.selectionChanged(model.get(i), getComponent(i), false));
 | 
			
		||||
@@ -124,7 +124,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	 * {@link Renderer}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param elem the element to add
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	void addElement(E elem) {
 | 
			
		||||
		if (renderer != null) {
 | 
			
		||||
@@ -140,7 +140,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	 * @return a mouse listener calling the
 | 
			
		||||
	 *         {@link ComponentList#selectElement(int)} method with the
 | 
			
		||||
	 *         component's index when a left click is performed by the user
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	private MouseListener getSelectionListener(int componentIndex) {
 | 
			
		||||
		return new MouseAdapter() {
 | 
			
		||||
@@ -155,13 +155,13 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return a set of all selected indices
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Set<Integer> getSelection() { return selection; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return a set of all selected elements
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Set<E> getSelectedElements() {
 | 
			
		||||
		var selectedElements = new HashSet<E>();
 | 
			
		||||
@@ -172,20 +172,20 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the index of an arbitrary selected element
 | 
			
		||||
	 * @throws java.util.NoSuchElementException if no selection is present
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public int getSingleSelection() { return selection.stream().findAny().get(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return an arbitrary selected element
 | 
			
		||||
	 * @throws java.util.NoSuchElementException if no selection is present
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public E getSingleSelectedElement() { return model.get(getSingleSelection()); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the model
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Model<E> getModel() { return model; }
 | 
			
		||||
 | 
			
		||||
@@ -196,7 +196,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param model the list model to set
 | 
			
		||||
	 * @return this component list
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public ComponentList<E> setModel(Model<E> model) {
 | 
			
		||||
 | 
			
		||||
@@ -213,14 +213,14 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the renderer
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public Renderer<E> getRenderer() { return renderer; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param renderer the renderer to set
 | 
			
		||||
	 * @return this component list
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ComponentList<E> setRenderer(Renderer<E> renderer) {
 | 
			
		||||
		this.renderer = renderer;
 | 
			
		||||
@@ -229,7 +229,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the selection mode
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public SelectionMode getSelectionMode() { return selectionMode; }
 | 
			
		||||
 | 
			
		||||
@@ -239,7 +239,7 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param selectionMode the selection mode to set
 | 
			
		||||
	 * @return this component list
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ComponentList<E> setSelectionMode(SelectionMode selectionMode) {
 | 
			
		||||
		this.selectionMode = selectionMode;
 | 
			
		||||
@@ -249,13 +249,13 @@ public class ComponentList<E> extends JPanel {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the selection handler
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public SelectionHandler<E> getSelectionHandler() { return selectionHandler; }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param selectionHandler the selection handler to set
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void setSelectionHandler(SelectionHandler<E> selectionHandler) { this.selectionHandler = selectionHandler; }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ import java.util.List;
 | 
			
		||||
 *
 | 
			
		||||
 * @param <E> the type of object displayed in this list
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
 | 
			
		||||
@@ -30,7 +30,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	 * @param e the element to add
 | 
			
		||||
	 * @return {@code true}
 | 
			
		||||
	 * @see java.util.List#add(java.lang.Object)
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean add(E e) {
 | 
			
		||||
		if (componentList != null) {
 | 
			
		||||
@@ -45,7 +45,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	 * {@link ComponentList}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @see java.util.List#clear()
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void clear() {
 | 
			
		||||
		elements.clear();
 | 
			
		||||
@@ -56,7 +56,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	 * @param index the index to retrieve the element from
 | 
			
		||||
	 * @return the element located at the index
 | 
			
		||||
	 * @see java.util.List#get(int)
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public E get(int index) { return elements.get(index); }
 | 
			
		||||
 | 
			
		||||
@@ -67,7 +67,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	 * @param index the index of the element to remove
 | 
			
		||||
	 * @return the removed element
 | 
			
		||||
	 * @see java.util.List#remove(int)
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public E remove(int index) {
 | 
			
		||||
		if (componentList != null) componentList.remove(index);
 | 
			
		||||
@@ -77,7 +77,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the amount of elements in this list model
 | 
			
		||||
	 * @see java.util.List#size()
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public int size() { return elements.size(); }
 | 
			
		||||
 | 
			
		||||
@@ -90,7 +90,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return an iterator over the elements of this list model
 | 
			
		||||
	 * @see java.util.List#iterator()
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public Iterator<E> iterator() {
 | 
			
		||||
@@ -111,7 +111,7 @@ public final class Model<E> implements Iterable<E>, Serializable {
 | 
			
		||||
	 * synchronization.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param componentList the component list to set
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	void setComponentList(ComponentList<E> componentList) {
 | 
			
		||||
		this.componentList = componentList;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import javax.swing.JComponent;
 | 
			
		||||
 *
 | 
			
		||||
 * @param <E> the type of object displayed in this list
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
@FunctionalInterface
 | 
			
		||||
public interface Renderer<E> {
 | 
			
		||||
@@ -25,7 +25,7 @@ public interface Renderer<E> {
 | 
			
		||||
	 * @param isSelected {@code true} if the user has selected the list cell in
 | 
			
		||||
	 *                   which the list element is rendered
 | 
			
		||||
	 * @return the component representing the list element
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	JComponent getListCellComponent(ComponentList<? extends E> list, E value);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import javax.swing.JComponent;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @param <E> the type of the underlying {@link ComponentList}
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
@FunctionalInterface
 | 
			
		||||
public interface SelectionHandler<E> {
 | 
			
		||||
@@ -22,7 +22,7 @@ public interface SelectionHandler<E> {
 | 
			
		||||
	 * @param element    the selected element
 | 
			
		||||
	 * @param component  the selected component
 | 
			
		||||
	 * @param isSelected contains the selection state
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	void selectionChanged(E element, JComponent component, boolean isSelected);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,6 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui.list;
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ import envoy.event.EventBus;
 | 
			
		||||
 * Created: <strong>21.03.2020</strong>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class ContactSearchComponent extends JComponent {
 | 
			
		||||
 | 
			
		||||
@@ -29,7 +29,7 @@ public class ContactSearchComponent extends JComponent {
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param list the {@link ComponentList} that is used to display search results
 | 
			
		||||
	 * @param user the {@link User} that appears as a search result
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public ContactSearchComponent(ComponentList<? extends User> list, User user) {
 | 
			
		||||
		setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import envoy.data.User;
 | 
			
		||||
 * Created: <strong>21.03.2020</strong>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class MessageComponent extends JPanel {
 | 
			
		||||
 | 
			
		||||
@@ -45,7 +45,7 @@ public class MessageComponent extends JPanel {
 | 
			
		||||
	 * @param message  the {@link Message} to display
 | 
			
		||||
	 * @param senderId the id of the {@link User} who sends messages from this
 | 
			
		||||
	 *                 account
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public MessageComponent(ComponentList<? extends Message> list, Message message, long senderId) {
 | 
			
		||||
		var			width	= list.getMaximumSize().width;
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ import envoy.data.User.UserStatus;
 | 
			
		||||
 * Created: <strong>21.03.2020</strong>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class UserComponent extends JPanel {
 | 
			
		||||
 | 
			
		||||
@@ -28,7 +28,7 @@ public class UserComponent extends JPanel {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param user the {@link User} whose information is displayed
 | 
			
		||||
	 * @since Envoy v0.1-beta
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public UserComponent(User user) {
 | 
			
		||||
		final Theme theme = Settings.getInstance().getCurrentTheme();
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,6 @@
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui.list_component;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,6 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui;
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import javax.swing.JButton;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class PrimaryButton extends JButton {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ import envoy.client.ui.Theme;
 | 
			
		||||
 * Created: <strong>14.12.2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class PrimaryScrollBar extends BasicScrollBarUI {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ public class PrimaryScrollPane extends JScrollPane {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initializes a {@link JScrollPane} with the primary Envoy design scheme
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public PrimaryScrollPane() { setBorder(null); }
 | 
			
		||||
 | 
			
		||||
@@ -30,7 +30,7 @@ public class PrimaryScrollPane extends JScrollPane {
 | 
			
		||||
	 * Styles the vertical and horizontal scroll bars.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param theme the color set used to color the component
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void applyTheme(Theme theme) {
 | 
			
		||||
		setForeground(theme.getBackgroundColor());
 | 
			
		||||
@@ -54,7 +54,7 @@ public class PrimaryScrollPane extends JScrollPane {
 | 
			
		||||
	 * When rereading messages, the chat doesn't scroll down if new messages </br>
 | 
			
		||||
	 * are added. (Besides see first point)
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void autoscroll() {
 | 
			
		||||
		// Automatic scrolling to the bottom
 | 
			
		||||
@@ -79,7 +79,7 @@ public class PrimaryScrollPane extends JScrollPane {
 | 
			
		||||
	 * triggering it to automatically scroll down.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param chatOpened indicates the chat opening status
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void setChatOpened(boolean chatOpened) { this.chatOpened = chatOpened; }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import javax.swing.border.EmptyBorder;
 | 
			
		||||
 * Created: <strong>07.12.2019</strong><br>
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class PrimaryTextArea extends JTextArea {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ import envoy.client.ui.Color;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class PrimaryToggleSwitch extends JButton {
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +32,7 @@ public class PrimaryToggleSwitch extends JButton {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param settingsItem the {@link SettingsItem} that is controlled by this
 | 
			
		||||
	 *                     {@link PrimaryToggleSwitch}
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public PrimaryToggleSwitch(SettingsItem<Boolean> settingsItem) {
 | 
			
		||||
		setPreferredSize(new Dimension(50, 25));
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,6 @@
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui.primary;
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ import envoy.data.User.UserStatus;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-alpha
 | 
			
		||||
 * @since Envoy Client v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class UserListRenderer extends JLabel implements ListCellRenderer<User> {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,6 @@
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui.renderer;
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * Created: <strong>21 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class GeneralSettingsPanel extends SettingsPanel {
 | 
			
		||||
 | 
			
		||||
@@ -38,7 +38,7 @@ public class GeneralSettingsPanel extends SettingsPanel {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param parent the {@link SettingsScreen} as a part of which this
 | 
			
		||||
	 *               {@link SettingsPanel} is displayed
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public GeneralSettingsPanel(SettingsScreen parent) {
 | 
			
		||||
		super(parent);
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ import envoy.client.ui.primary.PrimaryTextArea;
 | 
			
		||||
 * Created: <strong>26 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.3-alpha
 | 
			
		||||
 * @since Envoy Client v0.3-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class NewThemeScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
@@ -48,7 +48,7 @@ public class NewThemeScreen extends JDialog {
 | 
			
		||||
	 * @param newThemeAction    is executed when a new theme name is entered
 | 
			
		||||
	 * @param modifyThemeAction is executed when an existing theme name is entered
 | 
			
		||||
	 *                          and confirmed
 | 
			
		||||
	 * @since Envoy v0.3-alpha
 | 
			
		||||
	 * @since Envoy Client v0.3-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public NewThemeScreen(SettingsScreen parent, Consumer<String> newThemeAction, Consumer<String> modifyThemeAction) {
 | 
			
		||||
		this.newThemeAction		= newThemeAction;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import javax.swing.JPanel;
 | 
			
		||||
 * Created: <strong>20 Dec 2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public abstract class SettingsPanel extends JPanel {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class SettingsScreen extends JDialog {
 | 
			
		||||
 | 
			
		||||
@@ -51,7 +51,7 @@ public class SettingsScreen extends JDialog {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initializes the settings screen.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 * @since Envoy Client v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public SettingsScreen() {
 | 
			
		||||
		// Initialize settings pages
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ import envoy.util.EnvoyLog;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class ThemeCustomizationPanel extends SettingsPanel {
 | 
			
		||||
 | 
			
		||||
@@ -48,7 +48,7 @@ public class ThemeCustomizationPanel extends SettingsPanel {
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param parent the {@link SettingsScreen} as a part of which this
 | 
			
		||||
	 *               {@link SettingsPanel} is displayed
 | 
			
		||||
	 * @since Envoy v0.2-alpha
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public ThemeCustomizationPanel(SettingsScreen parent) {
 | 
			
		||||
		super(parent);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,6 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.2-alpha
 | 
			
		||||
 * @since Envoy Client v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
package envoy.client.ui.settings;
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy v0.1-beta
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
module envoy {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user