|
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);
+ }
}
|