package cytoscape.editor.cyAnnotator.createAnnotation; import java.awt.*; import javax.imageio.ImageIO; import java.io.File; import java.awt.image.BufferedImage; import cytoscape.Cytoscape; import cytoscape.ding.DingNetworkView; import ding.view.DGraphView; import javax.swing.filechooser.*; import cytoscape.editor.cyAnnotator.Annotations.*; //Provides a way to create ImageAnnotations public class cImageAnnotation extends javax.swing.JFrame { public cImageAnnotation() { initComponents(this.getContentPane()); } 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()); } 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 BufferedImage image = ImageIO.read(jFileChooser1.getSelectedFile()); //The Attributes are x, y, Image, componentNumber, scaleFactor ImageAnnotation newOne=new ImageAnnotation(getX(), getY(), image, ((DingNetworkView)Cytoscape.getCurrentNetworkView()).getCanvas(DGraphView.Canvas.FOREGROUND_CANVAS).getComponentCount(), ((DingNetworkView)Cytoscape.getCurrentNetworkView()).getZoom()); ((DingNetworkView)Cytoscape.getCurrentNetworkView()).getCanvas(DGraphView.Canvas.FOREGROUND_CANVAS).add(newOne); Cytoscape.getDesktop().getNetworkViewManager().getInternalFrameComponent(Cytoscape.getCurrentNetworkView()).repaint(); this.dispose(); } catch(Exception ex){ System.out.println("Unable to load the selected image"); } } 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; }