mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-12-01 12:27:58 +00:00
Memory work.
git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@9261 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
@ -21,7 +21,6 @@ import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
|
||||
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.Action;
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JMenuItem;
|
||||
@ -41,6 +40,7 @@ import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Font;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
@ -53,7 +53,7 @@ import java.util.StringTokenizer;
|
||||
* The ChatArea class handles proper chat text formatting such as url handling. Use ChatArea for proper
|
||||
* formatting of bold, italics, underlined and urls.
|
||||
*/
|
||||
public class ChatArea extends JTextPane implements MouseListener, MouseMotionListener {
|
||||
public class ChatArea extends JTextPane implements MouseListener, MouseMotionListener, ActionListener {
|
||||
/**
|
||||
* The SimpleAttributeSet used within this instance of JTextPane.
|
||||
*/
|
||||
@ -99,55 +99,24 @@ public class ChatArea extends JTextPane implements MouseListener, MouseMotionLis
|
||||
public ChatArea() {
|
||||
emoticonManager = EmoticonManager.getInstance();
|
||||
|
||||
// Set Default Font
|
||||
// Set Default Font
|
||||
final LocalPreferences pref = SettingsManager.getLocalPreferences();
|
||||
int fs = pref.getChatRoomFontSize();
|
||||
fontSize = fs;
|
||||
setFontSize(fs);
|
||||
|
||||
// Cut Action
|
||||
final Action cutAction = new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
String selectedText = getSelectedText();
|
||||
replaceSelection("");
|
||||
SparkManager.setClipboard(selectedText);
|
||||
}
|
||||
};
|
||||
cutAction.putValue(Action.NAME, "Cut");
|
||||
|
||||
// Copy Action
|
||||
final Action copyAction = new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
SparkManager.setClipboard(getSelectedText());
|
||||
}
|
||||
};
|
||||
copyAction.putValue(Action.NAME, "Copy");
|
||||
cutMenu = new JMenuItem("Cut");
|
||||
cutMenu.addActionListener(this);
|
||||
|
||||
// Paste Action
|
||||
final Action pasteAction = new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
String text = SparkManager.getClipboard();
|
||||
if (text != null) {
|
||||
replaceSelection(text);
|
||||
}
|
||||
}
|
||||
};
|
||||
pasteAction.putValue(Action.NAME, "Paste");
|
||||
copyMenu = new JMenuItem("Copy");
|
||||
copyMenu.addActionListener(this);
|
||||
|
||||
// Select All Action
|
||||
Action selectAllAction = new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
requestFocus();
|
||||
selectAll();
|
||||
}
|
||||
};
|
||||
selectAllAction.putValue(Action.NAME, "Select All");
|
||||
pasteMenu = new JMenuItem("Paste");
|
||||
pasteMenu.addActionListener(this);
|
||||
|
||||
|
||||
cutMenu = new JMenuItem(cutAction);
|
||||
copyMenu = new JMenuItem(copyAction);
|
||||
pasteMenu = new JMenuItem(pasteAction);
|
||||
selectAll = new JMenuItem(selectAllAction);
|
||||
selectAll = new JMenuItem("Select All");
|
||||
selectAll.addActionListener(this);
|
||||
|
||||
// Set Default Font
|
||||
setFont(new Font("Dialog", Font.PLAIN, 12));
|
||||
@ -157,7 +126,7 @@ public class ChatArea extends JTextPane implements MouseListener, MouseMotionLis
|
||||
|
||||
getActionMap().put("cut", new AbstractAction("cut") {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
cutAction.actionPerformed(evt);
|
||||
cutAction();
|
||||
}
|
||||
});
|
||||
|
||||
@ -173,7 +142,7 @@ public class ChatArea extends JTextPane implements MouseListener, MouseMotionLis
|
||||
|
||||
getActionMap().put("paste", new AbstractAction("paste") {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
pasteAction.actionPerformed(evt);
|
||||
pasteAction();
|
||||
}
|
||||
});
|
||||
|
||||
@ -696,4 +665,39 @@ public class ChatArea extends JTextPane implements MouseListener, MouseMotionLis
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (e.getSource() == cutMenu) {
|
||||
cutAction();
|
||||
}
|
||||
else if (e.getSource() == copyMenu) {
|
||||
SparkManager.setClipboard(getSelectedText());
|
||||
}
|
||||
else if (e.getSource() == pasteMenu) {
|
||||
pasteAction();
|
||||
}
|
||||
else if (e.getSource() == selectAll) {
|
||||
requestFocus();
|
||||
selectAll();
|
||||
}
|
||||
}
|
||||
|
||||
private void cutAction() {
|
||||
String selectedText = getSelectedText();
|
||||
replaceSelection("");
|
||||
SparkManager.setClipboard(selectedText);
|
||||
}
|
||||
|
||||
private void pasteAction() {
|
||||
String text = SparkManager.getClipboard();
|
||||
if (text != null) {
|
||||
replaceSelection(text);
|
||||
}
|
||||
}
|
||||
|
||||
protected void releaseResources() {
|
||||
getActionMap().remove("copy");
|
||||
getActionMap().remove("cut");
|
||||
getActionMap().remove("paste");
|
||||
}
|
||||
}
|
||||
@ -246,7 +246,7 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
// Add Key Listener to Send Field
|
||||
chatEditorKeyListener = new KeyAdapter() {
|
||||
public void keyPressed(KeyEvent e) {
|
||||
checkForEnter(e);
|
||||
checkForEnter(e);
|
||||
}
|
||||
};
|
||||
|
||||
@ -605,6 +605,7 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
|
||||
getTranscriptWindow().removeMouseListener(transcriptWindowMouseListener);
|
||||
getChatInputEditor().removeKeyListener(chatEditorKeyListener);
|
||||
|
||||
textScroller.getViewport().remove(transcriptWindow);
|
||||
|
||||
// Remove Connection Listener
|
||||
SparkManager.getConnection().removeConnectionListener(this);
|
||||
|
||||
@ -23,21 +23,6 @@ import org.jivesoftware.spark.util.log.Log;
|
||||
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
|
||||
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Font;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.Action;
|
||||
import javax.swing.JComponent;
|
||||
@ -53,6 +38,21 @@ import javax.swing.text.Style;
|
||||
import javax.swing.text.StyleConstants;
|
||||
import javax.swing.text.StyledDocument;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Font;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The <CODE>TranscriptWindow</CODE> class. Provides a default implementation
|
||||
* of a Chat Window. In general, extensions could override this class
|
||||
@ -440,7 +440,7 @@ public class TranscriptWindow extends ChatArea implements ContextMenuListener {
|
||||
writer.write(buf.toString());
|
||||
writer.close();
|
||||
JOptionPane.showMessageDialog(SparkManager.getMainWindow(), "Chat transcript has been saved.",
|
||||
"Chat Transcript Saved", JOptionPane.INFORMATION_MESSAGE);
|
||||
"Chat Transcript Saved", JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
@ -451,12 +451,15 @@ public class TranscriptWindow extends ChatArea implements ContextMenuListener {
|
||||
}
|
||||
|
||||
public void cleanup() {
|
||||
super.releaseResources();
|
||||
|
||||
clear();
|
||||
|
||||
removeMouseListener(this);
|
||||
removeMouseMotionListener(this);
|
||||
|
||||
removeContextMenuListener(this);
|
||||
getActionMap().remove("copy");
|
||||
}
|
||||
|
||||
|
||||
@ -471,8 +474,9 @@ public class TranscriptWindow extends ChatArea implements ContextMenuListener {
|
||||
|
||||
/**
|
||||
* Adds Print and Clear actions.
|
||||
*
|
||||
* @param object the TransferWindow
|
||||
* @param popup the popup menu to add to.
|
||||
* @param popup the popup menu to add to.
|
||||
*/
|
||||
public void poppingUp(final Object object, JPopupMenu popup) {
|
||||
Action printAction = new AbstractAction() {
|
||||
|
||||
Reference in New Issue
Block a user