You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by no...@apache.org on 2012/03/15 15:55:40 UTC

svn commit: r1301022 - in /pivot/trunk: tests/src/org/apache/pivot/tests/issues/Pivot800.java wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java

Author: noelgrandin
Date: Thu Mar 15 14:55:40 2012
New Revision: 1301022

URL: http://svn.apache.org/viewvc?rev=1301022&view=rev
Log:
PIVOT-800  FileBrowserSheet#setSelectedFile() does not take effect

Added:
    pivot/trunk/tests/src/org/apache/pivot/tests/issues/Pivot800.java
Modified:
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java

Added: pivot/trunk/tests/src/org/apache/pivot/tests/issues/Pivot800.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tests/src/org/apache/pivot/tests/issues/Pivot800.java?rev=1301022&view=auto
==============================================================================
--- pivot/trunk/tests/src/org/apache/pivot/tests/issues/Pivot800.java (added)
+++ pivot/trunk/tests/src/org/apache/pivot/tests/issues/Pivot800.java Thu Mar 15 14:55:40 2012
@@ -0,0 +1,58 @@
+package org.apache.pivot.tests.issues;
+
+import java.io.File;
+import java.io.FileFilter;
+
+import org.apache.pivot.collections.Map;
+import org.apache.pivot.wtk.Application;
+import org.apache.pivot.wtk.DesktopApplicationContext;
+import org.apache.pivot.wtk.Display;
+import org.apache.pivot.wtk.FileBrowserSheet;
+import org.apache.pivot.wtk.Window;
+import org.apache.pivot.wtk.WindowStateListener;
+
+public class Pivot800 implements Application {
+    private FileBrowserSheet sheet;
+
+    public static void main(String[] args) {
+        DesktopApplicationContext.main(new String[] { Pivot800.class.getName() });
+    }
+
+    public void startup(Display display, Map<String, String> properties) throws Exception {
+        Window window = new Window();
+        window.setMaximized(true);
+        sheet = new FileBrowserSheet(FileBrowserSheet.Mode.SAVE_TO);
+        sheet.getWindowStateListeners().add(new SelectFileListener());
+        window.open(display);
+        sheet.open(window);
+    }
+
+    private class SelectFileListener extends WindowStateListener.Adapter {
+        @Override
+        public void windowOpened(Window window) {
+            File homeFolder = new File(System.getProperty("user.home"));
+            File firstFolderInHome = homeFolder.listFiles(new FolderFilter())[0];
+            sheet.setRootDirectory(homeFolder);
+            System.out.println("selecting file " + firstFolderInHome);
+            sheet.setSelectedFile(firstFolderInHome);
+            System.out.println("Selected file is " + sheet.getSelectedFile() + ", but button state is not updated!");
+        }
+    }
+
+    public boolean shutdown(boolean optional) throws Exception {
+        return false;
+    }
+
+    public void suspend() throws Exception {
+    }
+
+    public void resume() throws Exception {
+    }
+
+    private class FolderFilter implements FileFilter {
+        public boolean accept(File pathname) {
+            return pathname.isDirectory();
+        }
+    }
+
+}
\ No newline at end of file

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java?rev=1301022&r1=1301021&r2=1301022&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java Thu Mar 15 14:55:40 2012
@@ -686,35 +686,39 @@ public class TerraFileBrowserSkin extend
             @Override
             @SuppressWarnings("unchecked")
             public void selectedRangeAdded(TableView tableView, int rangeStart, int rangeEnd) {
-                updatingSelection = true;
+                if (!updatingSelection) {
+                    updatingSelection = true;
 
-                for (int i = rangeStart; i <= rangeEnd; i++) {
-                    List<File> files = (List<File>)fileTableView.getTableData();
-                    File file = files.get(i);
-                    fileBrowser.addSelectedFile(file);
-                }
+                    for (int i = rangeStart; i <= rangeEnd; i++) {
+                        List<File> files = (List<File>)fileTableView.getTableData();
+                        File file = files.get(i);
+                        fileBrowser.addSelectedFile(file);
+                    }
 
-                updatingSelection = false;
+                    updatingSelection = false;
+                }
             }
 
             @Override
             @SuppressWarnings("unchecked")
             public void selectedRangeRemoved(TableView tableView, int rangeStart, int rangeEnd) {
-                updatingSelection = true;
+                if (!updatingSelection) {
+                    updatingSelection = true;
 
-                for (int i = rangeStart; i <= rangeEnd; i++) {
-                    List<File> files = (List<File>)fileTableView.getTableData();
-                    File file = files.get(i);
-                    fileBrowser.removeSelectedFile(file);
-                }
+                    for (int i = rangeStart; i <= rangeEnd; i++) {
+                        List<File> files = (List<File>)fileTableView.getTableData();
+                        File file = files.get(i);
+                        fileBrowser.removeSelectedFile(file);
+                    }
 
-                updatingSelection = false;
+                    updatingSelection = false;
+                }
             }
 
             @Override
             @SuppressWarnings("unchecked")
             public void selectedRangesChanged(TableView tableView, Sequence<Span> previousSelectedRanges) {
-                if (previousSelectedRanges != null) {
+                if (!updatingSelection && previousSelectedRanges != null) {
                     updatingSelection = true;
 
                     Sequence<File> files = (Sequence<File>)tableView.getSelectedRows();
@@ -980,7 +984,9 @@ public class TerraFileBrowserSkin extend
             List<File> files = (List<File>)fileTableView.getTableData();
             int index = files.indexOf(file);
             if (index != -1) {
+                updatingSelection = true;
                 fileTableView.addSelectedIndex(index);
+                updatingSelection = false;
             }
         }
     }
@@ -992,14 +998,20 @@ public class TerraFileBrowserSkin extend
             List<File> files = (List<File>)fileTableView.getTableData();
             int index = files.indexOf(file);
             if (index != -1) {
+                updatingSelection = true;
                 fileTableView.removeSelectedIndex(index);
+                updatingSelection = false;
             }
         }
     }
 
     @Override
-    @SuppressWarnings("unchecked")
     public void selectedFilesChanged(FileBrowser fileBrowser, Sequence<File> previousSelectedFiles) {
+        updateSelectedFiles(fileBrowser);
+    }
+
+    @SuppressWarnings("unchecked")
+    private void updateSelectedFiles(FileBrowser fileBrowser) {
         if (!updatingSelection) {
             Sequence<File> selectedFiles = fileBrowser.getSelectedFiles();
 
@@ -1014,7 +1026,9 @@ public class TerraFileBrowserSkin extend
                 }
             }
 
+            updatingSelection = true;
             fileTableView.setSelectedRanges(selectedRanges);
+            updatingSelection = false;
         }
     }
 
@@ -1080,6 +1094,8 @@ public class TerraFileBrowserSkin extend
                         }
                     }
 
+                    updateSelectedFiles((FileBrowser) getComponent());
+
                     refreshFileListTask = null;
                 }
             }