Author: ruschein
Date: 2011-06-30 13:32:19 -0700 (Thu, 30 Jun 2011)
New Revision: 25987

Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/proxysettings/ProxySettingsTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/DeleteColumnTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/RenameColumnTask.java
   core3/work-api/trunk/src/main/java/org/cytoscape/work/TunableValidator.java
   
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
   
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/GUITunableInterceptorImpl.java
Log:
Changed the TunableValidator to return one of 3 states instead of simply true 
or false.

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
        2011-06-30 19:57:00 UTC (rev 25986)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
        2011-06-30 20:32:19 UTC (rev 25987)
@@ -2,6 +2,8 @@
 
 
 import org.cytoscape.work.Tunable;
+import org.cytoscape.work.TunableValidator;
+import org.cytoscape.work.TunableValidator.ValidationState;
 import org.cytoscape.work.util.ListSingleSelection;
 import org.cytoscape.io.CyFileFilter;
 import org.cytoscape.io.write.AbstractCyWriter;
@@ -21,7 +23,9 @@
  * is meant to be extended for specific file types such that the appropriate
  * {@link org.cytoscape.io.write.CyWriter} can be identified.
  */
-public abstract class TunableAbstractCyWriter<T extends CyWriterManager> 
extends AbstractCyWriter<T> {
+public abstract class TunableAbstractCyWriter<T extends CyWriterManager>
+       extends AbstractCyWriter<T> implements TunableValidator
+{
        /**
         * This method gets the file to be written.  This method should not
         * be called directly, but rather handled by the {@link 
org.cytoscape.work.Tunable}
@@ -56,6 +60,23 @@
                options = new ListSingleSelection<String>(new 
ArrayList<String>(descriptionFilterMap.keySet()));
        }
 
+       @Override
+       public final ValidationState getValidationState(final Appendable msg) {
+               // Make sure we have the right extension, if not, then force it:
+               if (!fileExtensionIsOk(outputFile))
+                       outputFile = addOrReplaceExtension(outputFile);
+
+               if (outputFile.exists()) {
+                       try {
+                               msg.append("File already exists, are you sure 
you want to overwrite it?");
+                       } catch (final Exception e) {
+                               /* Intentionally empty! */
+                       }
+                       return ValidationState.REQUEST_CONFIRMATION;
+               } else
+                       return ValidationState.OK;
+       }
+
        protected final boolean fileExtensionIsOk(final File file) {
                final String exportFileFormat = getExportFileFormat();
                if (exportFileFormat == null)

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/proxysettings/ProxySettingsTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/proxysettings/ProxySettingsTask.java
   2011-06-30 19:57:00 UTC (rev 25986)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/proxysettings/ProxySettingsTask.java
   2011-06-30 20:32:19 UTC (rev 25987)
@@ -8,6 +8,7 @@
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.work.Tunable;
 import org.cytoscape.work.TunableValidator;
+import org.cytoscape.work.TunableValidator.ValidationState;
 import org.cytoscape.work.util.ListSingleSelection;
 
 import java.net.URL;
@@ -51,7 +52,7 @@
                this.streamUtil = streamUtil;
        }
 
-       public boolean tunablesAreValid(final Appendable errMsg) {
+       public ValidationState getValidationState(final Appendable errMsg) {
                storeProxySettings();
 
                FutureTask<Exception> executor = new FutureTask<Exception>(new 
TestProxySettings(streamUtil));
@@ -69,7 +70,7 @@
                revertProxySettings();
 
                if (result == null)
-                       return true;
+                       return ValidationState.OK;
 
                try {
                        errMsg.append("Cytoscape was unable to connect to the 
internet because:\n\n" + result.getMessage());
@@ -77,7 +78,7 @@
                        /* Intentionally ignored! */
                }
 
-               return false;
+               return ValidationState.INVALID;
        }
 
        public void run(TaskMonitor taskMonitor) {

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/DeleteColumnTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/DeleteColumnTask.java
    2011-06-30 19:57:00 UTC (rev 25986)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/DeleteColumnTask.java
    2011-06-30 20:32:19 UTC (rev 25987)
@@ -34,6 +34,7 @@
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.work.Tunable;
 import org.cytoscape.work.TunableValidator;
+import org.cytoscape.work.TunableValidator.ValidationState;
 
 
 public final class DeleteColumnTask extends AbstractTableColumnTask implements 
TunableValidator {
@@ -47,15 +48,15 @@
        }
 
        @Override
-       public boolean tunablesAreValid(final Appendable errMsg) {
+       public ValidationState getValidationState(final Appendable errMsg) {
                if (column.isImmutable()) {
                        try {
                                errMsg.append("Cannot delete an immutable 
column!");
                        } catch (Exception e) {
                        }
-                       return false;
+                       return ValidationState.INVALID;
                }
 
-               return true;
+               return ValidationState.OK;
        }
 }
\ No newline at end of file

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/RenameColumnTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/RenameColumnTask.java
    2011-06-30 19:57:00 UTC (rev 25986)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/table/RenameColumnTask.java
    2011-06-30 20:32:19 UTC (rev 25987)
@@ -1,5 +1,5 @@
 /*
- Copyright (c) 2010, The Cytoscape Consortium (www.cytoscape.org)
+ Copyright (c) 2010, 2011, The Cytoscape Consortium (www.cytoscape.org)
 
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published
@@ -34,6 +34,7 @@
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.work.Tunable;
 import org.cytoscape.work.TunableValidator;
+import org.cytoscape.work.TunableValidator.ValidationState;
 
 
 public final class RenameColumnTask extends AbstractTableColumnTask implements 
TunableValidator {
@@ -50,13 +51,13 @@
        }
 
        @Override
-       public boolean tunablesAreValid(final Appendable errMsg) {
+       public ValidationState getValidationState(final Appendable errMsg) {
                if (newColumnName == null || newColumnName.isEmpty()) {
                        try {
                                errMsg.append("You must provide a new column 
name!");
                        } catch (Exception e) {
                        }
-                       return false;
+                       return ValidationState.INVALID;
                }
 
                final CyTable table = column.getTable();
@@ -65,7 +66,7 @@
                                errMsg.append("Column name is a duplicate!");
                        } catch (Exception e) {
                        }
-                       return false;
+                       return ValidationState.INVALID;
                }
 
                if (column.isImmutable()) {
@@ -73,9 +74,9 @@
                                errMsg.append("Cannot rename an immutable 
column!");
                        } catch (Exception e) {
                        }
-                       return false;
+                       return ValidationState.INVALID;
                }
 
-               return true;
+               return ValidationState.OK;
        }
 }
\ No newline at end of file

Modified: 
core3/work-api/trunk/src/main/java/org/cytoscape/work/TunableValidator.java
===================================================================
--- core3/work-api/trunk/src/main/java/org/cytoscape/work/TunableValidator.java 
2011-06-30 19:57:00 UTC (rev 25986)
+++ core3/work-api/trunk/src/main/java/org/cytoscape/work/TunableValidator.java 
2011-06-30 20:32:19 UTC (rev 25987)
@@ -33,11 +33,17 @@
  *
  */
 public interface TunableValidator {
+       public enum ValidationState {
+               INVALID, OK, REQUEST_CONFIRMATION
+       }
+
        /**
         * Executes the validation test on the annotated <code>Tunables</code>.
         * 
-        * @param  errMsg  if the validation failed an explanatory message can 
be found here and accessed via <code>errMsg.toString()</code>
-        * @return true if the test succeeded and false otherwise
+        * @param  errMsg  if the validation failed an explanatory message can 
be found here and accessed via
+        *                 <code>errMsg.toString()</code>
+        * @return OK if the test succeeded and INVALID if it failed and 
REQUEST_CONFIRMATION if the user has
+        *         to be asked for confirmation, e.g. if a file would have to 
be overwritten etc.
         */
-       boolean tunablesAreValid(final Appendable errMsg);
+       ValidationState getValidationState(final Appendable errMsg);
 }

Modified: 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
===================================================================
--- 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
        2011-06-30 19:57:00 UTC (rev 25986)
+++ 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
        2011-06-30 20:32:19 UTC (rev 25987)
@@ -145,7 +145,7 @@
                if (filters.isEmpty())
                        return;
 
-               fileChooser.setAcceptAllFileFilterUsed(false);
+               fileChooser.setAcceptAllFileFilterUsed(input);
 
                int i = 0;
                FileChooserFilter defaultFilter = null;
@@ -239,6 +239,7 @@
                                if (ret == JFileChooser.APPROVE_OPTION) {
                                        file = fileChooser.getSelectedFile();
                                        if (file != null) {
+/*
                                                // Make sure the user-supplied 
file name has an extension:
                                                final String fileName = 
file.getPath();
                                                if (getFileExtension(fileName) 
== null) {
@@ -259,7 +260,7 @@
                                                            == 
JOptionPane.NO_OPTION)
                                                                break try_again;
                                                }
-
+*/
                                                fileTextField.setFont(new 
Font(null, Font.PLAIN, 10));
                                                
fileTextField.setText(file.getAbsolutePath());
                                                
fileTextField.removeMouseListener(mouseClick);

Modified: 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/GUITunableInterceptorImpl.java
===================================================================
--- 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/GUITunableInterceptorImpl.java
  2011-06-30 19:57:00 UTC (rev 25986)
+++ 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/GUITunableInterceptorImpl.java
  2011-06-30 20:32:19 UTC (rev 25987)
@@ -19,6 +19,7 @@
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.TunableHandlerFactory;
 import org.cytoscape.work.TunableValidator;
+import org.cytoscape.work.TunableValidator.ValidationState;
 import org.cytoscape.work.swing.AbstractGUITunableInterceptor;
 import org.cytoscape.work.swing.GUITunableHandler;
 import org.cytoscape.work.internal.tunables.utils.CollapsablePanel;
@@ -323,13 +324,25 @@
 
                        final Appendable errMsg = new StringBuilder();
                        try {
-                               if 
(!((TunableValidator)objectWithTunables).tunablesAreValid(errMsg)) {
+                               final ValidationState validationState =
+                                       
((TunableValidator)objectWithTunables).getValidationState(errMsg);
+                               if (validationState == ValidationState.INVALID) 
{
                                        JOptionPane.showMessageDialog(new 
JFrame(), errMsg.toString(),
                                                                      "Input 
Validation Problem",
                                                                      
JOptionPane.ERROR_MESSAGE);
                                        if (parentPanel == null)
                                                
displayGUI(panelMap.get(handlers));
                                        return false;
+                               } else if (validationState == 
ValidationState.REQUEST_CONFIRMATION) {
+                                       if (JOptionPane.showConfirmDialog(new 
JFrame(), errMsg.toString(),
+                                                                         
"Confirmation",
+                                                                         
JOptionPane.YES_NO_OPTION)
+                                           == JOptionPane.NO_OPTION)
+                                       {
+                                               if (parentPanel == null)
+                                                       
displayGUI(panelMap.get(handlers));
+                                               return false;
+                                       }
                                }
                        } catch (Exception e) {
                                e.printStackTrace();

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to