From dded31a8b555f6caa36839f780d1b4251e699297 Mon Sep 17 00:00:00 2001 From: jaeyeol lee Date: Tue, 18 Feb 2014 14:49:18 +0900 Subject: [PATCH] DATABIND : Change the view model naming rule. The same view model name will not be created Change-Id: I79fd6decec4ff63cd6dd9ce9076691709dd0dedb Signed-off-by: jaeyeol lee --- .../widget/html.headingone.widget.xml | 2 + .../Tizen-web-ui-fw/widget/tizen.button.widget.xml | 2 + .../Tizen-web-ui-fw/widget/tizen.list.widget.xml | 2 + .../widget/tizen.listitemsubtextone.widget.xml | 2 + .../widget/tizen.listitemthumbnail.widget.xml | 2 + .../views/databinding/DataBindingDnDManager.java | 31 +++- .../ui/views/databinding/DataBindingPage.java | 169 ++++++++++++++++----- .../ui/views/databinding/SetSourceDialog.java | 45 ++++++ .../actions/AddViewModelItemAction.java | 76 +++++++++ .../ui/views/databinding/model/TreeItemData.java | 19 --- 10 files changed, 289 insertions(+), 61 deletions(-) create mode 100644 org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/actions/AddViewModelItemAction.java diff --git a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/html.headingone.widget.xml b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/html.headingone.widget.xml index a584561..28854cf 100644 --- a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/html.headingone.widget.xml +++ b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/html.headingone.widget.xml @@ -24,6 +24,8 @@ --> + + diff --git a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.button.widget.xml b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.button.widget.xml index 41f8213..96b1681 100644 --- a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.button.widget.xml +++ b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.button.widget.xml @@ -60,6 +60,8 @@ + + diff --git a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.list.widget.xml b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.list.widget.xml index 0a58442..1ace03b 100644 --- a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.list.widget.xml +++ b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.list.widget.xml @@ -23,6 +23,8 @@ --> + + diff --git a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemsubtextone.widget.xml b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemsubtextone.widget.xml index 6981a98..853b71f 100644 --- a/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemsubtextone.widget.xml +++ b/org.tizen.webuibuilder/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemsubtextone.widget.xml @@ -32,6 +32,8 @@ --> + + + + diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingDnDManager.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingDnDManager.java index ca8e7a2..ff060f5 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingDnDManager.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/DataBindingDnDManager.java @@ -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"); 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 59f5c00..9875442 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 @@ -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); diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/SetSourceDialog.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/SetSourceDialog.java index 3053621..c2d0ac7 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/SetSourceDialog.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/SetSourceDialog.java @@ -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 index 0000000..b56416c --- /dev/null +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/actions/AddViewModelItemAction.java @@ -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(); + } + } + +} diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/TreeItemData.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/TreeItemData.java index eb48b65..97f1bf3 100644 --- a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/TreeItemData.java +++ b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/databinding/model/TreeItemData.java @@ -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 -- 2.7.4