Author: scooter
Date: 2012-09-14 14:19:33 -0700 (Fri, 14 Sep 2012)
New Revision: 30371
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/AbstractDCustomGraphics.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsTranslator.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphicsFactory.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphics.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphicsFactory.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientOvalFactory.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientRoundRectangleFactory.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
Log:
Moved handling of the class prefix into common routines and also restructured
the CustomGraphicsTranslator
so that it can now handle multiple different types of strings (based on a
prefix).
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/AbstractDCustomGraphics.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/AbstractDCustomGraphics.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/AbstractDCustomGraphics.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -117,8 +117,7 @@
name = displayName.replace(",", "___");
}
- return this.getClass().getCanonicalName() + DELIMITER +
this.getIdentifier()
- + DELIMITER + name + DELIMITER + tagStr;
+ return this.getIdentifier() + DELIMITER + name + DELIMITER +
tagStr;
}
public void setFitRatio(float fitRatio) {
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsTranslator.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsTranslator.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsTranslator.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -1,12 +1,15 @@
package org.cytoscape.ding.customgraphics;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLConnection;
import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
-import org.cytoscape.view.presentation.customgraphics.CyCustomGraphics;
import org.cytoscape.ding.customgraphics.NullCustomGraphics;
import org.cytoscape.ding.customgraphics.bitmap.URLImageCustomGraphics;
+import org.cytoscape.view.presentation.customgraphics.CyCustomGraphics;
+import org.cytoscape.view.presentation.customgraphics.CyCustomGraphicsFactory;
import org.cytoscape.view.vizmap.mappings.ValueTranslator;
public class CustomGraphicsTranslator implements ValueTranslator<String,
CyCustomGraphics>{
@@ -20,7 +23,18 @@
@Override
public CyCustomGraphics translate(String inputValue) {
- return parse(inputValue);
+ // Start by assuming this is a URL
+ CyCustomGraphics cg = translateURL(inputValue);
+ if (cg != null) return cg;
+
+ // Nope, so hand it to each factory that has a matching prefix
+ for (CyCustomGraphicsFactory factory:
cgManager.getAllCustomGraphicsFactories()) {
+ if (factory.getPrefix() != null &&
inputValue.startsWith(factory.getPrefix()+":")) {
+ cg =
factory.getInstance(inputValue.substring(factory.getPrefix().length()+1));
+ if (cg != null) return cg;
+ }
+ }
+ return null;
}
@Override
@@ -28,6 +42,24 @@
return CyCustomGraphics.class;
}
+ private CyCustomGraphics translateURL(String inputValue) {
+ try {
+ final URL url = new URL(inputValue);
+ URLConnection conn = url.openConnection();
+ if (conn == null) return null;
+ String mimeType = conn.getContentType();
+ for (CyCustomGraphicsFactory factory:
cgManager.getAllCustomGraphicsFactories()) {
+ if (factory.supportsMime(mimeType)) {
+ CyCustomGraphics cg =
factory.getInstance(url);
+ if (cg != null) return cg;
+ }
+ }
+
+ } catch (MalformedURLException e) {
+ } catch (IOException e) {
+ }
+ return null;
+ }
/**
* Create a custom graphics from the given URL string.
@@ -43,7 +75,6 @@
// TODO: this needs to be made generic. If we have a URL, then
we can
// hand it to the appropriate factory
-
try {
final URL url = new URL(value);
CyCustomGraphics graphics =
cgManager.getCustomGraphicsBySourceURL(url);
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphicsFactory.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphicsFactory.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphicsFactory.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -1,10 +1,7 @@
package org.cytoscape.ding.customgraphics;
-import java.io.IOException;
-import java.net.MalformedURLException;
import java.net.URL;
-import org.cytoscape.ding.customgraphics.bitmap.URLImageCustomGraphics;
import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
import org.cytoscape.view.presentation.customgraphics.CyCustomGraphics;
@@ -25,17 +22,30 @@
this.manager = manager;
}
+ @Override
+ public String getPrefix() { return "null"; }
+
+ @Override
+ public boolean supportsMime(String mimeType) { return false; }
+
/**
* Generate Custom Graphics object from a string.
*/
+ @Override
public CyCustomGraphics parseSerializableString(String entryStr) {
return new NullCustomGraphics();
}
+ @Override
public CyCustomGraphics getInstance(String input) {
return new NullCustomGraphics();
}
+ @Override
+ public CyCustomGraphics getInstance(URL input) {
+ return new NullCustomGraphics();
+ }
+
public Class<? extends CyCustomGraphics> getSupportedClass() { return
TARGET_CLASS; }
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphics.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphics.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphics.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -167,8 +167,7 @@
name = name.replace(",", "___");
}
- return this.getClass().getCanonicalName() + DELIMITER +
this.getIdentifier()
- + DELIMITER + name + DELIMITER + tagStr;
+ return this.getIdentifier() + DELIMITER + name + DELIMITER +
tagStr;
}
@Override
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphicsFactory.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphicsFactory.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/bitmap/URLImageCustomGraphicsFactory.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -24,6 +24,26 @@
public URLImageCustomGraphicsFactory(final CustomGraphicsManager
manager) {
this.manager = manager;
}
+
+ @Override
+ public String getPrefix() { return "image"; }
+
+ @Override
+ public boolean supportsMime(String mimeType) {
+ if (mimeType.equals("image/bmp"))
+ return true;
+ if (mimeType.equals("image/x-windows-bmp"))
+ return true;
+ if (mimeType.equals("image/gif"))
+ return true;
+ if (mimeType.equals("image/jpeg"))
+ return true;
+ if (mimeType.equals("image/png"))
+ return true;
+ if (mimeType.equals("image/vnd.wap.wbmp"))
+ return true;
+ return false;
+ }
/**
* Generate Custom Graphics object from a string.
@@ -44,24 +64,28 @@
return null;
}
- final String imageName = entry[1];
- final String sourceURL = entry[2];
+ final String imageName = entry[0];
+ final String sourceURL = entry[1];
// Try using the URL first
if (sourceURL != null) {
try {
URL url = new URL(sourceURL);
CyCustomGraphics cg =
manager.getCustomGraphicsBySourceURL(url);
- cg.setDisplayName(entry[2]);
+ cg.setDisplayName(entry[1]);
return cg;
} catch (Exception e) {
// This just means that "sourceURL" is
malformed. That may be OK.
}
}
CyCustomGraphics cg =
manager.getCustomGraphicsByID(Long.parseLong(imageName));
- cg.setDisplayName(entry[2]);
+ cg.setDisplayName(entry[1]);
return cg;
}
+ public CyCustomGraphics getInstance(URL url) {
+ return getInstance(url.toString());
+ }
+
public CyCustomGraphics getInstance(String input) {
Long id = manager.getNextAvailableID();
URL url = null;
@@ -85,15 +109,9 @@
private boolean validate(final String entryStr) {
entry = entryStr.split(",");
- if (entry == null || entry.length < 3) {
+ if (entry == null || entry.length < 2) {
return false;
}
-
- // Check class name
- if (entry[0].trim().equals(
-
URLImageCustomGraphics.class.getCanonicalName()) == false) {
- return false;
- }
return true;
}
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientOvalFactory.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientOvalFactory.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientOvalFactory.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -23,27 +23,27 @@
public GradientOvalFactory(final CustomGraphicsManager manager) {
this.manager = manager;
}
+
+ public String getPrefix() { return "ovalgradient"; }
+ public boolean supportsMime(String mimeType) { return false; }
/**
* Generate Custom Graphics object from a string.
*/
public CyCustomGraphics parseSerializableString(String entryStr) {
String[] entry = entryStr.split(",");
- if (entry == null || entry.length < 3) {
+ if (entry == null || entry.length < 2) {
return null;
}
-
- if (entry[0].trim().equals(
- GradientOvalLayer.class.getCanonicalName()) ==
false) {
- return null;
- }
- return new GradientOvalLayer(Long.parseLong(entry[1]));
+ return new GradientOvalLayer(Long.parseLong(entry[0]));
}
public CyCustomGraphics getInstance(String input) {
return new GradientOvalLayer(manager.getNextAvailableID());
}
+ public CyCustomGraphics getInstance(URL input) { return null; }
+
public Class<? extends CyCustomGraphics> getSupportedClass() { return
TARGET_CLASS; }
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientRoundRectangleFactory.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientRoundRectangleFactory.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/vector/GradientRoundRectangleFactory.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -23,27 +23,27 @@
public GradientRoundRectangleFactory(final CustomGraphicsManager
manager) {
this.manager = manager;
}
+
+ public String getPrefix() { return "rectanglegradient"; }
+ public boolean supportsMime(String mimeType) { return false; }
/**
* Generate Custom Graphics object from a string.
*/
public CyCustomGraphics parseSerializableString(String entryStr) {
String[] entry = entryStr.split(",");
- if (entry == null || entry.length < 3) {
+ if (entry == null || entry.length < 2) {
return null;
}
-
- if (entry[0].trim().equals(
-
GradientRoundRectangleLayer.class.getCanonicalName()) == false) {
- return null;
- }
- return new
GradientRoundRectangleLayer(Long.parseLong(entry[1]));
+ return new
GradientRoundRectangleLayer(Long.parseLong(entry[0]));
}
public CyCustomGraphics getInstance(String input) {
return new
GradientRoundRectangleLayer(manager.getNextAvailableID());
}
+ public CyCustomGraphics getInstance(URL input) { return null; }
+
public Class<? extends CyCustomGraphics> getSupportedClass() { return
TARGET_CLASS; }
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -246,8 +246,10 @@
// toString() method.
// This means all CyCustomGraphics implementations should have
a special
// toString method.
- for (final CyCustomGraphics graphics : graphicsMap.values())
- props.setProperty(graphics.getIdentifier().toString(),
graphics.toSerializableString());
+ for (final CyCustomGraphics graphics : graphicsMap.values()) {
+ props.setProperty(graphics.getIdentifier().toString(),
+
graphics.getClass().getCanonicalName()+","+graphics.toSerializableString());
+ }
graphicsMap.put(NULL.getIdentifier(), NULL);
return props;
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
2012-09-14 21:18:15 UTC (rev 30370)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
2012-09-14 21:19:33 UTC (rev 30371)
@@ -20,7 +20,7 @@
@Override
public String toSerializableString(final CyCustomGraphics value) {
- return value.toSerializableString();
+ return
value.getClass().getCanonicalName()+","+value.toSerializableString();
}
// Parse the string associated with our visual property. Note that we
depend on the first
@@ -45,7 +45,9 @@
}
// System.out.println("Creating new "+parts[0]);
- return factory.parseSerializableString(value);
+ // Skip over the class name
+ int offset = value.indexOf(",");
+ return
factory.parseSerializableString(value.substring(offset+1));
}
}
}
--
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.