Author: kono
Date: 2012-02-28 13:31:35 -0800 (Tue, 28 Feb 2012)
New Revision: 28386

Added:
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedEvent.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedListener.java
Modified:
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CyActivator.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTask.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTaskFactory.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/action/CustomGraphicsManagerAction.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsBrowser.java
   
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsManagerDialog.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
Log:
refs #700 Session loading and saving had been fixed to use binary streams.  
CustomGraphics session saving mechanism had been fixed.  Still needs to parser 
method.

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
      2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CustomGraphicsManagerImpl.java
      2012-02-28 21:31:35 UTC (rev 28386)
@@ -1,6 +1,8 @@
 package org.cytoscape.ding.customgraphicsmgr.internal;
 
+import java.awt.image.BufferedImage;
 import java.io.File;
+import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -12,21 +14,27 @@
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 
+import javax.imageio.ImageIO;
+
 import org.cytoscape.application.CyApplicationConfiguration;
 import org.cytoscape.application.events.CyShutdownEvent;
 import org.cytoscape.application.events.CyShutdownListener;
 import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
 import org.cytoscape.ding.customgraphics.CyCustomGraphics;
 import org.cytoscape.ding.customgraphics.NullCustomGraphics;
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.property.CyProperty;
+import org.cytoscape.session.CySession;
 import org.cytoscape.session.events.SessionAboutToBeSavedEvent;
 import org.cytoscape.session.events.SessionAboutToBeSavedListener;
+import org.cytoscape.session.events.SessionLoadedEvent;
+import org.cytoscape.session.events.SessionLoadedListener;
 import org.cytoscape.work.swing.DialogTaskManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public final class CustomGraphicsManagerImpl implements CustomGraphicsManager, 
CyShutdownListener,
-               SessionAboutToBeSavedListener {
+               SessionAboutToBeSavedListener, SessionLoadedListener {
 
        private static final Logger logger = 
LoggerFactory.getLogger(CustomGraphicsManagerImpl.class);
 
@@ -45,15 +53,18 @@
        private final File imageHomeDirectory;
        protected final Map<CyCustomGraphics, Boolean> isUsedCustomGraphics;
        private final DialogTaskManager taskManager;
+       
+       private final CyEventHelper eventHelper;
 
        /**
         * Creates an image pool object and restore existing images from user
         * resource directory.
         */
        public CustomGraphicsManagerImpl(final CyProperty<Properties> 
properties, final DialogTaskManager taskManager,
-                       final CyApplicationConfiguration config) {
+                       final CyApplicationConfiguration config, final 
CyEventHelper eventHelper) {
 
                this.taskManager = taskManager;
+               this.eventHelper = eventHelper;
                this.isUsedCustomGraphics = new HashMap<CyCustomGraphics, 
Boolean>();
 
                if (properties == null)
@@ -71,7 +82,7 @@
                graphicsMap.put(NULL.getIdentifier(), NULL);
                this.isUsedCustomGraphics.put(NULL, false);
 
-               final RestoreImageTaskFactory taskFactory = new 
RestoreImageTaskFactory(imageHomeDirectory, this);
+               final RestoreImageTaskFactory taskFactory = new 
RestoreImageTaskFactory(imageHomeDirectory, this, eventHelper);
                taskManager.execute(taskFactory);
        }
 
@@ -258,4 +269,26 @@
                        logger.error("Error adding " + SESSION_IMAGE_DIR_NAME + 
" file to be saved in the session.", ex);
                }
        }
+
+       @Override
+       public void handleEvent(SessionLoadedEvent e) {
+               // Add new images
+               final CySession sess = e.getLoadedSession();
+
+               if (sess != null) {
+                       final Map<String, List<File>> filesMap = 
sess.getAppFileListMap();
+
+                       if (filesMap != null) {
+                               final List<File> files = filesMap.get(APP_NAME);
+                               // TODO: 2.x compatibility
+                               
+                               if (files != null && files.size() != 0) {
+                                       // get parent directory
+                                       final File parent = 
files.get(0).getParentFile();
+                                       final RestoreImageTaskFactory 
taskFactory = new RestoreImageTaskFactory(parent, this, eventHelper);
+                                       taskManager.execute(taskFactory);
+                               }
+                       }
+               }
+       }
 }

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CyActivator.java
    2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/CyActivator.java
    2012-02-28 21:31:35 UTC (rev 28386)
@@ -1,7 +1,3 @@
-
-
-
-
 package org.cytoscape.ding.customgraphicsmgr.internal;
 
 import org.cytoscape.property.CyProperty;
@@ -11,10 +7,11 @@
 
 import org.cytoscape.ding.customgraphicsmgr.internal.CustomGraphicsManagerImpl;
 import 
org.cytoscape.ding.customgraphicsmgr.internal.action.CustomGraphicsManagerAction;
+import org.cytoscape.ding.customgraphicsmgr.internal.ui.CustomGraphicsBrowser;
+import org.cytoscape.event.CyEventHelper;
 
 import org.cytoscape.application.swing.CyAction;
 
-
 import org.osgi.framework.BundleContext;
 
 import org.cytoscape.service.util.AbstractCyActivator;
@@ -28,16 +25,22 @@
 
        public void start(BundleContext bc) {
 
-               DialogTaskManager dialogTaskManagerServiceRef = 
getService(bc,DialogTaskManager.class);
-               CyProperty coreCyPropertyServiceRef = 
getService(bc,CyProperty.class,"(cyPropertyName=cytoscape3.props)");
-               CyApplicationManager cyApplicationManagerServiceRef = 
getService(bc,CyApplicationManager.class);
-               CyApplicationConfiguration cyApplicationConfigurationServiceRef 
= getService(bc,CyApplicationConfiguration.class);
-               
-               CustomGraphicsManagerImpl customGraphicsManager = new 
CustomGraphicsManagerImpl(coreCyPropertyServiceRef,dialogTaskManagerServiceRef,cyApplicationConfigurationServiceRef);
-               CustomGraphicsManagerAction customGraphicsManagerAction = new 
CustomGraphicsManagerAction(customGraphicsManager,cyApplicationManagerServiceRef);
-               
-               registerAllServices(bc,customGraphicsManager, new Properties());
-               registerService(bc,customGraphicsManagerAction,CyAction.class, 
new Properties());
+               DialogTaskManager dialogTaskManagerServiceRef = getService(bc, 
DialogTaskManager.class);
+               CyProperty coreCyPropertyServiceRef = getService(bc, 
CyProperty.class, "(cyPropertyName=cytoscape3.props)");
+               CyApplicationManager cyApplicationManagerServiceRef = 
getService(bc, CyApplicationManager.class);
+               CyApplicationConfiguration cyApplicationConfigurationServiceRef 
= getService(bc,
+                               CyApplicationConfiguration.class);
+               CyEventHelper eventHelperServiceRef = getService(bc, 
CyEventHelper.class);
+
+               CustomGraphicsManagerImpl customGraphicsManager = new 
CustomGraphicsManagerImpl(coreCyPropertyServiceRef,
+                               dialogTaskManagerServiceRef, 
cyApplicationConfigurationServiceRef, eventHelperServiceRef);
+               CustomGraphicsBrowser browser = new 
CustomGraphicsBrowser(customGraphicsManager);
+               registerAllServices(bc, browser, new Properties());
+
+               CustomGraphicsManagerAction customGraphicsManagerAction = new 
CustomGraphicsManagerAction(
+                               customGraphicsManager, 
cyApplicationManagerServiceRef, browser);
+
+               registerAllServices(bc, customGraphicsManager, new 
Properties());
+               registerService(bc, customGraphicsManagerAction, 
CyAction.class, new Properties());
        }
 }
-

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTask.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTask.java
       2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTask.java
       2012-02-28 21:31:35 UTC (rev 28386)
@@ -28,45 +28,45 @@
 import org.cytoscape.ding.customgraphics.bitmap.URLImageCustomGraphics;
 import org.cytoscape.ding.customgraphics.vector.GradientOvalLayer;
 import org.cytoscape.ding.customgraphics.vector.GradientRoundRectangleLayer;
-import org.cytoscape.property.CyProperty;
+import 
org.cytoscape.ding.customgraphicsmgr.internal.event.CustomGraphicsLibraryUpdatedEvent;
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.TaskMonitor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class RestoreImageTask implements Task {
-       
+
        private static final Logger logger = 
LoggerFactory.getLogger(RestoreImageTask.class);
 
        private final CustomGraphicsManagerImpl manager;
-       
+
        private final ExecutorService imageLoaderService;
-       
+
        private static final int TIMEOUT = 1000;
        private static final int NUM_THREADS = 8;
-       
+
        private static final String METADATA_FILE = "image_metadata.props";
 
        private File imageHomeDirectory;
        
+       private final CyEventHelper eventHelper;
 
        // For image I/O, PNG is used as bitmap image format.
        private static final String IMAGE_EXT = "png";
-       
+
        // Default vectors
-       private static final Class<?>[] DEF_VECTORS = {
-                       GradientRoundRectangleLayer.class, 
GradientOvalLayer.class };
-       
-       
-       RestoreImageTask(final File imageLocaiton, final 
CustomGraphicsManagerImpl manager) {
+       private static final Class<?>[] DEF_VECTORS = { 
GradientRoundRectangleLayer.class, GradientOvalLayer.class };
+
+       RestoreImageTask(final File imageLocaiton, final 
CustomGraphicsManagerImpl manager, final CyEventHelper eventHelper) {
                this.manager = manager;
-               
+               this.eventHelper = eventHelper;
+
                // For loading images in parallel.
                this.imageLoaderService = 
Executors.newFixedThreadPool(NUM_THREADS);
-               
                this.imageHomeDirectory = imageLocaiton;
        }
-       
+
        private void restoreDefaultVectorImageObjects() {
 
                for (Class<?> cls : DEF_VECTORS) {
@@ -74,8 +74,11 @@
                        try {
                                Object obj = cls.newInstance();
                                if (obj instanceof CyCustomGraphics) {
-                                       manager.graphicsMap.put( 
((CyCustomGraphics) obj).getIdentifier(), (CyCustomGraphics) obj);
-                                       
manager.isUsedCustomGraphics.put((CyCustomGraphics) obj, false);
+                                       final CyCustomGraphics<?> cg = 
(CyCustomGraphics) obj;
+                                       if 
(manager.graphicsMap.containsKey(cg.getIdentifier()) == false) {
+                                               
manager.graphicsMap.put(cg.getIdentifier(), cg);
+                                               
manager.isUsedCustomGraphics.put(cg, false);
+                                       }
                                }
                        } catch (InstantiationException e) {
                                throw new RuntimeException(e);
@@ -99,13 +102,12 @@
                long endTime = System.currentTimeMillis();
                double sec = (endTime - startTime) / (1000.0);
                logger.info("Image saving process finished in " + sec + " 
sec.");
-
+               
+               eventHelper.fireEvent(new 
CustomGraphicsLibraryUpdatedEvent(manager));
        }
-       
-       
+
        private void restoreImages() {
-               final CompletionService<BufferedImage> cs = new 
ExecutorCompletionService<BufferedImage>(
-                               imageLoaderService);
+               final CompletionService<BufferedImage> cs = new 
ExecutorCompletionService<BufferedImage>(imageLoaderService);
 
                imageHomeDirectory.mkdir();
 
@@ -143,16 +145,14 @@
                                        if (name.contains("___"))
                                                name = name.replace("___", ",");
 
-                                       Future<BufferedImage> f = cs.submit(new 
LoadImageTask(file
-                                                       .toURI().toURL()));
+                                       Future<BufferedImage> f = cs.submit(new 
LoadImageTask(file.toURI().toURL()));
                                        fMap.put(f, name);
 
                                        String tagStr = null;
                                        if (imageProps.length > 3) {
                                                tagStr = imageProps[3];
                                                final Set<String> tags = new 
TreeSet<String>();
-                                               String[] tagParts = 
tagStr.split("\\"
-                                                               + 
AbstractDCustomGraphics.LIST_DELIMITER);
+                                               String[] tagParts = 
tagStr.split("\\" + AbstractDCustomGraphics.LIST_DELIMITER);
                                                for (String tag : tagParts)
                                                        tags.add(tag.trim());
 
@@ -166,9 +166,9 @@
                                        final BufferedImage image = f.get();
                                        if (image == null)
                                                continue;
+
+                                       final CyCustomGraphics<?> cg = new 
URLImageCustomGraphics(fMap.get(f), image);
                                        
-                                       final CyCustomGraphics cg = new 
URLImageCustomGraphics(
-                                                       fMap.get(f), image);
                                        if (cg instanceof Taggable && 
metatagMap.get(f) != null)
                                                ((Taggable) 
cg).getTags().addAll(metatagMap.get(f));
 
@@ -183,7 +183,6 @@
                                                continue;
                                        }
                                }
-
                        } catch (IOException ioe) {
                                ioe.printStackTrace();
                        } catch (InterruptedException e) {
@@ -203,17 +202,15 @@
                long endTime = System.currentTimeMillis();
                double sec = (endTime - startTime) / (1000.0);
                logger.info("Image loading process finished in " + sec + " 
sec.");
-               logger.info("Currently,  " + (manager.graphicsMap.size() - 1)
-                               + " images are available.");
+               logger.info("Currently,  " + (manager.graphicsMap.size() - 1) + 
" images are available.");
        }
 
-
        @Override
        public void cancel() {
                // TODO Auto-generated method stub
 
        }
-       
+
        private final class LoadImageTask implements Callable<BufferedImage> {
 
                private final URL imageURL;
@@ -222,7 +219,6 @@
                        this.imageURL = imageURL;
                }
 
-
                public BufferedImage call() throws Exception {
                        if (imageURL == null)
                                throw new IllegalStateException("URL string 
cannot be null.");
@@ -232,5 +228,4 @@
 
        }
 
-
 }

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTaskFactory.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTaskFactory.java
        2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/RestoreImageTaskFactory.java
        2012-02-28 21:31:35 UTC (rev 28386)
@@ -2,6 +2,7 @@
 
 import java.io.File;
 
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.TaskIterator;
 
@@ -9,16 +10,17 @@
        
        private final File imageLocation;
        private final CustomGraphicsManagerImpl manager;
+       private final CyEventHelper eventHelper;
        
-       RestoreImageTaskFactory(final File imageLocation, final 
CustomGraphicsManagerImpl manager) {
+       RestoreImageTaskFactory(final File imageLocation, final 
CustomGraphicsManagerImpl manager, final CyEventHelper eventHelper) {
                this.manager = manager;
                this.imageLocation = imageLocation;
+               this.eventHelper = eventHelper;
        }
 
        @Override
        public TaskIterator createTaskIterator() {
-               
-               return new TaskIterator(new RestoreImageTask(imageLocation, 
manager));
+               return new TaskIterator(new RestoreImageTask(imageLocation, 
manager, eventHelper));
        }
 
 }

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/action/CustomGraphicsManagerAction.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/action/CustomGraphicsManagerAction.java
     2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/action/CustomGraphicsManagerAction.java
     2012-02-28 21:31:35 UTC (rev 28386)
@@ -6,6 +6,7 @@
 import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.application.swing.AbstractCyAction;
 import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
+import org.cytoscape.ding.customgraphicsmgr.internal.ui.CustomGraphicsBrowser;
 import 
org.cytoscape.ding.customgraphicsmgr.internal.ui.CustomGraphicsManagerDialog;
 
 
@@ -14,12 +15,12 @@
        private final CustomGraphicsManagerDialog dialog;
 
        public CustomGraphicsManagerAction(final CustomGraphicsManager manager,
-                                          final CyApplicationManager 
applicationManager)
+                                          final CyApplicationManager 
applicationManager, final CustomGraphicsBrowser browser)
        {
                super("Open Custom Graphics Manager");
                setPreferredMenu("View");
                
-               this.dialog = new CustomGraphicsManagerDialog(manager, 
applicationManager);
+               this.dialog = new CustomGraphicsManagerDialog(manager, 
applicationManager, browser);
        }
 
        @Override

Added: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedEvent.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedEvent.java
                                (rev 0)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedEvent.java
        2012-02-28 21:31:35 UTC (rev 28386)
@@ -0,0 +1,15 @@
+package org.cytoscape.ding.customgraphicsmgr.internal.event;
+
+import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
+import org.cytoscape.event.AbstractCyEvent;
+
+/**
+ * Local event to handle graphics library update
+ *
+ */
+public final class CustomGraphicsLibraryUpdatedEvent extends 
AbstractCyEvent<CustomGraphicsManager>{
+
+       public CustomGraphicsLibraryUpdatedEvent(CustomGraphicsManager source) {
+               super(source, CustomGraphicsLibraryUpdatedListener.class);
+       }
+}

Added: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedListener.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedListener.java
                             (rev 0)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/event/CustomGraphicsLibraryUpdatedListener.java
     2012-02-28 21:31:35 UTC (rev 28386)
@@ -0,0 +1,8 @@
+package org.cytoscape.ding.customgraphicsmgr.internal.event;
+
+import org.cytoscape.event.CyListener;
+
+public interface CustomGraphicsLibraryUpdatedListener extends CyListener {
+       
+       public void handleEvent(CustomGraphicsLibraryUpdatedEvent e);
+}

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsBrowser.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsBrowser.java
       2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsBrowser.java
       2012-02-28 21:31:35 UTC (rev 28386)
@@ -6,10 +6,7 @@
 import java.awt.dnd.DnDConstants;
 import java.awt.dnd.DropTarget;
 import java.awt.dnd.DropTargetDropEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.io.File;
-import java.io.IOException;
 import java.net.URL;
 import java.util.Collection;
 import java.util.List;
@@ -20,45 +17,40 @@
 import org.cytoscape.ding.customgraphics.CyCustomGraphics;
 import org.cytoscape.ding.customgraphics.NullCustomGraphics;
 import org.cytoscape.ding.customgraphics.bitmap.URLImageCustomGraphics;
+import 
org.cytoscape.ding.customgraphicsmgr.internal.event.CustomGraphicsLibraryUpdatedEvent;
+import 
org.cytoscape.ding.customgraphicsmgr.internal.event.CustomGraphicsLibraryUpdatedListener;
 import org.jdesktop.swingx.JXList;
 
 /**
  * Display list of images available as custom graphics
  * 
- * @author kono
  */
-public class CustomGraphicsBrowser extends JXList implements 
PropertyChangeListener {
+public class CustomGraphicsBrowser extends JXList implements 
CustomGraphicsLibraryUpdatedListener {
 
        private static final long serialVersionUID = -8342056297304400824L;
 
        private DefaultListModel model;
        private final CustomGraphicsManager pool;
-       
+
        // For drag and drop
        private static DataFlavor urlFlavor;
-       
+
        static {
                try {
-                       urlFlavor = new DataFlavor(
-                                       "application/x-java-url; 
class=java.net.URL");
+                       urlFlavor = new DataFlavor("application/x-java-url; 
class=java.net.URL");
                } catch (ClassNotFoundException cnfe) {
                        cnfe.printStackTrace();
                }
        }
-       
 
        /**
         * Creates new form CustomGraphicsBrowserPanel
-        * 
-        * @throws IOException
         */
-       public CustomGraphicsBrowser(final CustomGraphicsManager manager) 
throws IOException {
+       public CustomGraphicsBrowser(final CustomGraphicsManager manager) {
                pool = manager;
 
                initComponents();
                addAllImages();
-
-               
//Cytoscape.getPropertyChangeSupport().addPropertyChangeListener(Cytoscape.SESSION_LOADED,
 this);
        }
 
        /**
@@ -77,8 +69,7 @@
                this.setDropTarget(new URLDropTarget());
 
        }// </editor-fold>
-       
-       
+
        public void removeCustomGraphics(final CyCustomGraphics cg) {
                model.removeElement(cg);
        }
@@ -107,7 +98,6 @@
                        e.printStackTrace();
                }
        }
-       
 
        /**
         * D & D
@@ -123,15 +113,14 @@
 
                        dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                        final Transferable trans = dtde.getTransferable();
-                       //dumpDataFlavors(trans);
+                       // dumpDataFlavors(trans);
                        boolean gotData = false;
                        try {
-                               
+
                                if 
(trans.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
-                                       
-                                       final List<File> fileList = 
(List<File>) trans
-                                                       
.getTransferData(DataFlavor.javaFileListFlavor);
 
+                                       final List<File> fileList = 
(List<File>) trans.getTransferData(DataFlavor.javaFileListFlavor);
+
                                        for (File file : fileList) {
                                                
addCustomGraphics(file.toURI().toURL().toString());
                                        }
@@ -142,9 +131,8 @@
                                        addCustomGraphics(url.toString());
                                        gotData = true;
                                } else if 
(trans.isDataFlavorSupported(DataFlavor.stringFlavor)) {
-                                       String s = (String) trans
-                                                       
.getTransferData(DataFlavor.stringFlavor);
-                                       
+                                       String s = (String) 
trans.getTransferData(DataFlavor.stringFlavor);
+
                                        URL url = new URL(s);
                                        addCustomGraphics(url.toString());
                                        gotData = true;
@@ -167,12 +155,15 @@
 
        }
 
-       public void propertyChange(PropertyChangeEvent e) {
+       
+       @Override
+       public void handleEvent(CustomGraphicsLibraryUpdatedEvent e) {
                // Clear the model, and build new List from current pool of 
graphics
                model.removeAllElements();
                model.clear();
-               
+
                addAllImages();
+
        }
 
 }

Modified: 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsManagerDialog.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsManagerDialog.java
 2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-customgraphics-manager-impl/src/main/java/org/cytoscape/ding/customgraphicsmgr/internal/ui/CustomGraphicsManagerDialog.java
 2012-02-28 21:31:35 UTC (rev 28386)
@@ -35,7 +35,7 @@
        
        
        // List of graphics available
-       private CustomGraphicsBrowser browser;
+       private final CustomGraphicsBrowser browser;
        
        // Panel for displaying actual size image
        private final CustomGraphicsDetailPanel detail;
@@ -49,17 +49,24 @@
         * @param parent
         * @param modal
         */
-       public CustomGraphicsManagerDialog(final CustomGraphicsManager manager, 
final CyApplicationManager appManager) {
+       public CustomGraphicsManagerDialog(final CustomGraphicsManager manager, 
final CyApplicationManager appManager,
+                       final CustomGraphicsBrowser browser) {
                super();
+               if (browser == null)
+                       throw new NullPointerException("CustomGraphicsBrowser 
is null.");
+
                this.setModal(false);
                this.manager = manager;
                initComponents();
-               try {
-                       browser = new CustomGraphicsBrowser(this.manager);
-               } catch (IOException e) {
-                       logger.error("Could not get an instance of 
CustomGraphicsBrowser.", e);
-               }
-               
+
+               this.browser = browser;
+               // try {
+               // browser = new CustomGraphicsBrowser(this.manager);
+               // } catch (IOException e) {
+               // logger.error("Could not get an instance of 
CustomGraphicsBrowser.",
+               // e);
+               // }
+
                detail = new CustomGraphicsDetailPanel(appManager);
 
                this.leftScrollPane.setViewportView(browser);

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
  2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/customgraphics/CustomGraphicsRange.java
  2012-02-28 21:31:35 UTC (rev 28386)
@@ -3,6 +3,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.cytoscape.graph.render.stateful.CustomGraphic;
 import org.cytoscape.view.model.DiscreteRange;
 
 public class CustomGraphicsRange extends DiscreteRange<CyCustomGraphics>  {

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-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/CustomGraphicsVisualProperty.java
    2012-02-28 21:31:35 UTC (rev 28386)
@@ -1,28 +1,28 @@
 package org.cytoscape.ding.impl.visualproperty;
 
+import java.util.List;
+
 import org.cytoscape.ding.customgraphics.CustomGraphicsRange;
 import org.cytoscape.ding.customgraphics.CyCustomGraphics;
+import org.cytoscape.graph.render.stateful.CustomGraphic;
 import org.cytoscape.view.model.AbstractVisualProperty;
 
-public class CustomGraphicsVisualProperty extends
-               AbstractVisualProperty<CyCustomGraphics> {
+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);
+       public CustomGraphicsVisualProperty(final 
CyCustomGraphics<CustomGraphic> defaultValue,
+                       final CustomGraphicsRange customGraphicsRange, String 
id, String displayName, Class<?> targetObjectDataType) {
+               super(defaultValue, customGraphicsRange, id, displayName, 
targetObjectDataType);
        }
-       
 
        @Override
-       public String toSerializableString(CyCustomGraphics value) {
+       public String toSerializableString(final CyCustomGraphics value) {
+               List layers = value.getLayers();
                // TODO Auto-generated method stub
                return null;
        }
 
        @Override
-       public CyCustomGraphics parseSerializableString(String value) {
+       public CyCustomGraphics<CustomGraphic> parseSerializableString(String 
value) {
                // TODO Auto-generated method stub
                return null;
        }

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
        2012-02-28 19:53:01 UTC (rev 28385)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
        2012-02-28 21:31:35 UTC (rev 28386)
@@ -38,9 +38,12 @@
 import static 
org.cytoscape.io.internal.util.session.SessionUtil.VIZMAP_XML_FILE;
 import static org.cytoscape.io.internal.util.session.SessionUtil.XGMML_EXT;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
@@ -92,6 +95,8 @@
  * Session reader implementation that handles the Cytoscape 3 session format.
  */
 public class Cy3SessionReaderImpl extends AbstractSessionReader {
+       
+       private static final String TEMP_DIR = "java.io.tmpdir";
 
        public static final Pattern NETWORK_PATTERN = 
Pattern.compile(".*/"+NETWORKS_FOLDER+"(([^/]+)[.]xgmml)");
        public static final Pattern NETWORK_NAME_PATTERN = 
Pattern.compile("(\\d+)(_[^_]+)?");
@@ -355,27 +360,23 @@
                String appName = items[2];
                String fileName = items[items.length - 1];
 
-               String tmpDir = System.getProperty("java.io.tmpdir");
-               File theFile = new File(tmpDir, fileName);
+               final String tmpDir = System.getProperty(TEMP_DIR);
+               final File theFile = new File(tmpDir, fileName);
 
                try {
-                       // Write input stream into tmp file
-                       BufferedWriter out = null;
-                       BufferedReader in = null;
+                       // Write input stream into temp file (Use binary 
streams to support images/movies/etc.)
+                       final BufferedInputStream bin = new 
BufferedInputStream(is);
+                       final BufferedOutputStream output = new 
BufferedOutputStream(new FileOutputStream(theFile));
+                       final byte buf[] = new byte[256];
+                       
+                       int len;
+                       while ((len = bin.read(buf)) != -1)
+                               output.write(buf, 0, len);
+                       
+                       output.flush();
+                       output.close();
+                       bin.close();
 
-                       in = new BufferedReader(new InputStreamReader(is));
-                       out = new BufferedWriter(new FileWriter(theFile));
-
-                       // Write to tmp file
-                       String inputLine;
-
-                       while ((inputLine = in.readLine()) != null) {
-                               out.write(inputLine);
-                               out.newLine();
-                       }
-
-                       in.close();
-                       out.close();
                } catch (IOException e) {
                        logger.error("Error: read from zip: " + entryName, e);
                        return;

-- 
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