package call.gui; import java.awt.Color; import javax.swing.JTextPane; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultStyledDocument; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; import call.Contact; import call.LogProvider; import call.MessageOutput; import call.Util; public class JTextPaneMessageOutput implements LogProvider, MessageOutput { @SuppressWarnings("unused") private final Contact contact; private final JTextPane area; public JTextPaneMessageOutput(Contact contact, JTextPane area) { super(); this.contact = contact; this.area = area; Util.setMessageOutput(contact, this); } @Override public void append(String str, Color c) { StyleContext sc = StyleContext.getDefaultStyleContext(); AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c); aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Sans"); aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED); /* * int len = area.getDocument().getLength(); area.setCaretPosition(len); * area.setCharacterAttributes(aset, false); area.replaceSelection(str); */ DefaultStyledDocument document = (DefaultStyledDocument) area.getDocument(); try { if (area.getText().length() < 3) area.setText(""); // document.insertString(0, str, aset); // else document.insertString(document.getEndPosition().getOffset() - 1, str, aset); } catch (BadLocationException e) {} } @Override public String getLog() { return area.getText(); } @Override public void close() {} }