Disabling JavaFX minimise/maximise/etc buttons

Jonathan Giles jonathan.giles at oracle.com
Wed Jul 24 12:52:04 PDT 2013

I've filed https://javafx-jira.kenai.com/browse/RT-31903

-- Jonathan

On 24/07/2013 11:28 p.m., Anthony Petrov wrote:
> Hi Jonathan,
> setResizable(false) only disables the Maximize button (for obvious 
> reasons.) And this should already be implemented.
> As to the setIconifiable(boolean) functionality, I agree it would be 
> fine to have it. Please file a JIRA issue and we'll implement it.
> To address Tom's suggestion on adding fine-grained control for trim 
> buttons: I don't support this idea for the following reason: you can 
> access, say, the Iconify action via the trim button. But you can also 
> right-click the window's titlebar and choose it from the menu. 
> Moreover, you can right-click the taskbar button associated with the 
> window and open the same menu from there. In those menus the Iconify 
> is not a button but a menu item. However, both the trim button and the 
> menu item represent the Iconify action. Therefore, from API 
> perspective I'd prefer to be able to disable the Iconify action itself 
> (i.e. the higher level concept) rather than disable individual native 
> GUI items responsible for firing the event.
> I understand that most likely you're referring to a case when you want 
> to maximize a window pogramatically and disallow a user to get the 
> window back to the normal state. I believe you can achieve this using 
> an UNDECORATED window more easily.
> -- 
> best regards,
> Anthony
> On 07/24/13 00: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