From f48ebfccb6d4b3a0a799cddf53540ba3aaa353f1 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Mon, 12 Jun 2006 11:32:21 +0000 Subject: [PATCH] ChatWindow conversation panel line wrapping. --- .../main/message/ChatConversationPanel.java | 5 +- .../impl/gui/utils/SIPCommHTMLEditorKit.java | 47 ++++++++++++++----- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java b/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java index f00a5a537..3c89b8c72 100755 --- a/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java @@ -8,6 +8,7 @@ package net.java.sip.communicator.impl.gui.main.message; import java.awt.BasicStroke; +import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; @@ -128,7 +129,7 @@ public ChatConversationPanel(ChatPanel chatPanel) { this.chatEditorPane.addHyperlinkListener(this); this.chatEditorPane.addMouseListener(this); - + this.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); this.setWheelScrollingEnabled(true); @@ -138,7 +139,7 @@ public ChatConversationPanel(ChatPanel chatPanel) { this.getVerticalScrollBar().setUnitIncrement(30); this.setHorizontalScrollBarPolicy( - JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); ToolTipManager.sharedInstance().registerComponent(chatEditorPane); diff --git a/src/net/java/sip/communicator/impl/gui/utils/SIPCommHTMLEditorKit.java b/src/net/java/sip/communicator/impl/gui/utils/SIPCommHTMLEditorKit.java index a5d9e81d4..b7f27cc65 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/SIPCommHTMLEditorKit.java +++ b/src/net/java/sip/communicator/impl/gui/utils/SIPCommHTMLEditorKit.java @@ -7,14 +7,19 @@ package net.java.sip.communicator.impl.gui.utils; +import javax.swing.SizeRequirements; import javax.swing.text.Document; import javax.swing.text.Element; +import javax.swing.text.LabelView; import javax.swing.text.StyleConstants; import javax.swing.text.View; import javax.swing.text.ViewFactory; import javax.swing.text.html.HTML; import javax.swing.text.html.HTMLDocument; import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.ImageView; +import javax.swing.text.html.InlineView; +import javax.swing.text.html.ParagraphView; import javax.swing.text.html.StyleSheet; /** @@ -30,25 +35,45 @@ public ViewFactory getViewFactory() { return new HTMLFactoryX(); } - public static class HTMLFactoryX extends HTMLFactory + static class HTMLFactoryX extends HTMLFactory implements ViewFactory { public View create(Element elem) { - Object o = elem.getAttributes().getAttribute( - StyleConstants.NameAttribute); + View v=super.create(elem); - if (o instanceof HTML.Tag) { - - HTML.Tag kind = (HTML.Tag) o; - - if (kind == HTML.Tag.IMG) - return new SIPCommImageView(elem); + if(v instanceof ImageView){ + return new SIPCommImageView(elem); } - - return super.create(elem); + else if (v instanceof ParagraphView) { + return new ParagraphViewX(elem); + } + + return v; } } + + static class ParagraphViewX extends ParagraphView { + public ParagraphViewX(Element elem) { + super(elem); + } + + protected SizeRequirements calculateMinorAxisRequirements ( + int axis, SizeRequirements r) { + if (r == null) { + r = new SizeRequirements(); + } + float pref = layoutPool.getPreferredSpan(axis); + float min = layoutPool.getMinimumSpan(axis); + // Don't include insets, Box.getXXXSpan will include them. + r.minimum = (int)min; + r.preferred = Math.max(r.minimum, (int) pref); + r.maximum = Short.MAX_VALUE; + r.alignment = 0.5f; + return r; + } + } + /** * Create an uninitialized text storage model