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;
private DataBindingView dataBindingView;
private AddViewModelAction addViewModelAction;
+ private AddViewModelItemAction addViewModelItemAction;
private EditDataSourceAction editDataModelAction;
private SetTargetAction setTargetAction;
private GetSourceAction getSourceAction;
if (data == null) {
data = new TreeItemData();
}
- data.setViewModelCount(i + 1);
+ //data.setViewModelCount(i + 1);
viewModelTree.setData("TREEITEMDATA", data);
}
}
if (data == null) {
data = new TreeItemData();
}
- data.setViewModelCount(i + 1);
+ //data.setViewModelCount(i + 1);
dataSourceTree.setData("TREEITEMDATA", data);
}
}
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;
parent.add(observableObject);
for (TreeItem item : subTreeItems) {
- makeObservableObjectsFromTreeItem2(observableObject, item);
+ makeObservableObjectsFromSubTreeItem(observableObject, item);
}
/*
*/
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.
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();
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();
}
}
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);
toolBarManager.add(setTargetAction);
toolBarManager.add(getSourceAction);
toolBarManager.add(removeViewModelAction);
+ toolBarManager.add(addViewModelItemAction);
toolBarManager.add(addViewModelAction);
toolBarManager.update(true);
--- /dev/null
+/*
+ * 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();
+ }
+ }
+
+}