📄 autoscrolltextpane.java
字号:
package edu.ou.kmi.buddyspace.utils;
/*
* AutoScrollTextPane.java
*
* Project: BuddySpace
* (C) Copyright Knowledge Media Institute 2002
*
*
* Created on 8 November 2002, 14:45
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.util.*;
/**
* <code>AutoScrollTextPane</code> is <code>JTextPane</code> subclass which
* provides styles for IM and automatically scrolls to the top or bottom.
*
* @author Jiri Komzak, Knowledge Media Institute, Open University, United Kingdom
*/
public class AutoScrollTextPane extends JTextPane {
protected Document doc;
protected boolean autoScrollDown = true;
/** styles */
public static final String REGULAR_STYLE = "regular";
protected static final String NICK_STYLE = "nick";
public static final String MY_NICK_STYLE = "myNick";
public static final String BUDDY_NICK_STYLE = "buddyNick";
public static final String PRESENCE_STYLE = "presence";
public static final String TIME_STAMP_STYLE = "timeStamp";
public static final String SMILEYS_STYLE = "smileys";
public static final String URL_STYLE = "url";
public static final String URL_DESC_STYLE = "urlDesc";
public static final String HTML_STYLE = "html";
public static final String SENT_XML_STYLE = "sentXML";
public static final String RECEIVED_XML_STYLE = "receivedXML";
public static final String SEND_ERR_XML_STYLE = "sendErrXML";
/** hashtables for conversion between emoticons and their icons */
public static Hashtable smiliesHashtable = new Hashtable();
public static Hashtable smiliesBackHashtable = new Hashtable();
/** array of emoticon strings */
public static final String[] smileyStrs = {":-)",
":)",
":-(",
":((",
":-O",
":-P",
":p",
";-)",
";)",
":-|",
":|",
"(H)",
"(h)",
"B-)",
":'(",
":(",
"X-(",
":-@",
":@",
":D",
":-D",
":d",
"(F)",
"(f)",
"@};-",
"(B)",
"(b)",
"(D)",
"(d)",
"(C)",
"(c)",
"~o)",
"(Y)",
"(y)",
"(N)",
"(n)",
":o)",
":'-("};
/** array of emoticon icon filenames */
public static final String[] smileyFiles = {"images/happy.gif",
"images/sad.gif",
"images/shock.gif",
"images/tongue.gif",
"images/wink.gif",
"images/straight_face.gif",
"images/cool.gif",
"images/crying.gif",
"images/angry.gif",
"images/big_grin2.gif",
"images/flower.gif",
"images/beer2.gif",
"images/beer.gif",
"images/tea.gif",
"images/thumbs_up.gif",
"images/thumbs_down.gif",
"images/clown.gif",};
/** array of emoticon icons */
public static ImageIcon[] smileyIcons;
/**
* Constructor defining if the pane will automatically scroll to
* the top or bottom.
*/
public AutoScrollTextPane(boolean autoScrollDown) {
super();
setEditable(false);
doc = getDocument();
this.autoScrollDown = autoScrollDown;
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
scroll();
}
});
initSmilies();
initStyles();
}
/** Initiates smilies hashtable */
protected void initSmilies() {
// inits smiley icons
smileyIcons = new ImageIcon[smileyFiles.length];
for (int i=0; i<smileyFiles.length; i++)
smileyIcons[i] = new ImageIcon(ClassLoader.getSystemResource(smileyFiles[i]));
// inits smiley hashtable
//happy
smiliesHashtable.put(smileyStrs[0], smileyIcons[0]);
smiliesHashtable.put(smileyStrs[1], smileyIcons[0]);
smiliesBackHashtable.put(smileyIcons[0], smileyStrs[0]);
//sad
smiliesHashtable.put(smileyStrs[2], smileyIcons[1]);
smiliesHashtable.put(smileyStrs[15], smileyIcons[1]);
smiliesBackHashtable.put(smileyIcons[1], smileyStrs[2]);
//shock
smiliesHashtable.put(smileyStrs[4], smileyIcons[2]);
smiliesBackHashtable.put(smileyIcons[2], smileyStrs[4]);
//tongue
smiliesHashtable.put(smileyStrs[5], smileyIcons[3]);
smiliesHashtable.put(smileyStrs[6], smileyIcons[3]);
smiliesBackHashtable.put(smileyIcons[3], smileyStrs[5]);
//wink
smiliesHashtable.put(smileyStrs[7], smileyIcons[4]);
smiliesHashtable.put(smileyStrs[8], smileyIcons[4]);
smiliesBackHashtable.put(smileyIcons[4], smileyStrs[7]);
//straight_face
smiliesHashtable.put(smileyStrs[9], smileyIcons[5]);
smiliesHashtable.put(smileyStrs[10], smileyIcons[5]);
smiliesBackHashtable.put(smileyIcons[5], smileyStrs[9]);
//cool
smiliesHashtable.put(smileyStrs[11], smileyIcons[6]);
smiliesHashtable.put(smileyStrs[12], smileyIcons[6]);
smiliesHashtable.put(smileyStrs[13], smileyIcons[6]);
smiliesBackHashtable.put(smileyIcons[6], smileyStrs[13]);
//crying
smiliesHashtable.put(smileyStrs[14], smileyIcons[7]);
smiliesHashtable.put(smileyStrs[3], smileyIcons[7]);
smiliesHashtable.put(smileyStrs[37], smileyIcons[7]);
smiliesBackHashtable.put(smileyIcons[7], smileyStrs[14]);
//angry
smiliesHashtable.put(smileyStrs[16], smileyIcons[8]);
smiliesHashtable.put(smileyStrs[17], smileyIcons[8]);
smiliesHashtable.put(smileyStrs[18], smileyIcons[8]);
smiliesBackHashtable.put(smileyIcons[8], smileyStrs[16]);
//big_grin2
smiliesHashtable.put(smileyStrs[19], smileyIcons[9]);
smiliesHashtable.put(smileyStrs[20], smileyIcons[9]);
smiliesHashtable.put(smileyStrs[21], smileyIcons[9]);
smiliesBackHashtable.put(smileyIcons[9], smileyStrs[19]);
//flower
smiliesHashtable.put(smileyStrs[22], smileyIcons[10]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -