You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/02/03 02:38:06 UTC
svn commit: r905861 - in /pivot/trunk:
wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java
wtk/src/org/apache/pivot/wtk/Tooltip.java
wtk/src/org/apache/pivot/wtk/TooltipListener.java
wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
Author: gbrown
Date: Wed Feb 3 01:38:05 2010
New Revision: 905861
URL: http://svn.apache.org/viewvc?rev=905861&view=rev
Log:
Allow tooltips to contain arbitrary content.
Removed:
pivot/trunk/wtk/src/org/apache/pivot/wtk/TooltipListener.java
Modified:
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/Tooltip.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java?rev=905861&r1=905860&r2=905861&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java Wed Feb 3 01:38:05 2010
@@ -17,21 +17,20 @@
package org.apache.pivot.wtk.skin.terra;
import java.awt.Color;
+import java.awt.Graphics2D;
import org.apache.pivot.util.Vote;
-import org.apache.pivot.wtk.Border;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.ComponentKeyListener;
import org.apache.pivot.wtk.Container;
import org.apache.pivot.wtk.ContainerMouseListener;
+import org.apache.pivot.wtk.Dimensions;
import org.apache.pivot.wtk.Display;
+import org.apache.pivot.wtk.GraphicsUtilities;
import org.apache.pivot.wtk.Insets;
import org.apache.pivot.wtk.Keyboard;
-import org.apache.pivot.wtk.Label;
import org.apache.pivot.wtk.Mouse;
-import org.apache.pivot.wtk.Theme;
import org.apache.pivot.wtk.Tooltip;
-import org.apache.pivot.wtk.TooltipListener;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtk.effects.DropShadowDecorator;
import org.apache.pivot.wtk.effects.Transition;
@@ -41,12 +40,7 @@
/**
* Tooltip skin.
*/
-public class TerraTooltipSkin extends WindowSkin implements TooltipListener {
- private Label label = new Label();
- private Border border = new Border();
-
- private boolean fade = true;
-
+public class TerraTooltipSkin extends WindowSkin {
private ContainerMouseListener displayMouseListener = new ContainerMouseListener() {
@Override
public boolean mouseMove(Container container, int x, int y) {
@@ -90,28 +84,20 @@
};
private Transition closeTransition = null;
-
private DropShadowDecorator dropShadowDecorator = null;
+ private boolean fade = true;
+
+ private Color borderColor;
+ private Insets padding;
private static final int CLOSE_TRANSITION_DURATION = 500;
private static final int CLOSE_TRANSITION_RATE = 30;
public TerraTooltipSkin() {
- setBackgroundColor((Color)null);
+ setBackgroundColor(new Color(0xff, 0xff, 0xe0, 0xf0));
- // Add the label to the border
- border.setContent(label);
-
- // Apply the default styles
- TerraTheme theme = (TerraTheme)Theme.getTheme();
- Component.StyleDictionary labelStyles = label.getStyles();
- labelStyles.put("font", theme.getFont());
- labelStyles.put("color", Color.BLACK);
-
- Component.StyleDictionary borderStyles = border.getStyles();
- borderStyles.put("backgroundColor", new Color(0xff, 0xff, 0xe0, 0xf0));
- borderStyles.put("color", Color.BLACK);
- borderStyles.put("padding", new Insets(2));
+ borderColor = Color.BLACK;
+ padding = new Insets(2);
}
@Override
@@ -122,11 +108,90 @@
dropShadowDecorator = new DropShadowDecorator(5, 2, 2);
tooltip.getDecorators().add(dropShadowDecorator);
+ }
+
+ @Override
+ public int getPreferredWidth(int height) {
+ int preferredWidth = 0;
+
+ Tooltip tooltip = (Tooltip)getComponent();
+ Component content = tooltip.getContent();
+
+ if (height != -1) {
+ height -= (padding.top + padding.bottom + 2);
+ }
+
+ if (content != null) {
+ preferredWidth = content.getPreferredWidth(height);
+ }
+
+ preferredWidth += (padding.left + padding.right + 2);
+
+ return preferredWidth;
+ }
+
+ @Override
+ public int getPreferredHeight(int width) {
+ int preferredHeight = 0;
+
+ Tooltip tooltip = (Tooltip)getComponent();
+ Component content = tooltip.getContent();
+
+ if (width != -1) {
+ width -= (padding.left + padding.right + 2);
+ }
- tooltip.setContent(border);
- tooltip.getTooltipListeners().add(this);
+ if (content != null) {
+ preferredHeight = content.getPreferredHeight(width);
+ }
+
+ preferredHeight += (padding.top + padding.bottom + 2);
+
+ return preferredHeight;
+ }
+
+ @Override
+ public Dimensions getPreferredSize() {
+ int preferredWidth = 0;
+ int preferredHeight = 0;
- label.setText(tooltip.getText());
+ Tooltip tooltip = (Tooltip)getComponent();
+ Component content = tooltip.getContent();
+
+ if (content != null) {
+ Dimensions contentSize = content.getPreferredSize();
+ preferredWidth = contentSize.width;
+ preferredHeight = contentSize.height;
+ }
+
+ preferredWidth += (padding.left + padding.right + 2);
+ preferredHeight += (padding.top + padding.bottom + 2);
+
+ return new Dimensions(preferredWidth, preferredHeight);
+ }
+
+ @Override
+ public void layout() {
+ Tooltip tooltip = (Tooltip)getComponent();
+ Component content = tooltip.getContent();
+
+ if (content != null) {
+ int contentWidth = Math.max(getWidth() - (padding.left + padding.right + 2), 0);
+ int contentHeight = Math.max(getHeight() - (padding.top + padding.bottom + 2), 0);
+ content.setSize(contentWidth, contentHeight);
+ content.setLocation(padding.left + 1, padding.top + 1);
+ }
+ }
+
+ @Override
+ public void paint(Graphics2D graphics) {
+ super.paint(graphics);
+
+ int width = getWidth();
+ int height = getHeight();
+
+ graphics.setColor(borderColor);
+ GraphicsUtilities.drawRect(graphics, 0, 0, width, height);
}
@Override
@@ -185,9 +250,4 @@
closeTransition = null;
}
-
- @Override
- public void textChanged(Tooltip tooltip, String previousText) {
- label.setText(tooltip.getText());
- }
}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Tooltip.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Tooltip.java?rev=905861&r1=905860&r2=905861&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Tooltip.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Tooltip.java Wed Feb 3 01:38:05 2010
@@ -16,47 +16,19 @@
*/
package org.apache.pivot.wtk;
-import org.apache.pivot.util.ListenerList;
-
/**
* Window representing a "tooltip". Tooltips are used to provide additional
* context information to a user. A tooltip generally appears after a certain
* amount of time has passed and closes when the user moves the mouse.
*/
public class Tooltip extends Window {
- private static class TooltipListenerList extends ListenerList<TooltipListener>
- implements TooltipListener {
- @Override
- public void textChanged(Tooltip tooltip, String previousText) {
- for (TooltipListener listener : this) {
- listener.textChanged(tooltip, previousText);
- }
- }
+ public Tooltip() {
+ this(null);
}
- private String text = null;
-
- private TooltipListenerList tooltipListeners = new TooltipListenerList();
+ public Tooltip(Component content) {
+ super(content);
- public Tooltip(String text) {
- setText(text);
installThemeSkin(Tooltip.class);
}
-
- public String getText() {
- return text;
- }
-
- public void setText(String text) {
- String previousText = this.text;
-
- if (previousText != text) {
- this.text = text;
- tooltipListeners.textChanged(this, previousText);
- }
- }
-
- public ListenerList<TooltipListener> getTooltipListeners() {
- return tooltipListeners;
- }
}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java?rev=905861&r1=905860&r2=905861&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java Wed Feb 3 01:38:05 2010
@@ -37,6 +37,7 @@
import org.apache.pivot.wtk.DragSource;
import org.apache.pivot.wtk.DropTarget;
import org.apache.pivot.wtk.Keyboard;
+import org.apache.pivot.wtk.Label;
import org.apache.pivot.wtk.MenuHandler;
import org.apache.pivot.wtk.Mouse;
import org.apache.pivot.wtk.Point;
@@ -59,7 +60,7 @@
// The tooltip text may have been cleared while the timeout was
// outstanding; if so, don't display the tooltip
if (tooltipText != null) {
- final Tooltip tooltip = new Tooltip(tooltipText);
+ final Tooltip tooltip = new Tooltip(new Label(tooltipText));
Point location = component.getDisplay().getMouseLocation();
int x = location.x;