2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 public class CustomView : ViewWrapper
22 public CustomView(ViewWrapperImpl.CustomViewBehaviour behaviour) : base(new ViewWrapperImpl(behaviour))
24 // Registering CustomView virtual functions to viewWrapperImpl delegates.
25 viewWrapperImpl.OnStageConnection = new ViewWrapperImpl.OnStageConnectionDelegate(OnStageConnection);
26 viewWrapperImpl.OnStageDisconnection = new ViewWrapperImpl.OnStageDisconnectionDelegate(OnStageDisconnection);
27 viewWrapperImpl.OnChildAdd = new ViewWrapperImpl.OnChildAddDelegate(OnChildAdd);
28 viewWrapperImpl.OnChildRemove = new ViewWrapperImpl.OnChildRemoveDelegate(OnChildRemove);
29 viewWrapperImpl.OnPropertySet = new ViewWrapperImpl.OnPropertySetDelegate(OnPropertySet);
30 viewWrapperImpl.OnSizeSet = new ViewWrapperImpl.OnSizeSetDelegate(OnSizeSet);
31 viewWrapperImpl.OnSizeAnimation = new ViewWrapperImpl.OnSizeAnimationDelegate(OnSizeAnimation);
32 viewWrapperImpl.OnTouchEvent = new ViewWrapperImpl.OnTouchEventDelegate(OnTouchEvent);
33 viewWrapperImpl.OnHoverEvent = new ViewWrapperImpl.OnHoverEventDelegate(OnHoverEvent);
34 viewWrapperImpl.OnKeyEvent = new ViewWrapperImpl.OnKeyEventDelegate(OnKeyEvent);
35 viewWrapperImpl.OnWheelEvent = new ViewWrapperImpl.OnWheelEventDelegate(OnWheelEvent);
36 viewWrapperImpl.OnRelayout = new ViewWrapperImpl.OnRelayoutDelegate(OnRelayout);
37 viewWrapperImpl.OnSetResizePolicy = new ViewWrapperImpl.OnSetResizePolicyDelegate(OnSetResizePolicy);
38 viewWrapperImpl.GetNaturalSize = new ViewWrapperImpl.GetNaturalSizeDelegate(GetNaturalSize);
39 viewWrapperImpl.CalculateChildSize = new ViewWrapperImpl.CalculateChildSizeDelegate(CalculateChildSize);
40 viewWrapperImpl.GetHeightForWidth = new ViewWrapperImpl.GetHeightForWidthDelegate(GetHeightForWidth);
41 viewWrapperImpl.GetWidthForHeight = new ViewWrapperImpl.GetWidthForHeightDelegate(GetWidthForHeight);
42 viewWrapperImpl.RelayoutDependentOnChildrenDimension = new ViewWrapperImpl.RelayoutDependentOnChildrenDimensionDelegate(RelayoutDependentOnChildren);
43 viewWrapperImpl.RelayoutDependentOnChildren = new ViewWrapperImpl.RelayoutDependentOnChildrenDelegate(RelayoutDependentOnChildren);
44 viewWrapperImpl.OnCalculateRelayoutSize = new ViewWrapperImpl.OnCalculateRelayoutSizeDelegate(OnCalculateRelayoutSize);
45 viewWrapperImpl.OnLayoutNegotiated = new ViewWrapperImpl.OnLayoutNegotiatedDelegate(OnLayoutNegotiated);
46 viewWrapperImpl.OnControlChildAdd = new ViewWrapperImpl.OnControlChildAddDelegate(OnControlChildAdd);
47 viewWrapperImpl.OnControlChildRemove = new ViewWrapperImpl.OnControlChildRemoveDelegate(OnControlChildRemove);
48 viewWrapperImpl.OnStyleChange = new ViewWrapperImpl.OnStyleChangeDelegate(OnStyleChange);
49 viewWrapperImpl.OnAccessibilityActivated = new ViewWrapperImpl.OnAccessibilityActivatedDelegate(OnAccessibilityActivated);
50 viewWrapperImpl.OnAccessibilityPan = new ViewWrapperImpl.OnAccessibilityPanDelegate(OnAccessibilityPan);
51 viewWrapperImpl.OnAccessibilityTouch = new ViewWrapperImpl.OnAccessibilityTouchDelegate(OnAccessibilityTouch);
52 viewWrapperImpl.OnAccessibilityValueChange = new ViewWrapperImpl.OnAccessibilityValueChangeDelegate(OnAccessibilityValueChange);
53 viewWrapperImpl.OnAccessibilityZoom = new ViewWrapperImpl.OnAccessibilityZoomDelegate(OnAccessibilityZoom);
54 viewWrapperImpl.OnKeyInputFocusGained = new ViewWrapperImpl.OnKeyInputFocusGainedDelegate(OnKeyInputFocusGained);
55 viewWrapperImpl.OnKeyInputFocusLost = new ViewWrapperImpl.OnKeyInputFocusLostDelegate(OnKeyInputFocusLost);
56 viewWrapperImpl.GetNextKeyboardFocusableActor = new ViewWrapperImpl.GetNextKeyboardFocusableActorDelegate(GetNextKeyboardFocusableActor);
57 viewWrapperImpl.OnKeyboardFocusChangeCommitted = new ViewWrapperImpl.OnKeyboardFocusChangeCommittedDelegate(OnKeyboardFocusChangeCommitted);
58 viewWrapperImpl.OnKeyboardEnter = new ViewWrapperImpl.OnKeyboardEnterDelegate(OnKeyboardEnter);
59 viewWrapperImpl.OnPinch = new ViewWrapperImpl.OnPinchDelegate(OnPinch);
60 viewWrapperImpl.OnPan = new ViewWrapperImpl.OnPanDelegate(OnPan);
61 viewWrapperImpl.OnTap = new ViewWrapperImpl.OnTapDelegate(OnTap);
62 viewWrapperImpl.OnLongPress = new ViewWrapperImpl.OnLongPressDelegate(OnLongPress);
63 viewWrapperImpl.SignalConnected = new ViewWrapperImpl.SignalConnectedDelegate(SignalConnected);
64 viewWrapperImpl.SignalDisconnected = new ViewWrapperImpl.SignalDisconnectedDelegate(SignalDisconnected);
66 // Make sure CustomView is initialized.
69 // Make sure the style of actors/visuals initialized above are applied by the style manager.
70 viewWrapperImpl.ApplyThemeStyle();
74 * @brief Set the background with a property map.
76 * @param[in] map The background property map.
78 public void SetBackground(Dali.Property.Map map)
80 viewWrapperImpl.SetBackground(map);
84 * @brief Allows deriving classes to enable any of the gesture detectors that are available.
86 * Gesture detection can be enabled one at a time or in bitwise format as shown:
88 * EnableGestureDetection(Gesture.Type.Pinch | Gesture.Type.Tap | Gesture.Type.Pan));
90 * @param[in] type The gesture type(s) to enable.
92 public void EnableGestureDetection(Gesture.Type type)
94 viewWrapperImpl.EnableGestureDetection(type);
98 * @brief Allows deriving classes to disable any of the gesture detectors.
100 * Like EnableGestureDetection, this can also be called using bitwise or.
101 * @param[in] type The gesture type(s) to disable.
102 * @see EnableGetureDetection
104 public void DisableGestureDetection(Gesture.Type type)
106 viewWrapperImpl.DisableGestureDetection(type);
110 * @brief Sets whether this control supports two dimensional
111 * keyboard navigation (i.e. whether it knows how to handle the
112 * keyboard focus movement between its child actors).
114 * The control doesn't support it by default.
115 * @param[in] isSupported Whether this control supports two dimensional keyboard navigation.
117 public void SetKeyboardNavigationSupport(bool isSupported)
119 viewWrapperImpl.SetKeyboardNavigationSupport(isSupported);
123 * @brief Gets whether this control supports two dimensional keyboard navigation.
125 * @return true if this control supports two dimensional keyboard navigation.
127 public bool IsKeyboardNavigationSupported()
129 return viewWrapperImpl.IsKeyboardNavigationSupported();
133 * @brief Sets whether this control is a focus group for keyboard navigation.
135 * (i.e. the scope of keyboard focus movement
136 * can be limitied to its child actors). The control is not a focus group by default.
137 * @param[in] isFocusGroup Whether this control is set as a focus group for keyboard navigation.
139 public void SetAsKeyboardFocusGroup(bool isFocusGroup)
141 viewWrapperImpl.SetAsKeyboardFocusGroup(isFocusGroup);
145 * @brief Gets whether this control is a focus group for keyboard navigation.
147 * @return true if this control is set as a focus group for keyboard navigation.
149 public bool IsKeyboardFocusGroup()
151 return viewWrapperImpl.IsKeyboardFocusGroup();
155 * @brief Called by the AccessibilityManager to activate the Control.
158 public void AccessibilityActivate()
160 viewWrapperImpl.AccessibilityActivate();
164 * @brief Called by the KeyboardFocusManager.
166 public void KeyboardEnter()
168 viewWrapperImpl.KeyboardEnter();
172 * @brief Called by the KeyInputFocusManager to emit key event signals.
174 * @param[in] keyEvent The key event.
175 * @return True if the event was consumed.
177 public bool EmitKeyEventSignal(KeyEvent keyEvent)
179 return viewWrapperImpl.EmitKeyEventSignal(keyEvent);
183 * @brief Request a relayout, which means performing a size negotiation on this actor, its parent and children (and potentially whole scene).
185 * This method can also be called from a derived class every time it needs a different size.
186 * At the end of event processing, the relayout process starts and
187 * all controls which requested Relayout will have their sizes (re)negotiated.
189 * @note RelayoutRequest() can be called multiple times; the size negotiation is still
190 * only performed once, i.e. there is no need to keep track of this in the calling side.
192 protected void RelayoutRequest()
194 viewWrapperImpl.RelayoutRequest();
198 * @brief Provides the Actor implementation of GetHeightForWidth.
199 * @param width Width to use.
200 * @return The height based on the width.
202 protected float GetHeightForWidthBase(float width)
204 return viewWrapperImpl.GetHeightForWidthBase( width );
208 * @brief Provides the Actor implementation of GetWidthForHeight.
209 * @param height Height to use.
210 * @return The width based on the height.
212 protected float GetWidthForHeightBase(float height)
214 return viewWrapperImpl.GetWidthForHeightBase( height );
218 * @brief Calculate the size for a child using the base actor object.
220 * @param[in] child The child actor to calculate the size for
221 * @param[in] dimension The dimension to calculate the size for. E.g. width or height
222 * @return Return the calculated size for the given dimension. If more than one dimension is requested, just return the first one found.
224 protected float CalculateChildSizeBase(Actor child, DimensionType dimension)
226 return viewWrapperImpl.CalculateChildSizeBase( child, dimension );
230 * @brief Determine if this actor is dependent on it's children for relayout from the base class.
232 * @param dimension The dimension(s) to check for
233 * @return Return if the actor is dependent on it's children.
235 protected bool RelayoutDependentOnChildrenBase(DimensionType dimension)
237 return viewWrapperImpl.RelayoutDependentOnChildrenBase( dimension );
241 * @brief Determine if this actor is dependent on it's children for relayout from the base class.
243 * @param dimension The dimension(s) to check for
244 * @return Return if the actor is dependent on it's children.
246 protected bool RelayoutDependentOnChildrenBase()
248 return viewWrapperImpl.RelayoutDependentOnChildrenBase();
252 * @brief Register a visual by Property Index, linking an Actor to visual when required.
253 * In the case of the visual being an actor or control deeming visual not required then visual should be an empty handle.
254 * No parenting is done during registration, this should be done by derived class.
256 * @param[in] index The Property index of the visual, used to reference visual
257 * @param[in] visual The visual to register
258 * @note Derived class should not call visual.SetOnStage(actor). It is the responsibility of the base class to connect/disconnect registered visual to stage.
259 * Use below API with enabled set to false if derived class wishes to control when visual is staged.
261 protected void RegisterVisual(int index, VisualBase visual)
263 viewWrapperImpl.RegisterVisual( index, visual );
267 * @brief Register a visual by Property Index, linking an Actor to visual when required.
268 * In the case of the visual being an actor or control deeming visual not required then visual should be an empty handle.
269 * If enabled is false then the visual is not set on stage until enabled by the derived class.
272 * @param[in] index The Property index of the visual, used to reference visual
273 * @param[in] visual The visual to register
274 * @param[in] enabled false if derived class wants to control when visual is set on stage.
277 protected void RegisterVisual(int index, VisualBase visual, bool enabled)
279 viewWrapperImpl.RegisterVisual( index, visual, enabled );
283 * @brief Erase the entry matching the given index from the list of registered visuals
284 * @param[in] index The Property index of the visual, used to reference visual
287 protected void UnregisterVisual(int index)
289 viewWrapperImpl.UnregisterVisual( index );
293 * @brief Retrieve the visual associated with the given property index.
295 * @param[in] index The Property index of the visual.
296 * @return The registered visual if exist, otherwise empty handle.
297 * @note For managing object life-cycle, do not store the returned visual as a member which increments its reference count.
299 protected VisualBase GetVisual(int index)
301 return viewWrapperImpl.GetVisual( index );
305 * @brief Sets the given visual to be displayed or not when parent staged.
307 * @param[in] index The Property index of the visual
308 * @param[in] enable flag to set enabled or disabled.
310 protected void EnableVisual(int index, bool enable)
312 viewWrapperImpl.EnableVisual( index, enable );
316 * @brief Queries if the given visual is to be displayed when parent staged.
318 * @param[in] index The Property index of the visual
319 * @return bool whether visual is enabled or not
321 protected bool IsVisualEnabled(int index)
323 return viewWrapperImpl.IsVisualEnabled( index );
327 * @brief Create a transition effect on the control.
329 * @param[in] transitionData The transition data describing the effect to create
330 * @return A handle to an animation defined with the given effect, or an empty
331 * handle if no properties match.
333 protected Animation CreateTransition(TransitionData transitionData)
335 return viewWrapperImpl.CreateTransition( transitionData );
339 * @brief Emits KeyInputFocusGained signal if true else emits KeyInputFocusLost signal
341 * Should be called last by the control after it acts on the Input Focus change.
343 * @param[in] focusGained True if gained, False if lost
345 protected void EmitKeyInputFocusSignal(bool focusGained)
347 viewWrapperImpl.EmitKeyInputFocusSignal( focusGained );
351 * @brief This method is called after the Control has been initialized.
353 * Derived classes should do any second phase initialization by overriding this method.
355 public virtual void OnInitialize()
360 * @brief Called after the actor has been connected to the stage.
362 * When an actor is connected, it will be directly or indirectly parented to the root Actor.
363 * @param[in] depth The depth in the hierarchy for the actor
365 * @note The root Actor is provided automatically by Dali::Stage, and is always considered to be connected.
366 * When the parent of a set of actors is connected to the stage, then all of the children
367 * will received this callback.
368 * For the following actor tree, the callback order will be A, B, D, E, C, and finally F.
379 * @param[in] depth The depth in the hierarchy for the actor
381 public virtual void OnStageConnection(int depth)
386 * @brief Called after the actor has been disconnected from Stage.
388 * If an actor is disconnected it either has no parent, or is parented to a disconnected actor.
390 * @note When the parent of a set of actors is disconnected to the stage, then all of the children
391 * will received this callback, starting with the leaf actors.
392 * For the following actor tree, the callback order will be D, E, B, F, C, and finally A.
404 public virtual void OnStageDisconnection()
409 * @brief Called after a child has been added to the owning actor.
411 * @param[in] child The child which has been added
413 public virtual void OnChildAdd(Actor actor)
418 * @brief Called after the owning actor has attempted to remove a child( regardless of whether it succeeded or not ).
420 * @param[in] child The child being removed
422 public virtual void OnChildRemove(Actor actor)
427 * @brief Called when the owning actor property is set.
429 * @param[in] index The Property index that was set
430 * @param[in] propertyValue The value to set
432 public virtual void OnPropertySet(int index, Dali.Property.Value propertyValue)
437 * @brief Called when the owning actor's size is set e.g. using Actor::SetSize().
439 * @param[in] targetSize The target size. Note that this target size may not match the size returned via Actor.GetTargetSize.
441 public virtual void OnSizeSet(Vector3 targetSize)
446 * @brief Called when the owning actor's size is animated e.g. using Animation::AnimateTo( Property( actor, Actor::Property::SIZE ), ... ).
448 * @param[in] animation The object which is animating the owning actor.
449 * @param[in] targetSize The target size. Note that this target size may not match the size returned via @ref Actor.GetTargetSize.
451 public virtual void OnSizeAnimation(Animation animation, Vector3 targetSize)
456 * @DEPRECATED_1_1.37 Connect to TouchSignal() instead.
458 * @brief Called after a touch-event is received by the owning actor.
460 * @param[in] event The touch event
461 * @return True if the event should be consumed.
462 * @note CustomViewBehaviour.REQUIRES_TOUCH_EVENTS must be enabled during construction. See CustomView(ViewWrapperImpl.CustomViewBehaviour behaviour).
464 public virtual bool OnTouchEvent(TouchEvent touchEvent)
466 return false; // Do not consume
470 * @brief Called after a hover-event is received by the owning actor.
472 * @param[in] event The hover event
473 * @return True if the event should be consumed.
474 * @note CustomViewBehaviour.REQUIRES_HOVER_EVENTS must be enabled during construction. See CustomView(ViewWrapperImpl.CustomViewBehaviour behaviour).
476 public virtual bool OnHoverEvent(HoverEvent hoverEvent)
478 return false; // Do not consume
482 * @brief Called after a key-event is received by the actor that has had its focus set.
484 * @param[in] event the Key Event
485 * @return True if the event should be consumed.
487 public virtual bool OnKeyEvent(KeyEvent keyEvent)
489 return false; // Do not consume
493 * @brief Called after a wheel-event is received by the owning actor.
495 * @param[in] event The wheel event
496 * @return True if the event should be consumed.
497 * @note CustomViewBehaviour.REQUIRES_WHEEL_EVENTS must be enabled during construction. See CustomView(ViewWrapperImpl.CustomViewBehaviour behaviour).
499 public virtual bool OnWheelEvent(WheelEvent wheelEvent)
501 return false; // Do not consume
505 * @brief Called after the size negotiation has been finished for this control.
507 * The control is expected to assign this given size to itself/its children.
509 * Should be overridden by derived classes if they need to layout
510 * actors differently after certain operations like add or remove
511 * actors, resize or after changing specific properties.
513 * @param[in] size The allocated size.
514 * @param[in,out] container The control should add actors to this container that it is not able
515 * to allocate a size for.
516 * @note As this function is called from inside the size negotiation algorithm, you cannot
517 * call RequestRelayout (the call would just be ignored).
519 public virtual void OnRelayout(Vector2 size, RelayoutContainer container)
524 * @brief Notification for deriving classes
526 * @param[in] policy The policy being set
527 * @param[in] dimension The dimension the policy is being set for
529 public virtual void OnSetResizePolicy(ResizePolicyType policy, DimensionType dimension)
534 * @brief Return the natural size of the actor.
536 * @return The actor's natural size
538 public virtual Vector3 GetNaturalSize()
540 return new Vector3(0.0f, 0.0f, 0.0f);
544 * @brief Calculate the size for a child.
546 * @param[in] child The child actor to calculate the size for
547 * @param[in] dimension The dimension to calculate the size for. E.g. width or height.
548 * @return Return the calculated size for the given dimension.
550 public virtual float CalculateChildSize(Actor child, DimensionType dimension)
552 return viewWrapperImpl.CalculateChildSizeBase( child, dimension );
556 * @brief This method is called during size negotiation when a height is required for a given width.
558 * Derived classes should override this if they wish to customize the height returned.
560 * @param width Width to use.
561 * @return The height based on the width.
563 public virtual float GetHeightForWidth(float width)
565 return viewWrapperImpl.GetHeightForWidthBase( width );
569 * @brief This method is called during size negotiation when a width is required for a given height.
571 * Derived classes should override this if they wish to customize the width returned.
573 * @param height Height to use.
574 * @return The width based on the width.
576 public virtual float GetWidthForHeight(float height)
578 return viewWrapperImpl.GetWidthForHeightBase( height );
582 * @brief Determine if this actor is dependent on it's children for relayout.
584 * @param dimension The dimension(s) to check for
585 * @return Return if the actor is dependent on it's children.
587 public virtual bool RelayoutDependentOnChildren(DimensionType dimension)
589 return viewWrapperImpl.RelayoutDependentOnChildrenBase( dimension );
593 * @brief Determine if this actor is dependent on it's children for relayout from the base class.
595 * @return Return if the actor is dependent on it's children.
597 public virtual bool RelayoutDependentOnChildren()
599 return viewWrapperImpl.RelayoutDependentOnChildrenBase();
603 * @brief Virtual method to notify deriving classes that relayout dependencies have been
604 * met and the size for this object is about to be calculated for the given dimension
606 * @param dimension The dimension that is about to be calculated
608 public virtual void OnCalculateRelayoutSize(DimensionType dimension)
613 * @brief Virtual method to notify deriving classes that the size for a dimension
614 * has just been negotiated
616 * @param[in] size The new size for the given dimension
617 * @param[in] dimension The dimension that was just negotiated
619 public virtual void OnLayoutNegotiated(float size, DimensionType dimension)
624 * @brief This method should be overridden by deriving classes requiring notifications when the style changes.
626 * @param[in] styleManager The StyleManager object.
627 * @param[in] change Information denoting what has changed.
629 public virtual void OnStyleChange(StyleManager styleManager, StyleChangeType change)
634 * @brief This method is called when the control is accessibility activated.
636 * Derived classes should override this to perform custom accessibility activation.
637 * @return true if this control can perform accessibility activation.
639 public virtual bool OnAccessibilityActivated()
645 * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
648 * @param[in] gesture The pan gesture.
649 * @return true if the pan gesture has been consumed by this control
651 public virtual bool OnAccessibilityPan(PanGesture gestures)
657 * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
660 * @param[in] touchEvent The touch event.
661 * @return true if the touch event has been consumed by this control
663 public virtual bool OnAccessibilityTouch(TouchEvent touchEvent)
669 * @brief This method should be overridden by deriving classes when they wish to respond
670 * the accessibility up and down action (i.e. value change of slider control).
672 * @param[in] isIncrease Whether the value should be increased or decreased
673 * @return true if the value changed action has been consumed by this control
675 public virtual bool OnAccessibilityValueChange(bool isIncrease)
681 * @brief This method should be overridden by deriving classes when they wish to respond
682 * the accessibility zoom action.
684 * @return true if the zoom action has been consumed by this control
686 public virtual bool OnAccessibilityZoom()
692 * @brief This method should be overridden by deriving classes when they wish to respond
693 * the accessibility zoom action.
695 * @return true if the zoom action has been consumed by this control
697 public virtual void OnKeyInputFocusGained()
702 * @brief Called when the control loses key input focus.
704 * Should be overridden by derived classes if they need to customize what happens when focus is lost.
706 public virtual void OnKeyInputFocusLost()
711 * @brief Gets the next keyboard focusable actor in this control towards the given direction.
713 * A control needs to override this function in order to support two dimensional keyboard navigation.
714 * @param[in] currentFocusedActor The current focused actor.
715 * @param[in] direction The direction to move the focus towards.
716 * @param[in] loopEnabled Whether the focus movement should be looped within the control.
717 * @return the next keyboard focusable actor in this control or an empty handle if no actor can be focused.
719 public virtual Actor GetNextKeyboardFocusableActor(Actor currentFocusedActor, View.KeyboardFocus.Direction direction, bool loopEnabled)
725 * @brief Informs this control that its chosen focusable actor will be focused.
727 * This allows the application to preform any actions if wishes
728 * before the focus is actually moved to the chosen actor.
730 * @param[in] commitedFocusableActor The commited focusable actor.
732 public virtual void OnKeyboardFocusChangeCommitted(Actor commitedFocusableActor)
737 * @brief This method is called when the control has enter pressed on it.
739 * Derived classes should override this to perform custom actions.
740 * @return true if this control supported this action.
742 public virtual bool OnKeyboardEnter()
748 * @brief Called whenever a pinch gesture is detected on this control.
750 * This can be overridden by deriving classes when pinch detection
751 * is enabled. The default behaviour is to scale the control by the
754 * @param[in] pinch The pinch gesture.
755 * @note If overridden, then the default behaviour will not occur.
756 * @note Pinch detection should be enabled via EnableGestureDetection().
757 * @see EnableGestureDetection
759 public virtual void OnPinch(PinchGesture pinch)
764 * @brief Called whenever a pan gesture is detected on this control.
766 * This should be overridden by deriving classes when pan detection
769 * @param[in] pan The pan gesture.
770 * @note There is no default behaviour with panning.
771 * @note Pan detection should be enabled via EnableGestureDetection().
772 * @see EnableGestureDetection
774 public virtual void OnPan(PanGesture pan)
779 * @brief Called whenever a tap gesture is detected on this control.
781 * This should be overridden by deriving classes when tap detection
784 * @param[in] tap The tap gesture.
785 * @note There is no default behaviour with a tap.
786 * @note Tap detection should be enabled via EnableGestureDetection().
787 * @see EnableGestureDetection
789 public virtual void OnTap(TapGesture tap)
794 * @brief Called whenever a long press gesture is detected on this control.
796 * This should be overridden by deriving classes when long press
797 * detection is enabled.
799 * @param[in] longPress The long press gesture.
800 * @note There is no default behaviour associated with a long press.
801 * @note Long press detection should be enabled via EnableGestureDetection().
802 * @see EnableGestureDetection
804 public virtual void OnLongPress(LongPressGesture longPress)
808 private void SignalConnected(SlotObserver slotObserver, SWIGTYPE_p_Dali__CallbackBase callback)
812 private void SignalDisconnected(SlotObserver slotObserver, SWIGTYPE_p_Dali__CallbackBase callback)
816 private void OnControlChildAdd(Actor child)
820 private void OnControlChildRemove(Actor child)