Review request for MACOSX_PORT-539: Need a java.awt.EmbeddedFrame	subclass
    Dmitry Cherepanov 
    dmitry.cherepanov at oracle.com
       
    Wed Jan 11 05:31:58 PST 2012
    
    
  
Hi Artem,
Artem Ananiev wrote:
> Hi, Dmitry,
>
> here are my comments:
>
> 1. CEmbeddedFrame and CPlatformEmbeddedFrame are probably not the best 
> names. I can't suggest anything better, though.
I can't come up with anything better too but hopefully these names make 
sense to some extent.
 - "CEmbeddedFrame" seems to conform to existing names - 
"WEmbeddedFrame" on Windows and "XEmbeddedFrame" on X11.
 - "CPlatformEmbeddedFrame" is consistent with "CPlatformWindow".
>
> 2. Is there a reason to explicitly call addNotify() in CEF 
> constructor? Will it be called automatically as a part of show()?
Done.
>
> 3. CEF.handle*Event(): please, add (responder != null) checks there to 
> protect these methods from calling on invisible frames.
My understanding is that there's no strong reason to write these checks 
for null values. If there's a key/mouse event coming from the Plugin in 
case of invisible embedded frames, I would say that such events are 
unexpected and shouldn't be triggered.
>
> 4. There are several (platformWindow instanceof CPlatformWindow) 
> checks added. Could you comment on this, please? Do you expect 
> anything else than CPlatformWindow there?
All these checks are needed to handle CPlatformEmbeddedFrame case:
src/macosx/classes/sun/lwawt/macosx/CDropTarget.java
    skips registering drop target on CPlatformEmbeddedFrame (Scott wrote 
that the Plugin doesn't deliver drag-and-drop events).
src/macosx/classes/sun/lwawt/macosx/CInputMethod.java
    skips notifying CInputMethod instances about focus/IME events (input 
methods aren't implemented yet in embedded env).
src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
    skip using embedded frames (which don't have underlying 
NSView/NSWindow) as owner windows.
>
> 5. What is the reason of exporting the getPeer() method in the 
> PlatformWindow interface?
It's done as a part of the changes in 
src/macosx/classes/sun/lwawt/macosx/CPlatformComponent.java
The change removes explicit reference to the CPlatformWindow class (to 
make it working for CPlatformEmbeddedFrame) but it still needs to call 
platformWindow.getPeer() (see the setBounds method). It could probably 
be refactored into a more simplified code (to remove the getPeer method 
from the PlatformWindow interface).
Thanks for reviewing this!
Dmitry
>
> Thanks,
>
> Artem
>
> On 12/29/2011 6:06 PM, Dmitry Cherepanov wrote:
>> Hello,
>>
>> Please review an initial implementation for
>> http://java.net/jira/browse/MACOSX_PORT-539 at
>>
>> http://cr.openjdk.java.net/~dcherepanov/7124335/webrev.0/
>>
>> Basically the fix provides a lightweight implementation of the
>> EmbeddedFrame class (isn't backed by a NSView/NSWindow). The
>> implementation creates an instance of CALayer and exposes it as
>> protected CEmbeddedFrame method.
>>
>> Please see the bug report http://java.net/jira/browse/MACOSX_PORT-539
>> for more details about the current version of the fix.
>>
>> Thanks,
>> Dmitry
>>
    
    
More information about the macosx-port-dev
mailing list