Author: paperwing
Date: 2012-02-13 16:28:08 -0800 (Mon, 13 Feb 2012)
New Revision: 28256
Added:
csplugins/trunk/toronto/yuedong/multi_renderer/impl/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/ExternalRendererManagerImpl.java
Log:
Added first implementation of ExternalRendererManager API interface
Added:
csplugins/trunk/toronto/yuedong/multi_renderer/impl/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/ExternalRendererManagerImpl.java
===================================================================
---
csplugins/trunk/toronto/yuedong/multi_renderer/impl/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/ExternalRendererManagerImpl.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/multi_renderer/impl/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/ExternalRendererManagerImpl.java
2012-02-14 00:28:08 UTC (rev 28256)
@@ -0,0 +1,106 @@
+package org.cytoscape.view.presentation.internal;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+
+import org.cytoscape.view.presentation.ExternalRenderer;
+import org.cytoscape.view.presentation.ExternalRendererManager;
+
+/**
+ * Implementation for {@link ExternalRendererManager} interface.
+ *
+ * @author yuedong
+ */
+public class ExternalRendererManagerImpl implements ExternalRendererManager {
+
+ private Map<String, ExternalRenderer> installedRenderers;
+
+ private String defaultRendererID;
+
+ public ExternalRendererManagerImpl() {
+ installedRenderers = new HashMap<String, ExternalRenderer>();
+ }
+
+ @Override
+ public void installRenderer(ExternalRenderer externalRenderer) {
+
+ if (externalRenderer == null) {
+ throw new NullPointerException("Cannot install a null
renderer.");
+ }
+
+ installedRenderers.put(externalRenderer.getRendererID(),
externalRenderer);
+
+ if (installedRenderers.size() == 1) {
+ defaultRendererID = new
String(externalRenderer.getRendererID());
+ }
+ }
+
+ @Override
+ public void uninstallRenderer(ExternalRenderer externalRenderer) {
+
+ if (!installedRenderers.containsValue(externalRenderer)) {
+ throw new IllegalArgumentException("Provided renderer "
+ externalRenderer + " is not installed.");
+ }
+
+ // Let the renderer know
+ externalRenderer.dispose();
+
+ installedRenderers.remove(externalRenderer.getRendererID());
+
+ // TODO: Change default renderer ID if only 1 renderer left
+ }
+
+ @Override
+ public void uninstallRenderer(String rendererID) {
+ ExternalRenderer removed = installedRenderers.get(rendererID);
+
+ if (removed == null) {
+ throw new IllegalArgumentException("No renderer with
given ID <" + rendererID + "> is installed.");
+ }
+
+ // Let the renderer know
+ removed.dispose();
+
+ installedRenderers.remove(rendererID);
+ }
+
+ @Override
+ public Collection<String> getInstalledRenderers() {
+ return installedRenderers.keySet();
+ }
+
+ @Override
+ public int getInstalledRendererCount() {
+ return installedRenderers.size();
+ }
+
+ @Override
+ public ExternalRenderer getRenderer(String rendererID) {
+ return installedRenderers.get(rendererID);
+ }
+
+ @Override
+ public String setDefaultRendererID(String rendererID) {
+ if (!installedRenderers.containsKey(rendererID)) {
+ return null;
+ }
+
+ defaultRendererID = new String(rendererID);
+ return new String(defaultRendererID);
+ }
+
+ @Override
+ public String getDefaultRendererID() {
+ if (installedRenderers.size() == 0) {
+ return null;
+ }
+
+ return new String(defaultRendererID);
+
+ // TODO: Check if necessary to return defensively copied
Strings this way
+ }
+}
Property changes on:
csplugins/trunk/toronto/yuedong/multi_renderer/impl/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/ExternalRendererManagerImpl.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
--
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.