X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FConfigItemColor.java;fp=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FConfigItemColor.java;h=0000000000000000000000000000000000000000;hp=500efff4b3b802831ad584550ea183f0d0bb9195;hb=46add0670fdee4bd936a13fe2448c5e20a7ffd0a;hpb=1b5197ed4ceec2025a9a40c417b37c646b756138 diff --git a/src/be/nikiroo/utils/ui/ConfigItemColor.java b/src/be/nikiroo/utils/ui/ConfigItemColor.java deleted file mode 100644 index 500efff..0000000 --- a/src/be/nikiroo/utils/ui/ConfigItemColor.java +++ /dev/null @@ -1,168 +0,0 @@ -package be.nikiroo.utils.ui; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.image.BufferedImage; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JColorChooser; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JTextField; - -import be.nikiroo.utils.resources.MetaInfo; - -class ConfigItemColor> extends ConfigItem { - private static final long serialVersionUID = 1L; - - private Map fields = new HashMap(); - private Map panels = new HashMap(); - - /** - * Create a new {@link ConfigItemColor} for the given {@link MetaInfo}. - * - * @param info - * the {@link MetaInfo} - */ - public ConfigItemColor(MetaInfo info) { - super(info, true); - } - - @Override - protected Object getFromField(int item) { - JTextField field = fields.get(getField(item)); - if (field != null) { - return field.getText(); - } - - return null; - } - - @Override - protected Object getFromInfo(int item) { - return info.getString(item, true); - } - - @Override - protected void setToField(Object value, int item) { - JTextField field = fields.get(getField(item)); - if (field != null) { - field.setText(value == null ? "" : value.toString()); - } - - JButton colorWheel = panels.get(getField(item)); - if (colorWheel != null) { - colorWheel.setIcon(getIcon(17, getFromInfoColor(item))); - } - } - - @Override - protected void setToInfo(Object value, int item) { - info.setString((String) value, item); - } - - /** - * Get the colour currently present in the linked info for the given item. - * - * @param item - * the item number to get for an array of values, or -1 to get - * the whole value (has no effect if {@link MetaInfo#isArray()} - * is FALSE) - * - * @return a colour - */ - private int getFromInfoColor(int item) { - Integer color = info.getColor(item, true); - if (color == null) { - return new Color(255, 255, 255, 255).getRGB(); - } - - return color; - } - - @Override - protected JComponent createEmptyField(final int item) { - final JPanel pane = new JPanel(new BorderLayout()); - final JTextField field = new JTextField(); - - final JButton colorWheel = new JButton(); - colorWheel.setIcon(getIcon(17, getFromInfoColor(item))); - colorWheel.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - int icol = getFromInfoColor(item); - Color initialColor = new Color(icol, true); - Color newColor = JColorChooser.showDialog(ConfigItemColor.this, - info.getName(), initialColor); - if (newColor != null) { - info.setColor(newColor.getRGB(), item); - field.setText(info.getString(item, false)); - colorWheel.setIcon(getIcon(17, info.getColor(item, true))); - } - } - }); - - field.addKeyListener(new KeyAdapter() { - @Override - public void keyTyped(KeyEvent e) { - info.setString(field.getText() + e.getKeyChar(), item); - int color = getFromInfoColor(item); - colorWheel.setIcon(getIcon(17, color)); - } - }); - - pane.add(colorWheel, BorderLayout.WEST); - pane.add(field, BorderLayout.CENTER); - - fields.put(pane, field); - panels.put(pane, colorWheel); - return pane; - } - - /** - * Return an {@link Icon} to use as a colour badge for the colour field - * controls. - * - * @param size - * the size of the badge - * @param color - * the colour of the badge, which can be NULL (will return - * transparent white) - * - * @return the badge - */ - static private Icon getIcon(int size, Integer color) { - // Allow null values - if (color == null) { - color = new Color(255, 255, 255, 255).getRGB(); - } - - Color c = new Color(color, true); - int avg = (c.getRed() + c.getGreen() + c.getBlue()) / 3; - Color border = (avg >= 128 ? Color.BLACK : Color.WHITE); - - BufferedImage img = new BufferedImage(size, size, - BufferedImage.TYPE_4BYTE_ABGR); - - Graphics2D g = img.createGraphics(); - try { - g.setColor(c); - g.fillRect(0, 0, img.getWidth(), img.getHeight()); - g.setColor(border); - g.drawRect(0, 0, img.getWidth() - 1, img.getHeight() - 1); - } finally { - g.dispose(); - } - - return new ImageIcon(img); - } -}