home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / JAVA Utilities / J Screen Print 0.3 / Andras.java~ < prev    next >
Encoding:
Text File  |  2002-05-19  |  9.9 KB  |  278 lines

  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.image.*;
  5. import java.awt.event.*;
  6. import java.io.IOException;
  7. import java.awt.print.*;
  8. import java.io.*;
  9. import javax.imageio.*;
  10. import java.util.Iterator;
  11.  
  12.  
  13.  
  14. public class Andras extends JWindow{
  15.  
  16.  javax.imageio.ImageWriter myimagewriter;
  17.  BufferedImage img;
  18.  ImageBgPanel imgbgpanel;
  19.  Container contentPane;
  20.  JPopupMenu popup;
  21.  int mpX, mpY;
  22.  int[] params;
  23.  FileDialog fd;
  24.  static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  25.  
  26.  public Andras() {
  27.  
  28.  
  29.    try{
  30.         java.awt.Robot robot = new Robot();
  31.         img = robot.createScreenCapture(new java.awt.Rectangle(0,0,screenSize.width,screenSize.height));
  32.  
  33.    }catch(Exception exp){}
  34.  
  35.    this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
  36.  
  37.    //Image image = Toolkit.getDefaultToolkit().getImage("iconed.gif");
  38.    //setIconImage(image);
  39.  
  40.  
  41.  
  42.  /* this.addKeyListener(new java.awt.event.KeyListener() {
  43.                            public void keyTyped(KeyEvent kev) {
  44.                                  if ( kev.getKeyCode() == 17 )
  45.                                     System.exit(0);
  46.                                }
  47.                                public void keyPressed(KeyEvent kev) {
  48.                                }
  49.                                public void keyReleased(KeyEvent kev) {
  50.                                }
  51.    });  */
  52.  
  53.    imgbgpanel = new ImageBgPanel(img);
  54.    imgbgpanel.setLayout(null);
  55.    contentPane = getContentPane();
  56.    contentPane.add(imgbgpanel);
  57.  
  58.    popup = new JPopupMenu();
  59.    popup.setCursor(new Cursor(Cursor.HAND_CURSOR));
  60.    JMenuItem menuItem2 = new JMenuItem("Print");
  61.    menuItem2.addActionListener(new java.awt.event.ActionListener() {
  62.       public void actionPerformed(ActionEvent e) {
  63.                                              popup.setVisible(false);
  64.                                              PrinterJob job = PrinterJob.getPrinterJob();
  65.                                              PageFormat the_page = job.pageDialog(job.defaultPage());
  66.  
  67.                                              Book bk = new Book();
  68.                                              bk.append(new PaintBill(), the_page);
  69.                                              job.setPageable(bk);
  70.                                              if (job.printDialog()) {
  71.                                                 try { job.print(); }
  72.                                                 catch (Exception exc) {  }
  73.                                              }
  74.       }
  75.     });
  76.    popup.add(menuItem2);
  77.  
  78.    JMenuItem menuItem3 = new JMenuItem("Save");
  79.    menuItem3.addActionListener(new java.awt.event.ActionListener() {
  80.       public void actionPerformed(ActionEvent e) {
  81.                         File filetosave;
  82.                         JFileChooser fc = new JFileChooser();
  83.                         fc.addChoosableFileFilter(new ImageFilter());
  84.                         int returnVal = fc.showSaveDialog(imgbgpanel);
  85.                         if (returnVal == JFileChooser.APPROVE_OPTION) {
  86.                          File file = fc.getSelectedFile();
  87.                          String megadottfilenev=Utils.getExtension(file);
  88.              if( megadottfilenev.equals(Utils.png)){
  89.                BufferedImage selectedImagetoSave = img.getSubimage(params[0],params[1],params[2],params[3]);
  90.                            try
  91.                {
  92.                              ImageIO.write(selectedImagetoSave, "png", file);
  93.                }
  94.                catch(Exception ioe){
  95.                  System.out.println(ioe);
  96.                }
  97.              }else{
  98.                           if( megadottfilenev==null || !(megadottfilenev.equals(Utils.jpg) || megadottfilenev.equals(Utils.jpeg)) ){
  99.                            filetosave = new File(file.getParent(),file.getName()+".jpg");
  100.                           }else{
  101.                            filetosave=file;
  102.                           }
  103.                           BufferedImage selectedImagetoSave = img.getSubimage(params[0],params[1],params[2],params[3]);
  104.                           try
  105.               {
  106.                   javax.imageio.stream.ImageOutputStream stream = null;
  107.                       try{
  108.                           filetosave.delete();
  109.                     stream = ImageIO.createImageOutputStream(filetosave);
  110.                   } catch (IOException iioe) {
  111.                       throw new IIOException("Can't create output stream!",iioe);
  112.                   }
  113.  
  114.  
  115.                   ImageWriter writer = null;
  116.                   ImageTypeSpecifier type =
  117.                   ImageTypeSpecifier.createFromRenderedImage(selectedImagetoSave);
  118.                   Iterator iter = ImageIO.getImageWriters(type, "jpeg");
  119.                   if (iter.hasNext()) {
  120.                       writer = (ImageWriter)iter.next();
  121.                   }
  122.                          writer.setOutput(stream);
  123.                   ImageWriteParam myirparam = writer.getDefaultWriteParam();
  124.                   myirparam.setCompressionMode(2);
  125.                   myirparam.setCompressionQuality(1.0F);
  126.                   javax.imageio.metadata.IIOMetadata myiiometadata = writer.getDefaultStreamMetadata(myirparam);
  127.                   IIOImage myiioimage = new IIOImage(selectedImagetoSave,null, myiiometadata);
  128.                   writer.write(myiioimage);
  129.                   stream.flush();
  130.                   writer.dispose();
  131.                   stream.close();
  132.                              //ImageIO.write(selectedImagetoSave, "jpeg", filetosave);
  133.                  /*javax.imageio.spi.ImageWriterSpi iws = new javax.imageio.spi.ImageWriterSpi();
  134.                  //java.util.List list = new java.util.Vector(0);
  135.                  //javax.imageio.ImageWriter myimagewriter = ImageIO.getImageWriter(null);
  136.                  javax.imageio.ImageWriter myimagewriter = (javax.imageio.ImageWriter)ImageIO.getImageWritersByFormatName("jpeg").next();
  137.                  ImageWriteParam myirparam = myimagewriter.getDefaultWriteParam();
  138.                  myirparam.setCompressionMode(2);
  139.                  myirparam.setCompressionQuality(1.0F);
  140.                  javax.imageio.metadata.IIOMetadata myiiometadata = myimagewriter.getDefaultStreamMetadata(myirparam);
  141.                  IIOImage myiioimage = new IIOImage(selectedImagetoSave,null, myiiometadata);
  142.                  javax.imageio.stream.ImageOutputStream stream = null;
  143.                               try {
  144.                       filetosave.delete();
  145.                       stream = ImageIO.createImageOutputStream(filetosave);
  146.                   } catch (IOException iioe) {
  147.                       throw new IIOException("Can't create output stream!", iioe);
  148.                   }
  149.  
  150.                  myimagewriter.setOutput(stream);
  151.                  myimagewriter.write(myiioimage);
  152.                  stream.flush();
  153.                              myimagewriter.dispose(); */
  154.  
  155.               }
  156.               catch(Exception ioe){
  157.                 System.out.println(ioe);
  158.               }
  159.                          }
  160.             }
  161.       }
  162.     });
  163.    popup.add(menuItem3);
  164.  
  165.    JMenuItem menuItem = new JMenuItem("Exit");
  166.    menuItem.addActionListener(new java.awt.event.ActionListener() {
  167.       public void actionPerformed(ActionEvent e) {
  168.         System.exit(0);
  169.       }
  170.     });
  171.    popup.add(menuItem);
  172.  
  173.    imgbgpanel.add(popup);
  174.    MouseListener popupListener = new PopupListener();
  175.    imgbgpanel.addMouseListener(popupListener);
  176.    imgbgpanel.addMouseMotionListener(new MouseMotionListener(){
  177.      public void mouseMoved(MouseEvent me){
  178.      }
  179.      public void mouseDragged(MouseEvent me){
  180.         imgbgpanel.removeAll();
  181.         int x = me.getX();
  182.         int y = me.getY();
  183.         params = new int[]{mpX,mpY,x-mpX,y-mpY};
  184.         Abra abra = new Abra(mpX,mpY,x-mpX,y-mpY);
  185.         abra.setOpaque(false);
  186.         imgbgpanel.add(abra);
  187.         imgbgpanel.repaint();
  188.         show();
  189.      }
  190.   });
  191.   imgbgpanel.addMouseListener(new MouseListener(){
  192.     public void mouseClicked(MouseEvent e){
  193.       imgbgpanel.removeAll();
  194.       imgbgpanel.repaint();
  195.       show();
  196.     }
  197.     public void mousePressed(MouseEvent e){
  198.       mpX=e.getX();
  199.       mpY=e.getY();
  200.     }
  201.     public void mouseReleased(MouseEvent e){
  202.     }
  203.     public void mouseEntered(MouseEvent e){
  204.     }
  205.     public void mouseExited(MouseEvent e){
  206.     }
  207.   });
  208.   }
  209.   public static void main(String[] args) {
  210.     Andras andras1 = new Andras();
  211.     andras1.setSize(screenSize.width,screenSize.height);
  212.     andras1.setVisible(true);
  213.  
  214.  
  215.   }
  216.  
  217.   class PaintBill implements Printable {
  218.    int szelesseg, magassag;
  219.    BufferedImage selectedImage = img.getSubimage(params[0],params[1],params[2],params[3]);
  220.    public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
  221.     szelesseg=selectedImage.getWidth();
  222.     magassag =selectedImage.getHeight();
  223.  
  224.     if(selectedImage.getWidth() > pf.getImageableWidth()){
  225.       double d=pf.getImageableWidth()/ selectedImage.getWidth();
  226.       szelesseg = (int)Math.round(pf.getImageableWidth());
  227.       magassag = (int)Math.round(selectedImage.getHeight()*d);
  228.     }
  229.  
  230.     if(magassag > pf.getImageableHeight()){
  231.       double p=pf.getImageableHeight()/ magassag;
  232.       szelesseg = (int)Math.round(selectedImage.getWidth()*p);
  233.       magassag = (int)Math.round(pf.getImageableHeight());
  234.     }
  235.  
  236.     g.drawImage(selectedImage,(int)Math.ceil(pf.getImageableX()),(int)Math.ceil(pf.getImageableY()),szelesseg,magassag,new MyImgOb());
  237.     return Printable.PAGE_EXISTS;
  238.    }
  239.   }
  240.   class MyImgOb implements ImageObserver{
  241.    public boolean imageUpdate(Image image, int infoflags, int x, int y, int width, int height){
  242.      image=img;
  243.      return true;
  244.    }
  245.   }
  246.  
  247.   class ImageBgPanel extends JPanel {
  248.    TexturePaint texture;
  249.  
  250.    ImageBgPanel(BufferedImage myimg) {
  251.      texture = new TexturePaint(myimg,new Rectangle(0, 0,myimg.getWidth(), myimg.getHeight()));
  252.    }
  253.  
  254.    public void paintComponent(Graphics g) {
  255.     Graphics2D g2d = (Graphics2D)g;
  256.     g2d.setPaint(texture);
  257.     g2d.fillRect(0, 0, getSize().width, getSize().height);
  258.    }
  259.   }
  260.  
  261.   class PopupListener extends MouseAdapter {
  262.         public void mousePressed(MouseEvent e) {
  263.             maybeShowPopup(e);
  264.         }
  265.  
  266.         public void mouseReleased(MouseEvent e) {
  267.             maybeShowPopup(e);
  268.         }
  269.  
  270.         private void maybeShowPopup(MouseEvent e) {
  271.             if (e.isPopupTrigger()) {
  272.                 popup.show(e.getComponent(),
  273.                            e.getX(), e.getY());
  274.             }
  275.         }
  276.    }
  277.  
  278. }