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/08/27 21:47:31 UTC

svn commit: r990242 - in /pivot/trunk: core/src/org/apache/pivot/collections/ core/test/org/apache/pivot/collections/test/ wtk-terra/src/org/apache/pivot/wtk/skin/terra/

Author: gbrown
Date: Fri Aug 27 19:47:30 2010
New Revision: 990242

URL: http://svn.apache.org/viewvc?rev=990242&view=rev
Log:
Eliminate FilteredList; update TerraFileBrowserSkin to perform filtering internally.

Removed:
    pivot/trunk/core/src/org/apache/pivot/collections/FilteredList.java
    pivot/trunk/core/src/org/apache/pivot/collections/FilteredListListener.java
    pivot/trunk/core/test/org/apache/pivot/collections/test/FilteredListTest.java
Modified:
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSkin.java

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=990242&r1=990241&r2=990242&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 Fri Aug 27 19:47:30 2010
@@ -29,10 +29,7 @@ import org.apache.pivot.beans.BXML;
 import org.apache.pivot.beans.BXMLSerializer;
 import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Dictionary;
-import org.apache.pivot.collections.FilteredList;
-import org.apache.pivot.collections.FilteredListListener;
 import org.apache.pivot.collections.List;
-import org.apache.pivot.collections.ListListener;
 import org.apache.pivot.collections.Sequence;
 import org.apache.pivot.serialization.SerializationException;
 import org.apache.pivot.text.FileSizeFormat;
@@ -552,8 +549,6 @@ public class TerraFileBrowserSkin extend
     @BXML private ScrollPane fileScrollPane = null;
     @BXML private TableView fileTableView = null;
 
-    private FilteredList<File> files = new FilteredList<File>(new IncludeFileFilter());
-
     private boolean keyboardFolderTraversalEnabled = true;
     private boolean hideDisabledFiles = false;
 
@@ -639,7 +634,7 @@ public class TerraFileBrowserSkin extend
                     searchTextInput.setText("");
                     consumed = true;
                 } else if (keyCode == Keyboard.KeyCode.DOWN) {
-                    if (files.getLength() > 0) {
+                    if (fileTableView.getTableData().getLength() > 0) {
                         fileTableView.setSelectedIndex(0);
                         fileTableView.requestFocus();
                     }
@@ -652,26 +647,18 @@ public class TerraFileBrowserSkin extend
         searchTextInput.getTextInputContentListeners().add(new TextInputContentListener.Adapter() {
             @Override
             public void textChanged(TextInput textInput) {
-                String text = textInput.getText().trim();
-                if (text.length() == 0) {
-                    text = null;
-                }
-
-                Filter<File> excludeFileFilter = null;
-                if (hideDisabledFiles) {
-                    excludeFileFilter = fileBrowser.getDisabledFileFilter();
-                }
-
-                files.setFilter(new IncludeFileFilter(text, excludeFileFilter));
+                refreshFileList();
             }
         });
 
         fileTableView.getTableViewSelectionListeners().add(new TableViewSelectionListener() {
             @Override
+            @SuppressWarnings("unchecked")
             public void selectedRangeAdded(TableView tableView, int rangeStart, int rangeEnd) {
                 updatingSelection = true;
 
                 for (int i = rangeStart; i <= rangeEnd; i++) {
+                    List<File> files = (List<File>)fileTableView.getTableData();
                     File file = files.get(i);
                     fileBrowser.addSelectedFile(file);
                 }
@@ -680,10 +667,12 @@ public class TerraFileBrowserSkin extend
             }
 
             @Override
+            @SuppressWarnings("unchecked")
             public void selectedRangeRemoved(TableView tableView, int rangeStart, int rangeEnd) {
                 updatingSelection = true;
 
                 for (int i = rangeStart; i <= rangeEnd; i++) {
+                    List<File> files = (List<File>)fileTableView.getTableData();
                     File file = files.get(i);
                     fileBrowser.removeSelectedFile(file);
                 }
@@ -717,15 +706,8 @@ public class TerraFileBrowserSkin extend
 
         fileTableView.getTableViewSortListeners().add(new TableViewSortListener.Adapter() {
             @Override
-            @SuppressWarnings("unchecked")
             public void sortChanged(TableView tableView) {
-                TableView.SortDictionary sort = tableView.getSort();
-
-                if (!sort.isEmpty()) {
-                    Dictionary.Pair<String, SortDirection> pair = tableView.getSort().get(0);
-                    List<File> files = (List<File>)tableView.getTableData();
-                    files.setComparator(new FileComparator(pair.key, pair.value));
-                }
+                sortFileList();
             }
         });
 
@@ -743,7 +725,7 @@ public class TerraFileBrowserSkin extend
                     if (index != -1
                         && index == this.index
                         && fileTableView.isRowSelected(index)) {
-                        File file = files.get(index);
+                        File file = (File)fileTableView.getTableData().get(index);
 
                         if (file.isDirectory()) {
                             fileBrowser.setRootDirectory(file);
@@ -756,23 +738,6 @@ public class TerraFileBrowserSkin extend
             }
         });
 
-        files.getListListeners().add(new ListListener.Adapter<File>() {
-            @Override
-            public void comparatorChanged(List<File> list, Comparator<File> previousComparator) {
-                fileBrowser.clearSelection();
-            }
-        });
-
-        files.getFilteredListListeners().add(new FilteredListListener.Adapter<File>() {
-            @Override
-            public void filterChanged(FilteredList<File> filteredList,
-                Filter<File> previousFilter) {
-                fileBrowser.clearSelection();
-            }
-        });
-
-        fileTableView.setTableData(files);
-
         fileBrowser.setFocusTraversalPolicy(new IndexFocusTraversalPolicy() {
             @Override
             public Component getNextComponent(Container container, Component component,
@@ -829,7 +794,7 @@ public class TerraFileBrowserSkin extend
 
             int index = fileTableView.getRowAt(location.y);
             if (index != -1) {
-                file = files.get(index);
+                file = (File)fileTableView.getTableData().get(index);
             }
         }
 
@@ -850,19 +815,7 @@ public class TerraFileBrowserSkin extend
 
     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));
+        refreshFileList();
     }
 
     @Override
@@ -965,8 +918,10 @@ public class TerraFileBrowserSkin extend
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void selectedFileAdded(FileBrowser fileBrowser, File file) {
         if (!updatingSelection) {
+            List<File> files = (List<File>)fileTableView.getTableData();
             int index = files.indexOf(file);
             if (index != -1) {
                 fileTableView.addSelectedIndex(index);
@@ -975,8 +930,10 @@ public class TerraFileBrowserSkin extend
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void selectedFileRemoved(FileBrowser fileBrowser, File file) {
         if (!updatingSelection) {
+            List<File> files = (List<File>)fileTableView.getTableData();
             int index = files.indexOf(file);
             if (index != -1) {
                 fileTableView.removeSelectedIndex(index);
@@ -985,6 +942,7 @@ public class TerraFileBrowserSkin extend
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void selectedFilesChanged(FileBrowser fileBrowser, Sequence<File> previousSelectedFiles) {
         if (!updatingSelection) {
             Sequence<File> selectedFiles = fileBrowser.getSelectedFiles();
@@ -993,6 +951,7 @@ public class TerraFileBrowserSkin extend
             for (int i = 0, n = selectedFiles.getLength(); i < n; i++) {
                 File selectedFile = selectedFiles.get(i);
 
+                List<File> files = (List<File>)fileTableView.getTableData();
                 int index = files.indexOf(selectedFile);
                 if (index != -1) {
                     selectedRanges.add(new Span(index, index));
@@ -1005,31 +964,46 @@ public class TerraFileBrowserSkin extend
 
     @Override
     public void multiSelectChanged(FileBrowser fileBrowser) {
-        fileTableView.setSelectMode(fileBrowser.isMultiSelect() ?
-            TableView.SelectMode.MULTI : TableView.SelectMode.SINGLE);
+        fileTableView.setSelectMode(fileBrowser.isMultiSelect() ? TableView.SelectMode.MULTI :
+            TableView.SelectMode.SINGLE);
     }
 
     @Override
-    public void disabledFileFilterChanged(FileBrowser fileBrowser,
-        Filter<File> previousDisabledFileFilter) {
-        Filter<File> disabledFileFilter = fileBrowser.getDisabledFileFilter();
+    public void disabledFileFilterChanged(FileBrowser fileBrowser, Filter<File> previousDisabledFileFilter) {
+        fileTableView.setDisabledRowFilter(fileBrowser.getDisabledFileFilter());
+        refreshFileList();
+    }
 
-        fileTableView.setDisabledRowFilter(disabledFileFilter);
+    private void refreshFileList() {
+        FileBrowser fileBrowser = (FileBrowser)getComponent();
+        File rootDirectory = fileBrowser.getRootDirectory();
+        File[] files = rootDirectory.listFiles(HIDDEN_FILE_FILTER);
 
-        if (hideDisabledFiles) {
-            String text = searchTextInput.getText().trim();
-            if (text.length() == 0) {
-                text = null;
-            }
+        String text = searchTextInput.getText().trim();
+        IncludeFileFilter includeFileFilter = new IncludeFileFilter(text.length() == 0 ? null : text,
+            hideDisabledFiles ? fileBrowser.getDisabledFileFilter() : null);
 
-            files.setFilter(new IncludeFileFilter(text, disabledFileFilter));
+        ArrayList<File> filteredFiles = new ArrayList<File>();
+
+        for (int i = 0; i < files.length; i++) {
+            File file = files[i];
+            if (includeFileFilter.include(file)) {
+                filteredFiles.add(file);
+            }
         }
+
+        fileTableView.setTableData(filteredFiles);
+        sortFileList();
     }
 
-    private void refreshFileList() {
-        FileBrowser fileBrowser = (FileBrowser)getComponent();
-        File rootDirectory = fileBrowser.getRootDirectory();
+    @SuppressWarnings("unchecked")
+    private void sortFileList() {
+        TableView.SortDictionary sort = fileTableView.getSort();
 
-        files.setSource(new ArrayList<File>(rootDirectory.listFiles(HIDDEN_FILE_FILTER)));
+        if (!sort.isEmpty()) {
+            Dictionary.Pair<String, SortDirection> pair = fileTableView.getSort().get(0);
+            List<File> files = (List<File>)fileTableView.getTableData();
+            files.setComparator(new FileComparator(pair.key, pair.value));
+        }
     }
 }