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 2009/03/20 18:10:39 UTC
svn commit: r756633 - in /incubator/pivot/trunk:
core/src/pivot/util/concurrent/ tutorials/src/pivot/tutorials/stocktracker/
wtk/src/pivot/wtk/ wtk/src/pivot/wtk/effects/ wtk/src/pivot/wtk/skin/
wtk/src/pivot/wtk/skin/terra/ wtk/src/pivot/wtkx/
Author: gbrown
Date: Fri Mar 20 17:10:35 2009
New Revision: 756633
URL: http://svn.apache.org/viewvc?rev=756633&view=rev
Log:
Replace setTimeout() and setInterval() with scheduleCallback() and scheduleRecurringCallback(), respectively; pass a Resources argument as a constructor to WTKXSerializer instead of the more generic Dictionary<String, Object>.
Modified:
incubator/pivot/trunk/core/src/pivot/util/concurrent/Dispatcher.java
incubator/pivot/trunk/tutorials/src/pivot/tutorials/stocktracker/StockTracker.java
incubator/pivot/trunk/wtk/src/pivot/wtk/ApplicationContext.java
incubator/pivot/trunk/wtk/src/pivot/wtk/effects/Transition.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/ComponentSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/MenuItemSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/TextAreaSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraPanoramaSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraScrollBarSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraSpinnerSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraTextInputSkin.java
incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java
Modified: incubator/pivot/trunk/core/src/pivot/util/concurrent/Dispatcher.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/core/src/pivot/util/concurrent/Dispatcher.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/core/src/pivot/util/concurrent/Dispatcher.java (original)
+++ incubator/pivot/trunk/core/src/pivot/util/concurrent/Dispatcher.java Fri Mar 20 17:10:35 2009
@@ -28,6 +28,11 @@
* currently dispatched as soon as they are added to the queue. Need to complete
* the pooling implementation.
* <p>
+ * TODO Add a flag that allows the monitor thread to run as a non-daemon, and
+ * define a shutdown() or cancel() method that will stop the thread. This will
+ * allow ApplicationContext to control the dispatcher lifecycle and prevent
+ * the thread from being randomly killed by applets.
+ * <p>
* TODO Is there a way to throw an AbortException when an item is removed
* from the queue, without having to rely on methods like abort()?
*
Modified: incubator/pivot/trunk/tutorials/src/pivot/tutorials/stocktracker/StockTracker.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/pivot/tutorials/stocktracker/StockTracker.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/tutorials/src/pivot/tutorials/stocktracker/StockTracker.java (original)
+++ incubator/pivot/trunk/tutorials/src/pivot/tutorials/stocktracker/StockTracker.java Fri Mar 20 17:10:35 2009
@@ -203,7 +203,7 @@
refreshTable();
- ApplicationContext.setInterval(new Runnable() {
+ ApplicationContext.scheduleRecurringCallback(new Runnable() {
public void run() {
refreshTable();
}
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/ApplicationContext.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/ApplicationContext.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/ApplicationContext.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/ApplicationContext.java Fri Mar 20 17:10:35 2009
@@ -67,39 +67,7 @@
*/
public abstract class ApplicationContext {
/**
- * Resource cache dictionary implementation.
- *
- * @author gbrown
- */
- public static final class ResourceCacheDictionary
- implements Dictionary<URL, Object>, Iterable<URL> {
- public Object get(URL key) {
- return resourceCache.get(key);
- }
-
- public Object put(URL key, Object value) {
- return resourceCache.put(key, value);
- }
-
- public Object remove(URL key) {
- return resourceCache.remove(key);
- }
-
- public boolean containsKey(URL key) {
- return resourceCache.containsKey(key);
- }
-
- public boolean isEmpty() {
- return resourceCache.isEmpty();
- }
-
- public Iterator<URL> iterator() {
- return new ImmutableIterator<URL>(resourceCache.iterator());
- }
- }
-
- /**
- * Native AWT display host.
+ * Native display host.
*
* @author gbrown
*/
@@ -1061,30 +1029,47 @@
}
}
- private static class IntervalTask extends TimerTask {
- private Runnable runnable = null;
+ /**
+ * Resource cache dictionary implementation.
+ *
+ * @author gbrown
+ */
+ public static final class ResourceCacheDictionary
+ implements Dictionary<URL, Object>, Iterable<URL> {
+ public Object get(URL key) {
+ return resourceCache.get(key);
+ }
- public IntervalTask(Runnable runnable) {
- this.runnable = runnable;
+ public Object put(URL key, Object value) {
+ return resourceCache.put(key, value);
}
- public void run() {
- queueCallback(runnable);
+ public Object remove(URL key) {
+ return resourceCache.remove(key);
+ }
+
+ public boolean containsKey(URL key) {
+ return resourceCache.containsKey(key);
+ }
+
+ public boolean isEmpty() {
+ return resourceCache.isEmpty();
+ }
+
+ public Iterator<URL> iterator() {
+ return new ImmutableIterator<URL>(resourceCache.iterator());
}
}
- private static class TimeoutTask extends TimerTask {
+ public static class ScheduledCallback extends TimerTask {
private Runnable runnable = null;
- int timeoutID = -1;
- public TimeoutTask(Runnable runnable, int timeoutID) {
+ private ScheduledCallback(Runnable runnable) {
this.runnable = runnable;
- this.timeoutID = timeoutID;
}
public void run() {
- queueCallback(runnable, true);
- clearTimeout(timeoutID);
+ queueCallback(runnable);
}
}
@@ -1096,9 +1081,8 @@
private static HashMap<URL, Object> resourceCache = new HashMap<URL, Object>();
private static ResourceCacheDictionary resourceCacheDictionary = new ResourceCacheDictionary();
- private static Timer timer = new Timer(true);
- private static HashMap<Integer, TimerTask> timerTaskMap = new HashMap<Integer, TimerTask>();
- private static int nextTimerTaskID = 0;
+ // TODO Create/destroy this in subclass
+ protected static Timer timer = new Timer();
private static final String DEFAULT_THEME_CLASS_NAME = "pivot.wtk.skin.terra.TerraTheme";
@@ -1167,102 +1151,54 @@
}
/**
- * Schedules a task for repeated execution. The task will be executed on the
- * UI thread.
+ * Schedules a task for one-time execution. The task will be executed on
+ * the UI thread.
*
* @param runnable
* The task to execute.
*
- * @param period
- * The interval at which the task should be executed.
- *
- * @return An integer ID that can be used to cancel execution of the task.
+ * @param delay
+ * The length of time to wait before executing the task.
*/
- public static int setInterval(Runnable runnable, long period) {
- int intervalID = nextTimerTaskID++;
-
- IntervalTask intervalTask = new IntervalTask(runnable);
- timerTaskMap.put(intervalID, intervalTask);
-
- try {
- timer.schedule(intervalTask, 0, period);
- } catch (IllegalStateException exception) {
- System.out.println(exception.getMessage());
-
- // TODO This is a workaround for an apparent bug in the Mac OSX
- // Java Plugin, which appears to prematurely kill the timer thread.
- // Remove this when the issue is fixed.
- timer = new Timer(true);
- timerTaskMap.clear();
- timerTaskMap.put(intervalID, intervalTask);
- timer.schedule(intervalTask, 0, period);
- }
+ public static ScheduledCallback scheduleCallback(Runnable callback, long delay) {
+ ScheduledCallback scheduledCallback = new ScheduledCallback(callback);
+ timer.schedule(scheduledCallback, delay);
- return intervalID;
+ return scheduledCallback;
}
/**
- * Cancels execution of a scheduled task.
+ * Schedules a task for repeated execution. The task will be executed on the
+ * UI thread and will begin executing immediately.
+ *
+ * @param runnable
+ * The task to execute.
*
- * @param intervalID
- * The ID of the task to cancel.
+ * @param period
+ * The interval at which the task will be repeated.
*/
- public static void clearInterval(int intervalID) {
- clearTimerTask(intervalID);
+ public static ScheduledCallback scheduleRecurringCallback(Runnable callback, long period) {
+ return scheduleRecurringCallback(callback, 0, period);
}
/**
- * Schedules a task for execution after an elapsed time.
+ * Schedules a task for repeated execution. The task will be executed on the
+ * UI thread.
*
* @param runnable
* The task to execute.
*
- * @param timeout
- * The time after which the task should begin executing.
- */
- public static int setTimeout(Runnable runnable, long timeout) {
- int timeoutID = nextTimerTaskID++;
-
- TimeoutTask timeoutTask = new TimeoutTask(runnable, timeoutID);
- timerTaskMap.put(timeoutID, timeoutTask);
-
- try {
- timer.schedule(timeoutTask, timeout);
- } catch (IllegalStateException exception) {
- System.out.println(exception.getMessage());
-
- // TODO This is a workaround for an apparent bug in the Mac OSX
- // Java Plugin, which appears to prematurely kill the timer thread.
- // Remove this when the issue is fixed.
- timer = new Timer(true);
- timerTaskMap.clear();
- timerTaskMap.put(timeoutID, timeoutTask);
- timer.schedule(timeoutTask, timeout);
- }
-
- return timeoutID;
- }
-
- /**
- * Cancels execution of a scheduled task.
+ * @param delay
+ * The length of time to wait before the first execution of the task
*
- * @param timeoutID
- * The ID of the task to cancel.
+ * @param period
+ * The interval at which the task will be repeated.
*/
- public static void clearTimeout(int timeoutID) {
- clearTimerTask(timeoutID);
- }
+ public static ScheduledCallback scheduleRecurringCallback(Runnable callback, long delay, long period) {
+ ScheduledCallback scheduledCallback = new ScheduledCallback(callback);
+ timer.schedule(scheduledCallback, delay, period);
- /**
- * Cancels execution of a timer task.
- *
- * @param timerTaskID
- */
- private static void clearTimerTask(int timerTaskID) {
- TimerTask timerTask = timerTaskMap.remove(timerTaskID);
- if (timerTask != null) {
- timerTask.cancel();
- }
+ return scheduledCallback;
}
/**
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/effects/Transition.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/effects/Transition.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/effects/Transition.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/effects/Transition.java Fri Mar 20 17:10:35 2009
@@ -33,19 +33,13 @@
private long startTime = 0;
private long currentTime = 0;
- private int intervalID = -1;
+ private ApplicationContext.ScheduledCallback transitionCallback = null;
public static final int DEFAULT_DURATION = 0;
public static final int DEFAULT_RATE = 15;
private final Runnable updateCallback = new Runnable() {
public void run() {
- if (intervalID == -1) {
- // TODO Figure out why this is happening
- // System.out.println("Interval task executed after it was canceled.");
- return;
- }
-
currentTime = System.currentTimeMillis();
long endTime = startTime + duration;
@@ -117,7 +111,7 @@
throw new IllegalArgumentException("duration is negative.");
}
- if (intervalID != -1) {
+ if (transitionCallback != null) {
throw new IllegalStateException("Transition is currently running.");
}
@@ -148,7 +142,7 @@
throw new IllegalArgumentException("rate is negative.");
}
- if (intervalID != -1) {
+ if (transitionCallback != null) {
throw new IllegalStateException("Transition is currently running.");
}
@@ -216,7 +210,7 @@
* it is not
*/
public boolean isRunning() {
- return (intervalID != -1);
+ return (transitionCallback != null);
}
/**
@@ -240,7 +234,7 @@
* <tt>null</tt> if no notification is necessary
*/
public void start(TransitionListener transitionListener) {
- if (intervalID != -1) {
+ if (transitionCallback != null) {
throw new IllegalStateException("Transition is currently running.");
}
@@ -249,7 +243,8 @@
startTime = System.currentTimeMillis();
currentTime = startTime;
- intervalID = ApplicationContext.setInterval(updateCallback, getInterval());
+ transitionCallback = ApplicationContext.scheduleRecurringCallback(updateCallback,
+ getInterval());
update();
}
@@ -259,10 +254,11 @@
* {@link TransitionListener#transitionCompleted(Transition)} event.
*/
public void stop() {
- if (intervalID != -1) {
- ApplicationContext.clearInterval(intervalID);
- intervalID = -1;
+ if (transitionCallback != null) {
+ transitionCallback.cancel();
}
+
+ transitionCallback = null;
}
/**
@@ -270,7 +266,7 @@
* {@link TransitionListener#transitionCompleted(Transition)} event.
*/
public void end() {
- if (intervalID != -1) {
+ if (transitionCallback != null) {
currentTime = startTime + duration;
stop();
update();
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/ComponentSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/ComponentSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/ComponentSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/ComponentSkin.java Fri Mar 20 17:10:35 2009
@@ -70,7 +70,7 @@
private int height = 0;
private ShowTooltipCallback showTooltipCallback = new ShowTooltipCallback();
- private int showTooltipTimeoutID = -1;
+ private ApplicationContext.ScheduledCallback scheduledShowTooltipCallback = null;
public static final int SHOW_TOOLTIP_TIMEOUT = 1000;
@@ -182,14 +182,14 @@
// Component mouse events
public boolean mouseMove(Component component, int x, int y) {
- if (showTooltipTimeoutID != -1) {
- ApplicationContext.clearTimeout(showTooltipTimeoutID);
- showTooltipTimeoutID = -1;
+ if (scheduledShowTooltipCallback != null) {
+ scheduledShowTooltipCallback.cancel();
+ scheduledShowTooltipCallback = null;
}
if (getComponent().getTooltipText() != null) {
- showTooltipTimeoutID = ApplicationContext.setTimeout(showTooltipCallback,
- SHOW_TOOLTIP_TIMEOUT);
+ scheduledShowTooltipCallback =
+ ApplicationContext.scheduleCallback(showTooltipCallback, SHOW_TOOLTIP_TIMEOUT);
}
return false;
@@ -199,9 +199,9 @@
}
public void mouseOut(Component component) {
- if (showTooltipTimeoutID != -1) {
- ApplicationContext.clearTimeout(showTooltipTimeoutID);
- showTooltipTimeoutID = -1;
+ if (scheduledShowTooltipCallback != null) {
+ scheduledShowTooltipCallback.cancel();
+ scheduledShowTooltipCallback = null;
}
}
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/MenuItemSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/MenuItemSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/MenuItemSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/MenuItemSkin.java Fri Mar 20 17:10:35 2009
@@ -34,9 +34,10 @@
public abstract class MenuItemSkin extends ButtonSkin implements Menu.ItemListener {
protected MenuPopup menuPopup = new MenuPopup();
- protected int buttonPressTimeoutID = -1;
protected int buttonPressInterval = 200;
+ protected ApplicationContext.ScheduledCallback buttonPressCallback = null;
+
@Override
public void install(Component component) {
super.install(component);
@@ -62,11 +63,14 @@
public void mouseOver(Component component) {
super.mouseOver(component);
- ApplicationContext.clearInterval(buttonPressTimeoutID);
+ if (buttonPressCallback != null) {
+ buttonPressCallback.cancel();
+ buttonPressCallback = null;
+ }
final Menu.Item menuItem = (Menu.Item)getComponent();
if (menuItem.getMenu() != null) {
- buttonPressTimeoutID = ApplicationContext.setTimeout(new Runnable() {
+ buttonPressCallback = ApplicationContext.scheduleCallback(new Runnable() {
public void run() {
menuItem.press();
}
@@ -79,13 +83,21 @@
@Override
public void mouseOut(Component component) {
super.mouseOut(component);
- ApplicationContext.clearInterval(buttonPressTimeoutID);
+
+ if (buttonPressCallback != null) {
+ buttonPressCallback.cancel();
+ buttonPressCallback = null;
+ }
}
@Override
public boolean mouseDown(Component component, Mouse.Button button, int x, int y) {
boolean consumed = super.mouseDown(component, button, x, y);
- ApplicationContext.clearInterval(buttonPressTimeoutID);
+
+ if (buttonPressCallback != null) {
+ buttonPressCallback.cancel();
+ buttonPressCallback = null;
+ }
return consumed;
}
@@ -104,7 +116,10 @@
public boolean keyPressed(Component component, int keyCode, Keyboard.KeyLocation keyLocation) {
boolean consumed = false;
- ApplicationContext.clearInterval(buttonPressTimeoutID);
+ if (buttonPressCallback != null) {
+ buttonPressCallback.cancel();
+ buttonPressCallback = null;
+ }
Menu.Item menuItem = (Menu.Item)getComponent();
Menu menu = menuItem.getMenu();
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/TextAreaSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/TextAreaSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/TextAreaSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/TextAreaSkin.java Fri Mar 20 17:10:35 2009
@@ -1180,7 +1180,7 @@
private Rectangle caret = new Rectangle();
private boolean caretOn = false;
private BlinkCursorCallback blinkCursorCallback = new BlinkCursorCallback();
- private int blinkCursorIntervalID = -1;
+ private ApplicationContext.ScheduledCallback scheduledBlinkCursorCallback = null;
private Font font;
private Color color;
@@ -1312,17 +1312,18 @@
private void showCaret(boolean show) {
if (show) {
- if (blinkCursorIntervalID == -1) {
- blinkCursorIntervalID = ApplicationContext.setInterval(blinkCursorCallback,
- Platform.getCursorBlinkRate());
+ if (scheduledBlinkCursorCallback == null) {
+ scheduledBlinkCursorCallback =
+ ApplicationContext.scheduleRecurringCallback(blinkCursorCallback,
+ Platform.getCursorBlinkRate());
// Run the callback once now to show the cursor immediately
blinkCursorCallback.run();
}
} else {
- if (blinkCursorIntervalID != -1) {
- ApplicationContext.clearInterval(blinkCursorIntervalID);
- blinkCursorIntervalID = -1;
+ if (scheduledBlinkCursorCallback != null) {
+ scheduledBlinkCursorCallback.cancel();
+ scheduledBlinkCursorCallback = null;
}
}
}
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraPanoramaSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraPanoramaSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraPanoramaSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraPanoramaSkin.java Fri Mar 20 17:10:35 2009
@@ -166,8 +166,10 @@
if (northButton.isMouseOver()) {
int scrollTop = Math.max(panorama.getScrollTop()
- (int)scrollDistance, 0);
- if (scrollTop == 0) {
- ApplicationContext.clearInterval(scrollIntervalID);
+ if (scrollTop == 0
+ && scheduledScrollCallback != null) {
+ scheduledScrollCallback.cancel();
+ scheduledScrollCallback = null;
}
panorama.setScrollTop(scrollTop);
@@ -175,8 +177,10 @@
int maxScrollTop = getMaxScrollTop();
int scrollTop = Math.min(panorama.getScrollTop()
+ (int)scrollDistance, maxScrollTop);
- if (scrollTop == maxScrollTop) {
- ApplicationContext.clearInterval(scrollIntervalID);
+ if (scrollTop == maxScrollTop
+ && scheduledScrollCallback != null) {
+ scheduledScrollCallback.cancel();
+ scheduledScrollCallback = null;
}
panorama.setScrollTop(scrollTop);
@@ -185,8 +189,10 @@
int maxScrollLeft = getMaxScrollLeft();
int scrollLeft = Math.min(panorama.getScrollLeft()
+ (int)scrollDistance, maxScrollLeft);
- if (scrollLeft == maxScrollLeft) {
- ApplicationContext.clearInterval(scrollIntervalID);
+ if (scrollLeft == maxScrollLeft
+ && scheduledScrollCallback != null) {
+ scheduledScrollCallback.cancel();
+ scheduledScrollCallback = null;
}
System.out.println(scrollLeft + ", " + maxScrollLeft);
@@ -194,8 +200,10 @@
} else if (westButton.isMouseOver()) {
int scrollLeft = Math.max(panorama.getScrollLeft()
- (int)scrollDistance, 0);
- if (scrollLeft == 0) {
- ApplicationContext.clearInterval(scrollIntervalID);
+ if (scrollLeft == 0
+ && scheduledScrollCallback != null) {
+ scheduledScrollCallback.cancel();
+ scheduledScrollCallback = null;
}
System.out.println(scrollLeft);
@@ -234,18 +242,22 @@
public void mouseOver(Component component) {
// Start scroll timer
scrollDistance = INITIAL_SCROLL_DISTANCE;
- scrollIntervalID = ApplicationContext.setInterval(scrollCallback, SCROLL_RATE);
+ scheduledScrollCallback =
+ ApplicationContext.scheduleRecurringCallback(scrollCallback, SCROLL_RATE);
}
public void mouseOut(Component component) {
// Stop scroll timer
- ApplicationContext.clearInterval(scrollIntervalID);
+ if (scheduledScrollCallback != null) {
+ scheduledScrollCallback.cancel();
+ scheduledScrollCallback = null;
+ }
}
};
private float scrollDistance = 0;
private ScrollCallback scrollCallback = new ScrollCallback();
- private int scrollIntervalID = -1;
+ private ApplicationContext.ScheduledCallback scheduledScrollCallback = null;
private static final int SCROLL_RATE = 50;
private static final float INITIAL_SCROLL_DISTANCE = 10;
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraScrollBarSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraScrollBarSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraScrollBarSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraScrollBarSkin.java Fri Mar 20 17:10:35 2009
@@ -70,8 +70,7 @@
public IncrementType incrementType;
public int stopValue;
- private int timeoutID = -1;
- private int intervalID = -1;
+ private ApplicationContext.ScheduledCallback scheduledScrollCallback = null;
/**
* Starts scrolling the specified scroll bar with no stop value.
@@ -113,8 +112,7 @@
* Only one scroll bar may be automatically scrolled at one time
*/
public void start(int direction, IncrementType incrementType, int stopValue) {
- if (timeoutID != -1
- || intervalID != -1) {
+ if (scheduledScrollCallback != null) {
throw new IllegalStateException("Already running");
}
@@ -122,18 +120,12 @@
this.incrementType = incrementType;
this.stopValue = stopValue;
- // Wait a timeout period, then begin repidly scrolling
- timeoutID = ApplicationContext.setTimeout(new Runnable() {
+ // Wait a timeout period, then begin rapidly scrolling
+ scheduledScrollCallback = ApplicationContext.scheduleRecurringCallback(new Runnable() {
public void run() {
- intervalID = ApplicationContext.setInterval(new Runnable() {
- public void run() {
- scroll();
- }
- }, 30);
-
- timeoutID = -1;
+ scroll();
}
- }, 400);
+ }, 400, 30);
// We initially scroll once to register that we've started
scroll();
@@ -143,14 +135,9 @@
* Stops any automatic scrolling in progress.
*/
public void stop() {
- if (timeoutID != -1) {
- ApplicationContext.clearTimeout(timeoutID);
- timeoutID = -1;
- }
-
- if (intervalID != -1) {
- ApplicationContext.clearInterval(intervalID);
- intervalID = -1;
+ if (scheduledScrollCallback != null) {
+ scheduledScrollCallback.cancel();
+ scheduledScrollCallback = null;
}
}
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraSpinnerSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraSpinnerSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraSpinnerSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraSpinnerSkin.java Fri Mar 20 17:10:35 2009
@@ -51,8 +51,7 @@
public Spinner spinner;
public int direction;
- private int timeoutID = -1;
- private int intervalID = -1;
+ private ApplicationContext.ScheduledCallback scheduledSpinnerCallback = null;
/**
* Starts spinning the specified spinner.
@@ -71,26 +70,19 @@
public void start(Spinner spinner, int direction) {
assert(direction != 0) : "Direction must be positive or negative";
- if (timeoutID != -1
- || intervalID != -1) {
+ if (scheduledSpinnerCallback != null) {
throw new IllegalStateException("Already running");
}
this.spinner = spinner;
this.direction = direction;
- // Wait a timeout period, then begin repidly spinning
- timeoutID = ApplicationContext.setTimeout(new Runnable() {
+ // Wait a timeout period, then begin rapidly spinning
+ scheduledSpinnerCallback = ApplicationContext.scheduleRecurringCallback(new Runnable() {
public void run() {
- intervalID = ApplicationContext.setInterval(new Runnable() {
- public void run() {
- spin();
- }
- }, 30);
-
- timeoutID = -1;
+ spin();
}
- }, 400);
+ }, 400, 30);
// We initially spin once to register that we've started
spin();
@@ -124,14 +116,9 @@
* Stops any automatic spinning in progress.
*/
public void stop() {
- if (timeoutID != -1) {
- ApplicationContext.clearTimeout(timeoutID);
- timeoutID = -1;
- }
-
- if (intervalID != -1) {
- ApplicationContext.clearInterval(intervalID);
- intervalID = -1;
+ if (scheduledSpinnerCallback != null) {
+ scheduledSpinnerCallback.cancel();
+ scheduledSpinnerCallback = null;
}
}
}
Modified: incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraTextInputSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraTextInputSkin.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraTextInputSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtk/skin/terra/TerraTextInputSkin.java Fri Mar 20 17:10:35 2009
@@ -224,10 +224,10 @@
private int scrollLeft = 0;
private BlinkCursorCallback blinkCursorCallback = new BlinkCursorCallback();
- private int blinkCursorIntervalID = -1;
+ private ApplicationContext.ScheduledCallback scheduledBlinkCursorCallback = null;
private ScrollSelectionCallback scrollSelectionCallback = new ScrollSelectionCallback();
- private int scrollSelectionIntervalID = -1;
+ private ApplicationContext.ScheduledCallback scheduledScrollSelectionCallback = null;
private Font font;
private Color color;
@@ -470,17 +470,18 @@
public void showCaret(boolean show) {
if (show) {
- if (blinkCursorIntervalID == -1) {
- blinkCursorIntervalID = ApplicationContext.setInterval(blinkCursorCallback,
- Platform.getCursorBlinkRate());
+ if (scheduledBlinkCursorCallback == null) {
+ scheduledBlinkCursorCallback =
+ ApplicationContext.scheduleRecurringCallback(blinkCursorCallback,
+ Platform.getCursorBlinkRate());
// Run the callback once now to show the cursor immediately
blinkCursorCallback.run();
}
} else {
- if (blinkCursorIntervalID != -1) {
- ApplicationContext.clearInterval(blinkCursorIntervalID);
- blinkCursorIntervalID = -1;
+ if (scheduledBlinkCursorCallback != null) {
+ scheduledBlinkCursorCallback.cancel();
+ scheduledBlinkCursorCallback = null;
}
}
}
@@ -840,9 +841,9 @@
if (x >= 0
&& x < textInput.getWidth()) {
// Stop the scroll selection timer
- if (scrollSelectionIntervalID != -1) {
- ApplicationContext.clearInterval(scrollSelectionIntervalID);
- scrollSelectionIntervalID = -1;
+ if (scheduledScrollSelectionCallback != null) {
+ scheduledScrollSelectionCallback.cancel();
+ scheduledScrollSelectionCallback = null;
}
// Get the current selection
@@ -865,9 +866,10 @@
} else {
scrollSelectionCallback.x = x;
- if (scrollSelectionIntervalID == -1) {
- scrollSelectionIntervalID =
- ApplicationContext.setInterval(scrollSelectionCallback, SCROLL_RATE);
+ if (scheduledScrollSelectionCallback == null) {
+ scheduledScrollSelectionCallback =
+ ApplicationContext.scheduleRecurringCallback(scrollSelectionCallback,
+ SCROLL_RATE);
// Run the callback once now to scroll the selection immediately
scrollSelectionCallback.run();
@@ -907,9 +909,9 @@
if (Mouse.getCapturer() == component) {
// Stop the scroll selection timer
- if (scrollSelectionIntervalID != -1) {
- ApplicationContext.clearInterval(scrollSelectionIntervalID);
- scrollSelectionIntervalID = -1;
+ if (scheduledScrollSelectionCallback != null) {
+ scheduledScrollSelectionCallback.cancel();
+ scheduledScrollSelectionCallback = null;
}
Mouse.release();
Modified: incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java?rev=756633&r1=756632&r2=756633&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java Fri Mar 20 17:10:35 2009
@@ -91,7 +91,7 @@
}
private URL location = null;
- private Dictionary<String, Object> resources = null;
+ private Resources resources = null;
private HashMap<String, Object> namedObjects = new HashMap<String, Object>();
private HashMap<String, WTKXSerializer> includeSerializers = new HashMap<String, WTKXSerializer>();
@@ -120,7 +120,7 @@
this(null);
}
- public WTKXSerializer(Dictionary<String, Object> resources) {
+ public WTKXSerializer(Resources resources) {
this.resources = resources;
try {
@@ -232,7 +232,7 @@
String src = null;
String namespace = null;
- Dictionary<String, Object> includeResources = resources;
+ Resources includeResources = resources;
ArrayList<Attribute> attributes = new ArrayList<Attribute>();