Disabling JavaFX minimise/maximise/etc buttons

steve.x.northover at oracle.com steve.x.northover at oracle.com
Wed Jul 24 00:28:01 PDT 2013


Tom is correct.  They can be set individually and a best effort is made 
to honor them.  If you create an SWT stage whose parent is another SWT 
stage without specifying the trim buttons, the default for the operating 
system is chosen.

Steve

On 23/07/2013 5:18 PM, Tom Schindl wrote:
> Hi,
>
> The question for me is what we want:
>
> * disable iconification / maxification completely (even through
>    code) => then an iconifiable property is appropriate
>
> * disable iconification / maxification through trimbar buttons
>    => then I'd vote for the possibility to set the buttons enabled on
>       stage through a list-property and an enum
>
>    In code this would be:
>    Stage s = new Stage();
>    s.setTrimButtons(TrimButton... buttons)
>
> IIRC in SWT one can set them individually no matter if the parent is set
> or not, Steve would know better I guess.
>
> Tom
>
> On 23.07.13 22:36, Jonathan Giles wrote:
>> To be clear, are you proposing that setResizable(false) on a Stage
>> (where its owner is non-null) will be used to specify both that the
>> stage can not be resized and that it can not be minimised?
>>
>> I don't have a big opinion on the best approach, except of course the
>> discoverability of the functionality might be somewhat questionable. If
>> it were me (and without all the insights your team has), my alternative
>> suggestion would be to introduce a setIconifiable(boolean) method (along
>> with isIconifiable() and iconifiableProperty()). I only recommend this
>> to have some degree of symmetry with the iconfied property that is used
>> to represent (I believe) whether the stage is currently minimised.
>>
>> In my use case for dialogs, specifying the owner is an optional
>> property, but in general it is one of those properties that people
>> should not leave as null. In other words, I'm comfortable enforcing a
>> non-null owner requirement for people who do not want the minimize
>> button, for example.
>>
>> Thanks,
>> -- Jonathan
>>
>> On 24/07/2013 8:27 a.m., Anthony Petrov wrote:
>>> Hi Artem, Jonathan,
>>>
>>> I agree with what you say, except for using the initOwner() to imply
>>> some particular (and implicit) style that is going to be applied to
>>> the window. We should evaluate first whether the current
>>> implementation is sufficient. And no, I don't see a reason to disable
>>> maximization for a resizable window.
>>>
>>> Jonathan: what is your opinion on using the setResizable(false) for
>>> the use cases that you outlined?
>>>
>>> -- 
>>> best regards,
>>> Anthony
>>>
>>> On 07/23/2013 02:39 PM, Artem Ananiev wrote:
>>>> On 7/22/2013 9:17 PM, Anthony Petrov wrote:
>>>>> Hi Artem,
>>>>>
>>>>> Do you propose to add another StageStyle - namely, a DIALOG? Note that
>>>>> styles cannot be combined in a mask, meaning that developers won't be
>>>>> able to create e.g. transparent dialogs, or utility dialogs.
>>>> There is no need in yet another StageStyle, because we already have
>>>> this: Window.initOwner(). If we pass the owner to the platform, and set
>>>> appropriate hints for owned/ownerless windows, we should look and behave
>>>> similar to native apps.
>>>>
>>>>> Generally, I like the idea of defining the purpose of a window and
>>>>> letting the OS/GUI toolkit decide what works best for it, but I'm not
>>>>> sure if we can apply it for this particular use case. Also, I think
>>>>> that
>>>>> ability to disable maximization/minimization of a window might be
>>>>> useful
>>>>> for purposes other than just displaying dialogs.
>>>> To me, making a window non-resizable is a good way to make the window
>>>> unmaximizable. Do you see any cases, when a window should be resizable,
>>>> but not maximizable?
>>>>
>>>>> BTW, isn't the setResizable(false) a good approximation for our
>>>>> requirements? You can still minimize such a window, but I think this is
>>>>> reasonable. E.g. OS X will minimize both the dialog and its owner
>>>>> window, allowing a user to perform other tasks unrelated to the dialog
>>>>> and windows it blocks. Why do we want to disable minimization?
>>>> Unminimizable windows are annoying. If we disable that, we'll likely get
>>>> some weirdness, e.g. Win+M or Win+D on Windows will leave the window on
>>>> the desktop, which is not what users expect.
>>>>
>>>> Thanks,
>>>>
>>>> Artem
>>>>
>>>>> -- 
>>>>> best regards,
>>>>> Anthony
>>>>>
>>>>> On 07/22/2013 07:20 PM, Artem Ananiev wrote:
>>>>>> On 7/22/2013 11:14 AM, Pavel Safrata wrote:
>>>>>>> Hi Jonathan,
>>>>>>> I believe this has been neither requested nor discussed so far. I
>>>>>>> don't
>>>>>>> see why this couldn't be added, it just might have to be a
>>>>>>> conditional
>>>>>>> feature, we'll have to check. Feel free to file a feature request.
>>>>>> Some native platforms (mostly, X window managers) don't provide direct
>>>>>> APIs to enable/disable certain window decoration buttons. A library or
>>>>>> an application may provides some hints, which may or may not be
>>>>>> respected by WM.
>>>>>>
>>>>>> I like what we have right now, StageStyle approach. Application
>>>>>> defines
>>>>>> the purpose of the window and let the platform decide, what are
>>>>>> available actions for it.
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Artem
>>>>>>
>>>>>>> Regards,
>>>>>>> Pavel
>>>>>>>
>>>>>>> On 21.7.2013 4:44, Jonathan Giles wrote:
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> For once this is a request for more information from another JavaFX
>>>>>>>> team, rather than a review request, etc! :-)
>>>>>>>>
>>>>>>>> I'm keen to see support in JavaFX Stage / Window classes for an API
>>>>>>>> that would allow for the minimize / maximize / full screen / etc
>>>>>>>> buttons to be disabled. I'm aware of the StageStyle.UTLITY option
>>>>>>>> (which does disable the minimize button), but sometimes you don't
>>>>>>>> want
>>>>>>>> a utility stage style, but you do want to prevent minimizing a
>>>>>>>> stage.
>>>>>>>> My particular use case is dialogs - you can see a discussion of the
>>>>>>>> issue at [1].
>>>>>>>>
>>>>>>>> For example, I note that Stage has an iconfied property to represent
>>>>>>>> whether the stage is minimized, but no property to specify
>>>>>>>> whether the
>>>>>>>> stage should be allowed to be iconified (setIconifiable(boolean),
>>>>>>>> boolean isIconifiable(), for example). Is there a reason for this or
>>>>>>>> just that this API hasn't been required yet?
>>>>>>>>
>>>>>>>> In short, I would love API to allow me to specify whether a stage
>>>>>>>> can
>>>>>>>> be minimised, maximised and made full screen, and for this to follow
>>>>>>>> through to the buttons available in the native titlebar area of the
>>>>>>>> stage. Does such an API exist, is there a valid reason why it
>>>>>>>> doesn't,
>>>>>>>> or should I file a jira to request such API?
>>>>>>>>
>>>>>>>> [1]
>>>>>>>> https://bitbucket.org/controlsfx/controlsfx/issue/49/dialogs-should-use-native-title-bars
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks!
>>>>>>>> -- Jonathan



More information about the openjfx-dev mailing list