Added disabling of postButton while String.isBlank() returns true

This commit is contained in:
delvh 2020-03-22 17:20:05 +01:00
parent 156beaf44b
commit ceb50cd01c

View File

@ -4,9 +4,7 @@ import java.awt.*;
import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.StringSelection;
import java.awt.event.*; import java.awt.event.*;
import java.io.IOException; import java.io.IOException;
import java.util.Collection; import java.util.*;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -118,19 +116,28 @@ public class ChatWindow extends JFrame {
gbl_contentPane.columnWidths = new int[] { 1, 1, 1 }; gbl_contentPane.columnWidths = new int[] { 1, 1, 1 };
gbl_contentPane.rowHeights = new int[] { 1, 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.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); contentPane.setLayout(gbl_contentPane);
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 // ContextMenu
Map<String, ActionListener> commands = new HashMap<>() { Map<String, ActionListener> commands = new HashMap<>() {
private static final long serialVersionUID = -2755235774946990126L; private static final long serialVersionUID = -2755235774946990126L;
{ {
put("forward selected message", put("forward selected message", evt -> {
evt -> forwardMessageToMultipleUsers(messageList.getSingleSelectedElement(), final Message selectedMessage = messageList.getSingleSelectedElement();
forwardMessage(selectedMessage,
ContactsChooserDialog ContactsChooserDialog
.showForwardingDialog("Forward selected message to", messageList.getSingleSelectedElement(), client))); .showForwardingDialog("Forward selected message to", null, selectedMessage, localDb.getUsers().values())
.toArray(new User[0]));
});
put("copy", evt -> { put("copy", evt -> {
// TODO should be enhanced to allow also copying of message attachments, // TODO should be enhanced to allow also copying of message attachments,
// especially pictures // especially pictures
@ -143,14 +150,10 @@ public class ChatWindow extends JFrame {
put("quote", evt -> {}); put("quote", evt -> {});
} }
}; };
contextMenu = new ContextMenu(null, messageList, commands, null, null).build(); if (isSelected) {
contextMenu = new ContextMenu(null, comp, 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.show(comp, 0, 0);
}
}); });
scrollPane.setViewportView(messageList); scrollPane.setViewportView(messageList);
@ -180,7 +183,10 @@ public class ChatWindow extends JFrame {
messageEnterTextArea.addInputMethodListener(new InputMethodListener() { messageEnterTextArea.addInputMethodListener(new InputMethodListener() {
@Override @Override
public void inputMethodTextChanged(InputMethodEvent event) { checkMessageTextLength(); } public void inputMethodTextChanged(InputMethodEvent event) {
checkMessageTextLength();
checkPostButton(messageEnterTextArea.getText());
}
@Override @Override
public void caretPositionChanged(InputMethodEvent event) {} public void caretPositionChanged(InputMethodEvent event) {}
@ -191,31 +197,30 @@ public class ChatWindow extends JFrame {
@Override @Override
public void keyReleased(KeyEvent e) { public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER 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(); postMessage();
// Checking if text is too long // Checking if text is too long
checkMessageTextLength(); checkMessageTextLength();
checkPostButton(messageEnterTextArea.getText());
} }
}); });
GridBagConstraints gbc_scrollPaneForTextInput = new GridBagConstraints(); GridBagConstraints gbc_messageEnterTextArea = new GridBagConstraints();
gbc_scrollPaneForTextInput.fill = GridBagConstraints.BOTH; gbc_messageEnterTextArea.fill = GridBagConstraints.BOTH;
gbc_scrollPaneForTextInput.gridx = 1; gbc_messageEnterTextArea.gridx = 1;
gbc_scrollPaneForTextInput.gridy = 3; gbc_messageEnterTextArea.gridy = 3;
gbc_messageEnterTextArea.insets = insets;
gbc_scrollPaneForTextInput.insets = insets; contentPane.add(messageEnterTextArea, gbc_messageEnterTextArea);
contentPane.add(messageEnterTextArea, gbc_scrollPaneForTextInput);
// Post Button // Post Button
GridBagConstraints gbc_postButton = new GridBagConstraints(); GridBagConstraints gbc_postButton = new GridBagConstraints();
gbc_postButton.fill = GridBagConstraints.BOTH; gbc_postButton.fill = GridBagConstraints.BOTH;
gbc_postButton.gridx = 2; gbc_postButton.gridx = 2;
gbc_postButton.gridy = 3; gbc_postButton.gridy = 3;
gbc_postButton.insets = insets; gbc_postButton.insets = insets;
postButton.addActionListener((evt) -> { postMessage(); }); postButton.addActionListener((evt) -> { postMessage(); });
postButton.setEnabled(false);
contentPane.add(postButton, gbc_postButton); contentPane.add(postButton, gbc_postButton);
// Settings Button // Settings Button
@ -552,6 +557,7 @@ public class ChatWindow extends JFrame {
sendMessage(message); sendMessage(message);
// Clear text field // Clear text field
messageEnterTextArea.setText(""); messageEnterTextArea.setText("");
postButton.setEnabled(false);
} }
/** /**
@ -684,4 +690,6 @@ public class ChatWindow extends JFrame {
JOptionPane.WARNING_MESSAGE); JOptionPane.WARNING_MESSAGE);
} }
} }
private void checkPostButton(String text) { postButton.setEnabled(!text.trim().isBlank()); }
} }