Package util.ui

Source Code of util.ui.ImageUtilities

/*
* TV-Browser
* Copyright (C) 04-2003 Martin Oberhauser (martin_oat@yahoo.de)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* CVS information:
*  $RCSfile$
*   $Source$
*     $Date: 2011-03-26 17:33:19 +0100 (Sat, 26 Mar 2011) $
*   $Author: bananeweizen $
* $Revision: 6970 $
*/

package util.ui;

import java.awt.Component;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.io.File;
import java.util.logging.Logger;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

import util.io.IOUtilities;

/**
* Provides utilities for images.
*
* @author  Til Schneider, www.murfman.de
*/
public class ImageUtilities {
 
  private static final Logger mLog
    = Logger.getLogger(ImageUtilities.class.getName());

  /** The helper label. */
  private static final JLabel HELPER_LABEL = new JLabel();

  /**
   * Returns the image in the specified file.
   * <p>
   * If the file does not exist null is returned.
   */
  public static Image createImage(String fileName, boolean waitUntilLoaded) {
    if (! new File(fileName).exists()) {
      mLog.warning("File does not exist: '" + fileName + "'");
      return null;
    }
    Image img = Toolkit.getDefaultToolkit().createImage(fileName);
    if (waitUntilLoaded) {
      waitForImageData(img, null);
    }
   
    return img;
  }
 
  /**
   * Returns the image in the specified file.
   * <p>
   * If the file does not exist <code>null</code> is returned.
   * </p>
   * <p>Do NOT use this method for images used with ImageIcons! Always use {@link #createImageAsynchronous(String)} with ImageIcons!</p>
   */
  public static Image createImage(String fileName) {
    return createImage(fileName, true);
  }

  public static Image createImageAsynchronous(String fileName) {
    return createImage(fileName, false);
  }
 
  /**
   * Lädt ein ImageIcon aus einem Jar-File und gibt es zurück.
   * <P>
   * Ist kein ImageIcon mit diesem Namen im Jar-File, so wird versucht, es vom
   * Dateisystem zu laden.
   * <P>
   * Wird die ImageIcon-Datei nicht gefunden, so wird <CODE>null</CODE> zurück gegeben.
   *
   * @param fileName Der Name der ImageIcon-Datei.
   * @param srcClass Eine Klasse, aus deren Jar-File das ImageIcon geladen werden soll.
   */
  public static ImageIcon createImageIconFromJar(String fileName, Class srcClass) {
    Image img = createImageFromJar(fileName, srcClass);
   
    if (img == null) {
      return null;
    } else {
      return new ImageIcon(img);
    }
  }
 
 
 
  /**
   * Lädt ein Image aus einem Jar-File und gibt es zurück.
   * <P>
   * Ist kein Image mit diesem Namen im Jar-File, so wird versucht, es vom
   * Dateisystem zu laden.
   * <P>
   * Wird die Image-Datei nicht gefunden, so wird <code>null</code> zurück gegeben.
   *
   * @param fileName Der Name der Image-Datei.
   * @param srcClass Eine Klasse, aus deren Jar-File das Image geladen werden soll.
   */
  public static Image createImageFromJar(String fileName, Class srcClass) {
    Image image = null;
    try {
      byte[] data = IOUtilities.loadFileFromJar(fileName, srcClass);
      image = Toolkit.getDefaultToolkit().createImage(data);
    }
    catch (Throwable thr) {
      String msg = "Loading '" + fileName + "' failed!";
      mLog.log(java.util.logging.Level.WARNING, msg, thr);
      return null;
    }
   
    if (image != null) {
      waitForImageData(image, null);
    }

    return image;
  }

 
 
  /**
   * Waits until all the data of an Image is present.
   * <p>
   * An Image is after construction only loaded when the data is used. The loading
   * occurs in an extra Thread and can take some time, so it might happen, that
   * an Image is not present after construction (it will be painted partly).
   * This method waits until the whole Image is loaded. The Component
   * <code>comp</code> is needed to monitor the preparing of the Image. You can
   * pass any Component (it will not be changed).
   * </p>
   * <p>You should not use this method when creating an ImageIcon. ImageIcons already use a MediaTracker internally.</p>
   *
   * @param image
   * @param comp
   */
  public static void waitForImageData(Image image, Component comp) {
    if (comp == null) {
      comp = HELPER_LABEL;
    }
   
    MediaTracker tracker = new MediaTracker(comp);
    tracker.addImage(image, 0);
    try {
      tracker.waitForID(0);
    }
    catch (Exception ex) {
    }
  } // waitForImageData (Image, Component)
 
 
}
TOP

Related Classes of util.ui.ImageUtilities

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.