Author: sletellier Date: 2012-07-06 10:24:11 +0200 (Fri, 06 Jul 2012) New Revision: 2385 Url: http://nuiton.org/repositories/revision/jaxx/2385 Log: fixes #2171 : FileEditor dont keep input path Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx 2012-07-05 16:08:24 UTC (rev 2384) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx 2012-07-06 08:24:11 UTC (rev 2385) @@ -24,9 +24,9 @@ <BaseActionPanel layout='{new BorderLayout()}'> <import> java.io.File - java.beans.PropertyChangeEvent java.beans.PropertyChangeListener jaxx.runtime.swing.BaseActionPanel + org.apache.commons.lang3.StringUtils </import> <FileEditorHandler id='handler' constructorParams='this'/> @@ -37,8 +37,6 @@ <Boolean id='fileEnabled' javaBean='Boolean.TRUE'/> - <File id='selectedFile' javaBean='null'/> - <String id='startPath' javaBean='null'/> <String id='title' javaBean='null'/> @@ -48,26 +46,28 @@ <String id='extsDescription' javaBean='null'/> <script><![CDATA[ - protected void $afterCompleteSetup() { + protected File selectedFile; - addPropertyChangeListener(PROPERTY_SELECTED_FILE, new PropertyChangeListener() { + public void setSelectedFile(File selectedFile) { + this.selectedFile = selectedFile; + } - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (selectedFile != null) { - pathField.setText(selectedFile.getAbsolutePath()); - fireActionEvent(); - } + public File getSelectedFile() { + if (selectedFile == null) { + if (StringUtils.isNotEmpty(startPath)) { + selectedFile = new File(startPath); } - }); + } + return selectedFile; } + ]]></script> <JTextField id='pathField' constraints='BorderLayout.CENTER' enabled='{isEnabled()}' text='{getStartPath()}' - onFocusLost='setSelectedFile(new File(pathField.getText()))'/> + onKeyReleased='handler.setSelectedFile(pathField.getText())'/> <JButton id='boutonXslLocation' constraints='BorderLayout.EAST' Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-07-05 16:08:24 UTC (rev 2384) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-07-06 08:24:11 UTC (rev 2385) @@ -27,6 +27,7 @@ import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; +import org.apache.commons.lang3.StringUtils; /** * @author sletellier <letellier@codelutin.com> @@ -34,10 +35,15 @@ public class FileEditorHandler { public static final String SEPARATOR_REGEX = "\\s*,\\s*"; + public static File lastSelectedPath; + protected FileEditor view; public FileEditorHandler(FileEditor view) { this.view = view; + if (lastSelectedPath == null) { + lastSelectedPath = new File(System.getProperty("user.home")); + } } public void openLocation() { @@ -45,7 +51,7 @@ // use last selected file File startFile = view.getSelectedFile(); String startPath = view.getStartPath(); - if (startFile == null && startPath != null) { + if (startFile == null && StringUtils.isNotEmpty(startPath)) { // else filed start path @@ -53,7 +59,7 @@ } else { // else start with user home - startFile = new File(System.getProperty("user.home")); + startFile = lastSelectedPath; } JFileChooser fc = new JFileChooser(startFile); @@ -118,10 +124,26 @@ // get selected to display in ui File file = fc.getSelectedFile(); - view.setSelectedFile(file); + setSelectedFile(file); } } + public void setSelectedFile(String path) { + setSelectedFile(new File(path)); + } + + public void setSelectedFile(File file) { + view.setSelectedFile(file); + view.setStartPath(file.getPath()); + File dir = file; + if (dir.exists()) { + if (!dir.isDirectory()) { + dir = dir.getParentFile(); + } + lastSelectedPath = dir; + } + } + public static class ExtentionFileFiler extends FileFilter { protected String ext; protected String desciption;