[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: [jfx15] RFR: 8228570: Add various documentation clarifications [v2]
From:       Ambarish Rapte <arapte () openjdk ! java ! net>
Date:       2020-07-29 19:44:39
Message-ID: PDzXBkpRUb9lIJfmJPaHNkXdn9YU-MN1SRVdmatnzxs=.2e296ba9-e834-46f7-86d9-51b729d85dc4 () github ! com
[Download RAW message or body]

On Tue, 28 Jul 2020 18:42:46 GMT, Nir Lisker <nlisker@openjdk.org> wrote:

> > Adds clarifications to the documentation in various places. Some notes:
> > 
> > * Point 6 should probably be deferred until it is verified that the tutorials are \
> > correct enough, seeing as they were updated to Java 8 only.
> > * Point 8 has been deferred until all the animation bugs have been resolevd.
> > * Point 5: I wrote new documentation about the `extractor` for the \
> > `observableArrayList(Callback<E, Observable[]> extractor)` method. Later I found \
> > that `observableList(List<E> list, Callback<E, Observable[]> extractor)` already \
> > talks about it (I updated it too). I'm not sure which of them we want to keep, or \
> >                 maybe merge them.
> > * Point 1: I think that it's necessary to mention the internal implementation \
> > behavior even if it requires a caveat that this is only the current behavior and \
> > may change in the future. What constitutes a "change" is extremely important and \
> > there is no way for the user to know it. I've tripped on this hard when using \
> > ReactFX which uses object equality instead, so when the JavaFX observables are \
> > wrapped by ReactFX observables, the behavior changes silently. I think that in \
> > the future we will want to let the user define what a change is (for example, by \
> > creating an overridable method with the current behavior as the default, or using \
> > object equality and letting the user override that, although that's more risky). \
> > Even a `HashMap` that uses object equality has the sister implementation \
> > `IndentityHashMap` to deal with this ambiguity.
> 
> Nir Lisker has updated the pull request incrementally with one additional commit \
> since the last revision: 
> Corrected javadoc generation errors

Changes requested by arapte (Reviewer).

modules/javafx.base/src/main/java/javafx/collections/FXCollections.java line 310:

> 309:     /**
> 310:      * Creates a new empty observable list that is backed by an array list.
> 311:      * @see #observableList(java.util.List)

Can make the similar change on line number 372 as well.

modules/javafx.base/src/main/java/javafx/collections/FXCollections.java line 321:

> 320:     /**
> 321:      * Creates a new empty observable list backed by an array list that \
> listens to changes in observables of its items. 322:      * The {@code extractor} \
> parameter specifies observables (usually properties) of the objects in the created \
> list. When there is

observable list -> `{@code ObservableList}`

modules/javafx.controls/src/main/java/javafx/scene/control/Labeled.java line 138:

> 137:      * @return the text to display in the label
> 138:      * @defaultValue {@code ""} (empty string}
> 139:      */

Some other classes use a format like `@defaultValue empty string`. May be the similar \
pattern should be followed.

modules/javafx.graphics/src/main/java/javafx/animation/Timeline.java line 59:

> 58:  * of Timeline's keyFrames.
> 59:  * <p>
> 60:  * It is not possible to change the {@code keyFrames} of a running {@code \
> Timeline}.

Guessing that this `<p>` is moved down here so that the keyFrame related explanation \
is continuous. Even the next `<p>` talks about `keyFrames`, so may be it can be moved \
further down after next `<p>` on line 64 ?

modules/javafx.graphics/src/main/java/javafx/scene/Node.java line 3401:

> 3400:      * <li>{@link #layoutXProperty layoutX}, {@link #layoutYProperty layoutY} \
>                 and
> 3401:      * {@link #translateXProperty translateX}, {@link #translateYProperty \
> translateY}, {@link #translateZProperty translateZ}</li> 3402:      * </ol>

I think the translate properties should still remain in a separate `<li>`.
layout and translate, they together determine the final translation but are different \
properties.

modules/javafx.graphics/src/main/java/javafx/scene/Node.java line 5523:

> 5522:      * Defines the {@code ObservableList} of {@link Transform} objects to be \
> applied to this {@code Node}. The transforms in this list 5523:      * are applied \
> in the <i>reverse</i> order of which they are specified as per matrix \
> multiplication rules. This list of transforms 5524:      * is applied before \
> scaling ({@link #scaleXProperty scaleX}, {@link #scaleYProperty scaleY} and {@link \
> #scaleZProperty scaleZ}),

`The transforms in this list are applied in the <i>reverse</i> order of which they \
are specified as per matrix multiplication rules`

To apply transformations in a specific order their respective matrices should be \
multiplied in reverse order. So just the order of multiplication is reverse but the \
transformation are applied in same order as they are added into the \
`getTransforms()`. I think phrasing it as 'the transforms are applied in reverse \
order...' would not be accurate and confusing to reader.

modules/javafx.graphics/src/main/java/javafx/scene/Node.java line 326:

> 325:  * list. Predefined transforms are applied afterwards in this order: scale, \
> rotation and translation. These are applied using the 326:  * {@link \
> #scaleXProperty scaleX}, {@link #scaleYProperty scaleY}, {@link #scaleZProperty \
> scaleZ}, {@link #rotateProperty rotate}, 327:  * {@link #translateXProperty \
> translateX}, {@link #translateYProperty translateY} and {@link #translateZProperty \
> translateZ}

This block of comment sounds useful to me. It does talk very specifically about the \
order of transforms in the `getTransforms()` and is correct. How about keeping this \
block and then continue the new comment from `Custom...`

-------------

PR: https://git.openjdk.java.net/jfx/pull/276


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic