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>