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/08/15 14:54:08 UTC

svn commit: r804469 - in /incubator/pivot/trunk: core/src/org/apache/pivot/io/ wtk/src/org/apache/pivot/wtk/ wtk/src/org/apache/pivot/wtk/skin/terra/ wtk/test/org/apache/pivot/wtk/test/

Author: gbrown
Date: Sat Aug 15 12:54:08 2009
New Revision: 804469

URL: http://svn.apache.org/viewvc?rev=804469&view=rev
Log:
Additional file browser/sheet updates.

Modified:
    incubator/pivot/trunk/core/src/org/apache/pivot/io/Folder.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowser.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SheetCloseListener.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx

Modified: incubator/pivot/trunk/core/src/org/apache/pivot/io/Folder.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/core/src/org/apache/pivot/io/Folder.java?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/core/src/org/apache/pivot/io/Folder.java (original)
+++ incubator/pivot/trunk/core/src/org/apache/pivot/io/Folder.java Sat Aug 15 12:54:08 2009
@@ -228,7 +228,7 @@
         }
 
         // Clear the file list
-        files = new ArrayList<File>(fileList.length);
+        files = new ArrayList<File>(fileList == null ? 0 : fileList.length);
         listListeners.listCleared(this);
 
         // Add the new files, firing an insert event for each file

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowser.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowser.java?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowser.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowser.java Sat Aug 15 12:54:08 2009
@@ -18,6 +18,7 @@
 
 import java.io.File;
 
+import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Sequence;
 import org.apache.pivot.collections.immutable.ImmutableList;
 import org.apache.pivot.io.FileList;
@@ -149,6 +150,33 @@
     }
 
     /**
+     * When in single-select mode, returns the currently selected file.
+     *
+     * @return
+     * The currently selected file.
+     */
+    public File getSelectedFile() {
+        if (multiSelect) {
+            throw new IllegalStateException("File browser is not in single-select mode.");
+        }
+
+        return (fileSelection.getLength() == 0) ? null : fileSelection.get(0);
+    }
+
+    /**
+     * Sets the selection to a single file.
+     *
+     * @param file
+     */
+    public void setSelectedFile(File file) {
+        if (file == null) {
+            clearSelection();
+        } else {
+            setSelectedFiles(new ArrayList<File>(file));
+        }
+    }
+
+    /**
      * Returns the currently selected files.
      *
      * @return
@@ -202,6 +230,13 @@
     }
 
     /**
+     * Clears the selection.
+     */
+    public void clearSelection() {
+        setSelectedFiles(new ArrayList<File>());
+    }
+
+    /**
      * Returns the file browser's multi-select state.
      */
     public boolean isMultiSelect() {

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheet.java Sat Aug 15 12:54:08 2009
@@ -18,6 +18,7 @@
 
 import java.io.File;
 
+import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Sequence;
 import org.apache.pivot.collections.immutable.ImmutableList;
 import org.apache.pivot.io.FileList;
@@ -57,18 +58,6 @@
             }
         }
 
-        public void selectedFileAdded(FileBrowserSheet fileBrowserSheet, File file) {
-            for (FileBrowserSheetListener listener : this) {
-                listener.selectedFileAdded(fileBrowserSheet, file);
-            }
-        }
-
-        public void selectedFileRemoved(FileBrowserSheet fileBrowserSheet, File file) {
-            for (FileBrowserSheetListener listener : this) {
-                listener.selectedFileRemoved(fileBrowserSheet, file);
-            }
-        }
-
         public void selectedFilesChanged(FileBrowserSheet fileBrowserSheet, Sequence<File> previousSelectedFiles) {
             for (FileBrowserSheetListener listener : this) {
                 listener.selectedFilesChanged(fileBrowserSheet, previousSelectedFiles);
@@ -123,28 +112,54 @@
         }
     }
 
-    public boolean addSelectedFile(File file) {
-        int index = fileSelection.add(file);
-        if (index != -1) {
-            fileBrowserSheetListeners.selectedFileAdded(this, file);
+    /**
+     * When in single-select mode, returns the currently selected file.
+     *
+     * @return
+     * The currently selected file.
+     */
+    public File getSelectedFile() {
+        if (multiSelect) {
+            throw new IllegalStateException("File browser is not in single-select mode.");
         }
 
-        return (index != -1);
+        return (fileSelection.getLength() == 0) ? null : fileSelection.get(0);
     }
 
-    public boolean removeSelectedFile(File file) {
-        int index = fileSelection.remove(file);
-        if (index != -1) {
-            fileBrowserSheetListeners.selectedFileRemoved(this, file);
+    /**
+     * Sets the selection to a single file.
+     *
+     * @param file
+     */
+    public void setSelectedFile(File file) {
+        if (file == null) {
+            clearSelection();
+        } else {
+            setSelectedFiles(new ArrayList<File>(file));
         }
-
-        return (index != -1);
     }
 
+    /**
+     * Returns the currently selected files.
+     *
+     * @return
+     * An immutable list of selected files. The file paths are relative to
+     * the currently selected folder.
+     */
     public Sequence<File> getSelectedFiles() {
         return new ImmutableList<File>(fileSelection);
     }
 
+    /**
+     * Sets the selected files.
+     *
+     * @param selectedFiles
+     * The files to select. The file paths are relative to the currently
+     * selected folder.
+     *
+     * @return
+     * The files that were selected, with duplicates eliminated.
+     */
     public Sequence<File> setSelectedFiles(Sequence<File> selectedFiles) {
         if (selectedFiles == null) {
             throw new IllegalArgumentException("selectedFiles is null.");
@@ -159,8 +174,8 @@
         Sequence<File> previousSelectedFiles = getSelectedFiles();
 
         FileList fileSelection = new FileList();
-        for (int i = 0, n = fileSelection.getLength(); i < n; i++) {
-            File file = fileSelection.get(i);
+        for (int i = 0, n = selectedFiles.getLength(); i < n; i++) {
+            File file = selectedFiles.get(i);
 
             if (file == null) {
                 throw new IllegalArgumentException("file is null.");
@@ -177,6 +192,13 @@
         return getSelectedFiles();
     }
 
+    /**
+     * Clears the selection.
+     */
+    public void clearSelection() {
+        setSelectedFiles(new ArrayList<File>());
+    }
+
     public boolean isMultiSelect() {
         return multiSelect;
     }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/FileBrowserSheetListener.java Sat Aug 15 12:54:08 2009
@@ -40,12 +40,6 @@
         public void selectedFolderChanged(FileBrowserSheet fileBrowserSheet, Folder previousSelectedFolder) {
         }
 
-        public void selectedFileAdded(FileBrowserSheet fileBrowserSheet, File file) {
-        }
-
-        public void selectedFileRemoved(FileBrowserSheet fileBrowserSheet, File file) {
-        }
-
         public void selectedFilesChanged(FileBrowserSheet fileBrowserSheet, Sequence<File> previousSelectedFiles) {
         }
 
@@ -61,7 +55,7 @@
     public void multiSelectChanged(FileBrowserSheet fileBrowserSheet);
 
     /**
-     * Called when a file browser's selected folder has changed.
+     * Called when a file browser sheet's selected folder has changed.
      *
      * @param fileBrowserSheet
      * @param previousSelectedFolder
@@ -69,23 +63,7 @@
     public void selectedFolderChanged(FileBrowserSheet fileBrowserSheet, Folder previousSelectedFolder);
 
     /**
-     * Called when a file has been added to a file browser's selection.
-     *
-     * @param fileBrowserSheet
-     * @param file
-     */
-    public void selectedFileAdded(FileBrowserSheet fileBrowserSheet, File file);
-
-    /**
-     * Called when a file has been removed from a file browser's selection.
-     *
-     * @param fileBrowserSheet
-     * @param file
-     */
-    public void selectedFileRemoved(FileBrowserSheet fileBrowserSheet, File file);
-
-    /**
-     * Called when a file browser's selection state has been reset.
+     * Called when a file browser sheet's selection state has been reset.
      *
      * @param fileBrowserSheet
      * @param previousSelectedFiles

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SheetCloseListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SheetCloseListener.java?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SheetCloseListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SheetCloseListener.java Sat Aug 15 12:54:08 2009
@@ -28,5 +28,4 @@
      * @param sheet
      */
     public void sheetClosed(Sheet sheet);
-
 }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java Sat Aug 15 12:54:08 2009
@@ -27,9 +27,12 @@
 import org.apache.pivot.wtk.Button;
 import org.apache.pivot.wtk.ButtonPressListener;
 import org.apache.pivot.wtk.Component;
+import org.apache.pivot.wtk.FileBrowser;
 import org.apache.pivot.wtk.FileBrowserSheet;
 import org.apache.pivot.wtk.FileBrowserSheetListener;
 import org.apache.pivot.wtk.PushButton;
+import org.apache.pivot.wtk.TextInput;
+import org.apache.pivot.wtkx.WTKX;
 import org.apache.pivot.wtkx.WTKXSerializer;
 
 /**
@@ -38,8 +41,12 @@
  * @author gbrown
  */
 public class TerraFileBrowserSheetSkin extends TerraSheetSkin implements FileBrowserSheetListener {
-    private PushButton okButton = null;
-    private PushButton cancelButton = null;
+    @WTKX private TextInput saveAsTextInput = null;
+    @WTKX private FileBrowser fileBrowser = null;
+    @WTKX private PushButton okButton = null;
+    @WTKX private PushButton cancelButton = null;
+
+    private boolean updatingSelection = false;
 
     @Override
     public void install(Component component) {
@@ -69,14 +76,23 @@
 
         fileBrowserSheet.setContent(content);
 
-        okButton = (PushButton)wtkxSerializer.get("okButton");
+        wtkxSerializer.bind(this, TerraFileBrowserSheetSkin.class);
+
         okButton.getButtonPressListeners().add(new ButtonPressListener() {
             public void buttonPressed(Button button) {
+                updatingSelection = true;
+
+                // TODO If SAVE_AS, get value from saveAsTextInput
+                saveAsTextInput.getText();
+
+                fileBrowserSheet.setSelectedFiles(fileBrowser.getSelectedFiles());
+
+                updatingSelection = false;
+
                 fileBrowserSheet.close(true);
             }
         });
 
-        cancelButton = (PushButton)wtkxSerializer.get("cancelButton");
         cancelButton.getButtonPressListeners().add(new ButtonPressListener() {
             public void buttonPressed(Button button) {
                 fileBrowserSheet.close(false);
@@ -104,16 +120,10 @@
         // TODO
     }
 
-    public void selectedFileAdded(FileBrowserSheet fileBrowserSheet, File file) {
-        // TODO
-    }
-
-    public void selectedFileRemoved(FileBrowserSheet fileBrowserSheet, File file) {
-        // TODO
-    }
-
     public void selectedFilesChanged(FileBrowserSheet fileBrowserSheet, Sequence<File> previousSelectedFiles) {
-        // TODO
+        if (!updatingSelection) {
+            fileBrowser.setSelectedFiles(fileBrowserSheet.getSelectedFiles());
+        }
     }
 
     public void fileFilterChanged(FileBrowserSheet fileBrowserSheet, Filter<File> previousFileFilter) {

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx?rev=804469&r1=804468&r2=804469&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx Sat Aug 15 12:54:08 2009
@@ -20,6 +20,25 @@
     preferredWidth="640" preferredHeight="480"
     xmlns:wtkx="http://pivot.apache.org/wtkx"
     xmlns="org.apache.pivot.wtk">
+    <wtkx:script>
+    <![CDATA[
+    importPackage(org.apache.pivot.wtk);
+
+    var sheetCloseListener = new SheetCloseListener() {
+        sheetClosed: function(sheet) {
+            var message;
+            if (sheet.getResult()) {
+                message = "You selected \"" + sheet.getSelectedFile() + "\".";
+            } else {
+                message = "You didn't select anything.";
+            }
+
+            Alert.alert(MessageType.INFO, message, frame);
+        }
+    };
+    ]]>
+    </wtkx:script>
+
     <content>
         <Border>
             <content>
@@ -28,7 +47,7 @@
                         <buttonPressListeners>
                             <wtkx:script>
                             function buttonPressed(button) {
-                                fileOpenSheet.open(frame);
+                                fileOpenSheet.open(frame, sheetCloseListener);
                             }
                             </wtkx:script>
                         </buttonPressListeners>