mirror of
https://github.com/igniterealtime/Spark.git
synced 2026-08-18 02:56:24 +00:00
ChatRoom: initialize fields in declaration where possible
This commit is contained in:
@ -62,6 +62,7 @@ import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import static java.awt.GridBagConstraints.*;
|
||||
import static org.apache.commons.lang3.StringUtils.isBlank;
|
||||
|
||||
/**
|
||||
* The base implementation of all ChatRoom conversations. You would implement
|
||||
@ -69,42 +70,40 @@ import static java.awt.GridBagConstraints.*;
|
||||
*/
|
||||
public abstract class ChatRoom extends BackgroundPanel implements ActionListener, StanzaListener, DocumentListener, ConnectionListener, FocusListener, ContextMenuListener, ChatFrameToFrontListener {
|
||||
private final LocalPreferences pref = SettingsManager.getLocalPreferences();
|
||||
private final JPanel chatPanel = new JPanel(new GridBagLayout());
|
||||
private final JSplitPane splitPane = new JSplitPane();
|
||||
private final JSplitPane verticalSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
||||
|
||||
private final JPanel chatPanel;
|
||||
private final JSplitPane splitPane;
|
||||
private final JSplitPane verticalSplit;
|
||||
private final JLabel notificationLabel = new JLabel();
|
||||
private final TranscriptWindow transcriptWindow = UIComponentRegistry.createTranscriptWindow();
|
||||
private final ChatAreaSendField chatAreaButton = new ChatAreaSendField();
|
||||
private final ChatToolBar toolbar = new ChatToolBar();
|
||||
private final JScrollPane textScroller = new JScrollPane(transcriptWindow);
|
||||
private final JPanel bottomPanel = new JPanel();
|
||||
|
||||
private final JLabel notificationLabel;
|
||||
private final TranscriptWindow transcriptWindow;
|
||||
private final ChatAreaSendField chatAreaButton;
|
||||
private final ChatToolBar toolbar;
|
||||
private final JScrollPane textScroller;
|
||||
private final JPanel bottomPanel;
|
||||
|
||||
private final JPanel editorWrapperBar;
|
||||
private final JPanel editorBarRight;
|
||||
private final JPanel editorBarLeft;
|
||||
private final JPanel chatWindowPanel;
|
||||
private final JPanel editorWrapperBar = new JPanel(new BorderLayout());
|
||||
private final JPanel editorBarRight = new JPanel(new FlowLayout(FlowLayout.RIGHT, 1, 1));
|
||||
private final JPanel editorBarLeft = new JPanel(new FlowLayout(FlowLayout.LEFT, 1, 1));
|
||||
private final JPanel chatWindowPanel = new JPanel();
|
||||
|
||||
private int unreadMessageCount;
|
||||
|
||||
private boolean mousePressed;
|
||||
|
||||
private final CopyOnWriteArrayList<ChatRoomClosingListener> closingListeners = new CopyOnWriteArrayList<>();
|
||||
private final CopyOnWriteArrayList<MessageListener> messageListeners = new CopyOnWriteArrayList<>();
|
||||
private final CopyOnWriteArrayList<FileDropListener> fileDropListeners = new CopyOnWriteArrayList<>();
|
||||
|
||||
private ChatRoomTransferHandler transferHandler;
|
||||
|
||||
private final List<String> packetIDList;
|
||||
private final CopyOnWriteArrayList<MessageListener> messageListeners;
|
||||
private final List<Message> transcript;
|
||||
private final CopyOnWriteArrayList<FileDropListener> fileDropListeners;
|
||||
private final List<String> packetIDList = new ArrayList<>();
|
||||
private final List<Message> transcript = new ArrayList<>();
|
||||
|
||||
private final MouseAdapter transcriptWindowMouseListener;
|
||||
|
||||
private final KeyAdapter chatEditorKeyListener;
|
||||
private ChatFrame _chatFrame;
|
||||
private final RolloverButton _alwaysOnTopItem;
|
||||
private boolean _isAlwaysOnTopActive;
|
||||
|
||||
// Chat state
|
||||
private TimerTask typingTimerTask;
|
||||
@ -112,30 +111,15 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
private ChatState lastNotificationSent;
|
||||
private final long pauseTimePeriod = 2000;
|
||||
private final long inactiveTimePeriod = 120000;
|
||||
protected long lastActivity;
|
||||
protected long lastActivity = System.currentTimeMillis(); // set the last activity to be right now
|
||||
/** Flag to show is the room is stale i.e. it was last active more than defaultChatLengthTimeout (15 min) */
|
||||
boolean stale;
|
||||
|
||||
private static final Color COLOR_BOTTOM_PANEL_BORDER = new Color(197, 213, 230);
|
||||
|
||||
protected ChatRoom() {
|
||||
chatPanel = new JPanel(new GridBagLayout());
|
||||
transcriptWindow = UIComponentRegistry.createTranscriptWindow();
|
||||
splitPane = new JSplitPane();
|
||||
packetIDList = new ArrayList<>();
|
||||
notificationLabel = new JLabel();
|
||||
toolbar = new ChatToolBar();
|
||||
bottomPanel = new JPanel();
|
||||
|
||||
messageListeners = new CopyOnWriteArrayList<>();
|
||||
transcript = new ArrayList<>();
|
||||
|
||||
editorWrapperBar = new JPanel(new BorderLayout());
|
||||
editorBarLeft = new JPanel(new FlowLayout(FlowLayout.LEFT, 1, 1));
|
||||
editorBarRight = new JPanel(new FlowLayout(FlowLayout.RIGHT, 1, 1));
|
||||
editorWrapperBar.add(editorBarLeft, BorderLayout.WEST);
|
||||
editorWrapperBar.add(editorBarRight, BorderLayout.EAST);
|
||||
fileDropListeners = new CopyOnWriteArrayList<>();
|
||||
|
||||
transcriptWindowMouseListener = new MouseAdapter() {
|
||||
@Override
|
||||
@ -161,10 +145,8 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
|
||||
transcriptWindow.addMouseListener(transcriptWindowMouseListener);
|
||||
|
||||
chatAreaButton = new ChatAreaSendField();
|
||||
chatAreaButton.setVisible(true);
|
||||
chatAreaButton.setEnabled(true);
|
||||
textScroller = new JScrollPane(transcriptWindow);
|
||||
textScroller.setBackground(transcriptWindow.getBackground());
|
||||
textScroller.getViewport().setBackground(Color.white);
|
||||
transcriptWindow.setBackground(Color.white);
|
||||
@ -177,7 +159,6 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
splitPane.setBorder(null);
|
||||
splitPane.setOneTouchExpandable(false);
|
||||
// Add Vertical Split Pane
|
||||
verticalSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
||||
add(verticalSplit, new GridBagConstraints(0, 1, 1, 1, 1, 1, CENTER, BOTH, new Insets(0, 0, 0, 0), 0, 0));
|
||||
|
||||
verticalSplit.setBorder(null);
|
||||
@ -185,7 +166,6 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
verticalSplit.setTopComponent(splitPane);
|
||||
|
||||
textScroller.setAutoscrolls(true);
|
||||
|
||||
// For the first 5*150ms we wait for transcript to load and move
|
||||
// ScrollPane to max position if size of ScrollPane changed
|
||||
textScroller.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
|
||||
@ -227,7 +207,6 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
textScroller.getVerticalScrollBar().setBlockIncrement(200);
|
||||
textScroller.getVerticalScrollBar().setUnitIncrement(20);
|
||||
|
||||
chatWindowPanel = new JPanel();
|
||||
chatWindowPanel.setLayout(new GridBagLayout());
|
||||
chatWindowPanel.add(textScroller, new GridBagConstraints(0, 10, 1, 1, 1, 1, WEST, BOTH, new Insets(0, 0, 0, 0), 0, 0));
|
||||
chatWindowPanel.setOpaque(false);
|
||||
@ -293,20 +272,16 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
}
|
||||
});
|
||||
|
||||
_isAlwaysOnTopActive = pref.isChatWindowAlwaysOnTop();
|
||||
_alwaysOnTopItem = UIComponentRegistry.getButtonFactory().createAlwaysOnTop(_isAlwaysOnTopActive);
|
||||
|
||||
_alwaysOnTopItem = UIComponentRegistry.getButtonFactory().createAlwaysOnTop(pref.isChatWindowAlwaysOnTop());
|
||||
_alwaysOnTopItem.addActionListener(actionEvent -> {
|
||||
if (!_isAlwaysOnTopActive) {
|
||||
if (!pref.isChatWindowAlwaysOnTop()) {
|
||||
pref.setChatWindowAlwaysOnTop(true);
|
||||
_chatFrame.setWindowAlwaysOnTop(true);
|
||||
_isAlwaysOnTopActive = true;
|
||||
_alwaysOnTopItem.setIcon(SparkRes.getImageIcon(SparkRes.Icon.FRAME_ALWAYS_ON_TOP_ACTIVE));
|
||||
|
||||
} else {
|
||||
pref.setChatWindowAlwaysOnTop(false);
|
||||
_chatFrame.setWindowAlwaysOnTop(false);
|
||||
_isAlwaysOnTopActive = false;
|
||||
_alwaysOnTopItem.setIcon(SparkRes.getImageIcon(SparkRes.Icon.FRAME_ALWAYS_ON_TOP_DEACTIVE));
|
||||
}
|
||||
});
|
||||
@ -399,7 +374,7 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
private void handleNickNameCompletion() throws ChatRoomNotFoundException {
|
||||
// Search for a name that starts with the same word as the last word in the chat input editor.
|
||||
final String text = getChatInputEditor().getText();
|
||||
if (text == null || text.isEmpty()) {
|
||||
if (isBlank(text)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -58,6 +58,7 @@ import java.text.DateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.isBlank;
|
||||
import static org.apache.commons.lang3.Strings.CS;
|
||||
import static org.jivesoftware.spark.util.StringUtils.replaceMe;
|
||||
|
||||
@ -165,7 +166,6 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
addToRosterButton.addActionListener(this);
|
||||
}
|
||||
|
||||
lastActivity = System.currentTimeMillis();
|
||||
Log.debug("Loaded chat room impl: " + title);
|
||||
}
|
||||
|
||||
@ -222,7 +222,7 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
// Remove control characters
|
||||
text = text.replaceAll("[\\u0001-\\u0008\\u000B-\\u001F]", "");
|
||||
// If the body is empty, just return and do nothing
|
||||
if (!ModelUtil.hasLength(text)) {
|
||||
if (isBlank(text)) {
|
||||
return;
|
||||
}
|
||||
MessageBuilder messageBuilder = StanzaBuilder.buildMessage()
|
||||
@ -236,7 +236,6 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
|
||||
// Fire Message Filters
|
||||
SparkManager.getChatManager().filterOutgoingMessage(this, messageBuilder);
|
||||
|
||||
// Fire Global Filters
|
||||
Message message = messageBuilder.build();
|
||||
SparkManager.getChatManager().fireGlobalMessageSentListeners(this, message);
|
||||
@ -296,7 +295,6 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
private void displaySendMessage( Message message )
|
||||
{
|
||||
lastActivity = System.currentTimeMillis();
|
||||
|
||||
try {
|
||||
getTranscriptWindow().insertMessage( getNickname(), message, ChatManager.TO_COLOR);
|
||||
getChatInputEditor().selectAll();
|
||||
@ -308,7 +306,6 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
catch (Exception ex) {
|
||||
Log.error( "Error sending message", ex);
|
||||
}
|
||||
|
||||
// Notify users that message has been sent
|
||||
fireMessageSent(message);
|
||||
|
||||
@ -324,29 +321,16 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
return roomname;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Icon getTabIcon() {
|
||||
return tabIcon;
|
||||
}
|
||||
|
||||
public void setTabIcon(Icon icon) {
|
||||
this.tabIcon = icon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTabTitle() {
|
||||
return tabTitle;
|
||||
}
|
||||
|
||||
public void setTabTitle(String tabTitle) {
|
||||
this.tabTitle = tabTitle;
|
||||
}
|
||||
|
||||
public void setRoomTitle(String roomTitle) {
|
||||
this.roomTitle = roomTitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRoomTitle() {
|
||||
return roomTitle;
|
||||
@ -379,8 +363,6 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
|
||||
/**
|
||||
* Returns the users full jid (ex. macbeth@jivesoftware.com/spark) or null if user is offline.
|
||||
*
|
||||
* @return the users Full JID.
|
||||
*/
|
||||
public EntityFullJid getJidOnline() {
|
||||
presence = PresenceManager.getPresence(getParticipantJID());
|
||||
@ -639,13 +621,6 @@ public class ChatRoomImpl extends ChatRoom {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current presence of the client this room was created for.
|
||||
*/
|
||||
public Presence getPresence() {
|
||||
return presence;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void authenticated( XMPPConnection xmppConnection, boolean b )
|
||||
{
|
||||
|
||||
@ -229,9 +229,6 @@ public class GroupChatRoom extends ChatRoom {
|
||||
}
|
||||
});
|
||||
|
||||
// set the last activity to be right now
|
||||
lastActivity = System.currentTimeMillis();
|
||||
|
||||
final GroupChatRoomTransferHandler transferHandler = new GroupChatRoomTransferHandler(this);
|
||||
getTranscriptWindow().setTransferHandler(transferHandler);
|
||||
// Adds the Settings and Subject Button to the right Toolbar
|
||||
@ -982,7 +979,6 @@ public class GroupChatRoom extends ChatRoom {
|
||||
if (!chatStatEnabled || !SparkManager.getConnection().isConnected()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// XEP-0085: SHOULD NOT send 'gone' in a MUC.
|
||||
if (state == ChatState.gone) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user