Revised requested changes besides 2 (please change by yourself)
This commit is contained in:
		| @@ -121,14 +121,12 @@ public class Config { | ||||
| 	public void setLocalDB(File localDB) { this.localDB = localDB; } | ||||
|  | ||||
| 	/** | ||||
| 	 *  | ||||
| 	 * @return the current time (milliseconds) that is waited between Syncs | ||||
| 	 * @since Envoy v0.1-alpha | ||||
| 	 */ | ||||
| 	public int getSyncTimeout() { return syncTimeout; } | ||||
|  | ||||
| 	/** | ||||
| 	 *  | ||||
| 	 * @param syncTimeout sets the time (milliseconds) during which Sync waits | ||||
| 	 * @since Envoy v0.1-alpha | ||||
| 	 */ | ||||
|   | ||||
| @@ -89,6 +89,12 @@ public class Settings { | ||||
| 						Color.black, Color.black)); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * updates prefs when save button is clicked | ||||
| 	 *  | ||||
| 	 * @throws IOException | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public void save() throws IOException{ | ||||
| 		prefs.put("username", getUsername()); | ||||
| 		prefs.put("email", getEmail()); | ||||
| @@ -102,13 +108,29 @@ public class Settings { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * adds new theme to the theme map and sets current theme to the new theme. | ||||
| 	 *  | ||||
| 	 * @param theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public void addNewThemeToMap(Theme theme) { | ||||
| 		settings.getThemes().put(theme.getThemeName(), theme); | ||||
| 		currentTheme = theme.getThemeName(); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @return {@link currentTheme} | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public String getCurrentTheme() { return currentTheme; } | ||||
|  | ||||
| 	/** | ||||
| 	 * Sets the currentTheme | ||||
| 	 *  | ||||
| 	 * @param themeName | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public void setCurrentTheme(String themeName) { currentTheme = themeName; } | ||||
|  | ||||
| 	/** | ||||
| @@ -151,7 +173,17 @@ public class Settings { | ||||
| 	 */ | ||||
| 	public void setEnterToSend(boolean enterToSend) { this.enterToSend = enterToSend; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return {@link themes} map | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Map<String, Theme> getThemes() { return themes; } | ||||
|  | ||||
| 	/** | ||||
| 	 * Sets {@link themes} | ||||
| 	 *  | ||||
| 	 * @param themes | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public void setThemes(Map<String, Theme> themes) { this.themes = themes; } | ||||
| } | ||||
| @@ -1,6 +1,5 @@ | ||||
| package envoy.client.ui; | ||||
|  | ||||
| import java.awt.Color; | ||||
| import java.awt.ComponentOrientation; | ||||
| import java.awt.Font; | ||||
| import java.awt.GridBagConstraints; | ||||
| @@ -136,6 +135,7 @@ public class ChatWindow extends JFrame { | ||||
| 						&& ((Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0) | ||||
| 								|| (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))) { | ||||
| 					postMessage(messageList); | ||||
| 				} | ||||
| 			} | ||||
| 		}); | ||||
| 		// Checks for changed Message | ||||
| @@ -244,6 +244,7 @@ public class ChatWindow extends JFrame { | ||||
|  | ||||
| 		contentPane.revalidate(); | ||||
| 	} | ||||
| 	 | ||||
|  | ||||
| 	/** | ||||
| 	 * Used to immediately reload the ChatWindow when settings were changed. | ||||
| @@ -282,19 +283,22 @@ public class ChatWindow extends JFrame { | ||||
| 		userList.setSelectionBackground(theme.getSelectionColor()); | ||||
| 		userList.setForeground(theme.getUserNameColor()); | ||||
| 		userList.setBackground(theme.getCellColor()); | ||||
|  | ||||
| 	} | ||||
|      | ||||
|  | ||||
| 	private void postMessage(JList<Message> messageList) { | ||||
| 		if (!client.hasRecipient()) { | ||||
| 			JOptionPane.showMessageDialog(this, "Please select a recipient!", "Cannot send message", JOptionPane.INFORMATION_MESSAGE); | ||||
| 			JOptionPane.showMessageDialog(this, | ||||
| 					"Please select a recipient!", | ||||
| 					"Cannot send message", | ||||
| 					JOptionPane.INFORMATION_MESSAGE); | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		if (!messageEnterTextArea.getText().isEmpty()) try { | ||||
|  | ||||
| 			// Create and send message object | ||||
| 			final Message message = localDB.createMessage(messageEnterTextArea.getText(), currentChat.getRecipient()); | ||||
| 			final Message message = localDB.createMessage(messageEnterTextArea.getText(), | ||||
| 					currentChat.getRecipient().getID()); | ||||
| 			currentChat.appendMessage(message); | ||||
| 			messageList.setModel(currentChat.getModel()); | ||||
|  | ||||
| @@ -344,7 +348,8 @@ public class ChatWindow extends JFrame { | ||||
| 			new Thread(() -> { | ||||
|  | ||||
| 				// Synchronize | ||||
| 				localDB.applySync(client.sendSync(client.getSender().getID(), localDB.fillSync(client.getSender().getID()))); | ||||
| 				localDB.applySync( | ||||
| 						client.sendSync(client.getSender().getID(), localDB.fillSync(client.getSender().getID()))); | ||||
|  | ||||
| 				// Process unread messages | ||||
| 				localDB.addUnreadMessagesToLocalDB(); | ||||
| @@ -354,7 +359,8 @@ public class ChatWindow extends JFrame { | ||||
| 				readCurrentChat(); | ||||
|  | ||||
| 				// Update UI | ||||
| 				SwingUtilities.invokeLater(() -> { updateUserStates(); contentPane.revalidate(); contentPane.repaint(); }); | ||||
| 				SwingUtilities | ||||
| 					.invokeLater(() -> { updateUserStates(); contentPane.revalidate(); contentPane.repaint(); }); | ||||
| 			}).start(); | ||||
| 		}).start(); | ||||
| 	} | ||||
| @@ -371,3 +377,4 @@ public class ChatWindow extends JFrame { | ||||
| 	 */ | ||||
| 	private void readCurrentChat() { if (currentChat != null) { localDB.setMessagesToRead(currentChat); } } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import java.awt.Insets; | ||||
| import java.awt.event.ItemEvent; | ||||
| import java.awt.event.ItemListener; | ||||
| import java.util.Arrays; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| import javax.swing.BoxLayout; | ||||
| import javax.swing.DefaultListModel; | ||||
| @@ -24,6 +25,7 @@ import javax.swing.JPanel; | ||||
| import javax.swing.JTextPane; | ||||
| import javax.swing.ListSelectionModel; | ||||
|  | ||||
| import envoy.client.LocalDB; | ||||
| import envoy.client.Settings; | ||||
|  | ||||
| /** | ||||
| @@ -64,6 +66,8 @@ public class SettingsScreen extends JDialog { | ||||
| 	private boolean	colorChanged	= false; | ||||
| 	private Theme	temporaryTheme; | ||||
|  | ||||
| 	private static final Logger logger = Logger.getLogger(LocalDB.class.getSimpleName()); | ||||
|  | ||||
| 	private static SettingsScreen settingsScreen; | ||||
|  | ||||
| 	// TODO: Add a JPanel with all the Information necessary: | ||||
| @@ -89,8 +93,7 @@ public class SettingsScreen extends JDialog { | ||||
| 	 * @since Envoy v0.1-alpha | ||||
| 	 */ | ||||
| 	private SettingsScreen() { | ||||
|  | ||||
| 		System.out.println(Settings.getInstance().getCurrentTheme()); | ||||
| 		logger.info(Settings.getInstance().getCurrentTheme()); | ||||
|  | ||||
| 		setBounds(10, 10, 450, 650); | ||||
| 		getContentPane().setLayout(new BorderLayout()); | ||||
| @@ -98,7 +101,8 @@ public class SettingsScreen extends JDialog { | ||||
|  | ||||
| 			createNewThemeButton.setEnabled(false); | ||||
|  | ||||
| 			temporaryTheme = new Theme("temporaryTheme", Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme())); | ||||
| 			temporaryTheme = new Theme("temporaryTheme", | ||||
| 					Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme())); | ||||
|  | ||||
| 			// Content pane | ||||
| 			GridBagLayout gbl_contentPanel = new GridBagLayout(); | ||||
| @@ -147,13 +151,10 @@ public class SettingsScreen extends JDialog { | ||||
| 			gbc_optionsList.insets	= new Insets(space, space, space, space); | ||||
|  | ||||
| 			optionsListModel.addElement("Color Themes"); | ||||
|  | ||||
| 			options.setModel(optionsListModel); | ||||
|  | ||||
| 			contentPanel.add(options, gbc_optionsList); | ||||
|  | ||||
| 			// Theme content | ||||
|  | ||||
| 			gbc_themeContent		= new GridBagConstraints(); | ||||
| 			gbc_themeContent.fill	= GridBagConstraints.BOTH; | ||||
| 			gbc_themeContent.gridx	= 1; | ||||
| @@ -206,7 +207,13 @@ public class SettingsScreen extends JDialog { | ||||
| 					theme.getBackgroundColor(), | ||||
| 					"Background", | ||||
| 					1); | ||||
| 			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getCellColor(), "Cells", 2); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| 					theme, | ||||
| 					theme.getCellColor(), | ||||
| 					"Cells", | ||||
| 					2); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| @@ -221,11 +228,41 @@ public class SettingsScreen extends JDialog { | ||||
| 					theme.getInteractableBackgroundColor(), | ||||
| 					"Interactable Background", | ||||
| 					4); | ||||
| 			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getMessageColorChat(), "Messages Chat", 5); | ||||
| 			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getDateColorChat(), "Date Chat", 6); | ||||
| 			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getSelectionColor(), "Selection", 7); | ||||
| 			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getTypingMessageColor(), "Typing Message", 8); | ||||
| 			buildCustomizeElement(new JPanel(), new JButton(), new JTextPane(), theme, theme.getUserNameColor(), "User Names", 9); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| 					theme, | ||||
| 					theme.getMessageColorChat(), | ||||
| 					"Messages Chat", | ||||
| 					5); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| 					theme, | ||||
| 					theme.getDateColorChat(), | ||||
| 					"Date Chat", | ||||
| 					6); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| 					theme, | ||||
| 					theme.getSelectionColor(), | ||||
| 					"Selection", | ||||
| 					7); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| 					theme, | ||||
| 					theme.getTypingMessageColor(), | ||||
| 					"Typing Message", | ||||
| 					8); | ||||
| 			buildCustomizeElement(new JPanel(), | ||||
| 					new JButton(), | ||||
| 					new JTextPane(), | ||||
| 					theme, | ||||
| 					theme.getUserNameColor(), | ||||
| 					"User Names", | ||||
| 					9); | ||||
|  | ||||
| 			GridBagConstraints gbc_colorsPanel = new GridBagConstraints(); | ||||
| 			gbc_colorsPanel.fill		= GridBagConstraints.HORIZONTAL; | ||||
| @@ -246,14 +283,16 @@ public class SettingsScreen extends JDialog { | ||||
| 					String s = JOptionPane.showInputDialog("Enter a name for the new theme"); | ||||
| 					System.out.println(s); | ||||
| 					Settings.getInstance() | ||||
| 						.addNewThemeToMap(new Theme(s, temporaryTheme.getBackgroundColor(), temporaryTheme.getCellColor(), | ||||
| 								temporaryTheme.getInteractableForegroundColor(), temporaryTheme.getInteractableBackgroundColor(), | ||||
| 								temporaryTheme.getMessageColorChat(), temporaryTheme.getDateColorChat(), temporaryTheme.getSelectionColor(), | ||||
| 						.addNewThemeToMap(new Theme(s, temporaryTheme.getBackgroundColor(), | ||||
| 								temporaryTheme.getCellColor(), temporaryTheme.getInteractableForegroundColor(), | ||||
| 								temporaryTheme.getInteractableBackgroundColor(), temporaryTheme.getMessageColorChat(), | ||||
| 								temporaryTheme.getDateColorChat(), temporaryTheme.getSelectionColor(), | ||||
| 								temporaryTheme.getTypingMessageColor(), temporaryTheme.getUserNameColor())); | ||||
| 					themeArray							= Arrays.copyOf(themeArray, themeArray.length + 1); | ||||
| 					themeArray[themeArray.length - 1]	= Settings.getInstance().getThemes().get(s).getThemeName(); | ||||
|  | ||||
| 					temporaryTheme = new Theme("temporaryTheme", Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme())); | ||||
| 					temporaryTheme = new Theme("temporaryTheme", | ||||
| 							Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme())); | ||||
|  | ||||
| 					createNewThemeButton.setEnabled(false); | ||||
| 					themes.addItem(themeArray[themeArray.length - 1]); | ||||
| @@ -264,7 +303,7 @@ public class SettingsScreen extends JDialog { | ||||
| 					// TODO: Create new Theme | ||||
|  | ||||
| 				} catch (Exception e) { | ||||
| 					System.err.println("New theme couldn't be created! " + e); | ||||
| 					logger.info("New theme couldn't be created! " + e); | ||||
| 					e.printStackTrace(); | ||||
| 				} | ||||
| 			}); | ||||
| @@ -326,7 +365,7 @@ public class SettingsScreen extends JDialog { | ||||
| 						revalidate(); | ||||
| 						repaint(); | ||||
| 					} catch (Exception e) { | ||||
| 						System.err.println("Something went wrong when changing the setting"); | ||||
| 						logger.info("Something went wrong when changing the setting"); | ||||
| 						settingsScreen.dispose(); | ||||
| 					} | ||||
| 				}); | ||||
| @@ -373,12 +412,21 @@ public class SettingsScreen extends JDialog { | ||||
| 		temporaryTheme = new Theme("temporaryTheme", | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getBackgroundColor(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getCellColor(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getInteractableForegroundColor(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getInteractableBackgroundColor(), | ||||
| 				Settings.getInstance() | ||||
| 					.getThemes() | ||||
| 					.get(Settings.getInstance().getCurrentTheme()) | ||||
| 					.getInteractableForegroundColor(), | ||||
| 				Settings.getInstance() | ||||
| 					.getThemes() | ||||
| 					.get(Settings.getInstance().getCurrentTheme()) | ||||
| 					.getInteractableBackgroundColor(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getMessageColorChat(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getDateColorChat(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getSelectionColor(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getTypingMessageColor(), | ||||
| 				Settings.getInstance() | ||||
| 					.getThemes() | ||||
| 					.get(Settings.getInstance().getCurrentTheme()) | ||||
| 					.getTypingMessageColor(), | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getUserNameColor()); | ||||
|  | ||||
| 		colorsPanel.removeAll(); | ||||
| @@ -465,7 +513,8 @@ public class SettingsScreen extends JDialog { | ||||
|  | ||||
| 	private void setContent(JPanel content, GridBagConstraints layout) { contentPanel.add(content, layout); } | ||||
|  | ||||
| 	private void buildCustomizeElement(JPanel panel, JButton button, JTextPane textPane, Theme theme, Color color, String name, int yIndex) { | ||||
| 	private void buildCustomizeElement(JPanel panel, JButton button, JTextPane textPane, Theme theme, Color color, | ||||
| 			String name, int yIndex) { | ||||
| 		textPane.setFont(new Font("Arial", Font.PLAIN, 14)); | ||||
| 		textPane.setBackground(theme.getBackgroundColor()); | ||||
| 		textPane.setForeground(theme.getUserNameColor()); | ||||
| @@ -497,7 +546,7 @@ public class SettingsScreen extends JDialog { | ||||
| 				} | ||||
|  | ||||
| 			} catch (Exception e) { | ||||
| 				System.err.println("An error occured while opening Color Chooser: " + e); | ||||
| 				logger.info("An error occured while opening Color Chooser: " + e); | ||||
| 				e.printStackTrace(); | ||||
| 			} | ||||
| 		}); | ||||
|   | ||||
| @@ -4,7 +4,6 @@ import java.awt.Color; | ||||
| import java.io.Serializable; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>Theme.java</strong><br> | ||||
|  * Created: <strong>23 Nov 2019</strong><br> | ||||
| @@ -50,26 +49,70 @@ public class Theme implements Serializable { | ||||
| 				other.typingMessageColor, other.userNameColor); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @return name of the theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public String getThemeName() { return themeName; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return interactableForegroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getInteractableForegroundColor() { return interactableForegroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return messageColorChat | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getMessageColorChat() { return messageColorChat; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return dateColorChat | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getDateColorChat() { return dateColorChat; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return selectionColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getSelectionColor() { return selectionColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return typingMessageColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getTypingMessageColor() { return typingMessageColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return backgroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getBackgroundColor() { return backgroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return cellColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getCellColor() { return cellColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return interactableBackgroundColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getInteractableBackgroundColor() { return interactableBackgroundColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return userNameColor | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color getUserNameColor() { return userNameColor; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return a color array containing all colors of this theme | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public Color[] getAllColors() { | ||||
| 		Color[] c = new Color[9]; | ||||
| 		c[0]	= backgroundColor; | ||||
| @@ -85,6 +128,24 @@ public class Theme implements Serializable { | ||||
| 		return c; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Sets the a specific {@link Color} in this theme to a new {@link Color} | ||||
| 	 *  | ||||
| 	 * @param index    - index of the color </br> | ||||
| 	 *                 0 = backgroundColor </br> | ||||
| 	 *                 1 = cellColor </br> | ||||
| 	 *                 2 = interactableForegroundColor </br> | ||||
| 	 *                 3 = interactableBackgroundColor </br> | ||||
| 	 *                 4 = messageColorChat </br> | ||||
| 	 *                 5 = dateColorChat </br> | ||||
| 	 *                 6 = selectionColor </br> | ||||
| 	 *                 7 = typingMessageColor </br> | ||||
| 	 *                 8 = userNameColor </br> | ||||
| 	 *                 </br> | ||||
| 	 *  | ||||
| 	 * @param newColor - new {@link Color} to be set | ||||
| 	 * @since Envoy 0.2-alpha | ||||
| 	 */ | ||||
| 	public void setColor(int index, Color newColor) { | ||||
| 		switch (index) { | ||||
| 			case 0: | ||||
| @@ -114,7 +175,6 @@ public class Theme implements Serializable { | ||||
| 			case 8: | ||||
| 				this.userNameColor = newColor; | ||||
| 				break; | ||||
|  | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -45,7 +45,6 @@ public class UserListRenderer extends JLabel implements ListCellRenderer<User> { | ||||
|  | ||||
| 		// Getting the UserNameColor of the current theme | ||||
| 		String				textColor	= null; | ||||
|  | ||||
| 		textColor = toHex( | ||||
| 				Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getUserNameColor()); | ||||
| 		switch (status) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 DieGurke
					DieGurke