Memory work.

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@9261 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro
2007-10-02 20:20:10 +00:00
committed by derek
parent c3c056d8ba
commit 4eac4d1ed6
3 changed files with 71 additions and 62 deletions

View File

@ -21,7 +21,6 @@ import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager; import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
@ -41,6 +40,7 @@ import java.awt.Color;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Font; import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener; 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 * The ChatArea class handles proper chat text formatting such as url handling. Use ChatArea for proper
* formatting of bold, italics, underlined and urls. * 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. * The SimpleAttributeSet used within this instance of JTextPane.
*/ */
@ -105,49 +105,18 @@ public class ChatArea extends JTextPane implements MouseListener, MouseMotionLis
fontSize = fs; fontSize = fs;
setFontSize(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 cutMenu = new JMenuItem("Cut");
final Action copyAction = new AbstractAction() { cutMenu.addActionListener(this);
public void actionPerformed(ActionEvent e) {
SparkManager.setClipboard(getSelectedText());
}
};
copyAction.putValue(Action.NAME, "Copy");
// Paste Action copyMenu = new JMenuItem("Copy");
final Action pasteAction = new AbstractAction() { copyMenu.addActionListener(this);
public void actionPerformed(ActionEvent e) {
String text = SparkManager.getClipboard();
if (text != null) {
replaceSelection(text);
}
}
};
pasteAction.putValue(Action.NAME, "Paste");
// Select All Action pasteMenu = new JMenuItem("Paste");
Action selectAllAction = new AbstractAction() { pasteMenu.addActionListener(this);
public void actionPerformed(ActionEvent e) {
requestFocus();
selectAll();
}
};
selectAllAction.putValue(Action.NAME, "Select All");
selectAll = new JMenuItem("Select All");
cutMenu = new JMenuItem(cutAction); selectAll.addActionListener(this);
copyMenu = new JMenuItem(copyAction);
pasteMenu = new JMenuItem(pasteAction);
selectAll = new JMenuItem(selectAllAction);
// Set Default Font // Set Default Font
setFont(new Font("Dialog", Font.PLAIN, 12)); 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") { getActionMap().put("cut", new AbstractAction("cut") {
public void actionPerformed(ActionEvent evt) { 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") { getActionMap().put("paste", new AbstractAction("paste") {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
pasteAction.actionPerformed(evt); pasteAction();
} }
}); });
@ -696,4 +665,39 @@ public class ChatArea extends JTextPane implements MouseListener, MouseMotionLis
return false; 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");
}
} }

View File

@ -605,6 +605,7 @@ public abstract class ChatRoom extends BackgroundPanel implements ActionListener
getTranscriptWindow().removeMouseListener(transcriptWindowMouseListener); getTranscriptWindow().removeMouseListener(transcriptWindowMouseListener);
getChatInputEditor().removeKeyListener(chatEditorKeyListener); getChatInputEditor().removeKeyListener(chatEditorKeyListener);
textScroller.getViewport().remove(transcriptWindow);
// Remove Connection Listener // Remove Connection Listener
SparkManager.getConnection().removeConnectionListener(this); SparkManager.getConnection().removeConnectionListener(this);

View File

@ -23,21 +23,6 @@ import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager; 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.AbstractAction;
import javax.swing.Action; import javax.swing.Action;
import javax.swing.JComponent; import javax.swing.JComponent;
@ -53,6 +38,21 @@ import javax.swing.text.Style;
import javax.swing.text.StyleConstants; import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument; 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 * The <CODE>TranscriptWindow</CODE> class. Provides a default implementation
* of a Chat Window. In general, extensions could override this class * of a Chat Window. In general, extensions could override this class
@ -451,12 +451,15 @@ public class TranscriptWindow extends ChatArea implements ContextMenuListener {
} }
public void cleanup() { public void cleanup() {
super.releaseResources();
clear(); clear();
removeMouseListener(this); removeMouseListener(this);
removeMouseMotionListener(this); removeMouseMotionListener(this);
removeContextMenuListener(this); removeContextMenuListener(this);
getActionMap().remove("copy");
} }
@ -471,6 +474,7 @@ public class TranscriptWindow extends ChatArea implements ContextMenuListener {
/** /**
* Adds Print and Clear actions. * Adds Print and Clear actions.
*
* @param object the TransferWindow * @param object the TransferWindow
* @param popup the popup menu to add to. * @param popup the popup menu to add to.
*/ */