r2459 - in trunk: jaxx-runtime/src/main/java/jaxx/runtime/swing/editor jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config
Author: mallon Date: 2012-07-31 15:57:54 +0200 (Tue, 31 Jul 2012) New Revision: 2459 Url: http://nuiton.org/repositories/revision/jaxx/2459 Log: Ajout d'un ?\195?\169diteur Added: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java Added: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java (rev 0) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java 2012-07-31 13:57:54 UTC (rev 2459) @@ -0,0 +1,91 @@ +package jaxx.runtime.swing.editor; + +import javax.swing.AbstractCellEditor; +import javax.swing.table.TableCellEditor; +import javax.swing.JButton; +import javax.swing.JColorChooser; +import javax.swing.JDialog; +import javax.swing.JTable; +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class ColorEditor extends AbstractCellEditor + implements TableCellEditor, + ActionListener { + Color currentColor; + JButton button; + JColorChooser colorChooser; + JDialog dialog; + protected static final String EDIT = "edit"; + + public ColorEditor() { + //Set up the editor (from the table's point of view), + //which is a button. + //This button brings up the color chooser dialog, + //which is the editor from the user's point of view. + button = new JButton(); + button.setActionCommand(EDIT); + button.addActionListener(this); + button.setBorderPainted(false); + + //Set up the dialog that the button brings up. + colorChooser = new JColorChooser(); + dialog = JColorChooser.createDialog(button, + "Pick a Color", + true, //modal + colorChooser, + this, //OK button handler + null); //no CANCEL button handler + } + + /** + * Handles events from the editor button and from + * the dialog's OK button. + */ + public void actionPerformed(ActionEvent e) { + if (EDIT.equals(e.getActionCommand())) { + //The user has clicked the cell, so + //bring up the dialog. + button.setBackground(currentColor); + colorChooser.setColor(currentColor); + dialog.setVisible(true); + + //Make the renderer reappear. + fireEditingStopped(); + + } else { //User pressed dialog's "OK" button. + currentColor = colorChooser.getColor(); + } + } + + //Implement the one CellEditor method that AbstractCellEditor doesn't. + public String getCellEditorValue() { + String currentColorHexa = toHex(currentColor.getRed(), currentColor.getGreen(), currentColor.getBlue()); + return currentColorHexa; + } + + protected static String toHex(int r, int g, int b) { + return "#" + toBrowserHexValue(r) + toBrowserHexValue(g) + toBrowserHexValue(b); + } + + protected static String toBrowserHexValue(int number) { + StringBuilder builder = new StringBuilder(Integer.toHexString(number & 0xff)); + while (builder.length() < 2) { + builder.append("0"); + } + return builder.toString().toUpperCase(); + } + + + //Implement the one method defined by TableCellEditor. + public Component getTableCellEditorComponent(JTable table, + Object value, + boolean isSelected, + int row, + int column) { + currentColor = (Color)value; + return button; + } +} \ No newline at end of file Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-07-30 18:50:14 UTC (rev 2458) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-07-31 13:57:54 UTC (rev 2459) @@ -28,6 +28,7 @@ import com.google.common.io.Files; import jaxx.runtime.swing.JAXXWidgetUtil; import jaxx.runtime.swing.editor.ClassCellEditor; +import jaxx.runtime.swing.editor.ColorEditor; import jaxx.runtime.swing.editor.EnumEditor; import jaxx.runtime.swing.editor.LocaleEditor; import jaxx.runtime.swing.editor.cell.FileCellEditor; @@ -40,6 +41,7 @@ import javax.swing.KeyStroke; import javax.swing.event.CellEditorListener; import javax.swing.table.TableCellEditor; +import java.awt.Color; import java.awt.Component; import java.io.File; import java.util.EventObject; @@ -129,6 +131,9 @@ } else if (type.equals(Locale.class)) { editor = new DefaultCellEditor(LocaleEditor.newEditor()); + } else if (type.equals(Color.class)) { + editor = new ColorEditor(); + } else { editor = table.getDefaultEditor(String.class); }
participants (1)
-
mallon@users.nuiton.org