2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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.
18 using System.Collections.Generic;
23 /// It inherits <see cref="Widget"/>.
24 /// The Container is a abstract class.
25 /// Other class inherits it to Elementary is about displaying
26 /// its widgets in a nice layout.
28 /// <since_tizen> preview </since_tizen>
29 public abstract class Container : Widget
31 HashSet<EvasObject> _children = new HashSet<EvasObject>();
34 /// Creates and initializes a new instance of class which inherit from Container.
36 /// <param name="parent">The parent is a given object which will be attached by Container
37 /// as a child.It's <see cref="EvasObject"/> type.</param>
38 /// <since_tizen> preview </since_tizen>
39 public Container(EvasObject parent) : base(parent)
44 /// Creates and initializes a new instance of Container class.
46 /// <since_tizen> preview </since_tizen>
47 protected Container() : base()
52 /// Sets the background color of a given Container.
54 /// <since_tizen> preview </since_tizen>
55 public override Color BackgroundColor
61 SetPartColor("bg", Color.Transparent);
65 SetPartColor("bg", value);
67 _backgroundColor = value;
72 /// Gets the collection of child EvasObject of the Container.
74 /// <since_tizen> preview </since_tizen>
75 protected IEnumerable<EvasObject> Children => _children;
78 /// Add an EvasObject object as a child of Container.
80 /// <param name="obj">The EvasObject object to be added</param>
81 /// <since_tizen> preview </since_tizen>
82 protected void AddChild(EvasObject obj)
85 obj.Deleted += OnChildDeleted;
89 /// Remove an EvasObject object as a child of Container.
91 /// <param name="obj">The EvasObject object to be removed</param>
92 /// <since_tizen> preview </since_tizen>
93 protected void RemoveChild(EvasObject obj)
95 _children.Remove(obj);
99 /// Clear all children of the Container.
101 /// <since_tizen> preview </since_tizen>
102 protected void ClearChildren()
108 /// The Container Callback that is invoked when a child is removed.
110 /// <param name="sender">The called Container</param>
111 /// <param name="a"><see cref="EventArgs"/></param>
112 void OnChildDeleted(object sender, EventArgs a)
114 _children.Remove((EvasObject)sender);