001 package org.util.resource;
002
003 import java.util.*;
004 import java.io.*;
005 import java.net.*;
006 import java.awt.*;
007 import java.awt.event.*;
008 import javax.swing.*;
009 import javax.swing.event.*;
010
011 import java.awt.image.*;
012 import javax.imageio.*;
013
014 import org.util.env.LaunchInformation;
015
016 public class ResourceManager {
017
018 private static BufferedImage error_image_;
019 private static ResourceManager rm_;
020
021 public static Image getImage(String path, int w, int h) {
022 URL url = findResource(path);
023 if(url!=null) {
024 Image image = null;
025 try{
026 image = javax.imageio.ImageIO.read(url);
027 if(image.getWidth(null)!=w || image.getHeight(null)!=h) {
028 int hints = Image.SCALE_FAST;
029 image = image.getScaledInstance(w, h, hints);
030 }
031 }catch(Exception exc){}
032 if(image!=null)
033 return image;
034 }
035 return getErrorImage(w, h);
036 }
037
038 public static Image getImage(String path) {
039 URL url = findResource(path);
040 if(url!=null) {
041 Image image = null;
042 try{
043 image = javax.imageio.ImageIO.read(url);
044 }catch(Exception exc){}
045 if(image!=null)
046 return image;
047 }
048 return getErrorImage(50, 50);
049 }
050
051 public static URL findResource(String path) {
052
053 File file = new File(path);
054 URL url = null;
055 if(file.exists()) {
056 try{
057 url = file.toURI().toURL();
058 }catch(Exception exc) {}
059 if(url!=null)
060 return url;
061 }
062
063 try{
064 url = LaunchInformation.createJarURL(path);
065 }catch(Exception exc) {}
066
067 if(url==null) System.err.println("cannot find resource: "+url);
068
069 return url;
070 //return ClassLoader.getSystemResource(path);
071 }
072
073 public static Image getErrorImage(int w, int h) {
074 if(error_image_ == null) {
075 error_image_ = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
076 Graphics2D g = (Graphics2D)error_image_.getGraphics();
077 g.setColor(Color.red);
078 g.drawRect(0,0,w-1,h-1);
079 g.drawLine(1,1,20,20);
080 g.drawLine(1,20,20,1);
081 }
082 return error_image_;
083 }
084
085 }