[OpenJDK 2D-Dev] RFR: 8203796: Define API to support specifying ownership of print dialogs.

Phil Race philip.race at oracle.com
Tue Jun 5 21:39:10 UTC 2018


Updated webrev: http://cr.openjdk.java.net/~prr/8203796.3/

The if/else pattern you point to is removed and ServiceDialog now has just
a Window constructor.

-phil.

On 06/05/2018 02:19 PM, Phil Race wrote:
> Good point. When this code was written (JDK 1.4) Dialog's constructors
> supported only Dialog and Frame owners. 1.6 added support for Window
>
> So this code is now out-dated. I will see if I can just rework 
> everything to use the new
> Window constructor and simplify the code a bit.
>
> -phil.
>
> On 06/05/2018 01:52 PM, Sergey Bylokhov wrote:
>> Hi, Phil.
>> What owners are expected to be supported in this fix? I see that the 
>> new DialogOwner mentioned a "Window" as a possible owner. But in the 
>> implementation there are some casts to Dialog/Frame:
>>    ServiceUI.java
>>  97         if (owner instanceof Frame) {
>>  198             dialog = new ServiceDialog(gc,
>>  199                                        x,
>>  200                                        y,
>>  201                                        services, defaultIndex,
>>  202                                        flavor, attributes,
>>  203                                        (Frame)owner);
>>  204         } else {
>>  205             dialog = new ServiceDialog(gc,
>>  206                                        x,
>>  207                                        y,
>>  208                                        services, defaultIndex,
>>  209                                        flavor, attributes,
>>  210                                        (Dialog)owner);
>>  211         }
>>
>>
>> One small note is about unnecessary final keywords on methods in 
>> final class DialogOwner.
>>
>> On 05/06/2018 12:29, Phil Race wrote:
>>>
>>>
>>> On 06/05/2018 11:46 AM, Kevin Rushforth wrote:
>>>> My testing of the fix on Windows (with the corresponding FX fix) 
>>>> looks good. A couple comments / questions:
>>>>
>>>> DialogOwner.java:
>>>>
>>>> * The docs should probably say what the behavior is if the 
>>>> application does not have the alwaysOnTop permission. I presume 
>>>> that the attribute will be silently ignored without that 
>>>> permission? Have you tested this?
>>>
>>> I expect a security exception will be thrown. Although it is 
>>> unlikely that an application
>>> will have print permission and not this permission.
>>> Since the application does not control the size/appearance/content 
>>> of the dialog
>>> the reasons for the permission do not apply, so if it did not, it is 
>>> not a concern if
>>> it was to always appear on top, but also if the application does not 
>>> have this permission
>>> it is not important enough to assert it.
>>> So a change to catch the exception should be sufficient and I will 
>>> make that change.
>>>
>>>>
>>>> PrintJob2D.java:
>>>>
>>>> * The only change appears to be adding an unused import.
>>>
>>> It is not unused. Previously DialogOwner was in the same package.
>>> Now it is not, so an import is now needed.
>>>
>>>>
>>>>
>>>> DialogOwnerTest.java:
>>>>
>>>> * Does the test need '@key headful' or is this not needed because 
>>>> it is a manual test?
>>>
>>> right, all our manual tests require interaction so are headful.
>>>>
>>>> * The new unit test fails to compile for me, but maybe I'm doing 
>>>> something wrong (I just ran it with jtreg with no special arguments).
>>>
>>> fixed
>>>
>>> updated webrev : http://cr.openjdk.java.net/~prr/8203796.2/
>>>
>>> -phil.
>>>
>>>>
>>>> -- Kevin
>>>>
>>>>
>>>> On 6/4/2018 12:39 PM, Phil Race wrote:
>>>>> I have posted an updated webrev 
>>>>> http://cr.openjdk.java.net/~prr/8203796.1
>>>>> which removes the "native id" case from the public API. Now the 
>>>>> plan is
>>>>> that any code that needs to specify this will need to use native 
>>>>> code to set it.
>>>>> The CSR text is also updated, and so is the referenced FX webrev
>>>>> http://cr.openjdk.java.net/~prr/8195808.1
>>>>>
>>>>> -phil.
>>>>>
>>>>> On 05/25/2018 11:04 AM, Phil Race wrote:
>>>>>> This defines a new class "DialogOwner" implementing 
>>>>>> PrintRequestAttribute
>>>>>> which allows an application to specify that a Print or Page 
>>>>>> dialog be  one of
>>>>>> 1) owned by an application specified AWT window
>>>>>> 2) owned by an application specified foreign (non-AWT) window
>>>>>> 3) use AWT's alwaysOnTop functionality where supported.
>>>>>>
>>>>>> JDK bug: https://bugs.openjdk.java.net/browse/JDK-8203796
>>>>>> CSR : https://bugs.openjdk.java.net/browse/JDK-8203834
>>>>>> JDK webrev : http://cr.openjdk.java.net/~prr/8203796/
>>>>>>
>>>>>> Please review the webrev and the CSR.
>>>>>>
>>>>>> The webrev will show that this functionality was already mostly 
>>>>>> available but only as internal API.
>>>>>>
>>>>>> To help applications be able to query what is supported, the various
>>>>>> PrintService implementation classes needed to be updated, for 
>>>>>> example "ID"
>>>>>> is reported as unsupported unless specifying using the native 
>>>>>> dialog on windows.
>>>>>> That actually pointed out that back in JDK 7 when we added 
>>>>>> DialogTypeSelection
>>>>>> to be able to choose native or Swing there was no query support 
>>>>>> for that to be
>>>>>> added. It was not a problem though as if it was not supported it 
>>>>>> really just meant
>>>>>> that applications would have to live with what dialog was 
>>>>>> provided, as before.
>>>>>> But it made a test for this new API more difficult .. so I added 
>>>>>> code needed for that.
>>>>>> The test is manual. An automated test might be possible, but 
>>>>>> probably very flaky.
>>>>>> But the test only makes you run through the scenarios that we 
>>>>>> know are supportable.
>>>>>>
>>>>>> The motivation for this new public API is to help OpenJFX since 
>>>>>> it uses the Java 2D PrinterJob class
>>>>>> to implement its own printing, so there is also an FX side to 
>>>>>> switch to using this instead
>>>>>> of the earlier internal API which it can not access when it is 
>>>>>> outside the JDK :
>>>>>>
>>>>>> FX bug : https://bugs.openjdk.java.net/browse/JDK-8195808
>>>>>> FX webrev: http://cr.openjdk.java.net/~prr/8195808/
>>>>>>
>>>>>> -phil.
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>



More information about the 2d-dev mailing list