Aw: Re: Convenience factories for Border and Background

Marius Hanl mariushanl at web.de
Tue Aug 24 15:57:42 UTC 2021


   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