Added disabling of postButton while String.isBlank() returns true
This commit is contained in:
		@@ -4,9 +4,7 @@ import java.awt.*;
 | 
			
		||||
import java.awt.datatransfer.StringSelection;
 | 
			
		||||
import java.awt.event.*;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
@@ -118,39 +116,44 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
		gbl_contentPane.columnWidths	= new int[] { 1, 1, 1 };
 | 
			
		||||
		gbl_contentPane.rowHeights		= new int[] { 1, 1, 1, 1 };
 | 
			
		||||
		gbl_contentPane.columnWeights	= new double[] { 0.03, 1.0, 0.1 };
 | 
			
		||||
		gbl_contentPane.rowWeights		= new double[] { 0.03, 0.001, 1.0, 0.005 };
 | 
			
		||||
		gbl_contentPane.rowWeights		= new double[] { 0.03, 0.001, 1.0, 0.001 };
 | 
			
		||||
		contentPane.setLayout(gbl_contentPane);
 | 
			
		||||
 | 
			
		||||
		// ContextMenu
 | 
			
		||||
		Map<String, ActionListener> commands = new HashMap<>() {
 | 
			
		||||
 | 
			
		||||
			private static final long serialVersionUID = -2755235774946990126L;
 | 
			
		||||
 | 
			
		||||
			{
 | 
			
		||||
				put("forward selected message",
 | 
			
		||||
						evt -> forwardMessageToMultipleUsers(messageList.getSingleSelectedElement(),
 | 
			
		||||
								ContactsChooserDialog
 | 
			
		||||
									.showForwardingDialog("Forward selected message to", messageList.getSingleSelectedElement(), client)));
 | 
			
		||||
				put("copy", evt -> {
 | 
			
		||||
					// TODO should be enhanced to allow also copying of message attachments,
 | 
			
		||||
					// especially pictures
 | 
			
		||||
					StringSelection copy = new StringSelection(messageList.getSingleSelectedElement().getText());
 | 
			
		||||
					Toolkit.getDefaultToolkit().getSystemClipboard().setContents(copy, copy);
 | 
			
		||||
				});
 | 
			
		||||
				// TODO insert implementation to edit and delete messages
 | 
			
		||||
				put("delete", evt -> {});
 | 
			
		||||
				put("edit", evt -> {});
 | 
			
		||||
				put("quote", evt -> {});
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
		contextMenu = new ContextMenu(null, messageList, commands, null, null).build();
 | 
			
		||||
 | 
			
		||||
		messageList.setBorder(new EmptyBorder(space, space, space, space));
 | 
			
		||||
		messageList.setSelectionMode(SelectionMode.SINGLE);
 | 
			
		||||
		messageList.setSelectionHandler((message, comp, isSelected) -> {
 | 
			
		||||
			final var theme = Settings.getInstance().getCurrentTheme();
 | 
			
		||||
			comp.setBackground(isSelected ? theme.getSelectionColor() : theme.getCellColor());
 | 
			
		||||
			contextMenu.show(comp, 0, 0);
 | 
			
		||||
 | 
			
		||||
			// ContextMenu
 | 
			
		||||
			Map<String, ActionListener> commands = new HashMap<>() {
 | 
			
		||||
 | 
			
		||||
				private static final long serialVersionUID = -2755235774946990126L;
 | 
			
		||||
 | 
			
		||||
				{
 | 
			
		||||
					put("forward selected message", evt -> {
 | 
			
		||||
						final Message selectedMessage = messageList.getSingleSelectedElement();
 | 
			
		||||
						forwardMessage(selectedMessage,
 | 
			
		||||
								ContactsChooserDialog
 | 
			
		||||
									.showForwardingDialog("Forward selected message to", null, selectedMessage, localDb.getUsers().values())
 | 
			
		||||
									.toArray(new User[0]));
 | 
			
		||||
					});
 | 
			
		||||
					put("copy", evt -> {
 | 
			
		||||
						// TODO should be enhanced to allow also copying of message attachments,
 | 
			
		||||
						// especially pictures
 | 
			
		||||
						StringSelection copy = new StringSelection(messageList.getSingleSelectedElement().getText());
 | 
			
		||||
						Toolkit.getDefaultToolkit().getSystemClipboard().setContents(copy, copy);
 | 
			
		||||
					});
 | 
			
		||||
					// TODO insert implementation to edit and delete messages
 | 
			
		||||
					put("delete", evt -> {});
 | 
			
		||||
					put("edit", evt -> {});
 | 
			
		||||
					put("quote", evt -> {});
 | 
			
		||||
				}
 | 
			
		||||
			};
 | 
			
		||||
			if (isSelected) {
 | 
			
		||||
				contextMenu = new ContextMenu(null, comp, commands, null, null).build();
 | 
			
		||||
				contextMenu.show(comp, 0, 0);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		scrollPane.setViewportView(messageList);
 | 
			
		||||
@@ -180,7 +183,10 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
		messageEnterTextArea.addInputMethodListener(new InputMethodListener() {
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public void inputMethodTextChanged(InputMethodEvent event) { checkMessageTextLength(); }
 | 
			
		||||
			public void inputMethodTextChanged(InputMethodEvent event) {
 | 
			
		||||
				checkMessageTextLength();
 | 
			
		||||
				checkPostButton(messageEnterTextArea.getText());
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			@Override
 | 
			
		||||
			public void caretPositionChanged(InputMethodEvent event) {}
 | 
			
		||||
@@ -191,31 +197,30 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
			@Override
 | 
			
		||||
			public void keyReleased(KeyEvent e) {
 | 
			
		||||
				if (e.getKeyCode() == KeyEvent.VK_ENTER
 | 
			
		||||
						&& (Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0 || e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK))
 | 
			
		||||
						&& (Settings.getInstance().isEnterToSend() && e.getModifiersEx() == 0 || e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK)
 | 
			
		||||
						&& postButton.isEnabled())
 | 
			
		||||
					postMessage();
 | 
			
		||||
				// Checking if text is too long
 | 
			
		||||
				checkMessageTextLength();
 | 
			
		||||
				checkPostButton(messageEnterTextArea.getText());
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		GridBagConstraints gbc_scrollPaneForTextInput = new GridBagConstraints();
 | 
			
		||||
		gbc_scrollPaneForTextInput.fill		= GridBagConstraints.BOTH;
 | 
			
		||||
		gbc_scrollPaneForTextInput.gridx	= 1;
 | 
			
		||||
		gbc_scrollPaneForTextInput.gridy	= 3;
 | 
			
		||||
 | 
			
		||||
		gbc_scrollPaneForTextInput.insets = insets;
 | 
			
		||||
 | 
			
		||||
		contentPane.add(messageEnterTextArea, gbc_scrollPaneForTextInput);
 | 
			
		||||
		GridBagConstraints gbc_messageEnterTextArea = new GridBagConstraints();
 | 
			
		||||
		gbc_messageEnterTextArea.fill	= GridBagConstraints.BOTH;
 | 
			
		||||
		gbc_messageEnterTextArea.gridx	= 1;
 | 
			
		||||
		gbc_messageEnterTextArea.gridy	= 3;
 | 
			
		||||
		gbc_messageEnterTextArea.insets = insets;
 | 
			
		||||
		contentPane.add(messageEnterTextArea, gbc_messageEnterTextArea);
 | 
			
		||||
 | 
			
		||||
		// Post Button
 | 
			
		||||
		GridBagConstraints gbc_postButton = new GridBagConstraints();
 | 
			
		||||
 | 
			
		||||
		gbc_postButton.fill		= GridBagConstraints.BOTH;
 | 
			
		||||
		gbc_postButton.gridx	= 2;
 | 
			
		||||
		gbc_postButton.gridy	= 3;
 | 
			
		||||
		gbc_postButton.insets = insets;
 | 
			
		||||
 | 
			
		||||
		postButton.addActionListener((evt) -> { postMessage(); });
 | 
			
		||||
		postButton.setEnabled(false);
 | 
			
		||||
		contentPane.add(postButton, gbc_postButton);
 | 
			
		||||
 | 
			
		||||
		// Settings Button
 | 
			
		||||
@@ -552,6 +557,7 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
		sendMessage(message);
 | 
			
		||||
		// Clear text field
 | 
			
		||||
		messageEnterTextArea.setText("");
 | 
			
		||||
		postButton.setEnabled(false);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -684,4 +690,6 @@ public class ChatWindow extends JFrame {
 | 
			
		||||
					JOptionPane.WARNING_MESSAGE);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private void checkPostButton(String text) { postButton.setEnabled(!text.trim().isBlank()); }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user