RFR: JDK-8324182 Deprecate for removal SimpleSelector and CompoundSelector classes [v2]
John Hendrikx
jhendrikx at openjdk.org
Fri Feb 2 19:07:07 UTC 2024
On Fri, 2 Feb 2024 16:00:28 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
> There is one other method used by SceneBuilder's `CssInternal` class, `CompoundSelector::getSelectors`. I think you need to add a method to the `Selector` base class that returns a `List<Selector>` instead of the `List<SimpleSelector>` returned by the existing `CompoundSelector` method. Maybe `getChildSelectors` or similar? That method would be overridden in the subclasses with `CompoundSelector` wrapping the existing selectors list in an unmodifiable list and `SimpleSelectors` returning an empty List.
@kevinrushforth if I'm correct, SceneBuilder won't need that anymore. Since it shouldn't need to do an `instanceof` check (which will break once they're moved to internal packages), the fragment that gets all the selectors should be changed to:
for (Rule r : s.getRules()) {
for (Selector ss : r.getSelectors()) {
styleClasses.addAll(ss.getClasses()); // provisional name getClasses
}
}
Old SceneBuilder code fragment:
for (Rule r : s.getRules()) {
for (Selector ss : r.getSelectors()) {
if (ss instanceof SimpleSelector) {
SimpleSelector simple = (SimpleSelector) ss;
styleClasses.addAll(simple.getStyleClasses());
} else {
if (ss instanceof CompoundSelector) {
CompoundSelector cs = (CompoundSelector) ss;
for (Selector selector : cs.getSelectors()) {
if (selector instanceof SimpleSelector) {
SimpleSelector simple = (SimpleSelector) selector;
styleClasses.addAll(simple.getStyleClasses());
}
}
}
}
}
}
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1340#issuecomment-1924508539
More information about the openjfx-dev
mailing list