DATABIND: Modify the rename in the view model panel 50/20650/1
authorjaeyeol lee <jaeyeol148.lee@samsung.com>
Sun, 11 May 2014 07:59:28 +0000 (16:59 +0900)
committerjaeyeol lee <jaeyeol148.lee@samsung.com>
Sun, 11 May 2014 07:59:28 +0000 (16:59 +0900)
If rename the model, the binding property of the widget will be changed
automatically

Change-Id: Ie497329cf658accde20e063d973a044678202073
Signed-off-by: jaeyeol lee <jaeyeol148.lee@samsung.com>
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerXYLayoutEditPolicy.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSet.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSetEvent.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/IBindingDataSetListener.java

index c14a2ce..6fc6f0b 100644 (file)
 
 package org.tizen.webuibuilder.gef.policies;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.draw2d.geometry.Point;
index 479a37c..f694d33 100644 (file)
@@ -1364,6 +1364,31 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
         composite.setFocus();
 
     }
+    
+    private void renameBindingProperties(String newValue, String oldValue) {
+        TableItem[] tableItems = infoTableViewer.getTable().getItems();
+        for (TableItem tableItem : tableItems) {
+            Part part = (Part) tableItem.getData("PART");
+            if (part != null) {
+                String propertyValue =
+                        part.getProperty(BuilderConstants.ATTRIBUTE_DATA_BIND).getValue();
+                if ((propertyValue != null) && (!propertyValue.isEmpty())) {
+                    Map<String, String> bindingInfos = DataBindingTooltipParser.parseToMap(propertyValue);
+                    Object[] bindingTypes = bindingInfos.keySet().toArray();
+                    for (Object bindingType : bindingTypes) {
+                        String value = bindingInfos.get(bindingType);
+                        if ((value != null) && (value.startsWith(oldValue))) {
+                            value = value.replace(oldValue, newValue);
+                            bindingInfos.remove(bindingType.toString());
+                            bindingInfos.put(bindingType.toString(), value);
+                            String bindingInfo = DataBindingTooltipParser.makeStringFromMap(bindingInfos);
+                            part.setPropertyValue(BuilderConstants.ATTRIBUTE_DATA_BIND, bindingInfo);
+                        }
+                    }
+                }
+            }
+        }
+    }
 
     /**
      * Sets a project.
@@ -1581,6 +1606,7 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
 
     @Override
     public void viewModelRenamed(BindingDataSetEvent e) {
+        renameBindingProperties(e.getValue(), e.getOldValue());
         refresh();
     }
 
@@ -1593,5 +1619,11 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
     public void viewModelChanged(BindingDataSetEvent e) {
         refresh();
     }
+    
+    @Override
+    public void viewModelItemRenamed(BindingDataSetEvent e) {
+        renameBindingProperties(e.getValue(), e.getOldValue());
+        refresh();
+    }
 
 }
index e1f73e7..97ab28a 100644 (file)
@@ -151,12 +151,29 @@ public class BindingDataSet {
        public void renameViewModel(BindingDataSetEventType type,
                        BindingData bindingData, String newName, List<String> itemPath) {
                if (type.equals(BindingDataSetEventType.VIEWMODEL_RENAMED)) {
+                   String oldName = bindingData.getModelName();
                        bindingData.setModelName(newName);
+                       fireEvent(new BindingDataSetEvent(BindingDataSetEventType.VIEWMODEL_RENAMED, bindingData, newName, oldName));
                } else if (type.equals(BindingDataSetEventType.VIEWMODEL_ITEM_RENAMED)) {
                        BindingObject viewModelObject = getViewModelObject(bindingData, itemPath);
                        viewModelObject.setName(newName);
+                       String oldPath = "";
+                       for (int i=itemPath.size()-1; i>=0; i--) {
+                           if (!oldPath.isEmpty()) {
+                               oldPath += ".";
+                           }
+                           oldPath += itemPath.get(i);
+                       }
+                       String newPath = "";
+            for (int i=itemPath.size()-1; i>=1; i--) {
+                if (!newPath.isEmpty()) {
+                    newPath += ".";
+                }
+                newPath += itemPath.get(i);
+            }
+            newPath += "." + newName;
+                       fireEvent(new BindingDataSetEvent(BindingDataSetEventType.VIEWMODEL_ITEM_RENAMED, bindingData, newPath, oldPath));
                }
-               fireEvent(new BindingDataSetEvent(BindingDataSetEventType.VIEWMODEL_CHANGED, bindingData, null, getNumberOfViewModels() - 1 , null));
        }
 
     private BindingObject getViewModelParentObject(BindingData bindingData,
@@ -511,6 +528,9 @@ public class BindingDataSet {
                 case VIEWMODEL_CHANGED:
                     listener.viewModelChanged(bindingEvent);
                     break;
+                case VIEWMODEL_ITEM_RENAMED:
+                    listener.viewModelItemRenamed(bindingEvent);
+                    break;
                 default:
                     assert (false);
             }
index f3e1410..a4b6594 100644 (file)
@@ -16,19 +16,19 @@ public class BindingDataSetEvent {
     private BindingData oldBindingData;
     private String oldValue;
 
-    public BindingDataSetEvent(BindingDataSetEventType type, BindingData page, int index, BindingData oldPage) {
+    public BindingDataSetEvent(BindingDataSetEventType type, BindingData page, int index, BindingData oldBindingData) {
         this.type = type;
         this.bindingData = page;
         this.index = index;
-        this.oldBindingData = oldPage;
+        this.oldBindingData = oldBindingData;
     }
 
-    public BindingDataSetEvent(BindingDataSetEventType type, BindingData page, String value, int index, BindingData oldPage) {
+    public BindingDataSetEvent(BindingDataSetEventType type, BindingData page, String value, int index, BindingData oldBindingData) {
         this.type = type;
         this.bindingData = page;
         this.value = value;
         this.index = index;
-        this.oldBindingData = oldPage;
+        this.oldBindingData = oldBindingData;
        }
     
     public BindingDataSetEvent(BindingDataSetEventType type, BindingData page, String value, String oldValue) {
index e692571..a2201ce 100644 (file)
@@ -25,5 +25,7 @@ public interface IBindingDataSetListener extends EventListener {
        void viewModelMoved(BindingDataSetEvent e);
        
        void viewModelChanged(BindingDataSetEvent e);
+
+    void viewModelItemRenamed(BindingDataSetEvent e);
        
 }