Author: scooter
Date: 2012-06-05 16:11:16 -0700 (Tue, 05 Jun 2012)
New Revision: 29471

Added:
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/dialogs/LoadImageDialog.java
Removed:
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/cImageAnnotation.java
Modified:
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/CyActivator.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/CyAnnotator.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/AbstractAnnotation.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/BoundedTextAnnotationImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotationImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotationImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotationImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/ImageAnnotationFactory.java
Log:
This commit switches from directly managing the painting in 
ArbitraryGraphicsCanvas to letting JComponent handle it.  This
is important because JComponent has a sense of the Z-Order which
gets somewhat messed up if we do the paint ourselves.


Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/CyActivator.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/CyActivator.java
 2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/CyActivator.java
 2012-06-05 23:11:16 UTC (rev 29471)
@@ -284,15 +284,6 @@
                registerService(bc, resizeAnnotationTaskFactory, 
NetworkViewLocationTaskFactory.class, 
                                resizeAnnotationTaskFactoryProps);
 
-               SelectAnnotationTaskFactory selectAnnotationTaskFactory = new 
SelectAnnotationTaskFactory();
-               Properties selectAnnotationTaskFactoryProps = new Properties();
-               selectAnnotationTaskFactoryProps.setProperty(PREFERRED_ACTION, 
"NEW");
-               selectAnnotationTaskFactoryProps.setProperty(MENU_GRAVITY, 
"2.3");
-               selectAnnotationTaskFactoryProps.setProperty(PREFERRED_MENU, 
"Edit");
-               selectAnnotationTaskFactoryProps.setProperty(TITLE, 
"Select/Unselect Annotation");
-               registerService(bc, selectAnnotationTaskFactory, 
NetworkViewLocationTaskFactory.class, 
-                               selectAnnotationTaskFactoryProps);
-
                // Annotation delete
                RemoveAnnotationTaskFactory removeAnnotationTaskFactory = new 
RemoveAnnotationTaskFactory();
                Properties removeAnnotationTaskFactoryProps = new Properties();
@@ -303,6 +294,15 @@
                registerService(bc, removeAnnotationTaskFactory, 
NetworkViewLocationTaskFactory.class, 
                                removeAnnotationTaskFactoryProps);
 
+               SelectAnnotationTaskFactory selectAnnotationTaskFactory = new 
SelectAnnotationTaskFactory();
+               Properties selectAnnotationTaskFactoryProps = new Properties();
+               selectAnnotationTaskFactoryProps.setProperty(PREFERRED_ACTION, 
"NEW");
+               selectAnnotationTaskFactoryProps.setProperty(MENU_GRAVITY, 
"1.1");
+               selectAnnotationTaskFactoryProps.setProperty(PREFERRED_MENU, 
"Select");
+               selectAnnotationTaskFactoryProps.setProperty(TITLE, 
"Select/Unselect Annotation");
+               registerService(bc, selectAnnotationTaskFactory, 
NetworkViewLocationTaskFactory.class, 
+                               selectAnnotationTaskFactoryProps);
+
                registerServiceListener(bc, vtfListener, 
"addNodeViewTaskFactory", "removeNodeViewTaskFactory",
                                NodeViewTaskFactory.class);
                registerServiceListener(bc, vtfListener, 
"addEdgeViewTaskFactory", "removeEdgeViewTaskFactory",

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
        2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
        2012-06-05 23:11:16 UTC (rev 29471)
@@ -284,10 +284,13 @@
 
                        // now paint children
                        if (m_isVisible){
+                               /*
                                int num=this.getComponentCount();
                                for(int i=0;i<num;i++){
                                        this.getComponent(i).paint(image2D);
                                }
+                               */
+                               this.paintChildren(image2D);
                        }
                        image2D.dispose();
                        // render image

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/CyAnnotator.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/CyAnnotator.java
        2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/CyAnnotator.java
        2012-06-05 23:11:16 UTC (rev 29471)
@@ -133,22 +133,37 @@
 
        public DGraphView getView() { return view; }
 
-       public Component getComponentAt(ArbitraryGraphicsCanvas cnvs, int x, 
int y) {
-               return cnvs.getComponentAt(x, y);
+       /**
+        * Find all of our annotations that are at this point.  Return the top 
annotation
+        * (the one with the lowest Z value) if there are more than one.
+        *
+        * @param cnvs the Canvas we're looking at
+        * @param x the x value of the point
+        * @param y the y value of the point
+        * @return the component
+        */
+       public Annotation getComponentAt(ArbitraryGraphicsCanvas cnvs, int x, 
int y) {
+               Annotation top = null;
+               for (Annotation a: annotationMap.keySet()) {
+                       if (a.getComponent().contains(x, y)) {
+                               // System.out.println("Found component 
"+a.toString()+".  Z-order = "+cnvs.getComponentZOrder(a.getComponent()));
+                               if ((top == null) || 
+                                   
(cnvs.getComponentZOrder(top.getComponent()) >
+             cnvs.getComponentZOrder(a.getComponent()))) {
+                                               top = a;
+                               }
+                       }
+               }
+               return top;
        }
 
        public Annotation getAnnotation(Point2D position) {
-               Component c = getComponentAt(foreGroundCanvas, 
(int)position.getX(), (int)position.getY());
-               if (c != null && c instanceof Annotation) {
-                       return (Annotation)c;
+               Annotation a = getComponentAt(foreGroundCanvas, 
(int)position.getX(), (int)position.getY());
+               if (a != null) {
+                       return a;
                }
 
-               c = getComponentAt(backGroundCanvas, (int)position.getX(), 
(int)position.getY());
-               if (c != null && c instanceof Annotation) {
-                       return (Annotation)c;
-               }
-
-               return null;
+               return a = getComponentAt(backGroundCanvas, 
(int)position.getX(), (int)position.getY());
        }
 
        public InnerCanvas getNetworkCanvas() {

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/AbstractAnnotation.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/AbstractAnnotation.java
     2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/AbstractAnnotation.java
     2012-06-05 23:11:16 UTC (rev 29471)
@@ -181,6 +181,12 @@
                canvas.modifyComponentLocation(x, y, this);
        }
 
+       public boolean contains(int x, int y) {
+               if (x > getX() && y > getY() && x-getX() < getWidth() && 
y-getY() < getHeight())
+                       return true;
+               return false;
+       }
+
        public void removeAnnotation() {
                canvas.remove(this);
                cyAnnotator.removeAnnotation(this);
@@ -248,7 +254,7 @@
        public void paint(Graphics g) {
                Graphics2D g2 = (Graphics2D)g;
 
-               // Set up all of our anti-aliasing, etc. here to avoid doing it 
redundantly
+               /* Set up all of our anti-aliasing, etc. here to avoid doing it 
redundantly */
                g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                                    
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
                
g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/BoundedTextAnnotationImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/BoundedTextAnnotationImpl.java
      2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/BoundedTextAnnotationImpl.java
      2012-06-05 23:11:16 UTC (rev 29471)
@@ -174,7 +174,8 @@
                        return;
                }
 
-               g2.drawString(text, getX()+halfWidth, getY()+halfHeight);
+               // g2.drawString(text, getX()+halfWidth, getY()+halfHeight);
+               g2.drawString(text, halfWidth, halfHeight);
        }
 
        @Override

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotationImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotationImpl.java
    2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotationImpl.java
    2012-06-05 23:11:16 UTC (rev 29471)
@@ -301,14 +301,14 @@
                        float scaleFactor = 1.0f;
                        // scaleFactor goes from 0-4.0 with a 
                        if (contrast <= 0) {
-                               scaleFactor = (1.0f + (float)contrast)/100.0f;
+                               scaleFactor = 1.0f + ((float)contrast)/100.0f;
                        } else
-                               scaleFactor = ((float)contrast)*4.0f/100.0f;
+                               scaleFactor = 1.0f + 
((float)contrast)*3.0f/100.0f;
                
                        op = new RescaleOp(scaleFactor, 0.0f, null);
                        op.filter(adjustedImage, adjustedImage);
+               }
 
-               }
                BufferedImage newImage = new BufferedImage(width, height, type);
                Graphics2D g = newImage.createGraphics();
                
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
@@ -359,8 +359,10 @@
                if (resizedImage == null)
                        resizedImage = resizeImage((int)imageWidth, 
(int)imageHeight);
 
-               int x = getX();
-               int y = getY();
+               // int x = getX();
+               // int y = getY();
+               int x = 0;
+               int y = 0;
 
                if (usedForPreviews()) {
                        x = 0; y = 0;
@@ -377,7 +379,7 @@
                if(isSelected()) {
                        g2.setColor(Color.YELLOW);
                        g2.setStroke(new BasicStroke(2.0f));
-                       g2.drawRect(getX()-1, getY()-1, getAnnotationWidth()+1, 
getAnnotationHeight()+1);
+                       g2.drawRect(x, y, getAnnotationWidth(), 
getAnnotationHeight());
                }
        }
 

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotationImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotationImpl.java
    2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotationImpl.java
    2012-06-05 23:11:16 UTC (rev 29471)
@@ -198,15 +198,18 @@
        public void paint(Graphics g) {
                super.paint(g);
 
+               GraphicsUtilities.drawShape(g, 0, 0, 
+                                           getWidth()-1, getHeight()-1, this);
                if (usedForPreviews()) {
                        // For previews, our size and position is managed by 
the surrounding component
-                       GraphicsUtilities.drawShape(g, borderWidth/2, 
borderWidth/2, 
-                                                   shapeWidth-borderWidth, 
shapeHeight-borderWidth, this);
+                       //GraphicsUtilities.drawShape(g, borderWidth/2, 
borderWidth/2, 
+                       //                            shapeWidth-borderWidth, 
shapeHeight-borderWidth, this);
                        return;
                }
 
-               Point2D p1 = getLocation();
-               GraphicsUtilities.drawShape(g, (int)p1.getX(), (int)p1.getY(), 
shapeWidth, shapeHeight, this);
+               // Point2D p1 = getLocation();
+               // GraphicsUtilities.drawShape(g, (int)p1.getX(), 
(int)p1.getY(), shapeWidth, shapeHeight, this);
+               // GraphicsUtilities.drawShape(g, 0, 0, shapeWidth, 
shapeHeight, this);
        }
 
        public void setSize(double width, double height) {

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotationImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotationImpl.java
     2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotationImpl.java
     2012-06-05 23:11:16 UTC (rev 29471)
@@ -196,13 +196,15 @@
                        return;
                }
 
-               g2.drawString(text, getX()+halfWidth, getY()+halfHeight);
+               // g2.drawString(text, getX()+halfWidth, getY()+halfHeight);
+               g2.drawString(text, halfWidth, halfHeight);
 
                if(isSelected()) {
       //Selected Annotations will have a yellow border
                        g2.setColor(Color.YELLOW);
                        g2.setStroke(new BasicStroke(2.0f));
-                       g2.drawRect(getX()-4, getY()-4, getTextWidth(g2)+8, 
getTextHeight(g2)+8);
+                       // g2.drawRect(getX()-4, getY()-4, getTextWidth(g2)+8, 
getTextHeight(g2)+8);
+                       g2.drawRect(0, 0, getTextWidth(g2), getTextHeight(g2));
                }
        }
 

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/ImageAnnotationFactory.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/ImageAnnotationFactory.java
      2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/ImageAnnotationFactory.java
      2012-06-05 23:11:16 UTC (rev 29471)
@@ -9,6 +9,7 @@
 import org.cytoscape.ding.impl.cyannotator.CyAnnotator;
 import org.cytoscape.ding.impl.cyannotator.api.Annotation;
 import org.cytoscape.ding.impl.cyannotator.annotations.ImageAnnotationImpl;
+import org.cytoscape.ding.impl.cyannotator.dialogs.LoadImageDialog;
 import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
 
 public class ImageAnnotationFactory implements AnnotationFactory {
@@ -19,7 +20,7 @@
        }
 
        public JFrame createAnnotationFrame(DGraphView view, Point2D location) {
-               return new cImageAnnotation(view, location, 
customGraphicsManager);
+               return new LoadImageDialog(view, location, 
customGraphicsManager);
        }
 
        public Annotation createAnnotation(String type, CyAnnotator 
cyAnnotator, DGraphView view, Map<String, String> argMap) {

Deleted: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/cImageAnnotation.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/cImageAnnotation.java
    2012-06-05 23:07:07 UTC (rev 29470)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/create/cImageAnnotation.java
    2012-06-05 23:11:16 UTC (rev 29471)
@@ -1,174 +0,0 @@
-package org.cytoscape.ding.impl.cyannotator.create;
-
-import java.awt.Container;
-import java.awt.geom.Point2D;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.net.URL;
-
-import javax.imageio.ImageIO;
-import javax.swing.JFrame;
-import javax.swing.filechooser.FileFilter;
-
-import org.cytoscape.ding.impl.cyannotator.CyAnnotator;
-import org.cytoscape.ding.impl.cyannotator.api.ImageAnnotation;
-import org.cytoscape.ding.impl.cyannotator.annotations.ImageAnnotationImpl;
-import org.cytoscape.ding.impl.DGraphView;
-import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
-
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-//Provides a way to create ImageAnnotations
-
-public class cImageAnnotation extends javax.swing.JFrame {
-
-       private final DGraphView view;
-       private final CyAnnotator cyAnnotator; 
-       private final CustomGraphicsManager cgm;
-       private final Point2D startingLocation;
-
-       private static final Logger logger = 
LoggerFactory.getLogger(cImageAnnotation.class);
-
-       public cImageAnnotation(DGraphView view, Point2D location, 
CustomGraphicsManager cgm) {
-               this.view = view;
-               this.cgm = cgm;
-               this.cyAnnotator = view.getCyAnnotator();
-               this.startingLocation = location;
-               
-               initComponents(this.getContentPane());
-               setSize(474, 445);
-               setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-       }
-
-       private void initComponents(Container pane) {
-
-               setTitle("Select an Image");
-               setAlwaysOnTop(true);
-               setResizable(false);
-
-               setMinimumSize(new java.awt.Dimension(615, 440));
-
-               pane.setLayout(null);
-
-               jFileChooser1 = new javax.swing.JFileChooser();
-               jFileChooser1.setControlButtonsAreShown(false);
-               jFileChooser1.setCurrentDirectory(null);
-               jFileChooser1.setDialogTitle("");
-
-               jFileChooser1.setAcceptAllFileFilterUsed(false);
-               jFileChooser1.addChoosableFileFilter( new ImageFilter() );
-
-               pane.add(jFileChooser1);
-               jFileChooser1.setBounds(0, 0, 540, 400);
-               
-               jButton1 = new javax.swing.JButton();
-
-               jButton1.setText("Open");
-               jButton1.addActionListener(new java.awt.event.ActionListener() {
-                       public void actionPerformed(java.awt.event.ActionEvent 
evt) {
-                               jButton1ActionPerformed(evt);
-                       }
-               });
-               
-               pane.add(jButton1);
-               jButton1.setBounds(530, 340, 70, 
(int)jButton1.getPreferredSize().getHeight());
-
-               jButton2 = new javax.swing.JButton();
-
-               jButton2.setText("Cancel");
-               jButton2.addActionListener(new java.awt.event.ActionListener() {
-                       public void actionPerformed(java.awt.event.ActionEvent 
evt) {
-                               jButton2ActionPerformed(evt);
-                       }
-               });
-
-               pane.add(jButton2);
-               jButton2.setBounds(530, 370, 70, 
(int)jButton2.getPreferredSize().getHeight());                    
-               pack();
-       }
-
-       private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
-               try {
-                       //Read the selected Image, create an Image Annotation, 
repaint the whole network and then dispose off this Frame
-                       File imageFile = jFileChooser1.getSelectedFile(); // 
Get the file
-                       BufferedImage image = ImageIO.read(imageFile);
-                       URL url = imageFile.toURI().toURL();
-                       //The Attributes are x, y, Image, componentNumber, 
scaleFactor
-                       ImageAnnotation newOne=new 
ImageAnnotationImpl(cyAnnotator, view, 
-                                                                      
(int)startingLocation.getX(), (int)startingLocation.getY(), 
-                                                                      url, 
image, 
-                                                                      
view.getZoom(),cgm);
-
-                       
cyAnnotator.getForeGroundCanvas().add(newOne.getComponent());
-                       view.updateView();
-
-                       this.dispose();
-               } catch(Exception ex){
-                       logger.warn("Unable to load the selected image",ex);    
-               }
-       }
-
-       private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
-
-               dispose();
-       }
-
-       public String getExtension(File f) {
-
-               String ext = null;
-               String s = f.getName();
-
-               int i = s.lastIndexOf('.');
-
-               if (i > 0 &&  i < s.length() - 1) {
-                       ext = s.substring(i+1).toLowerCase();
-               }
-               
-               return ext;
-       }
-
-
-       //This class provides a FileFilter for the JFileChooser
-
-       public class ImageFilter extends FileFilter{
-
-               //Accept all directories and all gif, jpg, tiff, or png files.
-               public boolean accept(File f) {
-
-                       if (f.isDirectory()) {
-                               return true;
-                       }
-
-                       String extension = getExtension(f);
-                       
-                       if (extension != null) {
-                               
-                               if (extension.equals("tiff") ||
-                                       extension.equals("tif") ||
-                                       extension.equals("gif") ||
-                                       extension.equals("jpeg") ||
-                                       extension.equals("jpg") ||
-                                       extension.equals("png"))
-                                               return true;
-
-                               else
-                                       return false;
-                       }
-
-                       return false;
-               }
-
-               //The description of this filter
-               public String getDescription() {
-                       return "Just Images";
-               }
-
-       }
-
-       private javax.swing.JButton jButton1;
-       private javax.swing.JButton jButton2;
-       private javax.swing.JFileChooser jFileChooser1;
-
-}

Added: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/dialogs/LoadImageDialog.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/dialogs/LoadImageDialog.java
                            (rev 0)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/dialogs/LoadImageDialog.java
    2012-06-05 23:11:16 UTC (rev 29471)
@@ -0,0 +1,187 @@
+package org.cytoscape.ding.impl.cyannotator.dialogs;
+
+import java.awt.Container;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.net.URL;
+
+import javax.imageio.ImageIO;
+import javax.swing.JFrame;
+import javax.swing.filechooser.FileFilter;
+
+import org.cytoscape.ding.impl.cyannotator.CyAnnotator;
+import org.cytoscape.ding.impl.cyannotator.api.ImageAnnotation;
+import org.cytoscape.ding.impl.cyannotator.annotations.ImageAnnotationImpl;
+import org.cytoscape.ding.impl.DGraphView;
+import org.cytoscape.ding.customgraphics.CustomGraphicsManager;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+//Provides a way to create ImageAnnotations
+
+public class LoadImageDialog extends javax.swing.JFrame {
+
+       private final DGraphView view;
+       private final CyAnnotator cyAnnotator; 
+       private final CustomGraphicsManager cgm;
+       private final Point2D startingLocation;
+
+       private static final Logger logger = 
LoggerFactory.getLogger(LoadImageDialog.class);
+
+       public LoadImageDialog(DGraphView view, Point2D location, 
CustomGraphicsManager cgm) {
+               this.view = view;
+               this.cgm = cgm;
+               this.cyAnnotator = view.getCyAnnotator();
+               this.startingLocation = location;
+               
+               initComponents(this.getContentPane());
+               setSize(474, 445);
+               setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+       }
+
+       private void initComponents(Container pane) {
+
+               setTitle("Select an Image");
+               setAlwaysOnTop(true);
+               setResizable(false);
+
+               setMinimumSize(new java.awt.Dimension(625, 440));
+
+               pane.setLayout(null);
+
+               jFileChooser1 = new javax.swing.JFileChooser();
+               jFileChooser1.setControlButtonsAreShown(false);
+               jFileChooser1.setCurrentDirectory(null);
+               jFileChooser1.setDialogTitle("");
+
+               jFileChooser1.setAcceptAllFileFilterUsed(false);
+               jFileChooser1.addChoosableFileFilter( new ImageFilter() );
+
+               pane.add(jFileChooser1);
+               jFileChooser1.setBounds(0, 0, 540, 400);
+               
+               jButton1 = new javax.swing.JButton();
+
+               jButton1.setText("Open");
+               jButton1.addActionListener(new java.awt.event.ActionListener() {
+                       public void actionPerformed(java.awt.event.ActionEvent 
evt) {
+                               jButton1ActionPerformed(evt);
+                       }
+               });
+               
+               pane.add(jButton1);
+               jButton1.setBounds(540, 335, 70, 
(int)jButton1.getPreferredSize().getHeight());
+
+               jButton2 = new javax.swing.JButton();
+
+               jButton2.setText("Cancel");
+               jButton2.addActionListener(new java.awt.event.ActionListener() {
+                       public void actionPerformed(java.awt.event.ActionEvent 
evt) {
+                               jButton2ActionPerformed(evt);
+                       }
+               });
+
+               pane.add(jButton2);
+               jButton2.setBounds(540, 365, 70, 
(int)jButton2.getPreferredSize().getHeight());                    
+               pack();
+       }
+
+       private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
+               try {
+                       //Read the selected Image, create an Image Annotation, 
repaint the whole network and then dispose off this Frame
+                       File imageFile = jFileChooser1.getSelectedFile(); // 
Get the file
+                       BufferedImage image = ImageIO.read(imageFile);
+                       URL url = imageFile.toURI().toURL();
+                       //The Attributes are x, y, Image, componentNumber, 
scaleFactor
+                       ImageAnnotation newOne=new 
ImageAnnotationImpl(cyAnnotator, view, 
+                                                                      
(int)startingLocation.getX(), (int)startingLocation.getY(), 
+                                                                      url, 
image, 
+                                                                      
view.getZoom(),cgm);
+
+                       
cyAnnotator.getForeGroundCanvas().add(newOne.getComponent());
+                       cyAnnotator.addAnnotation(newOne);
+                       newOne.getCanvas().repaint();
+
+                       // Set this shape to be resized
+                       cyAnnotator.resizeShape(newOne);
+
+                       try {
+                               // Warp the mouse to the starting location (if 
supported)
+                               Point start = 
newOne.getComponent().getLocationOnScreen();
+                               Robot robot = new Robot();
+                               robot.mouseMove((int)start.getX()+100, 
(int)start.getY()+100);
+                       } catch (Exception e) {}
+
+                       this.dispose();
+               } catch(Exception ex){
+                       logger.warn("Unable to load the selected image",ex);    
+               }
+       }
+
+       private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
+
+               dispose();
+       }
+
+       public String getExtension(File f) {
+
+               String ext = null;
+               String s = f.getName();
+
+               int i = s.lastIndexOf('.');
+
+               if (i > 0 &&  i < s.length() - 1) {
+                       ext = s.substring(i+1).toLowerCase();
+               }
+               
+               return ext;
+       }
+
+
+       //This class provides a FileFilter for the JFileChooser
+
+       public class ImageFilter extends FileFilter{
+
+               //Accept all directories and all gif, jpg, tiff, or png files.
+               public boolean accept(File f) {
+
+                       if (f.isDirectory()) {
+                               return true;
+                       }
+
+                       String extension = getExtension(f);
+                       
+                       if (extension != null) {
+                               
+                               if (extension.equals("tiff") ||
+                                       extension.equals("tif") ||
+                                       extension.equals("gif") ||
+                                       extension.equals("jpeg") ||
+                                       extension.equals("jpg") ||
+                                       extension.equals("png"))
+                                               return true;
+
+                               else
+                                       return false;
+                       }
+
+                       return false;
+               }
+
+               //The description of this filter
+               public String getDescription() {
+                       return "Just Images";
+               }
+
+       }
+
+       private javax.swing.JButton jButton1;
+       private javax.swing.JButton jButton2;
+       private javax.swing.JFileChooser jFileChooser1;
+
+}

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