r2614 - in trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config: . model
Author: kmorin Date: 2013-03-12 10:08:07 +0100 (Tue, 12 Mar 2013) New Revision: 2614 Url: http://nuiton.org/projects/jaxx/repository/revisions/2614 Log: fixes #2583 The table cell editor in the config options is never used fixes #2584 Enable to use a particular table cell renderer for a config option Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableEditor.java trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigUIHelper.java trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModelBuilder.java trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableEditor.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableEditor.java 2013-03-11 11:11:11 UTC (rev 2613) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableEditor.java 2013-03-12 09:08:07 UTC (rev 2614) @@ -112,8 +112,12 @@ Class<?> type = option.getType(); TableCellEditor editor = table.getDefaultEditor(type); TableCellEditor defaultEditor = table.getDefaultEditor(Object.class); - //TODO always Search from option.getEditor() and store editor as cache - if (editor.equals(defaultEditor)) { + // always Search from option.getEditor() and store editor as cache + if (option.getEditor() != null) { + editor = option.getEditor(); + table.setDefaultEditor(type, editor); + + } else if (editor.equals(defaultEditor)) { // find not a specialized editor for the type if (type.isEnum()) { // add a EnumEditor to table Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java 2013-03-11 11:11:11 UTC (rev 2613) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java 2013-03-12 09:08:07 UTC (rev 2614) @@ -112,10 +112,14 @@ } protected Component getValueCellRenderer(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column, OptionModel key, boolean isValid, boolean isModified) { - TableCellRenderer defaultRenderer = table.getDefaultRenderer(key.getType()); + Component result; + if (key.getRenderer() != null) { + result = key.getRenderer().getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - Component result; - result = defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } else { + TableCellRenderer defaultRenderer = table.getDefaultRenderer(key.getType()); + result = defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } return result; } } Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigUIHelper.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigUIHelper.java 2013-03-11 11:11:11 UTC (rev 2613) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigUIHelper.java 2013-03-12 09:08:07 UTC (rev 2614) @@ -41,6 +41,7 @@ import javax.swing.Icon; import javax.swing.table.TableCellEditor; import java.awt.Frame; +import javax.swing.table.TableCellRenderer; /** * A helper to build a config ui. @@ -115,6 +116,12 @@ return modelBuilder; } + public ConfigUIModelBuilder setOptionRenderer(TableCellRenderer renderer) + throws IllegalStateException, NullPointerException { + modelBuilder.setOptionRenderer(renderer); + return modelBuilder; + } + public ConfigUIModelBuilder registerCallBack(String name, String description, Icon icon, Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModelBuilder.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModelBuilder.java 2013-03-11 11:11:11 UTC (rev 2613) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModelBuilder.java 2013-03-12 09:08:07 UTC (rev 2614) @@ -33,6 +33,7 @@ import javax.swing.Icon; import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; /** * A builder of {@link ConfigUIModel} @@ -246,6 +247,23 @@ } /** + * Set the renderer on the current option. + * + * @param renderer the renderer to set in the current option. + * @return the builder + * @throws IllegalStateException if there is not a current option set. + * @throws NullPointerException if any of parameter is {@code null} + * @see OptionModel#setRenderer(TableCellRenderer) + */ + public ConfigUIModelBuilder setOptionRenderer(TableCellRenderer renderer) + throws IllegalStateException, NullPointerException { + checkCurrent(option, "option"); + checkNotNull(renderer, "setOptionRenderer", "renderer"); + option.setRenderer(renderer); + return this; + } + + /** * Registers a new callback. * <p/> * <b>Note:</b> the order of registred callback is used to determine Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java 2013-03-11 11:11:11 UTC (rev 2613) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java 2013-03-12 09:08:07 UTC (rev 2614) @@ -28,6 +28,7 @@ import org.nuiton.util.config.ConfigOptionDef; import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; /** * le modele d'une option de la configuration a editer. @@ -60,6 +61,9 @@ /** l'editeur utilise pour modifier graphiquement l'option */ protected TableCellEditor editor; + /** le renderer utilise pour afficher graphiquement l'option */ + protected TableCellRenderer renderer; + protected OptionModel(ConfigOptionDef def, Object value) { this.def = def; initValue(value); @@ -159,6 +163,14 @@ this.editor = editor; } + public TableCellRenderer getRenderer() { + return renderer; + } + + public void setRenderer(TableCellRenderer renderer) { + this.renderer = renderer; + } + protected void setPropertyName(String propertyName) { this.propertyName = propertyName; }
participants (1)
-
kmorin@users.nuiton.org