From 2bad52446b1cfebb3d5fd011f817d08dcf3a953a Mon Sep 17 00:00:00 2001 From: jaeyeol lee Date: Sun, 11 May 2014 16:59:28 +0900 Subject: [PATCH] DATABIND: Modify the rename in the view model panel If rename the model, the binding property of the widget will be changed automatically Change-Id: Ie497329cf658accde20e063d973a044678202073 Signed-off-by: jaeyeol lee --- .../gef/policies/DesignerXYLayoutEditPolicy.java | 2 -- .../ui/views/databinding/DataBindingPage.java | 32 ++++++++++++++++++++++ .../ui/views/databinding/model/BindingDataSet.java | 22 ++++++++++++++- .../databinding/model/BindingDataSetEvent.java | 8 +++--- .../databinding/model/IBindingDataSetListener.java | 2 ++ 5 files changed, 59 insertions(+), 7 deletions(-) diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerXYLayoutEditPolicy.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerXYLayoutEditPolicy.java index c14a2ce..6fc6f0b 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerXYLayoutEditPolicy.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/policies/DesignerXYLayoutEditPolicy.java @@ -23,10 +23,8 @@ 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; diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java index 479a37c..f694d33 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java @@ -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 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(); + } } diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSet.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSet.java index e1f73e7..97ab28a 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSet.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSet.java @@ -151,12 +151,29 @@ public class BindingDataSet { public void renameViewModel(BindingDataSetEventType type, BindingData bindingData, String newName, List 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); } diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSetEvent.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSetEvent.java index f3e1410..a4b6594 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSetEvent.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingDataSetEvent.java @@ -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) { diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/IBindingDataSetListener.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/IBindingDataSetListener.java index e692571..a2201ce 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/IBindingDataSetListener.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/IBindingDataSetListener.java @@ -25,5 +25,7 @@ public interface IBindingDataSetListener extends EventListener { void viewModelMoved(BindingDataSetEvent e); void viewModelChanged(BindingDataSetEvent e); + + void viewModelItemRenamed(BindingDataSetEvent e); } -- 2.7.4