Author: kono
Date: 2010-12-17 16:35:49 -0800 (Fri, 17 Dec 2010)
New Revision: 23236
Added:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/CustomGraphicsIcon.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/CustomGraphicsManagerImpl.java
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/PersistImageTask.java
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTask.java
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTaskFactory.java
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/ui/CustomGraphicsCellRenderer.java
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
core3/ding-presentation-impl/trunk/pom.xml
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphics.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DVisualLexicon.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/AbstractDCustomGraphics.java
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
core3/ding-presentation-impl/trunk/src/test/java/org/cytoscape/view/DVisualLexiconTest.java
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/EditorManagerImpl.java
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/valueeditor/DiscreteValueEditor.java
core3/vizmap-gui-impl/trunk/src/main/resources/META-INF/spring/bundle-context-vizmapper.xml
Log:
Custom Graphics is partially working. Need to fix persistence, restore, and
editors.
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/CustomGraphicsManagerImpl.java
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/CustomGraphicsManagerImpl.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/CustomGraphicsManagerImpl.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -17,7 +17,6 @@
import org.cytoscape.ding.customgraphics.NullCustomGraphics;
import org.cytoscape.property.CyProperty;
import org.cytoscape.work.TaskManager;
-import org.cytoscape.work.TaskMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,16 +25,9 @@
private static final Logger logger =
LoggerFactory.getLogger(CustomGraphicsManagerImpl.class);
-// private static final int TIMEOUT = 1000;
-// private static final int NUM_THREADS = 8;
- private static final String IMAGE_DIR_NAME = "images";
-//
-// // For image I/O, PNG is used as bitmap image format.
-// private static final String IMAGE_EXT = "png";
+ private static final String IMAGE_DIR_NAME = "images3";
-// private final ExecutorService imageLoaderService;
-
protected final Map<Long, CyCustomGraphics> graphicsMap = new
ConcurrentHashMap<Long, CyCustomGraphics>();
// URL to hash code map. For images associated with URL.
@@ -45,8 +37,6 @@
private static final CyCustomGraphics NULL = NullCustomGraphics
.getNullObject();
-
-
private final File imageHomeDirectory;
protected final Map<CyCustomGraphics,Boolean> isUsedCustomGraphics;
@@ -71,14 +61,19 @@
if(props == null)
throw new NullPointerException("Property is missing.");
- final String configDirectory =
props.getProperty(CyProperty.DEFAULT_CONFIG_DIR);
+ String configDirectory =
props.getProperty(CyProperty.DEFAULT_CONFIG_DIR);
+ if(configDirectory == null || configDirectory.trim().length()
== 0)
+ configDirectory = System.getProperty("user.home");
- this.imageHomeDirectory = new File(configDirectory,
IMAGE_DIR_NAME);
+ final File configFileLocation = new File(configDirectory,
CyProperty.DEFAULT_CONFIG_DIR);
+ this.imageHomeDirectory = new File(configFileLocation,
IMAGE_DIR_NAME);
+
+ logger.debug("\n!!!!!!!!!!!!!!!!! Cytoscape image directory: "
+ imageHomeDirectory.toString());
graphicsMap.put(NULL.getIdentifier(), NULL);
this.isUsedCustomGraphics.put(NULL, false);
- final RestoreImageTaskFactory taskFactory = new
RestoreImageTaskFactory(props, this);
+ final RestoreImageTaskFactory taskFactory = new
RestoreImageTaskFactory(imageHomeDirectory, this);
taskManager.execute(taskFactory);
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/PersistImageTask.java
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/PersistImageTask.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/PersistImageTask.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -24,17 +24,17 @@
public class PersistImageTask implements Task {
- private static final Logger logger =
LoggerFactory.getLogger(PersistImageTask.class);
+ private static final Logger logger = LoggerFactory
+ .getLogger(PersistImageTask.class);
private final File location;
private final CustomGraphicsManager manager;
private static final int TIMEOUT = 1000;
private static final int NUM_THREADS = 4;
-
+
private static final String METADATA_FILE = "image_metadata.props";
-
/**
* Constructor.<br>
*
@@ -54,8 +54,10 @@
// Remove all existing files
final File[] files = location.listFiles();
- for (File old : files)
- old.delete();
+ if (files != null) {
+ for (File old : files)
+ old.delete();
+ }
final long startTime = System.currentTimeMillis();
@@ -82,8 +84,14 @@
}
- exService.shutdown();
- exService.awaitTermination(TIMEOUT, TimeUnit.SECONDS);
+ try {
+ exService.shutdown();
+ exService.awaitTermination(TIMEOUT, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+
+ e.printStackTrace();
+ throw e;
+ }
try {
manager.getMetadata().store(
@@ -119,6 +127,8 @@
public String call() throws Exception {
+ logger.debug(" Saving Image: " + fileName);
+
if (!fileName.endsWith(".png"))
fileName += ".png";
File file = new File(imageHome, fileName);
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTask.java
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTask.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTask.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -48,7 +48,6 @@
private File imageHomeDirectory;
- private static final String IMAGE_DIR_NAME = "images";
// For image I/O, PNG is used as bitmap image format.
private static final String IMAGE_EXT = "png";
@@ -58,14 +57,13 @@
GradientRoundRectangleLayer.class,
GradientOvalLayer.class };
- RestoreImageTask(final Properties props, final
CustomGraphicsManagerImpl manager) {
+ RestoreImageTask(final File imageLocaiton, final
CustomGraphicsManagerImpl manager) {
this.manager = manager;
// For loading images in parallel.
this.imageLoaderService =
Executors.newFixedThreadPool(NUM_THREADS);
- final String configDirectory =
props.getProperty(CyProperty.DEFAULT_CONFIG_DIR);
- this.imageHomeDirectory = new File(configDirectory,
IMAGE_DIR_NAME);
+ this.imageHomeDirectory = imageLocaiton;
}
private void restoreDefaultVectorImageObjects() {
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTaskFactory.java
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTaskFactory.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/RestoreImageTaskFactory.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -1,24 +1,24 @@
package org.cytoscape.ding.impl.customgraphics;
-import java.util.Properties;
+import java.io.File;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.TaskIterator;
public class RestoreImageTaskFactory implements TaskFactory {
- private final Properties props;
+ private final File imageLocation;
private final CustomGraphicsManagerImpl manager;
- RestoreImageTaskFactory(final Properties props, final
CustomGraphicsManagerImpl manager) {
+ RestoreImageTaskFactory(final File imageLocation, final
CustomGraphicsManagerImpl manager) {
this.manager = manager;
- this.props = props;
+ this.imageLocation = imageLocation;
}
@Override
public TaskIterator getTaskIterator() {
- return new TaskIterator(new RestoreImageTask(props, manager));
+ return new TaskIterator(new RestoreImageTask(imageLocation,
manager));
}
}
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/ui/CustomGraphicsCellRenderer.java
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/ui/CustomGraphicsCellRenderer.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/ui/CustomGraphicsCellRenderer.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -20,8 +20,6 @@
/**
* Cell renderer for Custom Graphics Browser.
- *
- * @author kono
*
*/
public class CustomGraphicsCellRenderer extends JPanel implements
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-12-18 00:35:49 UTC (rev 23236)
@@ -12,6 +12,11 @@
<osgi:reference id="cyApplicationManagerServiceRef"
interface="org.cytoscape.session.CyApplicationManager" />
+
+ <!-- Export Custom Graphics Manager as a service. Other bundles should
access CG through this sevice. -->
+ <osgi:service id="customGraphicsManagerService"
ref="customGraphicsManager"
+ auto-export="interfaces" />
+
<osgi:service id="customGraphicsManagerActionService"
ref="customGraphicsManagerAction"
interface="org.cytoscape.application.swing.CyAction" />
</beans>
\ No newline at end of file
Modified:
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
---
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-customgraphics-manager-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-12-18 00:35:49 UTC (rev 23236)
@@ -4,14 +4,14 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="customGraphicsManager2"
+ <bean id="customGraphicsManager"
class="org.cytoscape.ding.impl.customgraphics.CustomGraphicsManagerImpl">
<constructor-arg ref="coreCyPropertyServiceRef" />
<constructor-arg ref="guiTaskManagerServiceRef" />
</bean>
<bean id="customGraphicsManagerAction"
class="org.cytoscape.ding.impl.customgraphics.action.CustomGraphicsManagerAction">
- <constructor-arg ref="customGraphicsManager2" />
+ <constructor-arg ref="customGraphicsManager" />
<constructor-arg ref="cyApplicationManagerServiceRef" />
</bean>
</beans>
\ No newline at end of file
Modified: core3/ding-presentation-impl/trunk/pom.xml
===================================================================
--- core3/ding-presentation-impl/trunk/pom.xml 2010-12-17 23:06:30 UTC (rev
23235)
+++ core3/ding-presentation-impl/trunk/pom.xml 2010-12-18 00:35:49 UTC (rev
23236)
@@ -171,6 +171,12 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.cytoscape</groupId>
<artifactId>presentation-api</artifactId>
<version>3.0.0-alpha2-SNAPSHOT</version>
Added:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
(rev 0)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -0,0 +1,33 @@
+package org.cytoscape.ding.customgraphics;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.cytoscape.view.model.DiscreteRange;
+
+public class CustomGraphicsRange implements DiscreteRange<CyCustomGraphics> {
+
+ private CustomGraphicsManager manager;
+
+
+ public void setManager(final CustomGraphicsManager manager) {
+ this.manager = manager;
+ }
+
+ @Override
+ public Class<CyCustomGraphics> getType() {
+ return CyCustomGraphics.class;
+ }
+
+ @Override
+ public boolean isDiscrete() {
+ return true;
+ }
+
+ @Override
+ public Set<CyCustomGraphics> values() {
+
+ return new
HashSet<CyCustomGraphics>(manager.getAllCustomGraphics());
+ }
+
+}
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphics.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphics.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/customgraphics/NullCustomGraphics.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -1,6 +1,13 @@
package org.cytoscape.ding.customgraphics;
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
+
import org.cytoscape.ding.impl.customgraphics.AbstractDCustomGraphics;
+import org.cytoscape.ding.impl.customgraphics.bitmap.URLImageCustomGraphics;
/**
* Null object for Custom Graphics. This is used to reset custom graphics on
@@ -10,6 +17,18 @@
*
*/
public class NullCustomGraphics extends AbstractDCustomGraphics {
+
+ private static final String DEF_IMAGE_FILE =
"images/stock_dialog-warning-32.png";
+ private static BufferedImage DEF_IMAGE;
+
+ static {
+ try {
+ DEF_IMAGE =ImageIO.read(URLImageCustomGraphics.class
+
.getClassLoader().getResource(DEF_IMAGE_FILE));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
static final CyCustomGraphics NULL = new NullCustomGraphics();
@@ -26,4 +45,9 @@
public String toString() {
return this.getClass().getCanonicalName();
}
+
+ @Override
+ public Image getRenderedImage() {
+ return DEF_IMAGE;
+ }
}
Added:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/CustomGraphicsIcon.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/CustomGraphicsIcon.java
(rev 0)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/CustomGraphicsIcon.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -0,0 +1,16 @@
+package org.cytoscape.ding.icon;
+
+import org.cytoscape.ding.customgraphics.CyCustomGraphics;
+
+public class CustomGraphicsIcon extends VisualPropertyIcon<CyCustomGraphics> {
+
+ private static final long serialVersionUID = -216647303312376087L;
+
+
+ public CustomGraphicsIcon(CyCustomGraphics value, int width, int height,
+ String name) {
+ super(value, width, height, name);
+
+ this.setImage(value.getRenderedImage());
+ }
+}
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -6,6 +6,7 @@
import org.cytoscape.ding.LineStyle;
import org.cytoscape.ding.NodeShape;
+import org.cytoscape.ding.customgraphics.CyCustomGraphics;
import org.cytoscape.view.model.VisualProperty;
@@ -29,6 +30,8 @@
icon = new NodeIcon(((NodeShape) value).getShape(), w,
h, ((NodeShape) value).getShapeName());
} else if(value instanceof LineStyle) {
icon = new LineTypeIcon(((LineStyle)
value).getStroke(5), w, h, ((LineStyle) value).name());
+ } else if(value instanceof CyCustomGraphics) {
+ icon = new CustomGraphicsIcon(((CyCustomGraphics)
value), w, h, ((CyCustomGraphics) value).getDisplayName());
} else {
icon = new TextIcon(value, w, h, value.toString());
}
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -46,6 +46,7 @@
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import javax.imageio.ImageIO;
@@ -56,6 +57,10 @@
import org.cytoscape.ding.NodeShape;
import org.cytoscape.ding.NodeView;
import org.cytoscape.ding.ObjectPosition;
+import org.cytoscape.ding.customgraphics.CyCustomGraphics;
+import org.cytoscape.ding.customgraphics.Layer;
+import org.cytoscape.ding.customgraphics.NullCustomGraphics;
+import org.cytoscape.ding.impl.visualproperty.CustomGraphicsVisualProperty;
import org.cytoscape.graph.render.immed.GraphGraphics;
import org.cytoscape.graph.render.stateful.CustomGraphic;
import org.cytoscape.model.CyEdge;
@@ -154,6 +159,9 @@
// View Model for this presentation.
private final View<CyNode> nodeViewModel;
+
+ // Custom Graphics layers.
+ private final Set<CustomGraphic> targets;
/*
* @param inx the RootGraph index of node (a negative number).
@@ -162,6 +170,7 @@
if (view == null)
throw new NullPointerException("view must never be
null!");
+ targets = new HashSet<CustomGraphic>();
graphView = view;
m_inx = inx;
nodeViewModel = nv;
@@ -1562,7 +1571,59 @@
setJustify(op.getJustify().getConversionConstant());
setLabelOffsetX(op.getOffsetX());
setLabelOffsetY(op.getOffsetY());
+ } else if(vp instanceof CustomGraphicsVisualProperty) {
+ final CyCustomGraphics cg = (CyCustomGraphics) value;
+ applyCustomGraphics(cg);
}
}
+
+
+ private void applyCustomGraphics(final CyCustomGraphics customGraphics)
{
+ // Remove current layers associated with this Custom Graphics
+ if (targets.size() != 0) {
+ for (CustomGraphic cg : targets)
+ removeCustomGraphic(cg);
+
+ targets.clear();
+ }
+
+ // For these cases, remove current layers.
+ if (customGraphics == null
+ || customGraphics instanceof CyCustomGraphics
== false
+ || customGraphics instanceof
NullCustomGraphics) {
+ return;
+ }
+
+ final List<Layer> layers = (List<Layer>)
customGraphics.getLayers();
+
+ // No need to update
+ if (layers == null || layers.size() == 0)
+ return;
+
+ //FIXME: size dependency
+ // Check dependency. Sync size or not.
+// boolean sync = false;
+// if (dep != null) {
+// sync = dep.check(NODE_CUSTOM_GRAPHICS_SIZE_SYNC);
+// }
+
+ for (Layer layer : layers) {
+ // Assume it's a Ding layer
+ final CustomGraphic cg = (CustomGraphic)
layer.getLayerObject();
+// if (sync) {
+// final CustomGraphic resized =
syncSize(graphics, cg, dv, dep);
+// dv.addCustomGraphic(resized);
+// targets.add(resized);
+// } else {
+ addCustomGraphic(cg);
+ targets.add(cg);
+// }
+ }
+ //this.currentMap.put(dv, targets);
+
+ // Flag this as used Custom Graphics
+
//Cytoscape.getVisualMappingManager().getCustomGraphicsManager().setUsedInCurrentSession(graphics,
true);
+ }
+
}
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DVisualLexicon.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DVisualLexicon.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DVisualLexicon.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -42,7 +42,12 @@
import org.cytoscape.ding.ArrowShape;
import org.cytoscape.ding.NodeShape;
import org.cytoscape.ding.ObjectPosition;
+import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
+import org.cytoscape.ding.customgraphics.CustomGraphicsRange;
+import org.cytoscape.ding.customgraphics.CyCustomGraphics;
+import org.cytoscape.ding.customgraphics.NullCustomGraphics;
import org.cytoscape.ding.impl.visualproperty.ArrowShapeTwoDVisualProperty;
+import org.cytoscape.ding.impl.visualproperty.CustomGraphicsVisualProperty;
import org.cytoscape.ding.impl.visualproperty.FontTwoDVisualProperty;
import org.cytoscape.ding.impl.visualproperty.IntegerTwoDVisualProperty;
import org.cytoscape.ding.impl.visualproperty.NodeShapeTwoDVisualProperty;
@@ -106,6 +111,10 @@
200, "NODE_TRANSPARENCY", "Node Transparency",
CyNode.class);
+ private static final CustomGraphicsRange CG_RANGE = new
CustomGraphicsRange();
+ public static final VisualProperty<CyCustomGraphics>
NODE_CUSTOMGRAPHICS_1 = new CustomGraphicsVisualProperty(
+ NullCustomGraphics.getNullObject(), CG_RANGE,
"NODE_CUSTOMGRAPHICS_1", "Node Custom Graphics 1", CyNode.class);
+
// Edge VPs
@@ -149,8 +158,10 @@
"Edge Label Position", CyEdge.class);
- public DVisualLexicon() {
+ public DVisualLexicon(final CustomGraphicsManager manager) {
super(DING_ROOT);
+
+ CG_RANGE.setManager(manager);
addVisualProperty(NETWORK_NODE_SELECTION, NETWORK);
addVisualProperty(NETWORK_EDGE_SELECTION, NETWORK);
@@ -170,6 +181,8 @@
addVisualProperty(NODE_BORDER_STROKE, NODE);
addVisualProperty(NODE_TRANSPARENCY, NODE);
+ addVisualProperty(NODE_CUSTOMGRAPHICS_1, NODE_PAINT);
+
addVisualProperty(EDGE_SELECTED_PAINT, EDGE_PAINT);
addVisualProperty(EDGE_STROKE, EDGE);
addVisualProperty(EDGE_SOURCE_ARROW_SELECTED_PAINT, EDGE_PAINT);
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/AbstractDCustomGraphics.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/AbstractDCustomGraphics.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/customgraphics/AbstractDCustomGraphics.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -99,9 +99,7 @@
this.displayName = displayName;
}
- public Image getRenderedImage() {
- return null;
- }
+ @Override abstract public Image getRenderedImage();
public Collection<String> getTags() {
Added:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
(rev 0)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -0,0 +1,30 @@
+package org.cytoscape.ding.impl.visualproperty;
+
+import org.cytoscape.ding.customgraphics.CustomGraphicsRange;
+import org.cytoscape.ding.customgraphics.CyCustomGraphics;
+import org.cytoscape.view.model.AbstractVisualProperty;
+
+public class CustomGraphicsVisualProperty extends
+ AbstractVisualProperty<CyCustomGraphics> {
+
+
+ public CustomGraphicsVisualProperty(final CyCustomGraphics
defaultValue, final CustomGraphicsRange customGraphicsRange,
+ String id, String displayName, Class<?>
targetObjectDataType) {
+ super(defaultValue, customGraphicsRange, id, displayName,
+ targetObjectDataType);
+ }
+
+
+ @Override
+ public String toSerializableString(CyCustomGraphics value) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CyCustomGraphics parseSerializableString(String value) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified:
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-12-18 00:35:49 UTC (rev 23236)
@@ -6,6 +6,10 @@
default-lazy-init="false">
+ <osgi:reference id="customGraphicsManagerServiceRef"
+
interface="org.cytoscape.ding.customgraphics.CustomGraphicsManager">
+ </osgi:reference>
+
<osgi:reference id="renderingEngineManagerServiceRef"
interface="org.cytoscape.view.presentation.RenderingEngineManager">
</osgi:reference>
Modified:
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-12-18 00:35:49 UTC (rev 23236)
@@ -22,6 +22,7 @@
<context:annotation-config />
<bean id="dVisualLexicon"
class="org.cytoscape.ding.impl.DVisualLexicon">
+ <constructor-arg ref="customGraphicsManagerServiceRef" />
</bean>
<bean id="dingRenderingEngineFactory"
class="org.cytoscape.ding.impl.DingRenderingEngineFactory">
Modified:
core3/ding-presentation-impl/trunk/src/test/java/org/cytoscape/view/DVisualLexiconTest.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/test/java/org/cytoscape/view/DVisualLexiconTest.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/ding-presentation-impl/trunk/src/test/java/org/cytoscape/view/DVisualLexiconTest.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -2,8 +2,11 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.mock;
+import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
import org.cytoscape.ding.impl.DVisualLexicon;
+import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.NullDataType;
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.view.model.VisualProperty;
@@ -18,7 +21,8 @@
@Before
public void setUp() throws Exception {
- dLexicon = new DVisualLexicon();
+ final CustomGraphicsManager manager =
mock(CustomGraphicsManager.class);
+ dLexicon = new DVisualLexicon(manager);
}
@After
@@ -35,7 +39,7 @@
assertEquals(1,
dLexicon.getVisualLexiconNode(root).getChildren().size());
- assertEquals(60, dLexicon.getAllVisualProperties().size());
+ assertEquals(61, dLexicon.getAllVisualProperties().size());
}
@Test
Modified:
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/EditorManagerImpl.java
===================================================================
---
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/EditorManagerImpl.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/EditorManagerImpl.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -50,6 +50,7 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.session.CyApplicationManager;
import org.cytoscape.view.model.DiscreteRange;
import org.cytoscape.view.model.Range;
import org.cytoscape.view.model.VisualLexicon;
@@ -86,11 +87,16 @@
private final PropertyEditor mappingTypeEditor;
+ private final CyApplicationManager appManager;
+
/**
* Creates a new EditorFactory object.
*/
- public EditorManagerImpl(final AttributeSetManager attrManager, final
VisualMappingManager vmm) {
+ public EditorManagerImpl(final CyApplicationManager appManager, final
AttributeSetManager attrManager, final VisualMappingManager vmm) {
+
+ this.appManager = appManager;
+
editors = new HashMap<Class<?>, VisualPropertyEditor<?>>();
comboBoxEditors = new HashMap<String, PropertyEditor>();
@@ -350,10 +356,9 @@
this.addVisualPropertyEditor(vpEditor, null);
if(this.getValueEditor(range.getType()) ==
null) {
- ValueEditor<?> valEditor = new
DiscreteValueEditor(range.getType(), values);
+ ValueEditor<?> valEditor = new
DiscreteValueEditor(appManager, range.getType(), (DiscreteRange) range, vp);
this.addValueEditor(valEditor, null);
}
-
}
}
}
Modified:
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/valueeditor/DiscreteValueEditor.java
===================================================================
---
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/valueeditor/DiscreteValueEditor.java
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/vizmap-gui-impl/trunk/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/valueeditor/DiscreteValueEditor.java
2010-12-18 00:35:49 UTC (rev 23236)
@@ -39,8 +39,8 @@
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
import javax.swing.DefaultListModel;
@@ -54,6 +54,11 @@
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.session.CyApplicationManager;
+import org.cytoscape.view.model.DiscreteRange;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.presentation.RenderingEngine;
import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
import org.jdesktop.swingx.border.DropShadowBorder;
@@ -66,32 +71,62 @@
* <li>etc.</li>
* </ul>
*
- * @author kono
*/
public class DiscreteValueEditor<T> extends JDialog implements ValueEditor<T> {
private final static long serialVersionUID = 1202339876950593L;
+
+ private static final int ICON_SIZE = 32;
- private final Class<T> type;
- private final Set<T> values;
+ private final Class<T> type;
+ private final DiscreteRange<T> range;
+ private final VisualProperty<T> vp;
-// private Map<T, Icon> valueMap;
+ private final CyApplicationManager appManager;
+
+
+ private Map<T, Icon> iconMap;
//
// private List<T> orderedKeyList;
// private T defaultValue;
private boolean canceled = false;
- public DiscreteValueEditor(Class<T> type, Set<T> values) {
+ public DiscreteValueEditor(final CyApplicationManager appManager, final
Class<T> type, final DiscreteRange<T> dRange, final VisualProperty<T> vp) {
super();
- this.values = values;
+
+ if(dRange == null)
+ throw new NullPointerException("Range object is null.");
+
+ this.range = dRange;
this.type = type;
+ this.appManager = appManager;
+ this.vp = vp;
+ this.iconMap = new HashMap<T, Icon>();
+
this.setModal(true);
this.setTitle("Select a value");
initComponents();
setListItems();
+
}
+
+ /**
+ * Use current renderer to create icons.
+ * @param values
+ */
+ private void renderIcons(final Set<T> values) {
+ final RenderingEngine<CyNetwork> engine =
appManager.getCurrentRenderingEngine();
+
+ // CCurrent engine is not ready yet.
+ if(engine == null)
+ return;
+
+ iconMap.clear();
+ for(T value: values)
+ iconMap.put(value, engine.createIcon(vp, value,
ICON_SIZE, ICON_SIZE));
+ }
/**
@@ -211,17 +246,16 @@
private void setListItems() {
- final List<Icon> icons = new ArrayList<Icon>();
- //orderedKeyList = new ArrayList<T>();
+ final Set<T> values = range.values();
+ renderIcons(values);
model = new DefaultListModel();
iconList.setModel(model);
- Icon icon;
for (final T key : values) {
- //icon = valueMap.get(key);
+ //Icon icon = iconMap.get(key);
//icons.add(icon);
//orderedKeyList.add(key);
@@ -249,26 +283,29 @@
int index, boolean isSelected, boolean
cellHasFocus) {
// Get icon for the target value
- //TODO: fix icon
- //final Icon icon = valueMap.get(value);
+ final Icon icon = iconMap.get(value);
setText(value.toString());
- // icon.setLeftPadding(15);
- //setIcon(icon);
+ //icon.setLeftPadding(15);
+ setIcon(icon);
setFont(isSelected ? SELECTED_FONT : NORMAL_FONT);
this.setVerticalTextPosition(SwingConstants.CENTER);
this.setVerticalAlignment(SwingConstants.CENTER);
- this.setIconTextGap(35);
+ this.setIconTextGap(45);
setBackground(isSelected ? SELECTED_COLOR :
list.getBackground());
setForeground(isSelected ? SELECTED_FONT_COLOR : list
.getForeground());
- this.setHorizontalTextPosition(CENTER);
- setPreferredSize(new Dimension(100, 40));
-// setPreferredSize(new Dimension(icon.getIconWidth(), icon
-// .getIconHeight() + 20));
+ this.setHorizontalTextPosition(LEFT);
+ this.setHorizontalAlignment(LEFT);
+
+ if(icon != null)
+ setPreferredSize(new
Dimension(icon.getIconWidth(), icon.getIconHeight() + 20));
+ else
+ setPreferredSize(new Dimension(100, 60));
+
this.setBorder(new DropShadowBorder());
return this;
@@ -277,6 +314,7 @@
@Override
public <S extends T> T showEditor(Component parent, S initialValue) {
+ setListItems();
setLocationRelativeTo(parent);
setVisible(true);
return getValue();
Modified:
core3/vizmap-gui-impl/trunk/src/main/resources/META-INF/spring/bundle-context-vizmapper.xml
===================================================================
---
core3/vizmap-gui-impl/trunk/src/main/resources/META-INF/spring/bundle-context-vizmapper.xml
2010-12-17 23:06:30 UTC (rev 23235)
+++
core3/vizmap-gui-impl/trunk/src/main/resources/META-INF/spring/bundle-context-vizmapper.xml
2010-12-18 00:35:49 UTC (rev 23236)
@@ -66,6 +66,7 @@
class="org.cytoscape.view.vizmap.gui.internal.editor.EditorManagerImpl">
<constructor-arg ref="attributeSetManager" />
<constructor-arg ref="vmmServiceRef" />
+ <constructor-arg ref="cyApplicationManagerServiceRef" />
</bean>
--
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.