1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 package com.buckosoft.fibs.BuckoFIBS.gui;
54
55 import java.awt.Color;
56
57 import javax.swing.JTextPane;
58 import javax.swing.text.BadLocationException;
59 import javax.swing.text.Style;
60 import javax.swing.text.StyleConstants;
61 import javax.swing.text.StyleContext;
62 import javax.swing.text.StyledDocument;
63
64
65
66
67
68
69
70 public class SystemMessagesTextPane extends JTextPane {
71 private static final long serialVersionUID = 1L;
72
73
74 public static final int NORMAL = 0;
75
76 public static final int NETWORKIN = 1;
77
78 public static final int NETWORKOUT = 2;
79
80 public static final int NETWORKMSG = 3;
81 public static final int ITALIC = 4;
82 public static final int BOLD = 5;
83 public static final int LARGE = 6;
84 public static final int DEBUG = 7;
85
86 public static final int ERROR = 8;
87
88 private static final int LAST = 9;
89
90 private StyledDocument document;
91
92 private Style[] styles = new Style[LAST];
93
94
95
96 public SystemMessagesTextPane() {
97 document = this.getStyledDocument();
98 addStylesToDocument(document);
99 initialize();
100 }
101
102
103
104
105
106 private void initialize() {
107
108 }
109
110 private void addStylesToDocument(StyledDocument doc) {
111
112 Style def = StyleContext.getDefaultStyleContext().getStyle(
113 StyleContext.DEFAULT_STYLE);
114
115 styles[NORMAL] = doc.addStyle("regular", def);
116
117 styles[ITALIC] = doc.addStyle("italic", styles[NORMAL]);
118 StyleConstants.setItalic(styles[ITALIC], true);
119
120 styles[BOLD] = doc.addStyle("bold", styles[NORMAL]);
121 StyleConstants.setBold(styles[BOLD], true);
122
123 styles[LARGE] = doc.addStyle("large", styles[NORMAL]);
124 StyleConstants.setFontSize(styles[LARGE], 16);
125
126 styles[NETWORKIN] = doc.addStyle("fixed", styles[NORMAL]);
127 StyleConstants.setFontFamily(styles[NETWORKIN], "Monospaced");
128 StyleConstants.setForeground(styles[NETWORKIN], new Color(0,153,255));
129
130 styles[NETWORKOUT] = doc.addStyle("fixed", styles[NORMAL]);
131 StyleConstants.setFontFamily(styles[NETWORKOUT], "Monospaced");
132 StyleConstants.setForeground(styles[NETWORKOUT], new Color(153,126,87));
133
134 styles[NETWORKMSG] = doc.addStyle("fixed", styles[NORMAL]);
135 StyleConstants.setFontFamily(styles[NETWORKMSG], "Monospaced");
136
137 styles[DEBUG] = doc.addStyle("debug", styles[NORMAL]);
138 StyleConstants.setFontFamily(styles[DEBUG], "Monospaced");
139 StyleConstants.setForeground(styles[DEBUG], new Color(151,51,189));
140
141 styles[ERROR] = doc.addStyle("fixed", styles[NORMAL]);
142 StyleConstants.setFontFamily(styles[ERROR], "Monospaced");
143 StyleConstants.setForeground(styles[ERROR], Color.red);
144
145 }
146
147
148
149
150 public void appendMessage(String s) {
151 try {
152 this.document.insertString(this.document.getLength(), s, styles[NORMAL]);
153 } catch (BadLocationException e) {
154 e.printStackTrace();
155 }
156 }
157
158
159
160
161
162 public void appendMessage(int style, String s) {
163 if (style < 0 || style > LAST)
164 style = NORMAL;
165 try {
166 this.document.insertString(this.document.getLength(), s, styles[style]);
167 } catch (BadLocationException e) {
168 e.printStackTrace();
169 }
170 }
171 }