Convenience factories for Border and Background

Kevin Rushforth kevin.rushforth at oracle.com
Mon Apr 26 23:45:18 UTC 2021


I would lean towards the simpler solution that Nir has proposed. I would 
like to be informed by what application developers want.

-- Kevin


On 4/26/2021 2:03 PM, Marius Hanl wrote:
>     I'm fine with either way.
>     Both approaches are nice, while the factory/builder approach will
>     probably be a bit better as it will cover more use cases, but of course
>     takes a bit more time.
>     In any case we can create a Border/Background very easily and both are
>     quite short, the factory/builder approach will be shorter though.
>
>     e.g.
>     setBorder(new Border(new BorderStroke(Color.BLACK,
>     BorderStrokeStyle.SOLID)));
>     setBorder(BorderFactory.createSolidBorder(Color.BLACK));
>
>
>     Gesendet: Sonntag, 25. April 2021 um 13:05 Uhr
>     Von: "Nir Lisker" <nlisker at gmail.com>
>     An: mariushanl at web.de
>     Cc: "openjfx-dev at openjdk.java.net Mailing"
>     <openjfx-dev at openjdk.java.net>
>     Betreff: Re: Convenience factories for Border and Background
>
>         I think a minimal constructor would be a nice first step.
>
>
>     I want to avoid adding more constructors, so factory methods would be
>     my go-to.
>
>       We may can go further from that and create something similar like
>       the BorderFactory
>
>
>     A factory class or a builder require a whole new class and solves the
>     problems of wanting to create many combinations of constructor
>     arguments. So we have to ask ourselves if using the full and complex
>     constructor for complex cases, and the simple proposed methods for the
>     simple cases is enough, or if there is enough middleground of
>     combinations that we need a more advanced solution.
>
>
>     On Sat, Apr 24, 2021 at 7:24 PM <[1]mariushanl at web.de> wrote:
>
>          Hi Nir,
>          this is a really good idea and something I want to see since the
>       first
>          time I used to set a Background/Border.
>          I think a minimal constructor would be a nice first step.
>          So instead of:
>          - setBackground(new Background(new BackgroundFill(Color.BLACK,
>          CornerRadii.EMPTY, Insets.EMPTY)))
>          -> setBackground(new Background(new BackgroundFill(Color.BLACK)))
>          and:
>          - setBorder(new Border(new BorderStroke(Color.BLACK,
>          BorderStrokeStyle.SOLID, CornerRadii.EMPTY,
>          BorderStroke.DEFAULT_WIDTHS)))
>          -> setBorder(new Border(new BorderStroke(Color.BLACK,
>          BorderStrokeStyle.SOLID)))
>          We may can go further from that and create something similar like
>       the
>          BorderFactory class in swing, where you can create a lot of
>       different
>          borders easily. (Same to Background)
>          Reference:
>
>       [1][2]https://github.com/openjdk/jdk/blob/master/src/java.desktop/sh
>       are/cl
>          asses/javax/swing/BorderFactory.java
>          - Marius
>          Gesendet: Donnerstag, 22. April 2021 um 15:45 Uhr
>          Von: "Nir Lisker" <[3]nlisker at gmail.com>
>          An: "[4]openjfx-dev at openjdk.java.net Mailing"
>          <[5]openjfx-dev at openjdk.java.net>
>          Betreff: Convenience factories for Border and Background
>          Hi,
>          Many times when I want to create a simple solid Background or
>       Border,
>          it is
>          quite a hassle because of the configurability these classes have:
>          new Border(new BorderStroke(Color. BLACK,
>       BorderStrokeStyle.SOLID,
>          null,
>          null));
>          new Background(new BackgroundFill(Color.BLACK, null, null));
>          I was thinking of adding convenience factory methods
>          Border.of(Paint stroke), or Border.stroke(Paint stroke)
>          Background.of((Paint fill), or Background.fill(Paint fill)
>          I was wondering if others would like this, or is everyone using
>       CSS
>          anyway?
>          - Nir
>       References
>          1.
>       [6]https://deref-web.de/mail/client/sT3TQpQ3T6k/dereferrer/?redirect
>       Url=https%3A%2F%2Fgithub.com%2Fopenjdk%2Fjdk%2Fblob%2Fmaster%2Fsrc%2
>       Fjava.desktop%2Fshare%2Fclasses%2Fjavax%2Fswing%2FBorderFactory.java
>
> References
>
>     1. mailto:mariushanl at web.de
>     2. https://github.com/openjdk/jdk/blob/master/src/java.desktop/share/cl
>     3. mailto:nlisker at gmail.com
>     4. mailto:openjfx-dev at openjdk.java.net
>     5. mailto:openjfx-dev at openjdk.java.net
>     6. https://deref-web.de/mail/client/sT3TQpQ3T6k/dereferrer/?redirectUrl=https%3A%2F%2Fgithub.com%2Fopenjdk%2Fjdk%2Fblob%2Fmaster%2Fsrc%2Fjava.desktop%2Fshare%2Fclasses%2Fjavax%2Fswing%2FBorderFactory.java



More information about the openjfx-dev mailing list