X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FConfigItemColor.java;h=951ff45a22b48ab4108ea4f00ea29bf3a920c2c9;hb=HEAD;hp=cbb80843fb82850008fb138e678b32d172284d0f;hpb=d5026c096121da14c20d69893520594a36d088bb;p=fanfix.git diff --git a/src/be/nikiroo/utils/ui/ConfigItemColor.java b/src/be/nikiroo/utils/ui/ConfigItemColor.java index cbb8084..951ff45 100644 --- a/src/be/nikiroo/utils/ui/ConfigItemColor.java +++ b/src/be/nikiroo/utils/ui/ConfigItemColor.java @@ -5,6 +5,8 @@ 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; @@ -19,10 +21,11 @@ import javax.swing.JTextField; import be.nikiroo.utils.resources.MetaInfo; -public class ConfigItemColor> extends ConfigItem { +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}. @@ -46,7 +49,7 @@ public class ConfigItemColor> extends ConfigItem { @Override protected Object getFromInfo(int item) { - return info.getString(item, false); + return getInfo().getString(item, true); } @Override @@ -55,16 +58,30 @@ public class ConfigItemColor> extends ConfigItem { if (field != null) { field.setText(value == null ? "" : value.toString()); } - // TODO: change color too + + 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); + getInfo().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); + Integer color = getInfo().getColor(item, true); if (color == null) { return new Color(255, 255, 255, 255).getRGB(); } @@ -73,7 +90,7 @@ public class ConfigItemColor> extends ConfigItem { } @Override - protected JComponent createField(final int item) { + protected JComponent createEmptyField(final int item) { final JPanel pane = new JPanel(new BorderLayout()); final JTextField field = new JTextField(); @@ -85,19 +102,30 @@ public class ConfigItemColor> extends ConfigItem { int icol = getFromInfoColor(item); Color initialColor = new Color(icol, true); Color newColor = JColorChooser.showDialog(ConfigItemColor.this, - info.getName(), initialColor); + getInfo().getName(), initialColor); if (newColor != null) { - info.setColor(newColor.getRGB(), item); - field.setText(info.getString(item, false)); - colorWheel.setIcon(getIcon(17, info.getColor(item, true))); + getInfo().setColor(newColor.getRGB(), item); + field.setText(getInfo().getString(item, false)); + colorWheel.setIcon(getIcon(17, + getInfo().getColor(item, true))); } } }); + field.addKeyListener(new KeyAdapter() { + @Override + public void keyTyped(KeyEvent e) { + getInfo().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; }