Hi, Denis.

So probably current implementation under discussion can be dropped and replaced 
by the swing dialog-based?

On 31/10/2018 03:08, Denis Fokin wrote:
Hi Manajit, Sergey,

we use a swing dialog-based implementation in our product. I believe the 
current terms and behaviour could be improved.

There are some collision in terms. To be a document-modal in AWT means to block "all windows from the 
same document except those from its child hierarchy". The MacOS X sheet, according to the Apple guide 
[1], " is a modal dialog that’s attached to a particular window—usually a document—and prevents further 
interaction with the window". So looks like from the UIX experience it should be a "Window 
Modal".

Basically, if the sheet is shown on a window and it blocks the owner of the window, it is 
hard to understand why the owner is irresponsive. Any actions like switching to a 
"space" with the blocker, reordering windows look awful from the user 
perspective.

1 - 
https://developer.apple.com/design/human-interface-guidelines/macos/windows-and-views/sheets/

Thank you,
     Denis.

On Wed, Oct 31, 2018 at 4:15 AM Sergey Bylokhov <sergey.bylok...@oracle.com 
<mailto:sergey.bylok...@oracle.com>> wrote:

    Hello,
    Can somebody explain how the dialog which have the "documentModalSheet" 
property should behave?
    I thought this dialogs should looks like this:
    
https://stackoverflow.com/questions/13777067/swing-native-look-and-feel-for-jdialog-in-macos

    But when I run the manual testcase which is attached to the fix, it looks 
differently. It shows the undecorated dialog in the top/left corner, which is 
not attached to the window, and which cannot be moved.

    For example in the code below, should the dialog be inside the frame(I 
guess this can be checked by the automated test)?
    ===>
              Window frame = new JFrame();
              frame.setSize(300,300);
              frame.setLocationRelativeTo(null);
              frame.setVisible(true);
              JDialog dialog =
                      new JDialog(frame, null, 
Dialog.ModalityType.DOCUMENT_MODAL);
              
dialog.getRootPane().putClientProperty("apple.awt.documentModalSheet",
                                                     Boolean.TRUE);
              dialog.add(new JLabel("Hello world!"));
              dialog.pack();
              dialog.setVisible(true);
    ===>

    On 30/10/2018 04:16, Krishna Addepalli wrote:
     > +1
     >
     > Krishna
     >
     > -----Original Message-----
     > From: Dmitry Markov
     > Sent: Friday, October 26, 2018 4:57 PM
     > To: Manajit Halder <manajit.hal...@oracle.com 
<mailto:manajit.hal...@oracle.com>>
     > Cc: awt-dev@openjdk.java.net <mailto:awt-dev@openjdk.java.net>
     > Subject: Re: <AWT Dev> <AWT dev>[12] Review request for JDK-8208543: 
[macos] Support for apple.awt.documentModalSheet incomplete
     >
     > Hi Manajit,
     >
     > Looks good to me.
     >
     > Thanks,
     > Dmitry
     >
     >> On 26 Oct 2018, at 11:02, Manajit Halder <manajit.hal...@oracle.com 
<mailto:manajit.hal...@oracle.com>> wrote:
     >>
     >> Hi Dmitry,
     >>
     >> I have corrected the test case, now it fails if timeout takes place. 
Please review the webrev:
     >> http://cr.openjdk.java.net/~mhalder/8208543/webrev.02/ 
<http://cr.openjdk.java.net/%7Emhalder/8208543/webrev.02/>
     >>
     >> Regards,
     >> Manajit
     >>
     >>
     >>
     >> On 25/10/18 7:18 PM, Dmitry Markov wrote:
     >>> Hi Manajit,
     >>>
     >>> Currently the test is marked as ‘passed’ if timeout takes place. I 
think we should indicate an error or mark it as ‘failed’ in such case.
     >>>
     >>> Thanks,
     >>> Dmitry
     >>>
     >>>> On 25 Oct 2018, at 11:35, Manajit Halder <manajit.hal...@oracle.com 
<mailto:manajit.hal...@oracle.com>> wrote:
     >>>>
     >>>> Hi Dmitry,
     >>>>
     >>>> Thanks for your comments. I have addressed all your review comments 
in the new webrev.
     >>>> Additional changes:
     >>>>      NSDocModalWindowMask is deprecated and hence changed it to 
NSWindowStyleMaskDocModalWindow.
     >>>>      Window is created a Panel, required for style mask 
NSWindowStyleMaskDocModalWindow.
     >>>>      Test case was modified to add a case for the failed scenario "Dialog 
without owner".
     >>>>
     >>>> Please review the modified webrev:
     >>>> http://cr.openjdk.java.net/~mhalder/8208543/webrev.01/ 
<http://cr.openjdk.java.net/%7Emhalder/8208543/webrev.01/>
     >>>>
     >>>> Regards,
     >>>> Manajit
     >>>>
     >>>> On 13/10/18 12:14 AM, Dmitry Markov wrote:
     >>>>> Hi Manajit,
     >>>>>
     >>>>> There is an inconsistency between the proposed implementation and 
Apple JDK: if the property applied to the dialog which does not have an owner on the build 
with your changes it appears as sheet, but on Apple JDK it appears as a window.
     >>>>>
     >>>>> I think every frame/dialog inside dispose() method in the regression 
test should be checked for null-value before usage.
     >>>>>
     >>>>> I noticed that the regression test uses Timer API (see 
createAndShowModalSheet() method). Shall we stop/cancel the timer when “Pass”/“Fail” button is 
press?
     >>>>>
     >>>>> I suppose it is better to declare createAndShowModalSheet() and 
createAndShowInstructionFrame() as static. In such case the creation of class instance may be 
omitted.
     >>>>>
     >>>>> Thanks,
     >>>>> Dmitry
     >>>>>
     >>>>>> On 12 Oct 2018, at 05:36, Manajit Halder <manajit.hal...@oracle.com 
<mailto:manajit.hal...@oracle.com>> wrote:
     >>>>>>
     >>>>>> Hi Dmitry,
     >>>>>>
     >>>>>> Could you please review this fix related to Modal sheet on Mac OS?
     >>>>>>
     >>>>>> Regards,
     >>>>>> Manajit
     >>>>>>
     >>>>>>
     >>>>>> On 10/10/18 3:33 PM, Manajit Halder wrote:
     >>>>>>> Hi All,
     >>>>>>>
     >>>>>>> Kindly review the fix for JDK12.
     >>>>>>>
     >>>>>>> Bug:
     >>>>>>> https://bugs.openjdk.java.net/browse/JDK-8208543
     >>>>>>>
     >>>>>>>
     >>>>>>> Webrev:
     >>>>>>> http://cr.openjdk.java.net/~mhalder/8208543/webrev.00/ 
<http://cr.openjdk.java.net/%7Emhalder/8208543/webrev.00/>
     >>>>>>>
     >>>>>>> Problem:
     >>>>>>> "apple.awt.documentModalSheet" was getting set on the Dialog while 
its creations, but appearance of Dialog was not changing.
     >>>>>>>
     >>>>>>> Fix:
     >>>>>>> Setting "apple.awt.documentModalSheet" on Window after its 
creation.
     >>>>>>>
     >>>>>>> Regards,
     >>>>>> Manajit
     >>
     >


-- Best regards, Sergey.



--
Best regards, Sergey.

Reply via email to