Author: mallon Date: 2012-07-31 18:06:55 +0200 (Tue, 31 Jul 2012) New Revision: 2462 Url: http://nuiton.org/repositories/revision/jaxx/2462 Log: Ajout d'un renderer, correspondant a l editeur de couleur precedent. Added: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorCellEditor.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/ColorCellRenderer.java Removed: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUIHandler.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java Copied: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorCellEditor.java (from rev 2459, trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java) =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorCellEditor.java (rev 0) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorCellEditor.java 2012-07-31 16:06:55 UTC (rev 2462) @@ -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 ColorCellEditor extends AbstractCellEditor + implements TableCellEditor, + ActionListener { + Color currentColor; + JButton button; + JColorChooser colorChooser; + JDialog dialog; + protected static final String EDIT = "edit"; + + public ColorCellEditor() { + //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, + "", + 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 Color getCellEditorValue() { + //String currentColorHexa = toHex(currentColor.getRed(), currentColor.getGreen(), currentColor.getBlue()); + return currentColor; + } + + 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 Deleted: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java 2012-07-31 15:26:06 UTC (rev 2461) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/editor/ColorEditor.java 2012-07-31 16:06:55 UTC (rev 2462) @@ -1,91 +0,0 @@ -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 Added: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/ColorCellRenderer.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/ColorCellRenderer.java (rev 0) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/ColorCellRenderer.java 2012-07-31 16:06:55 UTC (rev 2462) @@ -0,0 +1,25 @@ +package jaxx.runtime.swing.renderer; + +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; +import java.awt.Color; +import java.awt.Component; + +/** + * Date: 31/07/12 + * + * @author mallon <mallon@codelutin.com> + * @since 2.5.4 + */ +public class ColorCellRenderer implements TableCellRenderer { + + protected JButton button = new JButton(); + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + button.setBackground((Color)value); + return button; + } +} Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUIHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUIHandler.java 2012-07-31 15:26:06 UTC (rev 2461) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUIHandler.java 2012-07-31 16:06:55 UTC (rev 2462) @@ -26,12 +26,14 @@ import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.editor.config.model.ConfigTableModel; import jaxx.runtime.swing.editor.config.model.OptionModel; +import jaxx.runtime.swing.renderer.ColorCellRenderer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.ListSelectionModel; +import java.awt.Color; import java.awt.Font; import static org.nuiton.i18n.I18n._; @@ -70,6 +72,7 @@ n_("config.defaultValue.tip")); ConfigTableRenderer renderer = new ConfigTableRenderer(); + ColorCellRenderer colorCellRenderer = new ColorCellRenderer(); SwingUtil.setTableColumnRenderer(table, 0, renderer); SwingUtil.setTableColumnRenderer(table, 1, renderer); SwingUtil.setTableColumnRenderer(table, 2, renderer); @@ -77,6 +80,7 @@ int width = SwingUtil.computeTableColumnWidth(table, f, 0, "___*"); SwingUtil.fixTableColumnWidth(table, 0, width); SwingUtil.setTableColumnEditor(table, 1, new ConfigTableEditor((ConfigTableModel) table.getModel())); + table.setDefaultRenderer(Color.class, colorCellRenderer); } public void updateDescriptionText() { 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-31 15:26:06 UTC (rev 2461) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-07-31 16:06:55 UTC (rev 2462) @@ -28,7 +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.ColorCellEditor; import jaxx.runtime.swing.editor.EnumEditor; import jaxx.runtime.swing.editor.LocaleEditor; import jaxx.runtime.swing.editor.cell.FileCellEditor; @@ -132,7 +132,7 @@ editor = new DefaultCellEditor(LocaleEditor.newEditor()); } else if (type.equals(Color.class)) { - editor = new ColorEditor(); + editor = new ColorCellEditor(); } else { editor = table.getDefaultEditor(String.class);