// Path: src/de/lighti/model/game/Dota2Item.java
// public class Dota2Item {
//     private String key;
//     //TODO unused yet
//     private String name;
// 
//     public final static Dota2Item UNKNOWN_ITEM = new Dota2Item( Statics.UNKNOWN_ITEM, false );
// 
//     private static Map<String, BufferedImage> images = new HashMap<String, BufferedImage>();
// 
//     private final boolean fetchImage;
//     private final List<Long> usage;
// 
//     public Dota2Item( String key ) {
//         this( key, true );
//     }
// 
//     public Dota2Item( String key, boolean fetchImage ) {
//         super();
//         if (!key.isEmpty() && !key.startsWith( "item" ) && key != Statics.UNKNOWN_ITEM) {
//             Logger.getLogger( getClass().getName() ).warning( key + ": an item that doesn't start with \"item\" is probably not an item" );
//         }
// 
//         this.key = key;
//         this.fetchImage = fetchImage;
//         usage = new ArrayList<Long>();
//     }
// 
//     public void addUsage( long time ) {
//         if (time < 0l) {
//             throw new IllegalArgumentException( "time out of range" );
//         }
// 
//         usage.add( time );
//     }
// 
//     public BufferedImage getImage() throws IOException {
//         if (fetchImage) {
//             BufferedImage i = images.get( key );
//             if (i == null && !images.containsKey( key )) {
//                 i = ImageCache.getItemImage( key );
//                 images.put( key, i );
//             }
//             return i;
//         }
//         return null;
//     }
// 
//     public String getKey() {
//         return key;
//     }
// 
//     public String getName() {
//         return name != null ? name : key;
//     }
// 
//     public List<Long> getUsage() {
//         return usage;
//     }
// 
//     public void setKey( String key ) {
//         if (!key.isEmpty() && !key.startsWith( "item" ) && key != Statics.UNKNOWN_ITEM) {
//             Logger.getLogger( getClass().getName() ).warning( key + ": an item that doesn't start with \"item\" is probably not an item" );
//         }
//         if (key == null || key.isEmpty()) {
//             throw new IllegalArgumentException( "key must not be empty" );
//         }
//         this.key = key;
//     }
// 
// }


import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Queue;
import java.util.logging.Logger;
import javax.swing.JPanel;
import de.lighti.model.game.Dota2Item;


        int x = 20;
        int y = 20;
        if (items != null) {
            for (final Dota2Item i : items) {
                try {
                    final BufferedImage image = i.getImage();
                    if (image != null) {
                        g.drawImage( image, x, y, null );
                        x += image.getWidth() + 5;
                    }
                    else {
                        g.drawString( i.getKey(), x, y );
                        x += i.getKey().length() * 20;
                    }
                }
                catch (final IOException e) {
                    LOGGER.warning( "Error loading image: " + e.getLocalizedMessage() );
                    g.drawString( i.getKey(), x, y );
                    x += i.getKey().length() * 20;
                }

                if (x >= getWidth() - 100) {
                    y += 100;
                    x = 20;
                }
            }
        }
    }


// Path: src/de/lighti/model/game/Dota2Item.java
// public class Dota2Item {
//     private String key;
//     //TODO unused yet
//     private String name;
// 
//     public final static Dota2Item UNKNOWN_ITEM = new Dota2Item( Statics.UNKNOWN_ITEM, false );
// 
//     private static Map<String, BufferedImage> images = new HashMap<String, BufferedImage>();
// 
//     private final boolean fetchImage;
//     private final List<Long> usage;
// 
//     public Dota2Item( String key ) {
//         this( key, true );
//     }
// 
//     public Dota2Item( String key, boolean fetchImage ) {
//         super();
//         if (!key.isEmpty() && !key.startsWith( "item" ) && key != Statics.UNKNOWN_ITEM) {
//             Logger.getLogger( getClass().getName() ).warning( key + ": an item that doesn't start with \"item\" is probably not an item" );
//         }
// 
//         this.key = key;
//         this.fetchImage = fetchImage;
//         usage = new ArrayList<Long>();
//     }
// 
//     public void addUsage( long time ) {
//         if (time < 0l) {
//             throw new IllegalArgumentException( "time out of range" );
//         }
// 
//         usage.add( time );
//     }
// 
//     public BufferedImage getImage() throws IOException {
//         if (fetchImage) {
//             BufferedImage i = images.get( key );
//             if (i == null && !images.containsKey( key )) {
//                 i = ImageCache.getItemImage( key );
//                 images.put( key, i );
//             }
//             return i;
//         }
//         return null;
//     }
// 
//     public String getKey() {
//         return key;
//     }
// 
//     public String getName() {
//         return name != null ? name : key;
//     }
// 
//     public List<Long> getUsage() {
//         return usage;
//     }
// 
//     public void setKey( String key ) {
//         if (!key.isEmpty() && !key.startsWith( "item" ) && key != Statics.UNKNOWN_ITEM) {
//             Logger.getLogger( getClass().getName() ).warning( key + ": an item that doesn't start with \"item\" is probably not an item" );
//         }
//         if (key == null || key.isEmpty()) {
//             throw new IllegalArgumentException( "key must not be empty" );
//         }
//         this.key = key;
//     }
// 
// }


// Path: src/de/lighti/components/player/statistics/BuildOrderComponent.java
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Queue;
import java.util.logging.Logger;
import javax.swing.JPanel;
import de.lighti.model.game.Dota2Item;


        int x = 20;
        int y = 20;
        if (items != null) {
            for (final Dota2Item i : items) {
                try {
                    final BufferedImage image = i.getImage();
                    if (image != null) {
                        g.drawImage( image, x, y, null );
                        x += image.getWidth() + 5;
                    }
                    else {
                        g.drawString( i.getKey(), x, y );
                        x += i.getKey().length() * 20;
                    }
                }
                catch (final IOException e) {
                    LOGGER.warning( "Error loading image: " + e.getLocalizedMessage() );
                    g.drawString( i.getKey(), x, y );
                    x += i.getKey().length() * 20;
                }

                if (x >= getWidth() - 100) {
                    y += 100;
                    x = 20;
                }
            }
        }
    }


    public void setItems( Queue<Dota2Item> items ) {
