Added disabling of postButton while String.isBlank() returns true
This commit is contained in:
parent
f08a7a6f5e
commit
376c026b2a
@ -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,39 +116,44 @@ 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);
|
||||||
|
|
||||||
// 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.setBorder(new EmptyBorder(space, space, space, space));
|
||||||
messageList.setSelectionMode(SelectionMode.SINGLE);
|
messageList.setSelectionMode(SelectionMode.SINGLE);
|
||||||
messageList.setSelectionHandler((message, comp, isSelected) -> {
|
messageList.setSelectionHandler((message, comp, isSelected) -> {
|
||||||
final var theme = Settings.getInstance().getCurrentTheme();
|
final var theme = Settings.getInstance().getCurrentTheme();
|
||||||
comp.setBackground(isSelected ? theme.getSelectionColor() : theme.getCellColor());
|
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);
|
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()); }
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user