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