You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/11/14 00:31:06 UTC

svn commit: r836060 - in /incubator/pivot/trunk: core/src/org/apache/pivot/collections/FilteredList.java wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java

Author: tvolkert
Date: Fri Nov 13 23:31:06 2009
New Revision: 836060

URL: http://svn.apache.org/viewvc?rev=836060&view=rev
Log:
PIVOT-321 :: Add a hideDisabledFiles:boolean style to TerraFileBrowserSkin & TerraFileBrowserSheetSkin

Modified:
    incubator/pivot/trunk/core/src/org/apache/pivot/collections/FilteredList.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java

Modified: incubator/pivot/trunk/core/src/org/apache/pivot/collections/FilteredList.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/core/src/org/apache/pivot/collections/FilteredList.java?rev=836060&r1=836059&r2=836060&view=diff
==============================================================================
--- incubator/pivot/trunk/core/src/org/apache/pivot/collections/FilteredList.java (original)
+++ incubator/pivot/trunk/core/src/org/apache/pivot/collections/FilteredList.java Fri Nov 13 23:31:06 2009
@@ -154,11 +154,20 @@
     private FilteredListListenerList<T> filteredListListeners = new FilteredListListenerList<T>();
 
     public FilteredList() {
-        this(null);
+        this(null, null);
     }
 
     public FilteredList(List<T> source) {
+        this(source, null);
+    }
+
+    public FilteredList(Filter<T> filter) {
+        this(null, filter);
+    }
+
+    public FilteredList(List<T> source, Filter<T> filter) {
         setSource(source);
+        setFilter(filter);
     }
 
     /**

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=836060&r1=836059&r2=836060&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 Fri Nov 13 23:31:06 2009
@@ -258,6 +258,14 @@
         disabledFileFilterChanged(fileBrowserSheet, null);
     }
 
+    public boolean isHideDisabledFiles() {
+        return (Boolean)fileBrowser.getStyles().get("hideDisabledFiles");
+    }
+
+    public void setHideDisabledFiles(boolean hideDisabledFiles) {
+        fileBrowser.getStyles().put("hideDisabledFiles", hideDisabledFiles);
+    }
+
     @Override
     public void windowOpened(Window window) {
         super.windowOpened(window);
@@ -307,21 +315,24 @@
     }
 
     @Override
-    public void rootDirectoryChanged(FileBrowserSheet fileBrowserSheet, File previousRootDirectory) {
+    public void rootDirectoryChanged(FileBrowserSheet fileBrowserSheet,
+        File previousRootDirectory) {
         if (!updatingSelection) {
             fileBrowser.setRootDirectory(fileBrowserSheet.getRootDirectory());
         }
     }
 
     @Override
-    public void selectedFilesChanged(FileBrowserSheet fileBrowserSheet, Sequence<File> previousSelectedFiles) {
+    public void selectedFilesChanged(FileBrowserSheet fileBrowserSheet,
+        Sequence<File> previousSelectedFiles) {
         if (!updatingSelection) {
             fileBrowser.setSelectedFiles(fileBrowserSheet.getSelectedFiles());
         }
     }
 
     @Override
-    public void disabledFileFilterChanged(FileBrowserSheet fileBrowserSheet, Filter<File> previousDisabledFileFilter) {
+    public void disabledFileFilterChanged(FileBrowserSheet fileBrowserSheet,
+        Filter<File> previousDisabledFileFilter) {
         Filter<File> disabledFileFilter = fileBrowserSheet.getDisabledFileFilter();
 
         FileBrowserSheet.Mode mode = fileBrowserSheet.getMode();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java?rev=836060&r1=836059&r2=836060&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java Fri Nov 13 23:31:06 2009
@@ -222,7 +222,8 @@
     /**
      * Table view file renderer.
      */
-    public static class TableViewFileRenderer extends FileRenderer implements TableView.CellRenderer {
+    public static class TableViewFileRenderer extends FileRenderer
+        implements TableView.CellRenderer {
         public static final String NAME_KEY = "name";
         public static final String SIZE_KEY = "size";
         public static final String LAST_MODIFIED_KEY = "lastModified";
@@ -254,7 +255,8 @@
                     long lastModified = file.lastModified();
                     Date lastModifiedDate = new Date(lastModified);
 
-                    DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+                    DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT,
+                        DateFormat.SHORT);
                     text = dateFormat.format(lastModifiedDate);
                     getStyles().put("horizontalAlignment", HorizontalAlignment.RIGHT);
                 } else {
@@ -288,7 +290,6 @@
         }
     }
 
-
     /**
      * Abstract base class for drive renderers.
      */
@@ -332,7 +333,8 @@
     /**
      * List button drive renderer.
      */
-    public static class ListButtonDriveRenderer extends DriveRenderer implements Button.DataRenderer {
+    public static class ListButtonDriveRenderer extends DriveRenderer
+        implements Button.DataRenderer {
         public ListButtonDriveRenderer() {
             getStyles().put("horizontalAlignment", HorizontalAlignment.LEFT);
         }
@@ -355,7 +357,8 @@
     /**
      * List view drive renderer.
      */
-    public static class ListViewDriveRenderer extends DriveRenderer implements ListView.ItemRenderer {
+    public static class ListViewDriveRenderer extends DriveRenderer
+        implements ListView.ItemRenderer {
         public ListViewDriveRenderer() {
             getStyles().put("horizontalAlignment", HorizontalAlignment.LEFT);
             getStyles().put("padding", new Insets(2, 3, 2, 3));
@@ -439,13 +442,19 @@
     }
 
     /**
-     * File name filter.
+     * Include file filter.
      */
-    public static class FileNameFilter implements Filter<File> {
+    public static class IncludeFileFilter implements Filter<File> {
         private String match;
+        private Filter<File> excludeFileFilter;
+
+        public IncludeFileFilter() {
+            this(null, null);
+        }
 
-        public FileNameFilter(String match) {
-            this.match = match.toLowerCase();
+        public IncludeFileFilter(String match, Filter<File> excludeFileFilter) {
+            this.match = (match == null ? null : match.toLowerCase());
+            this.excludeFileFilter = excludeFileFilter;
         }
 
         @Override
@@ -453,15 +462,23 @@
             String name = file.getName();
             name = name.toLowerCase();
 
-            boolean include;
-            if (match.startsWith("*")) {
-                if (match.length() == 1) {
-                    include = true;
+            boolean include = true;
+
+            if (match != null) {
+                if (match.startsWith("*")) {
+                    if (match.length() == 1) {
+                        include = true;
+                    } else {
+                        include = name.contains(match.substring(1));
+                    }
                 } else {
-                    include = name.contains(match.substring(1));
+                    include = name.startsWith(match);
                 }
-            } else {
-                include = name.startsWith(match);
+            }
+
+            if (include
+                && excludeFileFilter != null) {
+                include = !excludeFileFilter.include(file);
             }
 
             return include;
@@ -480,9 +497,10 @@
     @WTKX private ScrollPane fileScrollPane = null;
     @WTKX private TableView fileTableView = null;
 
-    private FilteredList<File> files = new FilteredList<File>();
+    private FilteredList<File> files = new FilteredList<File>(new IncludeFileFilter());
 
     private boolean keyboardFolderTraversalEnabled = true;
+    private boolean hideDisabledFiles = false;
 
     private boolean updatingSelection = false;
 
@@ -587,13 +605,17 @@
         searchTextInput.getTextInputTextListeners().add(new TextInputTextListener() {
             @Override
             public void textChanged(TextInput textInput) {
-                String text = textInput.getText();
-
+                String text = textInput.getText().trim();
                 if (text.length() == 0) {
-                    files.setFilter(null);
-                } else {
-                    files.setFilter(new FileNameFilter(text));
+                    text = null;
                 }
+
+                Filter<File> excludeFileFilter = null;
+                if (hideDisabledFiles) {
+                    excludeFileFilter = fileBrowser.getDisabledFileFilter();
+                }
+
+                files.setFilter(new IncludeFileFilter(text, excludeFileFilter));
             }
         });
 
@@ -689,7 +711,8 @@
 
         files.getFilteredListListeners().add(new FilteredListListener.Adapter<File>() {
             @Override
-            public void filterChanged(FilteredList<File> filteredList, Filter<File> previousFilter) {
+            public void filterChanged(FilteredList<File> filteredList,
+                Filter<File> previousFilter) {
                 fileBrowser.clearSelection();
             }
         });
@@ -698,7 +721,8 @@
 
         fileBrowser.setFocusTraversalPolicy(new IndexFocusTraversalPolicy() {
             @Override
-            public Component getNextComponent(Container container, Component component, Direction direction) {
+            public Component getNextComponent(Container container, Component component,
+                Direction direction) {
                 Component nextComponent;
                 if (component == null) {
                     nextComponent = fileTableView;
@@ -766,6 +790,27 @@
         this.keyboardFolderTraversalEnabled = keyboardFolderTraversalEnabled;
     }
 
+    public boolean isHideDisabledFiles() {
+        return hideDisabledFiles;
+    }
+
+    public void setHideDisabledFiles(boolean hideDisabledFiles) {
+        this.hideDisabledFiles = hideDisabledFiles;
+
+        String text = searchTextInput.getText().trim();
+        if (text.length() == 0) {
+            text = null;
+        }
+
+        Filter<File> excludeFileFilter = null;
+        if (hideDisabledFiles) {
+            FileBrowser fileBrowser = (FileBrowser)getComponent();
+            excludeFileFilter = fileBrowser.getDisabledFileFilter();
+        }
+
+        files.setFilter(new IncludeFileFilter(text, excludeFileFilter));
+    }
+
     @Override
     public boolean keyPressed(Component component, int keyCode, Keyboard.KeyLocation keyLocation) {
         boolean consumed = super.keyPressed(component, keyCode, keyLocation);
@@ -911,8 +956,20 @@
     }
 
     @Override
-    public void disabledFileFilterChanged(FileBrowser fileBrowser, Filter<File> previousDisabledFileFilter) {
-        fileTableView.setDisabledRowFilter(fileBrowser.getDisabledFileFilter());
+    public void disabledFileFilterChanged(FileBrowser fileBrowser,
+        Filter<File> previousDisabledFileFilter) {
+        Filter<File> disabledFileFilter = fileBrowser.getDisabledFileFilter();
+
+        fileTableView.setDisabledRowFilter(disabledFileFilter);
+
+        if (hideDisabledFiles) {
+            String text = searchTextInput.getText().trim();
+            if (text.length() == 0) {
+                text = null;
+            }
+
+            files.setFilter(new IncludeFileFilter(text, disabledFileFilter));
+        }
     }
 
     private void refreshFileList() {