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/09/29 15:32:22 UTC
svn commit: r819942 - in /incubator/pivot/trunk/wtk:
src/org/apache/pivot/wtk/Button.java
src/org/apache/pivot/wtk/ButtonGroup.java
src/org/apache/pivot/wtkx/WTKXSerializer.java
test/org/apache/pivot/wtk/test/ButtonGroupTest.java
Author: gbrown
Date: Tue Sep 29 13:32:22 2009
New Revision: 819942
URL: http://svn.apache.org/viewvc?rev=819942&view=rev
Log:
Fix bug in Button/ButtonGroup interaction; clear WTKXSerializer location in reset() instead of readObject().
Added:
incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/ButtonGroupTest.java
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Button.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ButtonGroup.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtkx/WTKXSerializer.java
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Button.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Button.java?rev=819942&r1=819941&r2=819942&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Button.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Button.java Tue Sep 29 13:32:22 2009
@@ -137,11 +137,13 @@
}
};
- private State state = null;
- private ButtonGroup buttonGroup = null;
+ private State state = State.UNSELECTED;
private boolean toggleButton = false;
private boolean triState = false;
+
+ private ButtonGroup buttonGroup = null;
+
private String selectedKey = null;
private String stateKey = null;
@@ -315,23 +317,12 @@
if (previousState != state) {
this.state = state;
+ // Update the button group's state
if (buttonGroup != null) {
- // Update the group's selection
- Button previousSelection = buttonGroup.getSelection();
-
if (state == State.SELECTED) {
- // De-select any previously selected button
- if (previousSelection != null) {
- previousSelection.setSelected(false);
- }
-
- // Set this as the new selection
buttonGroup.setSelection(this);
- }
- else {
- // If this button is currently selected, clear the
- // selection
- if (previousSelection == this) {
+ } else {
+ if (buttonGroup.getSelection() == this) {
buttonGroup.setSelection(null);
}
}
@@ -522,4 +513,9 @@
public ListenerList<ButtonPressListener> getButtonPressListeners() {
return buttonPressListeners;
}
+
+ @Override
+ public String toString() {
+ return getClass().getName() + ": " + buttonData;
+ }
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ButtonGroup.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ButtonGroup.java?rev=819942&r1=819941&r2=819942&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ButtonGroup.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ButtonGroup.java Tue Sep 29 13:32:22 2009
@@ -113,18 +113,23 @@
public void setSelection(Button selection) {
if (selection != null
- && !contains(selection)) {
+ && selection.getButtonGroup() != this) {
throw new IllegalArgumentException();
}
Button previousSelection = this.selection;
+
if (previousSelection != selection) {
+ this.selection = selection;
+
+ if (previousSelection != null) {
+ previousSelection.setSelected(false);
+ }
+
if (selection != null) {
selection.setSelected(true);
}
- this.selection = selection;
-
buttonGroupListeners.selectionChanged(this, previousSelection);
}
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtkx/WTKXSerializer.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtkx/WTKXSerializer.java?rev=819942&r1=819941&r2=819942&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtkx/WTKXSerializer.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtkx/WTKXSerializer.java Tue Sep 29 13:32:22 2009
@@ -387,6 +387,7 @@
}
this.location = location;
+
InputStream inputStream = new BufferedInputStream(location.openStream());
try {
return readObject(inputStream);
@@ -454,10 +455,6 @@
throw exception;
}
- // Clear the location so the previous value won't be re-used in a
- // subsequent call to this method
- location = null;
-
return root;
}
@@ -1167,8 +1164,11 @@
}
public void reset() {
+ location = null;
+
namedObjects.clear();
includeSerializers.clear();
+
root = null;
language = DEFAULT_LANGUAGE;
}
@@ -1215,11 +1215,12 @@
}
/**
- * Returns the location of the WTKX currently being processed.
+ * Returns the location of the WTKX most recently processed by this
+ * serializer.
*
* @return
- * The location of the WTKX, or <tt>null</tt> if no WTKX is currently being
- * processed or the location is not known.
+ * The location of the WTKX, or <tt>null</tt> if this serializer has not
+ * yet read an object from a URL.
*/
public URL getLocation() {
return location;
Added: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/ButtonGroupTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/ButtonGroupTest.java?rev=819942&view=auto
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/ButtonGroupTest.java (added)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/ButtonGroupTest.java Tue Sep 29 13:32:22 2009
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pivot.wtk.test;
+
+import org.apache.pivot.collections.Map;
+import org.apache.pivot.wtk.Application;
+import org.apache.pivot.wtk.BoxPane;
+import org.apache.pivot.wtk.Button;
+import org.apache.pivot.wtk.ButtonGroup;
+import org.apache.pivot.wtk.ButtonGroupListener;
+import org.apache.pivot.wtk.DesktopApplicationContext;
+import org.apache.pivot.wtk.Display;
+import org.apache.pivot.wtk.PushButton;
+import org.apache.pivot.wtk.Window;
+
+public class ButtonGroupTest implements Application {
+ private Window window = null;
+
+ @Override
+ public void startup(Display display, Map<String, String> properties)
+ throws Exception {
+ ButtonGroup buttonGroup = new ButtonGroup();
+ buttonGroup.getButtonGroupListeners().add(new ButtonGroupListener() {
+ @Override
+ public void selectionChanged(ButtonGroup buttonGroup, Button previousSelection) {
+ System.out.println("selectionChanged(): previousSelection = " + previousSelection
+ + ", selection = " + buttonGroup.getSelection());
+ }
+
+ @Override
+ public void buttonAdded(ButtonGroup buttonGroup, Button button) {
+ System.out.println("buttonAdded(): " + button);
+ }
+
+ @Override
+ public void buttonRemoved(ButtonGroup buttonGroup, Button button) {
+ System.out.println("buttonRemoved(): " + button);
+ }
+ });
+
+ BoxPane boxPane = new BoxPane();
+
+ PushButton button1 = new PushButton("One");
+ button1.setToggleButton(true);
+ button1.setButtonGroup(buttonGroup);
+ boxPane.add(button1);
+
+ PushButton button2 = new PushButton("Two");
+ button2.setToggleButton(true);
+ button2.setButtonGroup(buttonGroup);
+ boxPane.add(button2);
+
+ PushButton button3 = new PushButton("Three");
+ button3.setToggleButton(true);
+ button3.setButtonGroup(buttonGroup);
+ boxPane.add(button3);
+
+ PushButton button4 = new PushButton("Four");
+ button4.setToggleButton(true);
+ button4.setButtonGroup(buttonGroup);
+ boxPane.add(button4);
+
+ // button1.setSelected(true);
+ // buttonGroup.setSelection(button1);
+ // buttonGroup.setSelection(null);
+
+ window = new Window(boxPane);
+ window.setMaximized(true);
+ window.open(display);
+ }
+
+ @Override
+ public boolean shutdown(boolean optional) {
+ if (window != null) {
+ window.close();
+ }
+
+ return false;
+ }
+
+ @Override
+ public void suspend() {
+ }
+
+ @Override
+ public void resume() {
+ }
+
+ public static void main(String[] args) {
+ DesktopApplicationContext.main(ButtonGroupTest.class, args);
+ }
+}