[API Review] RT-9383: javafx.scene.input.*Event classes construction

Pavel Safrata pavel.safrata at oracle.com
Tue Jan 22 08:51:07 PST 2013


Reviving this dead discussion.
Thanks,
Pavel

On 19.11.2012 10:19, Martin Sladecek wrote:
> Richard, what do you think?
>
> The approved changes were pushed to the repository already, so it 
> would be good to fix the issues Pavel found ASAP.
>
> And there's also one more thing that should be changed. In the 
> original proposal, there are integer codes in the KeyEvent 
> constructors, but the feature request to add them is still open ( 
> http://javafx-jira.kenai.com/browse/RT-20448). Since KeyEvents 
> currently operates with KeyCode enum only, these constructors should 
> be removed and only the constructor with KeyCode should be left in the 
> API.
>
> Thanks,
> -Martin
>
>
> On 11/08/2012 12:42 PM, Pavel Safrata wrote:
>> Hello,
>> shame on me, I'm really sorry for getting here so late. I've just 
>> read through the proposal and I'd like to propose several changes 
>> before it starts to be used by apps.
>>
>>> DragEvent:
>>> public DragEvent copyFor(Object source, EventTarget target, Object 
>>> gestureSource, Object gestureTarget, Dragboard dragboard)
>>> public DragEvent copyFor(Object source, EventTarget target, Object 
>>> gestureSource, Object gestureTarget, TransferMode transferMode, 
>>> EventType<DragEvent> eventType)
>>>
>>
>> I think we should not complicate the API with those two methods. They 
>> have no obvious usage for users and I think all existing internal 
>> usages can be removed by a simple refactoring.
>>
>>> MouseEvent:
>>> public MouseEvent(EventType<? extends MouseEvent> eventType, double 
>>> x, double y, double screenX, double screenY, MouseButton button,int 
>>> clickCount, boolean shiftDown, boolean controlDown, boolean altDown, 
>>> boolean metaDown,  boolean primaryButtonDown, boolean 
>>> middleButtonDown, boolean secondaryButtonDown, boolean synthesized, 
>>> boolean popupTrigger)
>>
>> I would drop this one, there is a similar one with one more argument: 
>> stillSincePress. This argument is not that special, we can use the 
>> other method instead. There are places in robot where we're not sure 
>> what to put there, but it doesn't really justify for having this 
>> duplicated method (it should rather be fixed there).
>>
>>> TouchEvent:
>>> public boolean isDirect() // was impl_ because (according to a 
>>> comment in code) there are no indirect events yet, but GestureEvent 
>>> already has this public.
>>
>> I think we should not publish isDirect() and that we should remove 
>> the "direct" argument from constructors. Currently touch events are 
>> always direct. We are able to produce indirect touch events from 
>> TrackPad, but our API specifically states that we don't and won't 
>> deliver them. They are just prepared for the possibility that we add 
>> custom gesture recognizers in the future that may work with those 
>> indirect events, but it is not really certain we'll ever do that, and 
>> if we will, it is not certain if it will be allowed to feed custom 
>> events to them. So publishing this useless flag would be pretty 
>> confusing right now.
>>
>> Finally, to make TouchEvent constructor usable, we need also 
>> constructor for TouchPoint.
>>
>> Let me once more apologize for the late response.
>> Thaks,
>> Pavel
>>
>>>
>>>
>>> -Martin
>>>
>>> On 06/15/2012 11:44 PM, Richard Bair wrote:
>>>>>>> As for the approach, I think you do the constructors with all 
>>>>>>> params (since events are immutable you have no choice really -- 
>>>>>>> static factory or constructor and I prefer in this case a 
>>>>>>> constructor) + builder (auto generated).
>>>>>> And what do you think about impl_copy methods? Personally I think 
>>>>>> we should remove them completely and turn them to some internal 
>>>>>> utility methods.
>>>>> My initial thought was a copy constructor.
>>>>>
>>>>>> Also, some events are not 100% immutable, as they are modified 
>>>>>> during the Scene processing through some impl_methods, like 
>>>>>> MouseEvent.impl_setClickParam. We'd either need to make some/all 
>>>>>> of the Event fields protected and do this modifications through 
>>>>>> subclasses or create some "accessor" in javafx.scene.input 
>>>>>> package for calling these methods from javafx.scene package.
>>>>> Good question, I guess we can revisit these in context of the 
>>>>> other impl_ method removal things we're working on.
>>>>>
>>>>> Richard
>>
>



More information about the openjfx-dev mailing list