From: Frederick W. <fre...@us...> - 2012-02-08 18:31:46
|
rails/ui/swing/MessagePanel.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) New commits: commit f9839fa2ddce01e0b850d384fa10613f7de51812 Author: Frederick Weld <fre...@gm...> Date: Wed Feb 8 19:29:33 2012 +0100 Allowed for dynamic line breaks and vertical centering of message panel Main motivation for rework is that the dockable message text might be put in a vertical alignment (of narrow width). For the message panel, new behavior is that - no horizontal scroll bar is used - if panel's width inferior to message label's native width, a line break is inserted into the label text - technically done by using a layout manager and basing the panel's preferred width on the parent scrollpane's one An additional benefit of using the layout manager is that, for the first time since having added the scrollbar to the panel, messages are vertically centered. diff --git a/rails/ui/swing/MessagePanel.java b/rails/ui/swing/MessagePanel.java index 3b3d2cc..ed785de 100644 --- a/rails/ui/swing/MessagePanel.java +++ b/rails/ui/swing/MessagePanel.java @@ -3,6 +3,7 @@ package rails.ui.swing; import java.awt.Color; import java.awt.Dimension; +import java.awt.GridLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -37,6 +38,10 @@ public class MessagePanel extends JPanel { setBackground(background); setBorder(new EmptyBorder(0,0,0,0)); + //add layout manager + //necessary for auto word-wrap when diminishing width + setLayout(new GridLayout(1,1)); + message = new JLabel(""); message.setBackground(background); message.setVerticalAlignment(SwingConstants.CENTER); @@ -138,5 +143,15 @@ public class MessagePanel extends JPanel { currentDetails = "<BR>" + detailText; updateMessageText(); } - + + @Override + public Dimension getPreferredSize() { + Dimension nativeSize = super.getPreferredSize(); + if (parentSlider == null) return nativeSize; + int width = parentSlider.getSize().width + - parentSlider.getVerticalScrollBar().getWidth() + - 5; + if (width <= 0) width = 1; + return new Dimension (width , nativeSize.height); + } } |