DATABIND : Change the view model naming rule. 12/16512/1
authorjaeyeol lee <jaeyeol148.lee@samsung.com>
Tue, 18 Feb 2014 05:49:18 +0000 (14:49 +0900)
committerjaeyeol lee <jaeyeol148.lee@samsung.com>
Tue, 18 Feb 2014 05:49:18 +0000 (14:49 +0900)
The same view model name will not be created

Change-Id: I79fd6decec4ff63cd6dd9ce9076691709dd0dedb
Signed-off-by: jaeyeol lee <jaeyeol148.lee@samsung.com>
org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/html.headingone.widget.xml
org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.button.widget.xml
org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.list.widget.xml
org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemsubtextone.widget.xml
org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemthumbnail.widget.xml
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingDnDManager.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/SetSourceDialog.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/actions/AddViewModelItemAction.java [new file with mode: 0644]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/TreeItemData.java

index a584561..28854cf 100644 (file)
@@ -24,6 +24,8 @@
        <property name="size" type="html.heading@size" displayName="Size" default="3">
                <condition name="disable-property-by-parent" value="tizen.header"/>
        </property> -->
+       
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="text" initValue=""/>
 
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
index 41f8213..96b1681 100644 (file)
@@ -60,6 +60,8 @@
 
        <!-- <property name="data-shadow"     type="boolean"            displayName="Shadow"        default="true"/>
        <property name="data-mini"       type="boolean"            displayName="Mini"          default="false"/> -->
+       
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
 
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
index 0a58442..1ace03b 100644 (file)
@@ -23,6 +23,8 @@
        <property name="data-inset"              type="boolean" displayName="Inset"              default="false"/> -->
        <property name="data-autodividers"       type="tizen@boolean2" displayName="Auto Dividers"      default=""/>
        <property name="data-fastscroll"         type="tizen@boolean2" displayName="Fast Scroll"        default=""/>
+       
+       <property name="data-bind" type="foreach@databinding" displayName="Data Binding" default="" initValue=""/>
 
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
index 6981a98..853b71f 100644 (file)
@@ -32,6 +32,8 @@
                <condition name="enable-property-by-child" value="tizen.listitemsubtexticon"/>
        </property> -->
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <!-- <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index e09c17a..de2d6fc 100644 (file)
@@ -25,6 +25,8 @@
                <property name="border-color" type="css-color" displayName="Color" selector="#%id%"/>
                <property name="border-style" type="border@style" displayName="Style" selector="#%id%"/>
        </property> -->
+       
+       <property name="data-bind" type="attr@databinding" displayName="Data Binding" default="" initValue=""/>
 
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
index ca8e7a2..ff060f5 100644 (file)
@@ -358,15 +358,13 @@ public class DataBindingDnDManager {
                         TreeItemData treeData = new TreeItemData();
                         TreeItemData treeItemData = new TreeItemData();
 
-                        int count = 0;
-                        TreeItemData viewModelTreeData =
-                                (TreeItemData) viewModelTree.getData("TREEITEMDATA");
-                        if (viewModelTreeData != null) {
-                            count = viewModelTreeData.getViewModelCount();
+                        int idIndex = 0;
+
+                        while (!canSetTreeItemName(viewModelTree, "model" + idIndex)) {
+                               idIndex++;
                         }
+                        viewModelItem.setText("model" + idIndex);
 
-                        viewModelItem.setText("model" + count++);
-                        treeData.setViewModelCount(count);
                         treeItemData.setOriginModelName(viewModelItem.getText());
                         viewModelItem.setData("TREEITEMDATA", treeItemData);
                         viewModelTree.setData("TREEITEMDATA", treeData);
@@ -460,6 +458,25 @@ public class DataBindingDnDManager {
             }
         });
     }
+    
+    /**
+     * Returns TRUE if tree item name can be set.
+     * @param viewModelTree 
+     *                           
+     * @param itemName
+     *            a tree item name
+     * @return true if tree item name can be set
+     */
+    private static boolean canSetTreeItemName(Tree tree, String itemName) {
+       TreeItem[] childItems = tree.getItems();
+       for (TreeItem childItem : childItems) {
+               TreeItemData treeItemData = (TreeItemData) childItem.getData("TREEITEMDATA");
+               if ((treeItemData != null) && (treeItemData.getOriginModelName().equals(itemName))) {
+                       return false;
+               }
+       }
+       return true;
+    }
 
     private static void makeViewModel(TreeItem item, TreeItem sourceItem) {
         TreeItemData treeItemData = (TreeItemData) item.getData("TREEITEMDATA");
index 59f5c00..9875442 100644 (file)
@@ -67,6 +67,7 @@ import org.tizen.webuibuilder.model.project.ProjectManager;
 import org.tizen.webuibuilder.ui.editor.PageDesigner;
 import org.tizen.webuibuilder.ui.views.databinding.actions.AddDataSourceAction;
 import org.tizen.webuibuilder.ui.views.databinding.actions.AddViewModelAction;
+import org.tizen.webuibuilder.ui.views.databinding.actions.AddViewModelItemAction;
 import org.tizen.webuibuilder.ui.views.databinding.actions.EditDataSourceAction;
 import org.tizen.webuibuilder.ui.views.databinding.actions.GetSourceAction;
 import org.tizen.webuibuilder.ui.views.databinding.actions.RemoveDataSourceAction;
@@ -89,6 +90,7 @@ public class DataBindingPage extends Page {
     private DataBindingView dataBindingView;
 
     private AddViewModelAction addViewModelAction;
+    private AddViewModelItemAction addViewModelItemAction;
     private EditDataSourceAction editDataModelAction;
     private SetTargetAction setTargetAction;
     private GetSourceAction getSourceAction;
@@ -241,7 +243,7 @@ public class DataBindingPage extends Page {
                 if (data == null) {
                     data = new TreeItemData();
                 }
-                data.setViewModelCount(i + 1);
+                //data.setViewModelCount(i + 1);
                 viewModelTree.setData("TREEITEMDATA", data);
             }
         }
@@ -269,7 +271,7 @@ public class DataBindingPage extends Page {
                 if (data == null) {
                     data = new TreeItemData();
                 }
-                data.setViewModelCount(i + 1);
+                //data.setViewModelCount(i + 1);
                 dataSourceTree.setData("TREEITEMDATA", data);
             }
         }
@@ -386,13 +388,12 @@ public class DataBindingPage extends Page {
 
             TreeItem[] subSubTreeItems = item.getItems();
             for (TreeItem subItem : subSubTreeItems) {
-                makeObservableObjectsFromTreeItem2(observableObject, subItem);
+                makeObservableObjectsFromSubTreeItem(observableObject, subItem);
             }
         }
     }
 
-    // FIXME change the func name...
-    private void makeObservableObjectsFromTreeItem2(BindingObject parent, TreeItem treeItem) {
+    private void makeObservableObjectsFromSubTreeItem(BindingObject parent, TreeItem treeItem) {
         TreeItem[] subTreeItems = treeItem.getItems();
         TreeItemData treeItemData = (TreeItemData) treeItem.getData("TREEITEMDATA");
         String type = null;
@@ -403,7 +404,7 @@ public class DataBindingPage extends Page {
         parent.add(observableObject);
 
         for (TreeItem item : subTreeItems) {
-            makeObservableObjectsFromTreeItem2(observableObject, item);
+            makeObservableObjectsFromSubTreeItem(observableObject, item);
         }
 
         /*
@@ -437,42 +438,127 @@ public class DataBindingPage extends Page {
      */
     public TreeItem addViewModel() {
 
-        TreeItem[] selectedItems = viewModelTree.getSelection();
+        TreeItem item = new TreeItem(viewModelTree, 0);
+        TreeItemData treeItemData = new TreeItemData();
+        TreeItemData modelTreeItemData = (TreeItemData) viewModelTree.getData("TREEITEMDATA");
 
-        if (selectedItems.length == 0) {
-            TreeItem item = new TreeItem(viewModelTree, 0);
-            TreeItemData treeItemData = new TreeItemData();
-            TreeItemData modelTreeItemData = (TreeItemData) viewModelTree.getData("TREEITEMDATA");
+        int idIndex = 0;
 
-            int count = 0;
-            if (modelTreeItemData != null) {
-                count = modelTreeItemData.getViewModelCount();
-            }
+        while (!canSetTreeItemName(viewModelTree, "model" + idIndex)) {
+               idIndex++;
+        }
 
-            item.setText("model" + count++);
-            if (modelTreeItemData == null) {
-                modelTreeItemData = new TreeItemData();
-            }
+        item.setText("model" + idIndex);
+        if (modelTreeItemData == null) {
+            modelTreeItemData = new TreeItemData();
+        }
 
-            modelTreeItemData.setViewModelCount(count);
-            viewModelTree.setData("TREEITEMDATA", modelTreeItemData);
+        viewModelTree.setData("TREEITEMDATA", modelTreeItemData);
 
-            treeItemData.setOriginModelName(item.getText());
+        treeItemData.setOriginModelName(item.getText());
 
-            BindingData bindingData = new BindingData();
-            bindingData.setModelType("STATIC");
-            treeItemData.setModel(bindingData);
-            item.setData("TREEITEMDATA", treeItemData);
-            viewModelTree.select(item);
-            return item;
-        } else {
+        BindingData bindingData = new BindingData();
+        bindingData.setModelType("STATIC");
+        treeItemData.setModel(bindingData);
+        item.setData("TREEITEMDATA", treeItemData);
+        viewModelTree.select(item);
+        return item;
+
+    }
+    
+    /**
+     * Adds a tree item in the view model panel.
+     * 
+     * @return tree item
+     */
+    public TreeItem addViewModelItem() {
+
+        TreeItem[] selectedItems = viewModelTree.getSelection();
+
+        if (selectedItems.length != 0) {
             TreeItem item = new TreeItem(selectedItems[0], 0);
-            item.setText("viewModelItem");
+            int idIndex = 0;
+
+            while (!canSetTreeItemName(selectedItems[0], "viewModelItem" + idIndex)) {
+               idIndex++;
+            }
+            
+            TreeItem parentItem = selectedItems[0];
+            if (parentItem != null) { 
+               TreeItemData treeItemData = (TreeItemData) parentItem.getData("TREEITEMDATA");
+                if (treeItemData != null) {
+                    if (treeItemData.getObjectType() == null) {
+                       treeItemData.setObjectType("JSONObject");
+                       parentItem.setData("TREEITEMDATA", treeItemData);
+                    } else {
+                       //do nothing
+                    }
+                    
+                } else {
+                       treeItemData = new TreeItemData();
+                       treeItemData.setObjectType("JSONObject");
+                       parentItem.setData("TREEITEMDATA", treeItemData);
+                }
+            }
+            
+            item.setText("viewModelItem"+ idIndex);
             viewModelTree.showItem(item);
             return item;
+        } else {
+               return null;
         }
 
     }
+    
+    /**
+     * Returns TRUE if tree item name can be set.
+     * @param tree 
+     *                           
+     * @param itemName
+     *            a tree item name
+     * @return true if tree item name can be set
+     */
+    private boolean canSetTreeItemName(Tree tree, String itemName) {
+       TreeItem[] childItems = tree.getItems();
+       for (TreeItem childItem : childItems) {
+               TreeItemData treeItemData = (TreeItemData) childItem.getData("TREEITEMDATA");
+               String originName = null;
+               String name;
+               if (treeItemData != null) {
+                       originName = treeItemData.getOriginModelName();
+               }
+               if (originName == null) {
+                       name = childItem.getText();
+               } else {
+                       name = originName;
+               }
+               
+               if (name != null) {
+                       if (name.equals(itemName)) {
+                               return false;
+                       }
+               }
+       }
+       return true;
+    }
+    
+    /**
+     * Returns TRUE if tree item name can be set.
+     * @param TreeItem
+     *                           
+     * @param itemName
+     *            a tree item name
+     * @return true if tree item name can be set
+     */
+    private boolean canSetTreeItemName(TreeItem treeItem, String itemName) {
+       TreeItem[] childItems = treeItem.getItems();
+       for (TreeItem childItem : childItems) {
+               if (childItem.getText().equals(itemName)) {
+                       return false;
+               }
+       }
+       return true;
+    }
 
     /**
      * Adds a tree item in the data source panel.
@@ -484,16 +570,17 @@ public class DataBindingPage extends Page {
         TreeItemData treeItemData = new TreeItemData();
         TreeItemData sourceTreeItemData = (TreeItemData) dataSourceTree.getData("TREEITEMDATA");
 
-        int count = 0;
-        if (sourceTreeItemData != null) {
-            count = sourceTreeItemData.getViewModelCount();
+        int idIndex = 0;
+
+        while (!canSetTreeItemName(dataSourceTree, "source" + idIndex)) {
+               idIndex++;
         }
 
-        item.setText("source" + count++);
+        item.setText("source" + idIndex);
         if (sourceTreeItemData == null) {
             sourceTreeItemData = new TreeItemData();
         }
-        sourceTreeItemData.setViewModelCount(count);
+
         dataSourceTree.setData("TREEITEMDATA", sourceTreeItemData);
 
         BindingData bindingData = new BindingData();
@@ -534,6 +621,16 @@ public class DataBindingPage extends Page {
     private void removeSelectedTreeItem(Tree tree) {
         TreeItem[] treeItems = tree.getSelection();
         for (TreeItem treeItem : treeItems) {
+               if (treeItem.getParentItem() != null) {
+                       if (treeItem.getParentItem().getItems().length == 1) { 
+                               TreeItemData treeItemData = (TreeItemData)treeItem.getParentItem().getData("TREEITEMDATA");
+                               
+                               if (treeItemData != null) {
+                                       treeItemData.setObjectType(null);
+                                       treeItem.getParentItem().setData("TREEITEMDATA", treeItemData);
+                               }
+                       }
+               }
             treeItem.dispose();
         }
     }
@@ -759,6 +856,7 @@ public class DataBindingPage extends Page {
     private void createActions() {
         editDataModelAction = new EditDataSourceAction("EDIT", dataBindingView);
         addViewModelAction = new AddViewModelAction("ADD", dataBindingView);
+        addViewModelItemAction = new AddViewModelItemAction("ADD ITEM", dataBindingView);
         setTargetAction = new SetTargetAction("SET TARGET", dataBindingView);
         getSourceAction = new GetSourceAction("GET SOURCE", dataBindingView);
 
@@ -812,6 +910,7 @@ public class DataBindingPage extends Page {
         toolBarManager.add(setTargetAction);
         toolBarManager.add(getSourceAction);
         toolBarManager.add(removeViewModelAction);
+        toolBarManager.add(addViewModelItemAction);
         toolBarManager.add(addViewModelAction);
         toolBarManager.update(true);
 
index 3053621..c2d0ac7 100644 (file)
@@ -1680,6 +1680,51 @@ public class SetSourceDialog extends Dialog {
         for (int i = 0; i < str.length; i++) {
             makeTreeItemsFromJson(jsonObject, (String) str[i], parentTreeItem, 0);
         }
+        
+        //makeJsonFromDialogTree();
     }
+    
+    private void makeJsonFromDialogTree() {
+       JSONObject jsonObject = new JSONObject();
+       TreeItem[] subItems = dialogTree.getItems();
+       
+       if (subItems.length != 0) {
+            for (TreeItem treeItem : subItems) {
+               makeJsonFromTreeItems(jsonObject, null, treeItem);
+
+            }
+        }
+       
+       String str = jsonObject.toJSONString();
+    }
+
+       private void makeJsonFromTreeItems(JSONObject jsonObject, JSONArray list, TreeItem treeItem) {
+       TreeItemData treeItemData = (TreeItemData) treeItem.getData("TREEITEMDATA");
+       String objectType = treeItemData.getObjectType();
+       if ((objectType != null) && (objectType.equals("JSONArray"))) {
+               if (list == null) {
+                       list = new JSONArray();
+               }
+               
+               TreeItem[] subItems = treeItem.getItems();
+               if (subItems.length != 0) {
+                for (TreeItem subItem : subItems) {
+                       makeJsonFromTreeItems(null, list, subItem);
+                }
+                jsonObject.put(treeItem.getText(), list);
+            }
+               
+       } else if ((objectType != null) && (objectType.equals("JSONObject"))) {
+               
+       } else {
+               if (list == null) {
+                       jsonObject.put(treeItem.getText(), treeItemData.getObjectValue());
+               } else {
+                       list.add(treeItemData.getObjectValue());
+               }
+       }
+
+       }
+
 
 }
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/actions/AddViewModelItemAction.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/actions/AddViewModelItemAction.java
new file mode 100644 (file)
index 0000000..b56416c
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * UI Builder
+ *
+ * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+
+package org.tizen.webuibuilder.ui.views.databinding.actions;
+
+import org.eclipse.gef.ui.actions.SelectionAction;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.IPage;
+import org.tizen.webuibuilder.ui.views.databinding.DataBindingPage;
+import org.tizen.webuibuilder.ui.views.databinding.DataBindingView;
+
+public class AddViewModelItemAction extends SelectionAction {
+
+       protected DataBindingView view;
+
+    /**
+     * Constructor.
+     * 
+     * @param text
+     * @param view
+     */
+    public AddViewModelItemAction(String text, DataBindingView view) {
+        super(null);
+        setText(text);
+        this.view = view;
+        setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
+                .getImageDescriptor(ISharedImages.IMG_OBJ_ADD));
+    }
+
+    @Override
+    protected boolean calculateEnabled() {
+        if (view == null) {
+            return false;
+        }
+
+        // if (!view.isActive()) {
+        // return false;
+        // }
+
+        return true;
+    }
+
+    @Override
+    public void run() {
+        IPage page = view.getCurrentPage();
+        if (!(page instanceof DataBindingPage)) {
+            return;
+        }
+        DataBindingPage dataBindingPage = (DataBindingPage) page;
+        if (dataBindingPage.addViewModelItem() != null) {
+               dataBindingPage.updateModel();
+        }
+    }
+
+}
index eb48b65..97f1bf3 100644 (file)
@@ -27,7 +27,6 @@ public class TreeItemData {
 
     private BindingData model;
     private String originModelName;
-    private int viewModelCount;
 
     private String objectType;
     private String objectValue;
@@ -69,24 +68,6 @@ public class TreeItemData {
     }
 
     /**
-     * Gets a view model number.
-     * 
-     * @return view model number
-     */
-    public int getViewModelCount() {
-        return viewModelCount;
-    }
-
-    /**
-     * Sets a view model number.
-     * 
-     * @param viewModelCount
-     */
-    public void setViewModelCount(int viewModelCount) {
-        this.viewModelCount = viewModelCount;
-    }
-
-    /**
      * Gets a object type.
      * 
      * @return object type