DATABIND: modify the rename rule in the data source panel 42/20842/1
authorjaeyeol lee <jaeyeol148.lee@samsung.com>
Tue, 13 May 2014 06:53:40 +0000 (15:53 +0900)
committerjaeyeol lee <jaeyeol148.lee@samsung.com>
Tue, 13 May 2014 06:53:40 +0000 (15:53 +0900)
Change-Id: Ic2d91d2f9a69eeb6ad3ca7831aa32c9c799f04db
Signed-off-by: jaeyeol lee <jaeyeol148.lee@samsung.com>
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/SetDataSourceCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/gef/commands/SetViewModelCommand.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/AppManager.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingPage.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/BindingData.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/IBindingDataSetListener.java

index 6457fe8..275cc13 100644 (file)
@@ -47,16 +47,18 @@ public class SetDataSourceCommand extends Command {
        public void execute() {
         if (canExecute()) {
                if (type.equals(BindingDataSetEventType.DATASOURCE_REMOVED)) {
+                   oldModels.clear();
                    for (BindingData model : appManager.getViewModels()) {
                        oldModels.add(model.clone());
                    }
                        appManager.removeDataSource(bindingData);
                } else if (type.equals(BindingDataSetEventType.DATASOURCE_CHANGED)) {
-                       oldBindingData = appManager.getDataSource(bindingData.getItemName());
-                       if (oldBindingData != null) {
-                               appManager.removeDataSource(oldBindingData);
-                       }
-                       appManager.addDataSource(bindingData, null);
+                       oldBindingData = appManager.getDataSource(bindingData.getSourceName()).clone();
+                       oldModels.clear();
+                       for (BindingData model : appManager.getViewModels()) {
+                    oldModels.add(model.clone());
+                }
+                       appManager.changeDataSource(bindingData, null);
                } else if (type.equals(BindingDataSetEventType.DATASOURCE_RENAMED)) {
                        oldName = bindingData.getSourceName();
                        renameDataSource(value);
@@ -75,8 +77,8 @@ public class SetDataSourceCommand extends Command {
                if (type.equals(BindingDataSetEventType.DATASOURCE_REMOVED)) {
                appManager.addDataSource(bindingData, oldModels);
                } else if (type.equals(BindingDataSetEventType.DATASOURCE_CHANGED)) {
-               appManager.removeDataSource(bindingData);
-               appManager.addDataSource(oldBindingData, null);
+               //appManager.removeDataSource(bindingData);
+               appManager.changeDataSource(oldBindingData, oldModels);
                } else if (type.equals(BindingDataSetEventType.DATASOURCE_RENAMED)) {
                        renameDataSource(oldName);
        } else {
index e1970e1..c6b0b8f 100644 (file)
@@ -62,6 +62,43 @@ public class SetViewModelCommand extends Command {
         }
     }
        
+       private void renameViewModel(String newName) {
+        appManager.renameViewModel(type, bindingData, newName, itemPath);
+    }
+
+    private BindingData getViewModel(String name) {
+        return appManager.getViewModel(name);
+    }
+
+    private BindingObject getViewModelObject(BindingData bindingData,
+            List<String> itemPath) {
+
+        return appManager.getViewModelObject(bindingData, itemPath);
+    }
+    
+    private void setViewModelItem(BindingDataSetEventType type) {
+        appManager.changeViewModel(type, bindingData, itemPath, childName, value);
+    }
+    
+    private void setViewModelItem(BindingDataSetEventType type, BindingObject oldViewModelObject) {
+        appManager.changeViewModel(type, bindingData, itemPath, oldViewModelObject, value);
+    }
+    
+    private void setDataSource(BindingDataSetEventType type, BindingData bindingData,  BindingData oldBindingData) {
+        appManager.changeViewModel(type, bindingData, oldBindingData);
+    }
+
+    private void setViewModel(BindingDataSetEventType type) {
+        if (type.equals(BindingDataSetEventType.VIEWMODEL_REMOVED)) {
+            if (!(appManager.getViewModel(bindingData.getItemName())).equals(bindingData)) {
+                bindingData = appManager.getViewModel(bindingData.getItemName());
+            }
+            appManager.removeViewModel(bindingData);
+        } else {
+            appManager.addViewModel(bindingData);
+        }
+    }
+       
        @Override
        public void execute() {
         if (canExecute()) {
@@ -91,39 +128,7 @@ public class SetViewModelCommand extends Command {
         }
     }
        
-       private void renameViewModel(String newName) {
-               appManager.renameViewModel(type, bindingData, newName, itemPath);
-       }
-
-       private BindingData getViewModel(String name) {
-               return appManager.getViewModel(name);
-       }
-
-       private BindingObject getViewModelObject(BindingData bindingData,
-                       List<String> itemPath) {
-
-               return appManager.getViewModelObject(bindingData, itemPath);
-       }
        
-       private void setViewModelItem(BindingDataSetEventType type) {
-               appManager.changeViewModel(type, bindingData, itemPath, childName, value);
-       }
-       
-       private void setViewModelItem(BindingDataSetEventType type, BindingObject oldViewModelObject) {
-               appManager.changeViewModel(type, bindingData, itemPath, oldViewModelObject, value);
-       }
-       
-       private void setDataSource(BindingDataSetEventType type, BindingData bindingData,  BindingData oldBindingData) {
-               appManager.changeViewModel(type, bindingData, oldBindingData);
-       }
-
-       private void setViewModel(BindingDataSetEventType type) {
-               if (type.equals(BindingDataSetEventType.VIEWMODEL_REMOVED)) {
-               appManager.removeViewModel(bindingData);
-       } else {
-               appManager.addViewModel(bindingData);
-       }
-       }
 
        @Override
     public void undo() {
index 64dc178..51bba8c 100644 (file)
@@ -782,9 +782,13 @@ public class AppManager implements IPageDataSetListener, IAppListener {
     public void removeDataSource(BindingData bindingData) {
         bindingDataSet.removeDataSource(bindingData);
     }
-
-    public void renameDataSource(BindingDataSetEventType type, BindingData bindingData,
-                                 String newName) {
+    
+    public void changeDataSource(BindingData bindingData, List<BindingData> oldModels) {
+        bindingDataSet.changeDataSource(bindingData, oldModels);
+    }
+    
+    public void renameDataSource(BindingDataSetEventType type,
+                       BindingData bindingData, String newName) {
         bindingDataSet.renameDataSource(type, bindingData, newName);
     }
 
index f694d33..1739380 100644 (file)
@@ -624,7 +624,7 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
             bindingData.setModelType(dataSource.getModelType());
             bindingData.setUpdateOnStartup(dataSource.getUpdateOnStartup());
             bindingData.addAllHandlerInfos(dataSource.getHandlerInfos());
-            bindingData.addAllViewModelObjects(dataSource.getDataSourceObjects());
+            bindingData.appendAllViewModelObjects(dataSource.getDataSourceObjects());
 
             Command command =
                     new SetViewModelCommand(BindingDataSetEventType.VIEWMODEL_SET_DATASOURCE,
@@ -687,7 +687,7 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
                         new SetViewModelCommand(BindingDataSetEventType.VIEWMODEL_REMOVED,
                                                 pageDesigner.getAppManager(), bindingData, 0);
                 
-                Command removeCommand = removeBindingInfo(treeItem.getText(), null);
+                Command removeCommand = removeBindingInfo(bindingData.getModelName(), null);
                 if (removeCommand != null) {
                     command = command.chain(removeCommand);
                 }
@@ -964,6 +964,15 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
         }
         return command;
     }
+    
+//    private void removeDataSourceObjectInModel(BindingData bindingData) {
+//        for (BindingData model : viewModels) {
+//            if ((model.getSourceName() != null) && (model.getSourceName().equals(bindingData.getSourceName()))) {
+//                model.removeAllDataSourceObject(bindingData.getDataSourceObjects());
+//                model.setSourceName(null);
+//            }
+//        }
+//    }
 
     private Part getPartFromInfoTabel(TableItem tableItem, String[] modelPath, List<String> itemPath) {
         Part part = null;
@@ -1583,6 +1592,19 @@ public class DataBindingPage extends Page implements IBindingDataSetListener {
         
         refresh();
     }
+    
+    @Override
+    public void dataSourceChanged(BindingDataSetEvent e) {
+        if (pageDesigner != null) {
+            List<BindingData> models = pageDesigner.getAppManager().getViewModels();
+            for (BindingData model : models) {
+                if ((model.getSourceName() != null)&&(model.getSourceName().equals(e.getBindingData().getSourceName()))) {
+                    model.appendAllViewModelObjects(e.getBindingData().getDataSourceObjects());
+                }
+            }
+        }
+        refresh();
+    }
 
     @Override
     public void dataSourceMoved(BindingDataSetEvent e) {
index 5593776..cee011e 100644 (file)
@@ -431,6 +431,22 @@ public class BindingData {
         clearViewModelObjects();
         viewModelObjects.addAll( viewModels );
     }
+    
+    public void appendAllViewModelObjects( List<BindingObject> viewModels ) {
+        boolean checked = false;
+        for (BindingObject obj : viewModels) {
+            checked = false;
+            for (BindingObject model : viewModelObjects) {
+                if (model.getName().equals(obj.getName())) {
+                    checked = true;
+                    break;
+                }
+            }
+            if (!checked) {
+                viewModelObjects.add(obj);
+            }
+        }
+    }
 
     public void addAllDataSourceObjects( List<BindingObject> dataSources ) {
         clearDataSourceObjects();
index 97ab28a..c6fcfb7 100644 (file)
@@ -389,6 +389,65 @@ public class BindingDataSet {
         fireEvent(new BindingDataSetEvent(BindingDataSetEventType.DATASOURCE_ADDED, bindingData, getNumberOfDataSources() - 1 , null));
     }
     
+    /**
+     * Change a data source.
+     * 
+     * @param bindingData
+     *            a data source
+     */
+    public void changeDataSource(BindingData bindingData, List<BindingData> oldModels) {
+        
+        List<BindingData> dataSources = getDataSources();
+        int index;
+        if (!dataSources.isEmpty()) {
+            for (index = 0; index < getNumberOfDataSources(); index++) {
+                BindingData dataSource = dataSources.get(index);
+                if (dataSource.getSourceName().equals(bindingData.getSourceName())) {
+                    dataSource.setItemName(bindingData.getItemName());
+                    dataSource.setModelName(bindingData.getModelName());
+                    dataSource.setSourceName(bindingData.getSourceName());
+                    dataSource.setModelType(bindingData.getModelType());
+                    dataSource.setUpdateOnStartup(bindingData.getUpdateOnStartup());
+                    dataSource.addAllHandlerInfos(bindingData.getHandlerInfos());
+                    dataSource.addAllViewModelObjects(bindingData.getViewModelObjects());
+                    dataSource.addAllDataSourceObjects(bindingData.getDataSourceObjects());
+                    dataSource.setStaticFilePath(bindingData.getStaticFilePath());
+                    dataSource.setJsonData(bindingData.getJsonData());
+                    dataSource.setURL(bindingData.getURL());
+                    dataSource.setMethod(bindingData.getMethod());
+                    dataSource.setProxy(bindingData.getProxy());
+                    dataSource.setQuery(bindingData.getQuery());
+                    dataSource.setSourceType(bindingData.getSourceType());
+                    dataSource.setTimeout(bindingData.getTimeout());
+                    dataSource.addAllHeaderInfos(bindingData.getHeaders());
+                    dataSource.setRuntimeApiName(bindingData.getRuntimeApiName());
+                    dataSource.setRuntimeApiAddressBookID(bindingData.getRuntimeApiAddressBookID());
+                    dataSource.setCallHistoryType(bindingData.getCallHistoryType());
+                    dataSource.setCallHistoryDirection(bindingData.getCallHistoryDirection());
+                    dataSource.setCallHistoryStartTimeOrder(bindingData.getCallHistoryStartTimeOrder());
+                    dataSource.setCalendarName(bindingData.getCalendarName());
+                    dataSource.setCalendarType(bindingData.getCalendarType());
+                    dataSource.setCalendarID(bindingData.getCalendarID());
+                    break;
+                }
+            }   
+        }
+        
+        if ((oldModels != null) && (!oldModels.isEmpty())) {
+            viewModels.clear();
+            viewModels.addAll(oldModels);
+        }
+        
+        selectionPath.clear();
+        if (bindingData.getItemName() == null) {
+            selectionPath.add(bindingData.getSourceName());
+        } else {
+            selectionPath.add(bindingData.getItemName());
+        }
+        
+        fireEvent(new BindingDataSetEvent(BindingDataSetEventType.DATASOURCE_CHANGED, bindingData, getNumberOfDataSources() - 1 , null));
+    }
+    
 //    public BindingData getDataSource(String name) {
 //     List<BindingData> DataSources = getDataSources();
 //     for (BindingData DataSource : DataSources) {
@@ -438,7 +497,7 @@ public class BindingDataSet {
     private void removeDataSourceObjectInModel(BindingData bindingData) {
         for (BindingData model : viewModels) {
             if ((model.getSourceName() != null) && (model.getSourceName().equals(bindingData.getSourceName()))) {
-                model.removeAllDataSourceObject(bindingData.getDataSourceObjects());
+                //model.removeAllDataSourceObject(bindingData.getDataSourceObjects());
                 model.setSourceName(null);
             }
         }
@@ -510,6 +569,9 @@ public class BindingDataSet {
                 case DATASOURCE_MOVED:
                     listener.dataSourceMoved(bindingEvent);
                     break;
+                case DATASOURCE_CHANGED:
+                    listener.dataSourceChanged(bindingEvent);
+                    break;
                 case ALL_VIEWMODEL_RESETED:
                     listener.allViewModelReseted(bindingEvent);
                     break;
index a2201ce..624156f 100644 (file)
@@ -14,6 +14,8 @@ public interface IBindingDataSetListener extends EventListener {
        
        void dataSourceMoved(BindingDataSetEvent e);
        
+       void dataSourceChanged(BindingDataSetEvent e);
+       
        void allViewModelReseted(BindingDataSetEvent e);
        
        void viewModelAdded(BindingDataSetEvent e);