package com.drawbridge.utils; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; public class BackgroundSelector extends JPanel { private static final long serialVersionUID = 2508763575828692733L; private final static Dimension panelSize = new Dimension(200, 300); private final static Dimension thumbSize = new Dimension(50, 50); private final static int gridWidth = 3; private final static int gridHeight = 4; private JLabel [] [] images; public BackgroundSelector(final BackgroundSelectorListener listener){ this.setSize(panelSize); this.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); images = new JLabel[gridWidth][gridHeight]; c.insets = new Insets(2, 2, 2, 2); //Load in 12 images from backgrounds folder for(int i = 0; i < images.length; i++){ for(int j = 0; j < images[i].length; j++){ final int fileIndex = (gridHeight * i) + j + 1; c.gridx = i; c.gridy = j; BufferedImage img = GraphicUtils.loadImageFromResource("/Backgrounds/" + fileIndex + ".jpg"); Image dimg = img.getScaledInstance(thumbSize.width, thumbSize.height, Image.SCALE_SMOOTH); images[i][j] = new JLabel(new ImageIcon(dimg)); this.add(images[i][j], c); Utils.out.println(getClass(), "doing image:" + fileIndex + " from:" + i + ", " + j); images[i][j].addMouseListener(new MouseAdapter(){ @Override public void mousePressed(MouseEvent e) { if(listener != null) listener.onBackgroundChangeRequest("/Backgrounds/" + fileIndex + ".jpg"); } }); } } } public interface BackgroundSelectorListener{ public void onBackgroundChangeRequest(String relativeLocation); } }