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/10 23:53:31 UTC
svn commit: r908717 - in /pivot/trunk:
tutorials/src/org/apache/pivot/tutorials/filebrowsing/
tutorials/src/org/apache/pivot/tutorials/menus/
tutorials/src/org/apache/pivot/tutorials/windows/
wtk-terra/src/org/apache/pivot/wtk/skin/terra/ wtk/src/org/a...
Author: gbrown
Date: Wed Feb 10 22:53:23 2010
New Revision: 908717
URL: http://svn.apache.org/viewvc?rev=908717&view=rev
Log:
Make file browser sheet mode and dialog modal flag properties.
Added:
pivot/trunk/wtk/src/org/apache/pivot/wtk/DialogListener.java
Modified:
pivot/trunk/tutorials/src/org/apache/pivot/tutorials/filebrowsing/FileBrowsing.java
pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java
pivot/trunk/tutorials/src/org/apache/pivot/tutorials/windows/dialog.wtkx
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java
Modified: pivot/trunk/tutorials/src/org/apache/pivot/tutorials/filebrowsing/FileBrowsing.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/filebrowsing/FileBrowsing.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/tutorials/src/org/apache/pivot/tutorials/filebrowsing/FileBrowsing.java (original)
+++ pivot/trunk/tutorials/src/org/apache/pivot/tutorials/filebrowsing/FileBrowsing.java Wed Feb 10 22:53:23 2010
@@ -65,7 +65,8 @@
fileBrowserSheet.setSelectedFile(new File(fileBrowserSheet.getRootDirectory(), "New File"));
}
- fileBrowserSheet.open(window, fileBrowserSheetMode, new SheetCloseListener() {
+ fileBrowserSheet.setMode(fileBrowserSheetMode);
+ fileBrowserSheet.open(window, new SheetCloseListener() {
@Override
public void sheetClosed(Sheet sheet) {
if (sheet.getResult()) {
Modified: pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java (original)
+++ pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java Wed Feb 10 22:53:23 2010
@@ -122,7 +122,7 @@
Action.getNamedActions().put("fileOpen", new Action() {
@Override
public void perform() {
- fileBrowserSheet.open(window, FileBrowserSheet.Mode.OPEN);
+ fileBrowserSheet.open(window);
}
});
Modified: pivot/trunk/tutorials/src/org/apache/pivot/tutorials/windows/dialog.wtkx
URL: http://svn.apache.org/viewvc/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/windows/dialog.wtkx?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/tutorials/src/org/apache/pivot/tutorials/windows/dialog.wtkx (original)
+++ pivot/trunk/tutorials/src/org/apache/pivot/tutorials/windows/dialog.wtkx Wed Feb 10 22:53:23 2010
@@ -16,7 +16,7 @@
limitations under the License.
-->
-<Dialog wtkx:id="dialog" title="Dialog"
+<Dialog wtkx:id="dialog" title="Dialog" modal="true"
xmlns:wtkx="http://pivot.apache.org/wtkx"
xmlns="org.apache.pivot.wtk">
<content>
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java Wed Feb 10 22:53:23 2010
@@ -23,6 +23,7 @@
import org.apache.pivot.wtk.Container;
import org.apache.pivot.wtk.ContainerMouseListener;
import org.apache.pivot.wtk.Dialog;
+import org.apache.pivot.wtk.DialogListener;
import org.apache.pivot.wtk.DialogStateListener;
import org.apache.pivot.wtk.Dimensions;
import org.apache.pivot.wtk.Display;
@@ -33,7 +34,8 @@
/**
* Dialog skin.
*/
-public class TerraDialogSkin extends TerraFrameSkin implements DialogStateListener {
+public class TerraDialogSkin extends TerraFrameSkin
+ implements DialogListener, DialogStateListener {
private static final float GOLDEN_SECTION = 0.382f;
private ContainerMouseListener displayMouseListener = new ContainerMouseListener.Adapter() {
@@ -189,6 +191,11 @@
}
@Override
+ public void modalChanged(Dialog dialog) {
+ // No-op
+ }
+
+ @Override
public Vote previewDialogClose(Dialog dialog, boolean result) {
return Vote.APPROVE;
}
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java Wed Feb 10 22:53:23 2010
@@ -238,45 +238,7 @@
@Override
public void windowOpened(Window window) {
super.windowOpened(window);
-
- if (window.isOpen()) {
- // Initialize layout and file browser selection state
- FileBrowserSheet fileBrowserSheet = (FileBrowserSheet)window;
- FileBrowserSheet.Mode mode = fileBrowserSheet.getMode();
-
- fileBrowser.getStyles().put("keyboardFolderTraversalEnabled",
- (mode != FileBrowserSheet.Mode.SAVE_TO));
-
- switch (mode) {
- case OPEN: {
- saveAsBoxPane.setVisible(false);
- fileBrowser.setMultiSelect(false);
- break;
- }
-
- case OPEN_MULTIPLE: {
- saveAsBoxPane.setVisible(false);
- fileBrowser.setMultiSelect(true);
- break;
- }
-
- case SAVE_AS: {
- saveAsBoxPane.setVisible(true);
- fileBrowser.setMultiSelect(false);
- break;
- }
-
- case SAVE_TO: {
- saveAsBoxPane.setVisible(false);
- fileBrowser.setMultiSelect(false);
- break;
- }
- }
-
- disabledFileFilterChanged(fileBrowserSheet, null);
-
- window.requestFocus();
- }
+ window.requestFocus();
}
@Override
@@ -318,6 +280,43 @@
return vote;
}
+ public void modeChanged(FileBrowserSheet fileBrowserSheet,
+ FileBrowserSheet.Mode previousMode) {
+ FileBrowserSheet.Mode mode = fileBrowserSheet.getMode();
+
+ fileBrowser.getStyles().put("keyboardFolderTraversalEnabled",
+ (mode != FileBrowserSheet.Mode.SAVE_TO));
+
+ switch (mode) {
+ case OPEN: {
+ saveAsBoxPane.setVisible(false);
+ fileBrowser.setMultiSelect(false);
+ break;
+ }
+
+ case OPEN_MULTIPLE: {
+ saveAsBoxPane.setVisible(false);
+ fileBrowser.setMultiSelect(true);
+ break;
+ }
+
+ case SAVE_AS: {
+ saveAsBoxPane.setVisible(true);
+ fileBrowser.setMultiSelect(false);
+ break;
+ }
+
+ case SAVE_TO: {
+ saveAsBoxPane.setVisible(false);
+ fileBrowser.setMultiSelect(false);
+ break;
+ }
+ }
+
+ updateDisabledFileFilter();
+ updateOKButtonState();
+ }
+
@Override
public void rootDirectoryChanged(FileBrowserSheet fileBrowserSheet,
File previousRootDirectory) {
@@ -351,6 +350,11 @@
@Override
public void disabledFileFilterChanged(FileBrowserSheet fileBrowserSheet,
Filter<File> previousDisabledFileFilter) {
+ updateDisabledFileFilter();
+ }
+
+ private void updateDisabledFileFilter() {
+ FileBrowserSheet fileBrowserSheet = (FileBrowserSheet)getComponent();
Filter<File> disabledFileFilter = fileBrowserSheet.getDisabledFileFilter();
FileBrowserSheet.Mode mode = fileBrowserSheet.getMode();
@@ -365,29 +369,25 @@
FileBrowserSheet fileBrowserSheet = (FileBrowserSheet)getComponent();
FileBrowserSheet.Mode mode = fileBrowserSheet.getMode();
- if (mode != null) {
- Sequence<File> selectedFiles = fileBrowser.getSelectedFiles();
+ Sequence<File> selectedFiles = fileBrowser.getSelectedFiles();
- switch (mode) {
- case OPEN:
- case OPEN_MULTIPLE: {
- okButton.setEnabled(selectedFiles.getLength() > 0
- && selectedDirectoryCount == 0);
- break;
- }
+ switch (mode) {
+ case OPEN:
+ case OPEN_MULTIPLE: {
+ okButton.setEnabled(selectedFiles.getLength() > 0
+ && selectedDirectoryCount == 0);
+ break;
+ }
- case SAVE_AS: {
- okButton.setEnabled(saveAsTextInput.getTextLength() > 0);
- break;
- }
+ case SAVE_AS: {
+ okButton.setEnabled(saveAsTextInput.getTextLength() > 0);
+ break;
+ }
- case SAVE_TO: {
- okButton.setEnabled(selectedDirectoryCount > 0);
- break;
- }
+ case SAVE_TO: {
+ okButton.setEnabled(selectedDirectoryCount > 0);
+ break;
}
- } else {
- okButton.setEnabled(false);
}
}
}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java Wed Feb 10 22:53:23 2010
@@ -57,11 +57,21 @@
}
public Alert(MessageType type, String message, Sequence<?> options) {
- this(type, message, options, null);
+ this(type, message, options, true);
+ }
+
+ public Alert(MessageType type, String message, Sequence<?> options, boolean modal) {
+ this(type, message, options, null, modal);
}
- @SuppressWarnings("unchecked")
public Alert(MessageType type, String message, Sequence<?> options, Component body) {
+ this(type, message, options, body, true);
+ }
+
+ @SuppressWarnings("unchecked")
+ public Alert(MessageType type, String message, Sequence<?> options, Component body, boolean modal) {
+ super(modal);
+
if (type == null) {
throw new IllegalArgumentException("type is null.");
}
@@ -158,14 +168,14 @@
public static void alert(MessageType messageType, String message, Component body, Window owner,
DialogCloseListener dialogCloseListener) {
Alert alert = createAlert(messageType, message, body);
- alert.open(owner.getDisplay(), owner, true, dialogCloseListener);
+ alert.open(owner.getDisplay(), owner, dialogCloseListener);
}
private static Alert createAlert(MessageType messageType, String message, Component body) {
List<Object> options = new ArrayList<Object>();
options.add(resources.get("defaultOption"));
- Alert alert = new Alert(messageType, message, options, body);
+ Alert alert = new Alert(messageType, message, options, body, true);
alert.setTitle((String)resources.get("defaultTitle"));
alert.setSelectedOption(0);
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java Wed Feb 10 22:53:23 2010
@@ -24,6 +24,16 @@
* an application and a user.
*/
public class Dialog extends Frame {
+ private static class DialogListenerList extends ListenerList<DialogListener>
+ implements DialogListener {
+ @Override
+ public void modalChanged(Dialog dialog) {
+ for (DialogListener listener : this) {
+ listener.modalChanged(dialog);
+ }
+ }
+ }
+
private static class DialogStateListenerList extends ListenerList<DialogStateListener>
implements DialogStateListener {
@Override
@@ -54,29 +64,60 @@
private boolean modal = false;
private DialogCloseListener dialogCloseListener = null;
+
private boolean result = false;
private boolean closing = false;
+ private DialogListenerList dialogListeners = new DialogListenerList();
private DialogStateListenerList dialogStateListeners = new DialogStateListenerList();
public Dialog() {
- this(null, null);
+ this(true);
+ }
+
+ public Dialog(boolean modal) {
+ this(null, null, modal);
}
public Dialog(String title) {
- this(title, null);
+ this(title, true);
+ }
+
+ public Dialog(String title, boolean modal) {
+ this(title, null, modal);
}
public Dialog(Component content) {
- this(null, content);
+ this(content, true);
+ }
+
+ public Dialog(Component content, boolean modal) {
+ this(null, content, modal);
}
public Dialog(String title, Component content) {
+ this(title, content, true);
+ }
+
+ public Dialog(String title, Component content, boolean modal) {
super(title, content);
+ this.modal = modal;
+
installThemeSkin(Dialog.class);
}
+ public boolean isModal() {
+ return modal;
+ }
+
+ public void setModal(boolean modal) {
+ if (this.modal != modal) {
+ this.modal = modal;
+ dialogListeners.modalChanged(this);
+ }
+ }
+
/**
* Opens the dialog.
*
@@ -88,7 +129,7 @@
*/
@Override
public final void open(Display display, Window owner) {
- open(display, owner, owner != null, null);
+ open(display, owner, null);
}
/**
@@ -101,7 +142,7 @@
* A listener that will be called when the dialog is closed.
*/
public final void open(Display display, DialogCloseListener dialogCloseListener) {
- open(display, null, false, dialogCloseListener);
+ open(display, null, dialogCloseListener);
}
/**
@@ -118,7 +159,7 @@
throw new IllegalArgumentException();
}
- open(owner.getDisplay(), owner, true, dialogCloseListener);
+ open(owner.getDisplay(), owner, dialogCloseListener);
}
/**
@@ -137,21 +178,17 @@
* @param dialogCloseListener
* A listener that will be called when the dialog is closed.
*/
- public void open(Display display, Window owner, boolean modal, DialogCloseListener dialogCloseListener) {
- if (modal
- && owner == null) {
+ public void open(Display display, Window owner, DialogCloseListener dialogCloseListener) {
+ if (modal && owner == null) {
throw new IllegalArgumentException("Modal dialogs must have an owner.");
}
- this.modal = modal;
this.dialogCloseListener = dialogCloseListener;
-
result = false;
super.open(display, owner);
if (!isOpen()) {
- this.modal = false;
this.dialogCloseListener = null;
}
}
@@ -182,9 +219,6 @@
if (isClosed()) {
this.result = result;
- boolean modal = this.modal;
- this.modal = false;
-
// Move the owner to the front
if (owner != null
&& owner.isOpen()) {
@@ -209,10 +243,6 @@
}
}
- public boolean isModal() {
- return modal;
- }
-
public DialogCloseListener getDialogCloseListener() {
return dialogCloseListener;
}
@@ -221,6 +251,10 @@
return result;
}
+ public ListenerList<DialogListener> getDialogListeners() {
+ return dialogListeners;
+ }
+
public ListenerList<DialogStateListener> getDialogStateListeners() {
return dialogStateListeners;
}
Added: pivot/trunk/wtk/src/org/apache/pivot/wtk/DialogListener.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/DialogListener.java?rev=908717&view=auto
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/DialogListener.java (added)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/DialogListener.java Wed Feb 10 22:53:23 2010
@@ -0,0 +1,29 @@
+/*
+ * 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;
+
+/**
+ * Dialog listener interface.
+ */
+public interface DialogListener {
+ /**
+ * Called when a dialog's modal flag has changed.
+ *
+ * @param dialog
+ */
+ public void modalChanged(Dialog dialog);
+}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java Wed Feb 10 22:53:23 2010
@@ -43,6 +43,14 @@
extends ListenerList<FileBrowserSheetListener>
implements FileBrowserSheetListener {
@Override
+ public void modeChanged(FileBrowserSheet fileBrowserSheet,
+ FileBrowserSheet.Mode previousMode) {
+ for (FileBrowserSheetListener listener : this) {
+ listener.modeChanged(fileBrowserSheet, previousMode);
+ }
+ }
+
+ @Override
public void rootDirectoryChanged(FileBrowserSheet fileBrowserSheet,
File previousRootDirectory) {
for (FileBrowserSheetListener listener : this) {
@@ -76,6 +84,12 @@
private FileBrowserSheetListenerList fileBrowserSheetListeners = new FileBrowserSheetListenerList();
public FileBrowserSheet() {
+ this(Mode.OPEN);
+ }
+
+ public FileBrowserSheet(Mode mode) {
+ this.mode = mode;
+
String userHome = System.getProperty("user.home");
rootDirectory = new File(userHome);
@@ -86,6 +100,15 @@
return mode;
}
+ public void setMode(Mode mode) {
+ Mode previousMode = this.mode;
+
+ if (previousMode != mode) {
+ this.mode = mode;
+ fileBrowserSheetListeners.modeChanged(this, previousMode);
+ }
+ }
+
public File getRootDirectory() {
return rootDirectory;
}
@@ -207,50 +230,6 @@
}
}
- public final void open(Window owner, Mode mode) {
- if (owner == null) {
- throw new IllegalArgumentException("owner is null");
- }
-
- open(owner.getDisplay(), owner, mode, null);
- }
-
- public final void open(Window owner, Mode mode, SheetCloseListener sheetCloseListener) {
- if (owner == null) {
- throw new IllegalArgumentException("owner is null");
- }
-
- open(owner.getDisplay(), owner, mode, sheetCloseListener);
- }
-
- @Override
- public final void open(Display display, Window owner, SheetCloseListener sheetCloseListener) {
- open(display, owner, Mode.OPEN, sheetCloseListener);
- }
-
- public void open(Display display, Window owner, Mode mode, SheetCloseListener sheetCloseListener) {
- if (mode == null) {
- throw new IllegalArgumentException("mode is null.");
- }
-
- this.mode = mode;
-
- super.open(display, owner, sheetCloseListener);
-
- if (!isOpen()) {
- this.mode = null;
- }
- }
-
- @Override
- public void close(boolean result) {
- super.close(result);
-
- if (isClosed()) {
- mode = null;
- }
- }
-
public ListenerList<FileBrowserSheetListener> getFileBrowserSheetListeners() {
return fileBrowserSheetListeners;
}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java?rev=908717&r1=908716&r2=908717&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java Wed Feb 10 22:53:23 2010
@@ -30,6 +30,11 @@
*/
public static class Adapter implements FileBrowserSheetListener {
@Override
+ public void modeChanged(FileBrowserSheet fileBrowserSheet,
+ FileBrowserSheet.Mode previousMode) {
+ }
+
+ @Override
public void rootDirectoryChanged(FileBrowserSheet fileBrowserSheet,
File previousRootDirectory) {
}
@@ -46,6 +51,14 @@
}
/**
+ * Called when a file browser sheet's mode has changed.
+ *
+ * @param fileBrowserSheet
+ * @param previousMode
+ */
+ public void modeChanged(FileBrowserSheet fileBrowserSheet, FileBrowserSheet.Mode previousMode);
+
+ /**
* Called when a file browser sheet's root directory has changed.
*
* @param fileBrowserSheet