Index: src/bin/test_multibuttonentry.c
===================================================================
--- src/bin/test_multibuttonentry.c	(리비전 68771)
+++ src/bin/test_multibuttonentry.c	(작업 사본)
@@ -4,6 +4,9 @@
 #endif
 #ifndef ELM_LIB_QUICKLAUNCH
 
+#define BTN_NUM 4
+Evas_Object *multibuttonentry;
+
 static void
 _item_selected_cb(void *data __UNUSED__,
                   Evas_Object *obj __UNUSED__,
@@ -50,19 +53,6 @@ _mbe_clicked_cb(void *data __UNUSED__,
    //Unset the multibuttonentry to contracted mode of single line
    elm_multibuttonentry_expanded_set(obj, EINA_TRUE);
    printf("A multibuttonentry is clicked!\n");
-   Evas_Object *entry;
-   entry = elm_multibuttonentry_entry_get(obj);
-   if (!entry)
-     {
-        printf("%s entry is NULL\n", __func__);
-     }
-
-   Evas_Coord x, y, w, h;
-   Evas_Coord mbe_x, mbe_y, mbe_w, mbe_h;
-   evas_object_geometry_get(obj, &mbe_x, &mbe_y, &mbe_w, &mbe_h);
-   evas_object_geometry_get(entry, &x, &y, &w, &h);
-   printf("%s mbe x :%d y:%d w :%d h:%d\n", __func__, mbe_x, mbe_y, mbe_w, mbe_h);
-   printf("%s wd->entry x :%d y:%d w :%d h:%d\n", __func__, x, y, w, h);
 }
 
 static void
@@ -111,8 +101,9 @@ _shrink_state_changed_cb(void *data __UNUSED__,
 }
 
 // "item verified" confirm callback
+
 static Eina_Bool
-_item_filter_cb(Evas_Object *obj __UNUSED__,
+_item_filter_prepend_cb(Evas_Object *obj __UNUSED__,
                 const char* item_label,
                 void *item_data __UNUSED__,
                 void *data __UNUSED__)
@@ -122,12 +113,57 @@ static Eina_Bool
    return EINA_TRUE;
 }
 
+static Eina_Bool
+_item_filter_append_cb(Evas_Object *obj,
+                const char* item_label,
+                void *item_data __UNUSED__,
+                void *data __UNUSED__)
+{
+   printf("%s, label: %s\n", __func__, item_label);
+   
+   if (strcmp(item_label, "filter remove") == 0)
+     {
+        printf("Remove prepended filter cb\n", __func__);
+        elm_multibuttonentry_item_filter_remove(obj, _item_filter_prepend_cb, NULL);
+     }
+   return EINA_TRUE;
+}
+
 static void
 _button_clicked_cb(void *data __UNUSED__,
-                   Evas_Object *obj __UNUSED__,
+                   Evas_Object *obj,
                    void *event_info __UNUSED__)
 {
-   printf("%s button is clicked\n", __func__);
+   Evas_Object *mbe = multibuttonentry;
+   Elm_Object_Item * item = NULL;
+   
+   if (!mbe || !obj) return;
+   
+   if (strcmp(elm_object_text_get(obj), "Unfocus") == 0)
+     {
+        // click this button to unfocus multibuttonentry
+        printf("unfocus\n", __func__);
+     }
+   else if (strcmp(elm_object_text_get(obj), "Fist item select") == 0)
+     {
+        printf("Select the first item\n", __func__);
+        item = elm_multibuttonentry_first_item_get(mbe);
+        if (!item) return;
+        elm_multibuttonentry_item_select(item, EINA_TRUE);
+       
+     }
+   else if (strcmp(elm_object_text_get(obj), "Remove all") == 0)
+     {
+        // remove all items in the multibuttonentry
+        printf("remove all\n", __func__);
+        elm_multibuttonentry_clear(mbe);
+     }
+   else
+     {
+        // Unselect all items in the multibuttonentry
+        printf("Unselect all", __func__);
+        elm_multibuttonentry_item_unselect_all(mbe);
+     }
 }
 
 static Evas_Object*
@@ -143,6 +179,7 @@ _add_multibuttonentry(Evas_Object *parent)
    evas_object_show(scr);
 
    mbe = elm_multibuttonentry_add(parent);
+   multibuttonentry = mbe;
    elm_object_text_set(mbe, "To: ");
    elm_multibuttonentry_guide_text_set(mbe, "Tap to add recipient");
    evas_object_size_hint_weight_set(mbe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -150,7 +187,8 @@ _add_multibuttonentry(Evas_Object *parent)
    elm_object_content_set(scr, mbe);
 
    // Add item verify callback to Multibuttonentry
-   elm_multibuttonentry_item_filter_append(mbe, _item_filter_cb, data);
+   elm_multibuttonentry_item_filter_append(mbe, _item_filter_append_cb, data);
+   elm_multibuttonentry_item_filter_prepend(mbe, _item_filter_prepend_cb, data);
 
    // Add "item,selected","item,added", "item,deleted", "clicked", "unfocused",
    // "expanded", "contracted" and "contracted,state,changed" smart callback
@@ -177,20 +215,110 @@ static Evas_Object*
 _add_buttons(Evas_Object *parent)
 {
    Evas_Object *bx = NULL;
-   Evas_Object *btn;
-
+   Evas_Object *btn[BTN_NUM] = {0,};
+   char *label[BTN_NUM] = {"Unfocus", "Remove all", "Fist item select", "Unselect all"};
+   int i;
+   
    bx = elm_box_add(parent);
    elm_box_horizontal_set(bx, EINA_TRUE);
    elm_box_homogeneous_set(bx, EINA_TRUE);
 
-   btn = elm_button_add(parent);
-   evas_object_smart_callback_add(btn, "clicked", _button_clicked_cb, NULL);
-   elm_object_text_set(btn, "click");
-   evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
-   evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_box_pack_end(bx, btn);
-   evas_object_show(btn);
+   //Add the buttons for check the functions of multibuttonentry
+   for (i = 0; i < BTN_NUM; i++)
+     {
+        btn[i] = elm_button_add(parent);
+        evas_object_smart_callback_add(btn[i], "clicked", _button_clicked_cb, NULL);
+        elm_object_text_set(btn[i], label[i]);
+        evas_object_size_hint_weight_set(btn[i], EVAS_HINT_EXPAND, 0.0);
+        evas_object_size_hint_align_set(btn[i], EVAS_HINT_FILL, EVAS_HINT_FILL);
+        elm_box_pack_end(bx, btn[i]);
+        evas_object_show(btn[i]);  
+     }
+   return bx;
+}
 
+static void _add_items_test_cb(void *data, Evas_Object *obj, void *event_info)
+{
+
+   Evas_Object *mbe = multibuttonentry;
+   Evas *e = evas_object_evas_get(mbe);
+   int i = 0;
+   char *str;
+   Elm_Object_Item* item = NULL;
+   Elm_Object_Item* last_item = NULL;
+   Elm_Object_Item* prepend_item = NULL;
+   Elm_Object_Item* insert_item = NULL;
+   
+   switch((int)data)
+     {
+        case 0:
+           str = "item append";
+              item = elm_multibuttonentry_item_append(mbe, str, NULL);
+              if (!item)
+                {
+                   printf("item insert fail at %d\n", i);
+                   break;
+                }
+           break;
+        case 1:
+           str = "item prepend";
+              item = elm_multibuttonentry_item_prepend(mbe, str, NULL);
+              if (!item)
+                {
+                   printf("item insert fail at %d\n", i);
+                   break;
+                }
+           break;
+        case 2:
+           str = "item insert after";
+              last_item = elm_multibuttonentry_last_item_get(mbe);
+              item = elm_multibuttonentry_item_insert_after(mbe, last_item, str, NULL);
+              if (!item)
+                {
+                   printf("item insert fail at %d\n", i);
+                   break;
+                }
+           break;
+        case 3:
+          str = "item insert before";
+             last_item = elm_multibuttonentry_last_item_get(mbe);
+             item = elm_multibuttonentry_item_insert_before(mbe, last_item , str, NULL);
+             if (!item)
+               {
+                  printf("item insert fail at %d\n", i);
+                  break;
+               }
+           break;
+     }
+}
+
+static Evas_Object*
+_add_items_buttons(Evas_Object *parent)
+{
+   Evas_Object *bx = NULL;
+   Evas_Object *btn[BTN_NUM] = {0,};
+   char *label[BTN_NUM] = {
+                          "item append", 
+                          "item prepend", 
+                          "item insert after last item",
+                          "item_insert_before last item"};
+   int i;
+   
+   bx = elm_box_add(parent);
+   elm_box_horizontal_set(bx, EINA_FALSE);
+   elm_box_homogeneous_set(bx, EINA_TRUE);
+
+   for (i = 0; i < BTN_NUM; i++)
+     {
+        btn[i] = elm_button_add(parent);
+        evas_object_smart_callback_add(btn[i], "clicked", _add_items_test_cb, (void *)i);
+        elm_object_text_set(btn[i], label[i]);
+        evas_object_size_hint_weight_set(btn[i], EVAS_HINT_EXPAND, 0.0);
+        evas_object_size_hint_align_set(btn[i], EVAS_HINT_FILL, EVAS_HINT_FILL);
+        elm_box_pack_end(bx, btn[i]);
+        evas_object_show(btn[i]);
+     }
+
    return bx;
 }
 
@@ -223,8 +351,11 @@ test_multibuttonentry(void *data __UNUSED__,
    elm_object_part_content_set(ly, "multibuttonentry", sc);
 
    bx = _add_buttons(ly);
-   elm_object_part_content_set(ly, "box", bx);
+   elm_object_part_content_set(ly, "box1", bx);
 
+   bx = _add_items_buttons(ly);
+   elm_object_part_content_set(ly, "box2", bx);
+
    evas_object_resize(win, 320, 480);
    evas_object_show(win);
    elm_object_focus_set(sc, EINA_TRUE);
Index: data/objects/multibuttonentry.edc
===================================================================
--- data/objects/multibuttonentry.edc	(리비전 68771)
+++ data/objects/multibuttonentry.edc	(작업 사본)
@@ -1,100 +1,126 @@
 
 collections {
-group {
+   group {
    name: "multibuttonentry_test";
-   parts{
-      part {
-         name: "bg";
-         type: RECT;
-         mouse_events: 1;
-         scale:1;
-         description {
-            state: "default" 0.0;
-            color: 0 0 0 0;
-            rel1.relative: 0.0 0.0;
-            rel2.relative: 1.0 1.0;
+      parts{
+         part {
+            name: "bg";
+            type: RECT;
+            mouse_events: 1;
+            scale:1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 1.0;
+            }
          }
-      }
-      part{
-         name: "top.left";
-         type: RECT;
-         scale: 1;
-         description {
-            state: "default" 0.0;
-            min : 0 0;
-            fixed: 1 1;
-            rel1 { relative: 0.0 0.0;to:bg; }
-            rel2 { relative: 0.0 0.0;to:bg; }
-            align: 0.0 0.0;
-            color: 0 0 0 0;
+         part{
+            name: "top.left";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min : 0 0;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0;to:bg; }
+               rel2 { relative: 0.0 0.0;to:bg; }
+               align: 0.0 0.0;
+               color: 0 0 0 0;
+            }
          }
-      }
-      part{
-         name: "bottom.right";
-         type: RECT;
-         scale: 1;
-         description {
-            state: "default" 0.0;
-            min : 0 0;
-            fixed: 1 1;
-            rel1 { relative: 1.0 1.0;to:bg; }
-            rel2 { relative: 1.0 1.0;to:bg; }
-            align: 1.0 1.0;
-            color: 0 0 0 0;
+         part{
+            name: "bottom.right";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min : 0 0;
+               fixed: 1 1;
+               rel1 { relative: 1.0 1.0;to:bg; }
+               rel2 { relative: 1.0 1.0;to:bg; }
+               align: 1.0 1.0;
+               color: 0 0 0 0;
+            }
          }
-      }
-      part {
-         name: "bg.box";
-         type: RECT;
-         mouse_events: 0;
-         scale:1;
-         description {
-            state: "default" 0.0;
-            rel1.to: box;
-            rel2.to: box;
-            color: 230 220 188 255;
+         part {
+            name: "bg.box1";
+            type: RECT;
+            mouse_events: 0;
+            scale:1;
+            description {
+               state: "default" 0.0;
+               rel1.to: box1;
+               rel2.to: box1;
+               color: 230 220 188 255;
+            }
          }
-      }
-      part {
-         name: "box";
-         type: SWALLOW;
-         mouse_events: 1;
-         scale:1;
-         description {
-            state: "default" 0.0;
-            min : 0 5;
-            fixed: 0 1;
-            rel1 { relative: 1.0  1.0;to: top.left;}
-            rel2 { relative: 0.0  1.0;to_x: bottom.right;to_y: top.left;}
-            align: 0.0 0.0;
+         part {
+            name: "box1";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale:1;
+            description {
+               state: "default" 0.0;
+               min : 0 3;
+               fixed: 0 1;
+               rel1 { relative: 1.0  1.0;to: top.left;}
+               rel2 { relative: 0.0  1.0;to_x: bottom.right;to_y: top.left;}
+               align: 0.0 0.0;
+            }
+         }      
+         part {
+ 	    name: "bg.box2";
+	    type: RECT;
+	    mouse_events: 0;
+	    scale:1;
+	    description {
+	       state: "default" 0.0;
+	       rel1.to: box2;
+	       rel2.to: box2;
+	       color: 230 220 188 255;
+	    }
          }
-      }
-      part {
-         name: "bg.multibuttonentry";
-         type: RECT;
-         mouse_events: 0;
-         scale:1;
-         description {
-            state: "default" 0.0;
-            rel1.to: multibuttonentry;
-            rel2.to: multibuttonentry;
-            color: 246 245 237 0;
+         part {
+	    name: "box2";
+	    type: SWALLOW;
+	    mouse_events: 1;
+	    scale:1;
+	    description {
+	       state: "default" 0.0;
+	      min : 0 3;
+	      fixed: 0 1;
+	      rel1 { relative: 0.0  1.0;to: box1;}
+	      rel2.to: box1;
+	      align: 0.0 0.0;
+	    }
          }
-      }
-      part {
-         name: "multibuttonentry";
-         type: SWALLOW;
-         mouse_events: 1;
-         scale:1;
-         description {
-            state: "default" 0.0;
-            min : 0 5;
-            fixed: 0 1;
-            rel1 { relative: 0.0 1.0; to: box; }
-            rel2 { relative: 0.0 0.0; to:bottom.right; }
-            align: 0.0 0.0;
+         part {
+            name: "bg.multibuttonentry";
+            type: RECT;
+            mouse_events: 0;
+            scale:1;
+            description {
+               state: "default" 0.0;
+               rel1.to: multibuttonentry;
+               rel2.to: multibuttonentry;
+               color: 246 245 237 0;
+             }
          }
-      }
-   }
+         part {
+            name: "multibuttonentry";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale:1;
+            description {
+               state: "default" 0.0;
+               min : 0 5;
+               fixed: 0 1;
+               rel1 { relative: 0.0 1.0; to: box2; }
+               rel2 { relative: 0.0 0.0; to:bottom.right; }
+               align: 0.0 0.0;
+            }
+        }
+     }
+  }
 }
-}
