Mega Code Archive

 
Categories / Java / J2ME
 

View Png 2

/*-------------------------------------------------- * ViewPng2.java * * Download and view a png file * * Same as pngView.java with the exception that the  * connection to the server is through an * InputStream versus ContentConnection * * Example from the book:     Core J2ME Technology * Copyright John W. Muchow   http://www.CoreJ2ME.com * You may use/modify for any non-commercial purpose *-------------------------------------------------*/ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.io.*; import java.io.*; public class ViewPng2 extends MIDlet implements CommandListener {   private Display display;   private TextBox tbMain;   private Form fmViewPng;   private Command cmExit;   private Command cmView;   private Command cmBack;   public ViewPng2()   {     display = Display.getDisplay(this);     // Create the Main textbox with a maximum of 75 characters     tbMain = new TextBox("Enter url", "http://www.corej2me.com/midpbook_v1e1/ch14/duke.png", 75, 0);         // Create commands and add to textbox     cmExit = new Command("Exit", Command.EXIT, 1);     cmView = new Command("View", Command.SCREEN, 2);         tbMain.addCommand(cmExit);     tbMain.addCommand(cmView );         // Set up a listener for textbox     tbMain.setCommandListener(this);     // ---------------------------------------     // Create the form that will hold the png image     fmViewPng = new Form("");     // Create commands and add to form     cmBack = new Command("Back", Command.BACK, 1);     fmViewPng.addCommand(cmBack);     // Set up a listener for form     fmViewPng.setCommandListener(this);   }   public void startApp()   {     display.setCurrent(tbMain);   }   public void pauseApp()   { }   public void destroyApp(boolean unconditional)   { }   /*--------------------------------------------------   * Process events   *-------------------------------------------------*/   public void commandAction(Command c, Displayable s)   {     // If the Command button pressed was "Exit"     if (c == cmExit)     {       destroyApp(false);       notifyDestroyed();     }     else if (c == cmView)     {       // Delete everything from the form       if (fmViewPng.size() > 0)         for (int i = 0; i < fmViewPng.size(); i++)           fmViewPng.delete(i);       // Download image and set as the first (only) item on the form       Image im;       try       {         if ((im = getImage(tbMain.getString())) != null)         {           ImageItem ii = new ImageItem(null, im, ImageItem.LAYOUT_DEFAULT, null);          // If there is already an image, set (replace) it           if (fmViewPng.size() != 0)             fmViewPng.set(0, ii);           else  // Append the image to the empty form             fmViewPng.append(ii);         }         else           fmViewPng.append("Unsuccessful download.");            // Display the form with the image         display.setCurrent(fmViewPng);       }       catch (Exception e)       {          System.err.println("Msg: " + e.toString());       }     }      else if (c == cmBack) {       display.setCurrent(tbMain);     }   }   /*--------------------------------------------------   * Open connection and download png into a byte array.   *-------------------------------------------------*/   private Image getImage(String url) throws IOException   {     InputStream iStrm = (InputStream) Connector.openInputStream(url);     Image im = null;     try     {       ByteArrayOutputStream bStrm = new ByteArrayOutputStream();                int ch;       while ((ch = iStrm.read()) != -1)         bStrm.write(ch);       // Place into image array       byte imageData[] = bStrm.toByteArray();                    // Create the image from the byte array       im = Image.createImage(imageData, 0, imageData.length);             }     finally     {       // Clean up       if (iStrm != null)         iStrm.close();     }     return (im == null ? null : im);   } }