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/03/19 15:04:26 UTC
svn commit: r925220 - in /pivot/trunk/wtk/src/org/apache/pivot/wtk:
DesktopApplicationContext.java effects/WatermarkDecorator.java
media/drawing/Text.java
Author: gbrown
Date: Fri Mar 19 14:04:26 2010
New Revision: 925220
URL: http://svn.apache.org/viewvc?rev=925220&view=rev
Log:
Apply patch to allow host frame title to update when top-most window changes; add support for derived fonts to WatermarkDecorator and Text classes.
Modified:
pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/effects/WatermarkDecorator.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/media/drawing/Text.java
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java?rev=925220&r1=925219&r2=925220&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java Fri Mar 19 14:04:26 2010
@@ -242,6 +242,18 @@ public final class DesktopApplicationCon
private static Runnable updateFrameTitleBarCallback = null;
+ private static final WindowListener TOP_WINDOW_LISTENER = new WindowListener.Adapter() {
+ @Override
+ public void titleChanged(Window window, String previousTitle) {
+ updateFrameTitleBar(window.getRootOwner());
+ }
+
+ @Override
+ public void iconChanged(Window window, Image previousIcon) {
+ updateFrameTitleBar(window.getRootOwner());
+ }
+ };
+
private static final String DEFAULT_HOST_FRAME_TITLE = "Apache Pivot";
private static final String X_ARGUMENT = "x";
@@ -441,25 +453,29 @@ public final class DesktopApplicationCon
}
@Override
- public void componentsRemoved(Container container, int index,
- Sequence<Component> removed) {
- if (index == container.getLength()) {
- topWindowChanged((Display)container,
- (Window)removed.get(removed.getLength() - 1));
+ public void componentsRemoved(Container container, int index, Sequence<Component> removed) {
+ int n = removed.getLength();
+
+ if (index + n == container.getLength()) {
+ topWindowChanged((Display)container, (Window)removed.get(n - 1));
}
}
@Override
public void componentMoved(Container container, int from, int to) {
int n = container.getLength();
- if (from == n) {
+
+ if (from == n - 1) {
+ // The top-most window was moved elsewhere
topWindowChanged((Display)container, (Window)container.get(from));
- } else if (to == n) {
- topWindowChanged((Display)container, (Window)container.get(n - 1));
+ } else if (to == n - 1) {
+ // A new window was moved to top
+ topWindowChanged((Display)container,
+ (to > 0) ? (Window)container.get(to - 1) : null);
}
}
- private void topWindowChanged(Display display, Window previousTopWindow) {
+ private void topWindowChanged(Display display, final Window previousTopWindow) {
if (updateFrameTitleBarCallback == null) {
updateFrameTitleBarCallback = new Runnable() {
@Override
@@ -471,9 +487,16 @@ public final class DesktopApplicationCon
windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
windowedHostFrame.setIconImage(null);
} else {
+ if (previousTopWindow != null) {
+ Window previousRootOwner = previousTopWindow.getRootOwner();
+ previousRootOwner.getWindowListeners().remove(TOP_WINDOW_LISTENER);
+ }
+
Window topWindow = (Window)display.get(n - 1);
Window rootOwner = topWindow.getRootOwner();
updateFrameTitleBar(rootOwner);
+
+ rootOwner.getWindowListeners().add(TOP_WINDOW_LISTENER);
}
updateFrameTitleBarCallback = null;
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/effects/WatermarkDecorator.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/effects/WatermarkDecorator.java?rev=925220&r1=925219&r2=925220&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/effects/WatermarkDecorator.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/effects/WatermarkDecorator.java Fri Mar 19 14:04:26 2010
@@ -22,6 +22,8 @@ import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.net.URL;
+import org.apache.pivot.serialization.JSONSerializer;
+import org.apache.pivot.serialization.SerializationException;
import org.apache.pivot.util.ThreadUtilities;
import org.apache.pivot.util.concurrent.TaskExecutionException;
import org.apache.pivot.wtk.ApplicationContext;
@@ -31,6 +33,7 @@ import org.apache.pivot.wtk.BoxPane;
import org.apache.pivot.wtk.ImageView;
import org.apache.pivot.wtk.Label;
import org.apache.pivot.wtk.Orientation;
+import org.apache.pivot.wtk.Theme;
import org.apache.pivot.wtk.VerticalAlignment;
import org.apache.pivot.wtk.media.Image;
@@ -142,6 +145,10 @@ public class WatermarkDecorator implemen
* This decorator's font
*/
public void setFont(Font font) {
+ if (font == null) {
+ throw new IllegalArgumentException("font is null.");
+ }
+
label.getStyles().put("font", font);
validate();
}
@@ -153,7 +160,19 @@ public class WatermarkDecorator implemen
* This decorator's font
*/
public final void setFont(String font) {
- setFont(Font.decode(font));
+ if (font == null) {
+ throw new IllegalArgumentException("font is null.");
+ }
+
+ if (font.startsWith("{")) {
+ try {
+ setFont(Theme.deriveFont(JSONSerializer.parseMap(font)));
+ } catch (SerializationException exception) {
+ throw new IllegalArgumentException(exception);
+ }
+ } else {
+ setFont(Font.decode(font));
+ }
}
/**
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/media/drawing/Text.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/drawing/Text.java?rev=925220&r1=925219&r2=925220&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/media/drawing/Text.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/media/drawing/Text.java Fri Mar 19 14:04:26 2010
@@ -29,10 +29,13 @@ import java.awt.geom.Rectangle2D;
import java.text.StringCharacterIterator;
import org.apache.pivot.collections.ArrayList;
+import org.apache.pivot.serialization.JSONSerializer;
+import org.apache.pivot.serialization.SerializationException;
import org.apache.pivot.util.ListenerList;
import org.apache.pivot.wtk.Bounds;
import org.apache.pivot.wtk.HorizontalAlignment;
import org.apache.pivot.wtk.Platform;
+import org.apache.pivot.wtk.Theme;
/**
* Shape representing a block of text.
@@ -117,7 +120,15 @@ public class Text extends Shape {
throw new IllegalArgumentException("font is null.");
}
- setFont(Font.decode(font));
+ if (font.startsWith("{")) {
+ try {
+ setFont(Theme.deriveFont(JSONSerializer.parseMap(font)));
+ } catch (SerializationException exception) {
+ throw new IllegalArgumentException(exception);
+ }
+ } else {
+ setFont(Font.decode(font));
+ }
}
public int getWidth() {