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.

Reply via email to