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.