RFR: 8290040: Provide simplified deterministic way to manage listeners [v6]
John Hendrikx
jhendrikx at openjdk.org
Tue Oct 18 05:43:08 UTC 2022
On Mon, 17 Oct 2022 16:11:32 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> What I meant is you can add it in Node.getProperties() and not to add a pointer to every Node everywhere. If it's used, the actual properties will be created in a few containers.
>
> private static final Object KEY = new Object();
>
> public final ReadOnlyBooleanProperty shownProperty() {
> Object x = getProperties().get(KEY);
> if (x instanceof ReadOnlyBooleanProperty p) {
> return p;
> }
> ReadOnlyBooleanProperty p = ... // create
> getProperties().put(KEY, p);
> return p;
> }
Thanks, I understand, what I find odd is that this would be the first property in `Node` to be stored this way. If this was so important, then why isn't this done for other properties? There seem to be sufficient candidates for this approach to "slim" down `Node` (infrequently used properties like `Subscene`, `id`, `style`, `blendMode`).
There's even a `MiscProperties` objects which is described as "Misc Seldom Used Properties" that is created only when needed with these properties:
private LazyBoundsProperty boundsInParent;
private LazyBoundsProperty boundsInLocal;
private BooleanProperty cache;
private ObjectProperty<CacheHint> cacheHint;
private ObjectProperty<Node> clip;
private ObjectProperty<Cursor> cursor;
private ObjectProperty<DepthTest> depthTest;
private BooleanProperty disable;
private ObjectProperty<Effect> effect;
private ObjectProperty<InputMethodRequests> inputMethodRequests;
private BooleanProperty mouseTransparent;
private DoubleProperty viewOrder;
Let's see what others think before I change this. It does sound like a reasonable approach though.
-------------
PR: https://git.openjdk.org/jfx/pull/830
More information about the openjfx-dev
mailing list