Author: jm
Date: 2010-09-22 15:33:00 -0700 (Wed, 22 Sep 2010)
New Revision: 22019
Added:
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/utils/SupportedFileTypesManager.java
Modified:
core3/work-swing-impl/trunk/pom.xml
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/GUITunableHandlerFactory.java
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Changed FileHandler so it builds up a list of recognized file extensions from
all loaded InputStreamTaskFactories when reading/writing a network
Modified: core3/work-swing-impl/trunk/pom.xml
===================================================================
--- core3/work-swing-impl/trunk/pom.xml 2010-09-22 22:17:02 UTC (rev 22018)
+++ core3/work-swing-impl/trunk/pom.xml 2010-09-22 22:33:00 UTC (rev 22019)
@@ -185,6 +185,11 @@
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>io-api</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.ops4j.pax.logging</groupId>
<artifactId>pax-logging-api</artifactId>
<version>1.5.2</version>
Modified:
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
===================================================================
---
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
2010-09-22 22:17:02 UTC (rev 22018)
+++
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
2010-09-22 22:33:00 UTC (rev 22019)
@@ -10,6 +10,7 @@
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.util.List;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
@@ -21,10 +22,12 @@
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
+import org.cytoscape.io.DataCategory;
import org.cytoscape.work.Tunable;
import org.cytoscape.work.swing.AbstractGUITunableHandler;
import org.cytoscape.work.Tunable.Param;
import org.cytoscape.work.internal.tunables.utils.FileChooserFilter;
+import org.cytoscape.work.internal.tunables.utils.SupportedFileTypesManager;
/**
@@ -43,6 +46,7 @@
private GroupLayout layout;
private enum Type {NETWORK,SESSION,ATTRIBUTES,DEFAULT};
private Type type;
+ private SupportedFileTypesManager fileTypesManager;
/**
* Constructs the <code>GUIHandler</code> for the <code>File</code> type
@@ -54,14 +58,17 @@
* @param f field that has been annotated
* @param o object contained in <code>f</code>
* @param t tunable associated to <code>f</code>
+ * @param fileTypesManager
*/
- protected FileHandler(Field f, Object o, Tunable t) {
+ protected FileHandler(Field f, Object o, Tunable t, final
SupportedFileTypesManager fileTypesManager) {
super(f, o, t);
+ this.fileTypesManager = fileTypesManager;
init();
}
- protected FileHandler(final Method getter, final Method setter, final
Object instance, final Tunable tunable) {
+ protected FileHandler(final Method getter, final Method setter, final
Object instance, final Tunable tunable, final SupportedFileTypesManager
fileTypesManager) {
super(getter, setter, instance, tunable);
+ this.fileTypesManager = fileTypesManager;
init();
}
@@ -131,21 +138,10 @@
fileTextField.setText("Please select a network
file...");
titleLabel.setText("import network file");
- //set filters for filechooser
- String[] biopax = {".xml",".rdf",".owl"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("BioPAX files",biopax));
- String[] xgmml ={".xml",".xgmml"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("XGMML files",xgmml));
- String[] psi ={".xml"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("PSI-MI",psi));
- String[] sif={".sif"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("SIF files",sif));
- String[] gml={".gml"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("GML files",gml));
- String[] sbml={".xml",".sbml"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("SBML files",sbml));
- String[] allnetworks =
{".xml",".rdf",".owl",".xgmml",".sif",".sbml"};
- fileChooser.addChoosableFileFilter(new
FileChooserFilter("All network files (*.xml, *.rdf, *.owl, *.xgmml, *.sif,
*.sbml)",allnetworks));
+ List<FileChooserFilter> filters =
fileTypesManager.getSupportedFileTypes(DataCategory.NETWORK);
+ for (FileChooserFilter filter : filters) {
+ fileChooser.addChoosableFileFilter(filter);
+ }
break;
}
case SESSION: {
Modified:
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/GUITunableHandlerFactory.java
===================================================================
---
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/GUITunableHandlerFactory.java
2010-09-22 22:17:02 UTC (rev 22018)
+++
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/GUITunableHandlerFactory.java
2010-09-22 22:33:00 UTC (rev 22019)
@@ -13,6 +13,7 @@
import org.cytoscape.work.HandlerFactory;
import org.cytoscape.work.Tunable;
+import org.cytoscape.work.internal.tunables.utils.SupportedFileTypesManager;
import org.cytoscape.work.swing.GUITunableHandler;
import org.cytoscape.work.util.BoundedDouble;
import org.cytoscape.work.util.BoundedFloat;
@@ -31,15 +32,17 @@
public class GUITunableHandlerFactory implements
HandlerFactory<GUITunableHandler> {
private Bookmarks bookmarks;
private BookmarksUtil bkUtil;
+ private SupportedFileTypesManager fileTypesManager;
/**
* creates a new GUITunableHandlerFactory object
* @param book informations and properties of the
<code>Bookmarks</code> registered
* @param bkUtil object that provides tools to manage the
<code>Bookmarks</code>
*/
- public GUITunableHandlerFactory(CyProperty<Bookmarks> book,
BookmarksUtil bkUtil) {
+ public GUITunableHandlerFactory(CyProperty<Bookmarks> book,
BookmarksUtil bkUtil, SupportedFileTypesManager fileTypesManager) {
this.bookmarks = book.getProperties();
this.bkUtil = bkUtil;
+ this.fileTypesManager = fileTypesManager;
}
/**
@@ -79,7 +82,7 @@
if (type == ListMultipleSelection.class)
return new ListMultipleHandler<String>(getter, setter,
instance, tunable);
if (type == File.class)
- return new FileHandler(getter, setter, instance,
tunable);
+ return new FileHandler(getter, setter, instance,
tunable, fileTypesManager);
if (type == URL.class)
return new URLHandler(getter, setter, instance,
tunable, bookmarks, bkUtil);
if (type == InputStream.class)
@@ -136,7 +139,7 @@
if (type == ListMultipleSelection.class)
return new ListMultipleHandler<String>(field, instance,
tunable);
if (type == File.class)
- return new FileHandler(field, instance, tunable);
+ return new FileHandler(field, instance, tunable,
fileTypesManager);
if (type == URL.class)
return new URLHandler(field, instance, tunable,
bookmarks, bkUtil);
if (type == InputStream.class)
Added:
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/utils/SupportedFileTypesManager.java
===================================================================
---
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/utils/SupportedFileTypesManager.java
(rev 0)
+++
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/utils/SupportedFileTypesManager.java
2010-09-22 22:33:00 UTC (rev 22019)
@@ -0,0 +1,71 @@
+package org.cytoscape.work.internal.tunables.utils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.io.read.InputStreamTaskFactory;
+
+/**
+ * Provides a list of available file types by consulting all registered
+ * <code>InputStreamTaskFactory</code> instances.
+ */
+public class SupportedFileTypesManager {
+ Set<InputStreamTaskFactory> factories;
+
+ public SupportedFileTypesManager() {
+ factories = new HashSet<InputStreamTaskFactory>();
+ }
+
+ public void addInputStreamTaskFactory(InputStreamTaskFactory factory,
Map<?,?> properties) {
+ factories.add(factory);
+ }
+
+ public void removeInputStreamTaskFactory(InputStreamTaskFactory
factory, Map<?,?> properties) {
+ factories.remove(factory);
+ }
+
+ public List<FileChooserFilter> getSupportedFileTypes(DataCategory
category) {
+ List<FileChooserFilter> types = new
ArrayList<FileChooserFilter>();
+
+ Set<String> allExtensions = new HashSet<String>();
+ for (InputStreamTaskFactory factory : factories) {
+ CyFileFilter filter = factory.getCyFileFilter();
+ if (filter.getDataCategory() != category) {
+ continue;
+ }
+
+ String description = filter.getDescription();
+ Set<String> filterExtensions = filter.getExtensions();
+ String[] extensions = new
String[filterExtensions.size()];
+ int index = 0;
+ for (String extension : filterExtensions) {
+ allExtensions.add(extension);
+ extensions[index] = extension;
+ index++;
+ }
+ types.add(new FileChooserFilter(description,
extensions));
+ }
+
+ if (types.size() == 0) {
+ return types;
+ }
+
+ Collections.sort(types, new Comparator<FileChooserFilter>() {
+ @Override
+ public int compare(FileChooserFilter o1,
FileChooserFilter o2) {
+ return
o1.getDescription().compareTo(o2.getDescription());
+ }
+ });
+
+ String description = String.format("All %1$s files",
category.toString().toLowerCase());
+ types.add(new FileChooserFilter(description, new
ArrayList<String>(allExtensions).toArray(new String[allExtensions.size()])));
+ return types;
+ }
+}
Property changes on:
core3/work-swing-impl/trunk/src/main/java/org/cytoscape/work/internal/tunables/utils/SupportedFileTypesManager.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-09-22 22:17:02 UTC (rev 22018)
+++
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-09-22 22:33:00 UTC (rev 22019)
@@ -41,4 +41,13 @@
filter="(cyPropertyName=bookmarks)" />
<osgi:reference id="bookmarksUtilServiceRef"
interface="org.cytoscape.property.bookmark.BookmarksUtil" />
+
+ <osgi:set id="supportedFileTypes"
+ interface="org.cytoscape.io.read.InputStreamTaskFactory"
+ cardinality="0..N">
+ <osgi:listener bind-method="addInputStreamTaskFactory"
+ unbind-method="removeInputStreamTaskFactory"
+ ref="supportedFileTypesManager" />
+ </osgi:set>
+
</beans>
Modified:
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
---
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-09-22 22:17:02 UTC (rev 22018)
+++
core3/work-swing-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-09-22 22:33:00 UTC (rev 22019)
@@ -27,6 +27,8 @@
<bean id="guiHandlerFactory"
class="org.cytoscape.work.internal.tunables.GUITunableHandlerFactory">
<constructor-arg ref="bookmarkServiceRef" />
<constructor-arg ref="bookmarksUtilServiceRef" />
+ <constructor-arg ref="supportedFileTypesManager" />
</bean>
+ <bean id="supportedFileTypesManager"
class="org.cytoscape.work.internal.tunables.utils.SupportedFileTypesManager" />
</beans>
--
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.