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.