Convenience factories for Border and Background

Nir Lisker nlisker at gmail.com
Tue Aug 24 16:29:31 UTC 2021


I have one at https://github.com/openjdk/jfx/pull/610.

On Tue, Aug 24, 2021 at 6:58 PM Marius Hanl <mariushanl at web.de> wrote:

>    I want to see this as well.
>    Do we want to continue creating a draft for this?
>
>    Am 23.08.21, 01:48 schrieb Nir Lisker <nlisker at gmail.com>:
>
>      Getting this moving again as well.
>      > Another option could be to mirror the `Color` API in both `Border`
>      and
>      > `Background`, like in the following examples:
>      Color.rgb(125, 100, 75)
>      > Border.rgb(125, 100, 75)
>      > Background.rgb(125, 100, 75)
>      Color.gray(127)
>      > Border.gray(127)
>      > Background.gray(127)
>      > Color.web("orange", 0.5)
>      > Border.web("orange", 0.5)
>      > Background.web("orange", 0.5)
>      This is possible, but I don't think it saves much. This API in Color
>      makes
>      it easy to create a color, so just using that directly in the
>      border/background seems convenient enough to me. Comparing
>      Border.rgb(125, 100, 75);
>      with
>      Border.of(Color.rgb(125, 100, 75)); // whatever the method name ends
>      up
>      being
>      tells me that funneling all the color creation ways into one method
>      in
>      border/background is efficient enough to not merit multiple methods.
>      We could also mirror the named color constants, which would enable a
>      > very compact syntax:
>      > StackPane pane = new StackPane();
>      > pane.setBorder(Border.RED);
>      > pane.setBackground(Background.BLUE);
>      This is very similar to how "red" or "blue" are valid values for
>      > "-fx-border" or "-fx-background" in CSS.
>      I rather not duplicate hundreds of constants just to be able to do
>      pane.setBorder(Border.RED);
>      instead of
>      pane.setBorder(Border.of(Color.RED));
>      On Tue, Jun 8, 2021 at 2:41 AM Nir Lisker <nlisker at gmail.com> wrote:
>      > Does this constitute sufficient interest in the enhancement?
>      >
>      > On Thu, May 13, 2021 at 6:41 PM Michael Strauß
>      <michaelstrau2 at gmail.com>
>      > wrote:
>      >
>      >> Another option could be to mirror the `Color` API in both
>      `Border` and
>      >> `Background`, like in the following examples:
>      >>
>      >> Color.rgb(125, 100, 75)
>      >> Border.rgb(125, 100, 75)
>      >> Background.rgb(125, 100, 75)
>      >>
>      >> Color.gray(127)
>      >> Border.gray(127)
>      >> Background.gray(127)
>      >>
>      >> Color.web("orange", 0.5)
>      >> Border.web("orange", 0.5)
>      >> Background.web("orange", 0.5)
>      >>
>      >> We could also mirror the named color constants, which would
>      enable a
>      >> very compact syntax:
>      >>
>      >> StackPane pane = new StackPane();
>      >> pane.setBorder(Border.RED);
>      >> pane.setBackground(Background.BLUE);
>      >>
>      >> This is very similar to how "red" or "blue" are valid values for
>      >> "-fx-border" or "-fx-background" in CSS.
>      >>
>      >
>


More information about the openjfx-dev mailing list