You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2026/05/13 00:07:22 UTC
(sis) 04/05: In the tree representation of GeoHEIF nodes, indicate when a box is unsupported.
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
commit d024c7dd360bcd2114dba5d2a1d879705dc11ca7
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Wed May 13 01:55:14 2026 +0200
In the tree representation of GeoHEIF nodes, indicate when a box is unsupported.
---
.../org/apache/sis/util/resources/Vocabulary.java | 10 +++
.../sis/util/resources/Vocabulary.properties | 2 +
.../sis/util/resources/Vocabulary_fr.properties | 2 +
.../apache/sis/storage/geoheif/GeoHeifStore.java | 3 +-
.../org/apache/sis/storage/isobmff/Extension.java | 16 +----
.../org/apache/sis/storage/isobmff/FullBox.java | 28 +++-----
.../org/apache/sis/storage/isobmff/TreeNode.java | 80 ++++++++++++++++++----
.../apache/sis/storage/isobmff/base/ItemInfo.java | 11 ++-
.../sis/storage/isobmff/base/ItemProperties.java | 30 +++++---
.../isobmff/base/ItemPropertyAssociation.java | 34 +++++----
.../sis/storage/isobmff/base/TrackHeader.java | 14 +---
11 files changed, 139 insertions(+), 91 deletions(-)
diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.java
index db82cf3935..fb6c66cbed 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.java
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.java
@@ -958,6 +958,11 @@ public class Vocabulary extends IndexedResourceBundle {
*/
public static final short Offset = 149;
+ /**
+ * Omitted
+ */
+ public static final short Omitted = 288;
+
/**
* Operating system
*/
@@ -1403,6 +1408,11 @@ public class Vocabulary extends IndexedResourceBundle {
*/
public static final short UnspecifiedDatumChange = 73;
+ /**
+ * Unsupported properties
+ */
+ public static final short UnsupportedProperties = 289;
+
/**
* Untitled
*/
diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.properties b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.properties
index 28348fe187..63f1c17305 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.properties
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary.properties
@@ -193,6 +193,7 @@ NumberOfNaN = Number of \u2018NaN\u2019
Obligation = Obligation
Offset = Offset
Of_3 = {0} ({1} of {2})
+Omitted = Omitted
OperatingSystem = Operating system
Operations = Operations
Optional = Optional
@@ -282,6 +283,7 @@ Unnamed = Unnamed
Unnamed_1 = Unnamed #{0}
Unspecified = Unspecified
UnspecifiedDatumChange = Unspecified datum change
+UnsupportedProperties = Unsupported properties
Untitled = Untitled
UpperBound = Upper bound
UserHome = User home directory
diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary_fr.properties b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary_fr.properties
index d72a1e502d..acf2328f98 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary_fr.properties
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/resources/Vocabulary_fr.properties
@@ -200,6 +200,7 @@ NumberOfNaN = Nombre de \u2018NaN\u2019
Obligation = Obligation
Offset = D\u00e9calage
Of_3 = {0} ({1} de {2})
+Omitted = Omis
OperatingSystem = Syst\u00e8me d\u2019exploitation
Operations = Op\u00e9rations
Optional = Optionnel
@@ -289,6 +290,7 @@ Unnamed = Sans nom
Unnamed_1 = Sans nom \u2116{0}
Unspecified = Non-sp\u00e9cifi\u00e9
UnspecifiedDatumChange = Changement de r\u00e9f\u00e9rentiel non sp\u00e9cifi\u00e9
+UnsupportedProperties = Propri\u00e9t\u00e9s non-support\u00e9es
Untitled = Sans titre
UpperBound = Limite haute
UserHome = R\u00e9pertoire de l\u2019utilisateur
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/geoheif/GeoHeifStore.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/geoheif/GeoHeifStore.java
index 940cb4a94a..d5935cdcbb 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/geoheif/GeoHeifStore.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/geoheif/GeoHeifStore.java
@@ -290,7 +290,7 @@ public class GeoHeifStore extends DataStore implements Aggregate {
*/
@Override
public synchronized Optional<TreeTable> getNativeMetadata() throws DataStoreException {
- return Optional.of(root().toTree(getDisplayName(), true));
+ return Optional.of(root().toTree(getLocale(), getDisplayName(), true));
}
/**
@@ -325,6 +325,7 @@ public class GeoHeifStore extends DataStore implements Aggregate {
* Logs a warning emitted (usually indirectly) by {@link #components()}.
*/
final void warning(final LogRecord record) {
+ record.setLoggerName("org.apache.sis.storage.geoheif");
record.setSourceClassName(GeoHeifStore.class.getCanonicalName());
record.setSourceMethodName("components");
listeners.warning(record);
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/Extension.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/Extension.java
index 811b7952b6..0bfa608149 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/Extension.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/Extension.java
@@ -18,7 +18,6 @@ package org.apache.sis.storage.isobmff;
import java.util.UUID;
import org.apache.sis.util.collection.TreeTable;
-import org.apache.sis.util.collection.TableColumn;
/**
@@ -71,19 +70,10 @@ public abstract class Extension extends Box {
*
* @param context the tree being formatted. Can be used for fetching contextual information.
* @param target the node where to add properties.
- * @param after {@code false} for the first nodes, or {@code true} for the last nodes.
*/
@Override
- protected void appendTreeNodes(final Tree context, final TreeTable.Node target, final boolean after) {
- super.appendTreeNodes(context, target, after);
- if (!after) {
- final UUID value = extendedType();
- if (value != null) {
- final TreeTable.Node child = target.newChild();
- child.setValue(TableColumn.NAME, "extendedType");
- child.setValue(TableColumn.VALUE, value);
- child.setValue(TableColumn.VALUE_AS_TEXT, value.toString());
- }
- }
+ protected void prependTreeNodes(final Tree context, final TreeTable.Node target) {
+ super.prependTreeNodes(context, target);
+ Tree.addNode(target, "extendedType", extendedType());
}
}
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/FullBox.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/FullBox.java
index c39d78e9f0..b53d2f7cb2 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/FullBox.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/FullBox.java
@@ -17,7 +17,6 @@
package org.apache.sis.storage.isobmff;
import java.io.IOException;
-import org.apache.sis.util.collection.TableColumn;
import org.apache.sis.util.collection.TreeTable;
@@ -86,26 +85,17 @@ public abstract class FullBox extends Box {
*
* @param context the tree being formatted. Can be used for fetching contextual information.
* @param target the node where to add properties.
- * @param after {@code false} for the first nodes, or {@code true} for the last nodes.
*/
@Override
- protected void appendTreeNodes(final Tree context, final TreeTable.Node target, final boolean after) {
- super.appendTreeNodes(context, target, after);
- if (!after) {
- final int version = version();
- final int options = flags & ((1 << VERSION_BIT_SHIFT) - 1);
- if (version != 0) {
- TreeTable.Node child = target.newChild();
- child.setValue(TableColumn.NAME, "version");
- child.setValue(TableColumn.VALUE, version);
- child.setValue(TableColumn.VALUE_AS_TEXT, String.valueOf(version));
- }
- if (options != 0) {
- TreeTable.Node child = target.newChild();
- child.setValue(TableColumn.NAME, "flags");
- child.setValue(TableColumn.VALUE, options);
- child.setValue(TableColumn.VALUE_AS_TEXT, Integer.toBinaryString(options));
- }
+ protected void prependTreeNodes(final Tree context, final TreeTable.Node target) {
+ super.prependTreeNodes(context, target);
+ final int version = version();
+ final int options = flags & ((1 << VERSION_BIT_SHIFT) - 1);
+ if (version != 0) {
+ Tree.addNode(target, "version", version, String.valueOf(version));
+ }
+ if (options != 0) {
+ Tree.addNode(target, "flags", options, Integer.toBinaryString(options));
}
}
}
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/TreeNode.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/TreeNode.java
index 69dfc48703..ac16b1c35d 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/TreeNode.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/TreeNode.java
@@ -18,6 +18,7 @@ package org.apache.sis.storage.isobmff;
import java.util.Map;
import java.util.HashMap;
+import java.util.Locale;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -29,6 +30,7 @@ import java.lang.annotation.RetentionPolicy;
import java.nio.charset.StandardCharsets;
import org.apache.sis.util.Utilities;
import org.apache.sis.util.CharSequences;
+import org.apache.sis.util.resources.Vocabulary;
import org.apache.sis.util.internal.shared.Strings;
import org.apache.sis.util.collection.TreeTable;
import org.apache.sis.util.collection.TableColumn;
@@ -155,20 +157,21 @@ public abstract class TreeNode {
}
/**
- * Returns a string representation of element for debugging purposes.
+ * Returns a string representation of this tree node for debugging purposes.
* This method shows all non-static public fields, including inherited fields, in no particular order.
*
* @return a string representation of this element for debugging purposes.
*/
@Override
public final String toString() {
- return toTree(getClass().getSimpleName(), false).toString();
+ return toTree(null, getClass().getSimpleName(), false).toString();
}
/**
* Returns <abbr>HEIF</abbr> boxes and their fields as a tree.
* Used for showing native metadata or for debugging purposes.
*
+ * @param locale the locale to use, or {@code null} for the default.
* @param rootName name of the root node.
* @param withSummary workaround, see {@link Tree#withSummary}.
* @return fields contained in this node, together with child boxes.
@@ -176,8 +179,8 @@ public abstract class TreeNode {
* @todo It is sometime possible, through the tree cell values, to modify the content of internal arrays.
* This is unsafe, we should makes this implementation safer before this module is released.
*/
- public final TreeTable toTree(final String rootName, final boolean withSummary) {
- final var tree = new Tree(withSummary);
+ public final TreeTable toTree(final Locale locale, final String rootName, final boolean withSummary) {
+ final var tree = new Tree(locale, withSummary);
final TreeTable.Node root = tree.getRoot();
root.setValue(TableColumn.NAME, rootName);
tree.appendProperties(this, root);
@@ -201,6 +204,11 @@ public abstract class TreeNode {
*/
@SuppressWarnings("serial")
protected static final class Tree extends DefaultTreeTable {
+ /**
+ * The locale to use, or {@code null} for the default.
+ */
+ protected final Locale locale;
+
/**
* Properties saved during the creation of the tree.
*/
@@ -227,8 +235,9 @@ public abstract class TreeNode {
/**
* Creates an initially empty tree table.
*/
- Tree(final boolean withSummary) {
+ Tree(final Locale locale, final boolean withSummary) {
super(TableColumn.NAME, TableColumn.VALUE, TableColumn.VALUE_AS_TEXT);
+ this.locale = locale;
properties = new HashMap<>();
names = new HashMap<>();
this.withSummary = withSummary;
@@ -279,7 +288,7 @@ public abstract class TreeNode {
*/
private String appendProperties(final TreeNode source, final TreeTable.Node target) {
String summary = null;
- source.appendTreeNodes(this, target, false);
+ source.prependTreeNodes(this, target);
for (final Field field : source.getClass().getFields()) {
if (Modifier.isStatic(field.getModifiers())) {
continue;
@@ -358,20 +367,67 @@ public abstract class TreeNode {
child.setValue(TableColumn.VALUE_AS_TEXT, Utilities.deepToString(value));
}
}
- source.appendTreeNodes(this, target, true);
+ source.appendTreeNodes(this, target);
return summary;
}
+
+ /**
+ * Convenience method for adding a child node.
+ *
+ * @param target where to add the node.
+ * @param name the programmatic (camel-case) name of the node.
+ * @param value value of the node, or {@code null} if none.
+ */
+ public static void addNode(final TreeTable.Node target, final String name, final Object value) {
+ if (value != null) {
+ addNode(target, name, value, value.toString());
+ }
+ }
+
+ /**
+ * Convenience method for adding a child node.
+ *
+ * @param target where to add the node.
+ * @param name the programmatic (camel-case) name of the node.
+ * @param value value of the node. Should not be null.
+ * @param valueAsText string representation of the value.
+ */
+ public static void addNode(final TreeTable.Node target, String name, Object value, String valueAsText) {
+ TreeTable.Node child = target.newChild();
+ child.setValue(TableColumn.NAME, CharSequences.camelCaseToWords(name, true).toString());
+ child.setValue(TableColumn.VALUE, value);
+ child.setValue(TableColumn.VALUE_AS_TEXT, valueAsText);
+ }
+ }
+
+ /**
+ * Inserts custom properties before the properties inferred from the public fields.
+ * This method is invoked automatically by {@link #toTree toTree(…)} for generating
+ * the first nodes, before the nodes inferred by reflection.
+ *
+ * @param context the tree being formatted. Can be used for fetching contextual information.
+ * @param target the node where to add properties.
+ */
+ protected void prependTreeNodes(Tree context, TreeTable.Node target) {
}
/**
- * Appends properties other than the ones defined by public fields.
- * This method is invoked automatically by {@link #toTree toTree(…)}
- * for generating the first or last nodes, before or after the nodes inferred by reflection.
+ * Appends custom properties after the properties inferred from the public fields.
+ * This method is invoked automatically by {@link #toTree toTree(…)} for generating
+ * the last nodes, after the nodes inferred by reflection.
+ *
+ * <p>The default implementation adds an artificial node saying that some nodes are missing
+ * if the class is annotated with {@link Incomplete}.</p>
*
* @param context the tree being formatted. Can be used for fetching contextual information.
* @param target the node where to add properties.
- * @param after {@code false} for the first nodes, or {@code true} for the last nodes.
*/
- protected void appendTreeNodes(Tree context, TreeTable.Node target, boolean after) {
+ protected void appendTreeNodes(Tree context, TreeTable.Node target) {
+ if (getClass().isAnnotationPresent(Incomplete.class)) {
+ final Vocabulary vocabulary = Vocabulary.forLocale(context.locale);
+ final TreeTable.Node child = target.newChild();
+ child.setValue(TableColumn.NAME, vocabulary.getString(Vocabulary.Keys.UnsupportedProperties));
+ child.setValue(TableColumn.VALUE, vocabulary.getString(Vocabulary.Keys.Omitted));
+ }
}
}
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemInfo.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemInfo.java
index ac7531c79f..c6743d82e7 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemInfo.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemInfo.java
@@ -99,15 +99,12 @@ public final class ItemInfo extends FullBox {
*
* @param context the tree being formatted. Can be used for fetching contextual information.
* @param target the node where to add properties.
- * @param after {@code false} for the first nodes, or {@code true} for the last nodes.
*/
@Override
- protected void appendTreeNodes(final Tree context, final TreeTable.Node target, final boolean after) {
- super.appendTreeNodes(context, target, after);
- if (!after) {
- for (ItemInfoEntry entry : entries) {
- context.names.put(entry.itemID, entry); // In case of conflict, keep the most recent item.
- }
+ protected void prependTreeNodes(final Tree context, final TreeTable.Node target) {
+ super.prependTreeNodes(context, target);
+ for (ItemInfoEntry entry : entries) {
+ context.names.put(entry.itemID, entry); // In case of conflict, keep the most recent item.
}
}
}
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemProperties.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemProperties.java
index f2367e81c1..c0fc1aea60 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemProperties.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemProperties.java
@@ -86,10 +86,11 @@ public final class ItemProperties extends ContainerBox {
/**
* Creates an initially empty list of boxes.
+ * Parameter {@code itemID} is defined for using this constructor as a lambda function.
*
* @param itemID identifier of the item for which properties are collected.
*/
- private ForID(final Integer itemID) {
+ private ForID(@SuppressWarnings("unused") final Integer itemID) {
essentials = new BitSet();
}
@@ -188,20 +189,29 @@ public final class ItemProperties extends ContainerBox {
*
* @param context the tree being formatted. Can be used for fetching contextual information.
* @param target the node where to add properties.
- * @param after {@code false} for the first nodes, or {@code true} for the last nodes.
*/
@Override
- protected void appendTreeNodes(final Tree context, final TreeTable.Node target, final boolean after) {
+ protected void prependTreeNodes(final Tree context, final TreeTable.Node target) {
Box[] properties = null;
- if (!after) {
- for (final Box box : children) {
- if (box.type() == ItemPropertyContainer.BOXTYPE) {
- properties = ((ItemPropertyContainer) box).children;
- break;
- }
+ for (final Box box : children) {
+ if (box.type() == ItemPropertyContainer.BOXTYPE) {
+ properties = ((ItemPropertyContainer) box).children;
+ break;
}
}
context.setContext(Box[].class, properties);
- super.appendTreeNodes(context, target, after);
+ super.prependTreeNodes(context, target);
+ }
+
+ /**
+ * Clears the context after formatting.
+ *
+ * @param context the tree being formatted.
+ * @param target the node where to add properties.
+ */
+ @Override
+ protected void appendTreeNodes(final Tree context, final TreeTable.Node target) {
+ super.appendTreeNodes(context, target);
+ context.setContext(Box[].class, null);
}
}
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemPropertyAssociation.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemPropertyAssociation.java
index 6031916b1c..61aebca46c 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemPropertyAssociation.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/ItemPropertyAssociation.java
@@ -131,27 +131,25 @@ public final class ItemPropertyAssociation extends FullBox {
* @see ItemProperties#collect(Map)
*/
@Override
- protected void appendTreeNodes(final Tree context, final TreeTable.Node target, final boolean after) {
- super.appendTreeNodes(context, target, after);
- if (after) {
- final Box[] properties = context.getContext(Box[].class);
- final TreeTable.Node indexes = target.newChild();
- indexes.setValue(TableColumn.NAME, "property index");
- for (int i : propertyIndex) {
- int index = i & Short.MAX_VALUE;
- String name = String.valueOf(index);
- if (i < 0) name += " (essential)";
- TreeTable.Node child = indexes.newChild();
- child.setValue(TableColumn.NAME, name);
- child.setValue(TableColumn.VALUE, i);
- if (properties != null && --index >= 0 && index < properties.length) {
- final Box property = properties[index];
- if (property != null) {
- child.setValue(TableColumn.VALUE_AS_TEXT, property.typeName());
- }
+ protected void appendTreeNodes(final Tree context, final TreeTable.Node target) {
+ final Box[] properties = context.getContext(Box[].class);
+ final TreeTable.Node indexes = target.newChild();
+ indexes.setValue(TableColumn.NAME, "property index");
+ for (int i : propertyIndex) {
+ int index = i & Short.MAX_VALUE;
+ String name = String.valueOf(index);
+ if (i < 0) name += " (essential)";
+ TreeTable.Node child = indexes.newChild();
+ child.setValue(TableColumn.NAME, name);
+ child.setValue(TableColumn.VALUE, i);
+ if (properties != null && --index >= 0 && index < properties.length) {
+ final Box property = properties[index];
+ if (property != null) {
+ child.setValue(TableColumn.VALUE_AS_TEXT, property.typeName());
}
}
}
+ super.appendTreeNodes(context, target);
}
}
diff --git a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/TrackHeader.java b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/TrackHeader.java
index 7613a78025..8232d2d177 100644
--- a/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/TrackHeader.java
+++ b/incubator/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/TrackHeader.java
@@ -22,7 +22,6 @@ import org.apache.sis.io.stream.ChannelDataInput;
import org.apache.sis.storage.DataStoreContentException;
import org.apache.sis.storage.isobmff.Reader;
import org.apache.sis.storage.isobmff.Incomplete;
-import org.apache.sis.util.collection.TableColumn;
import org.apache.sis.util.collection.TreeTable;
@@ -109,17 +108,10 @@ public final class TrackHeader extends HeaderBox {
*
* @param context the tree being formatted. Can be used for fetching contextual information.
* @param target the node where to add properties.
- * @param after {@code false} for the first nodes, or {@code true} for the last nodes.
*/
@Override
- protected void appendTreeNodes(final Tree context, final TreeTable.Node target, final boolean after) {
- super.appendTreeNodes(context, target, after);
- if (!after) {
- final boolean enabled = isEnabled();
- TreeTable.Node child = target.newChild();
- child.setValue(TableColumn.NAME, "enabled");
- child.setValue(TableColumn.VALUE, enabled);
- child.setValue(TableColumn.VALUE_AS_TEXT, String.valueOf(enabled));
- }
+ protected void prependTreeNodes(final Tree context, final TreeTable.Node target) {
+ super.prependTreeNodes(context, target);
+ Tree.addNode(target, "enabled", isEnabled());
}
}