22 package com.realtime.crossfire.jxclient.gui.label;
24 import java.awt.Color;
26 import java.awt.FontMetrics;
27 import java.awt.Graphics;
28 import java.util.Stack;
29 import javax.swing.text.MutableAttributeSet;
30 import javax.swing.text.html.HTML.Tag;
31 import javax.swing.text.html.HTMLEditorKit.ParserCallback;
32 import org.jetbrains.annotations.NotNull;
40 private final Stack<Font>
fonts =
new Stack<>();
43 private final Stack<Color>
colors =
new Stack<>();
46 private final Graphics
gc;
56 public InternalHTMLRenderer(@NotNull
final Font font, @NotNull
final Color color, @NotNull
final Graphics gc,
final int x,
final int y,
final int borderSize) {
67 public void handleText(@NotNull
final char[] data,
final int pos) {
68 gc.setFont(fonts.peek());
69 gc.setColor(colors.peek());
70 final FontMetrics m = gc.getFontMetrics();
71 final String str =
new String(data);
72 final int w = m.stringWidth(str);
73 gc.drawString(str, x+borderSize, y+borderSize);
78 public void handleStartTag(@NotNull
final Tag t, @NotNull
final MutableAttributeSet a,
final int pos) {
79 if (t.equals(Tag.A)) {
80 fonts.push(fonts.peek());
81 colors.push(Color.YELLOW);
83 }
else if (t.equals(Tag.B)) {
84 fonts.push(fonts.peek().deriveFont(Font.BOLD));
85 colors.push(colors.peek());
86 }
else if (t.equals(Tag.I)) {
87 fonts.push(fonts.peek().deriveFont(Font.ITALIC));
88 colors.push(colors.peek());
89 }
else if (t.equals(Tag.LI)) {
90 fonts.push(fonts.peek());
91 colors.push(colors.peek());
92 gc.setFont(fonts.peek());
93 gc.setColor(colors.peek());
94 final FontMetrics m = gc.getFontMetrics();
96 y += fonts.peek().getSize()+1;
97 final String str =
" - ";
98 final int w = m.stringWidth(str);
99 gc.drawString(str, x+borderSize, y+borderSize);
102 fonts.push(fonts.peek());
103 colors.push(colors.peek());
108 public void handleSimpleTag(@NotNull
final Tag t, @NotNull
final MutableAttributeSet a,
final int pos) {
109 if (t.equals(Tag.BR)) {
110 y += fonts.peek().getSize()+1;
final Stack< Font > fonts
void handleStartTag(@NotNull final Tag t, @NotNull final MutableAttributeSet a, final int pos)
InternalHTMLRenderer(@NotNull final Font font, @NotNull final Color color, @NotNull final Graphics gc, final int x, final int y, final int borderSize)
void handleEndTag(@NotNull final Tag t, final int pos)
final Stack< Color > colors
void handleSimpleTag(@NotNull final Tag t, @NotNull final MutableAttributeSet a, final int pos)
void handleText(@NotNull final char[] data, final int pos)