final String value = list.get(i).getValue();
final String displayName = list.get(i).getDisplayName();
if ((displayName != null) && (!displayName.isEmpty())) {
- item.setText(displayName);
+ item.setText(value + "[" + displayName + "]");
} else {
item.setText(value);
}
item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
String str = targetPart.getProperty(BuilderConstants.ATTRIBUTE_DATA_BIND).getValue();
- final String info = makeInfoString(targetPart, property2, displayName, value, str);
+ final String info = DataBindingTooltipParser.makeInfoString(targetPart, property2.getValue(), displayName, value, str);
command =
new SetPartPropertyCommand(targetPart, BuilderConstants.ATTRIBUTE_DATA_BIND,
info);
return command;
}
-
- private String makeInfoString(Part targetPart, PartProperty property2, String displayName, String value, String str) {
- String string = "";
-
- if ((str != null) && (!str.isEmpty())) {
- Map<String, String> bindingInfos = DataBindingTooltipParser.parseToMap(str);
-
- if (bindingInfos.containsKey(value)) {
- bindingInfos.remove(value);
- } else if (bindingInfos.containsKey("attr-"+displayName)) {
- bindingInfos.remove("attr-"+displayName);
- }
-
- if ((displayName != null) && (!displayName.isEmpty())) {
- bindingInfos.put("attr-"+displayName, property2.getValue());
- } else {
- bindingInfos.put(value, property2.getValue());
- }
-
- string = DataBindingTooltipParser.makeStringFromMap(bindingInfos);
- } else {
- if ((displayName != null) && (!displayName.isEmpty())) {
- string = value + ": { " + displayName + ": " + property2.getValue() + " }";
- } else {
- if (targetPart.getDescriptorId().equals("tizen.listitem")) {
- string = value + ": " + property2.getValue() + BuilderConstants.DATABINDING_ARRAYITEM_VALUE_SUFFIX;
- } else {
- string = value + ": " + property2.getValue();
- }
- }
- }
-
- return string;
- }
-
private boolean hasProperty(EditPart editPart, String name) {
if (editPart == null) {
return false;
});
}
- /**
- * Creates a view model information.
- *
- * @param treeItem
- * @return view model information
- */
- private static String makeViewModelInfo(TreeItem treeItem) {
- String str = "";
- while ((treeItem.getParentItem() != null)) {
- if (str.isEmpty()) {
- str = treeItem.getText();
- } else {
- str = treeItem.getText() + "." + str;
- }
- treeItem = treeItem.getParentItem();
- }
- TreeItemData treeItemData = (TreeItemData) treeItem.getData("TREEITEMDATA");
- str = treeItemData.getOriginModelName() + "." + str;
- return str;
- }
+
/**
* Adds a drag and drop listener to the view model tree.
event.doit = true;
dragSourceItem[0] = selection[0]; // TODO multiselect
TreeItemData treeItemData = (TreeItemData) selection[0].getData("TREEITEMDATA");
- String viewModelInfo;
String dataType = null;
if ((treeItemData != null) && (treeItemData.getObjectType() != null)
dataType = treeItemData.getObjectType();
}
- if ((selection[0].getParentItem() != null)
- && (selection[0].getParentItem().getData("TREEITEMDATA") != null)
- && (((TreeItemData) selection[0].getParentItem()
- .getData("TREEITEMDATA")).getObjectType() != null)
- && (((TreeItemData) selection[0].getParentItem()
- .getData("TREEITEMDATA")).getObjectType().equals("Array"))) {
- viewModelInfo = BuilderConstants.DATABINDING_ARRAYITEM_VALUE_PREFIX + selection[0].getText();
- } else {
- viewModelInfo = makeViewModelInfo(selection[0]);
- }
+ String viewModelInfo = DataBindingTooltipParser.makeViewModelInfo(selection[0]);
+
// FIXME "id"
DataBindingTemplate dataBindingTemplate =
new DataBindingTemplate("id", viewModelInfo, dataType);
dragSourceItem[0].dispose();
}
- DataBindingPage dataBindingPage = getDataBindingPage(dataBindingView);
- if (dataBindingPage != null) {
- dataBindingPage.refresh();
- }
-
dragSourceItem[0] = null;
TemplateTransfer.getInstance().setTemplate(null);
}
private List<Part> pageList = new ArrayList<Part>();
private IAction undoHandler;
private IAction redoHandler;
-
+ private Part selectedPart = null;
private boolean showBindInfo = false;
-
+
// private List<String> itemPath;
public DataBindingPage(DataBindingView dataBindingView) {
if (modelValue.startsWith(BuilderConstants.DATABINDING_ARRAYITEM_VALUE_PREFIX)) {
String parentPropertyValue = getParentPropertyValue(part, modelValue);
if (parentPropertyValue != null) {
- addInfoTableItem(part, parentPropertyValue, part.getIdPropertyValue(),
+ addInfoTableItem(part, parentPropertyValue, part.getOwnerPage().getIdPropertyValue() + "." + part.getIdPropertyValue(),
key);
break;
}
} else {
- addInfoTableItem(part, modelValue, part.getIdPropertyValue(), key);
+ addInfoTableItem(part, modelValue, part.getOwnerPage().getIdPropertyValue() + "." + part.getIdPropertyValue(), key);
}
}
}
getCommandStackFromPageDesigner().execute(command);
}
}
+
+ public void setBindingInfoToPart(Part targetPart, String viewModelInfo, String infoDisplayName,
+ String infoValue) {
+ String str = targetPart.getProperty(BuilderConstants.ATTRIBUTE_DATA_BIND).getValue();
+ final String info = DataBindingTooltipParser.makeInfoString(targetPart, viewModelInfo, infoDisplayName, infoValue, str);
+ getCommandStackFromPageDesigner().execute(new SetPartPropertyCommand(targetPart, BuilderConstants.ATTRIBUTE_DATA_BIND, info));
+
+ }
/**
* Check the duplicated binding information.
return projectManager;
}
+
+ /**
+ * Gets a page designer
+ *
+ * @return page designer
+ */
+ public PageDesigner getPageDesigner() {
+ return pageDesigner;
+
+ }
private CommandStack getCommandStackFromPageDesigner() {
// if (dataBindingView.getSite().getPage().getActiveEditor() instanceof PageDesigner) {
getActionRegistryFromPageDesigner().getAction(ActionFactory.REDO.getId());
}
- pageDesigner.getAppManager().getBindingDataSet().addBindingDataListener(this);
-
+ if (pageDesigner != null) {
+ pageDesigner.getAppManager().getBindingDataSet().addBindingDataListener(this);
+
+ //TODO addListener only current page
+ List<PageData> pageData = pageDesigner.getAppManager().getPages();
+ for (int i = 0; i < pageData.size(); i++) {
+ List<Part> childParts = pageData.get(i).getRootPart().getChildren();
+ for (Part childPart : childParts) {
+ if (childPart.getOwnerPage() != null) {
+ if (!pageList.contains(childPart.getOwnerPage())) {
+ pageList.add(childPart.getOwnerPage());
+ addListeners(childPart.getOwnerPage());
+ }
+ }
+ }
+ }
+ }
}
public PageDesigner getInput() {
if (editPart.getModel() instanceof Part) {
Part model = (Part) editPart.getModel();
selModels.add(model);
+ setSelectedPart(model);
}
}
}
}
}
}
+
+ public Part getSelectedPart() {
+ return selectedPart;
+ }
+
+ public void setSelectedPart(Part selectedPart) {
+ this.selectedPart = selectedPart;
+ }
public void updateDataSourceMenus() {
if (removeDataSourceAction != null) {
import java.util.List;
import java.util.Map;
-import javax.activation.CommandInfo;
-
+import org.eclipse.swt.widgets.TreeItem;
+import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.model.Part;
import org.tizen.webuibuilder.ui.views.databinding.model.DataBindingTooltipData;
+import org.tizen.webuibuilder.ui.views.databinding.model.TreeItemData;
public class DataBindingTooltipParser {
}
private static void put(Map<String, String> bindingInfos, String string) {
- String[] infos = string.split(": ");
- if (infos.length == 2) {
- if ((infos[0] != null) && (!infos[0].isEmpty())) {
- if ((infos[1] != null) && (!infos[1].isEmpty())) {
- bindingInfos.put(infos[0], infos[1]);
- }
- }
- }
+ String[] infos = string.split(": ");
+ if (infos.length == 2) {
+ if ((infos[0] != null) && (!infos[0].isEmpty())) {
+ if ((infos[1] != null) && (!infos[1].isEmpty())) {
+ bindingInfos.put(infos[0], infos[1]);
+ }
+ }
+ }
}
public static String makeStringFromMap(Map<String, String> bindingInfos) {
return string;
}
+
+ public static String makeInfoString(Part targetPart, String viewModelInfo, String displayName, String value, String str) {
+ String string = "";
+
+ if ((str != null) && (!str.isEmpty())) {
+ Map<String, String> bindingInfos = DataBindingTooltipParser.parseToMap(str);
+
+ if (bindingInfos.containsKey(value)) {
+ bindingInfos.remove(value);
+ } else if (bindingInfos.containsKey("attr-"+displayName)) {
+ bindingInfos.remove("attr-"+displayName);
+ }
+
+ if ((displayName != null) && (!displayName.isEmpty())) {
+ bindingInfos.put("attr-"+displayName, viewModelInfo);
+ } else {
+ bindingInfos.put(value, viewModelInfo);
+ }
+
+ string = DataBindingTooltipParser.makeStringFromMap(bindingInfos);
+ } else {
+ if ((displayName != null) && (!displayName.isEmpty())) {
+ string = value + ": { " + displayName + ": " + viewModelInfo + " }";
+ } else {
+ if (targetPart.getDescriptorId().equals("tizen.listitem")) {
+ string = value + ": " + viewModelInfo + BuilderConstants.DATABINDING_ARRAYITEM_VALUE_SUFFIX;
+ } else {
+ string = value + ": " + viewModelInfo;
+ }
+ }
+ }
+
+ return string;
+ }
+
+ /**
+ * Creates a view model information.
+ *
+ * @param treeItem
+ * @return view model information
+ */
+ public static String makeViewModelInfoString(TreeItem treeItem) {
+ String str = "";
+ while ((treeItem.getParentItem() != null)) {
+ if (str.isEmpty()) {
+ str = treeItem.getText();
+ } else {
+ str = treeItem.getText() + "." + str;
+ }
+ treeItem = treeItem.getParentItem();
+ }
+ TreeItemData treeItemData = (TreeItemData) treeItem.getData("TREEITEMDATA");
+ str = treeItemData.getOriginModelName() + "." + str;
+ return str;
+ }
+
+ public static String makeViewModelInfo(TreeItem treeItem) {
+ String viewModelInfo;
+ if ((treeItem.getParentItem() != null)
+ && (treeItem.getParentItem().getData("TREEITEMDATA") != null)
+ && (((TreeItemData) treeItem.getParentItem()
+ .getData("TREEITEMDATA")).getObjectType() != null)
+ && (((TreeItemData) treeItem.getParentItem()
+ .getData("TREEITEMDATA")).getObjectType().equals("Array"))) {
+ viewModelInfo = BuilderConstants.DATABINDING_ARRAYITEM_VALUE_PREFIX + treeItem.getText();
+ } else {
+ viewModelInfo = DataBindingTooltipParser.makeViewModelInfoString(treeItem);
+ }
+ return viewModelInfo;
+ }
}
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.eclipse.ui.part.IPage;
-import org.tizen.webuibuilder.model.Part;
-import org.tizen.webuibuilder.model.page.PageData;
-import org.tizen.webuibuilder.model.project.ProjectManager;
+import org.tizen.webuibuilder.ui.editor.PageDesigner;
import org.tizen.webuibuilder.ui.views.databinding.DataBindingPage;
import org.tizen.webuibuilder.ui.views.databinding.DataBindingView;
+import org.tizen.webuibuilder.ui.views.databinding.model.BindingData;
public class GetSourceAction extends SelectionAction {
protected DataBindingView view;
- private ProjectManager projectManager;
- List<String> idList = new ArrayList<String>();
- List<Part> partList = new ArrayList<Part>();
+ private PageDesigner pageDesigner;
/**
* Constructor.
return false;
}
- //return true;
- return false;
+ if (getSelectedTreeItem() == null) {
+ return false;
+ }
+
+ return true;
}
public void refresh() {
setEnabled(calculateEnabled());
}
- // private CommandStack getCommandStackFromPageDesigner() {
- // PageDesigner pageDesigner =
- // (PageDesigner)view.getSite().getPage().getActiveEditor();
- // return (CommandStack) pageDesigner.getAdapter(CommandStack.class);
- // }
-
- private void makeWidgetList() {
- List<Part> subSubPart = null;
- List<Part> part = null;
-
- idList.clear();
- partList.clear();
-
- IPage page = view.getCurrentPage();
- if (!(page instanceof DataBindingPage)) {
- return;
- }
- DataBindingPage dataBindingPage = (DataBindingPage) page;
- projectManager = dataBindingPage.getProjectManager();
- List<PageData> pageData = projectManager.getDefaultAppManager().getPages();
-
- for (int i = 0; i < pageData.size(); i++) {
- part = pageData.get(i).getRootPart().getChildren();
- for (int j = 0; j < part.size(); j++) {
- List<Part> subPart = part.get(j).getChildren();
- for (int k = 0; k < subPart.size(); k++) {
- subSubPart = subPart.get(k).getChildren();
- for (int l = 0; l < subSubPart.size(); l++) {
- idList.add(subSubPart.get(l).getIdPropertyValue());
- partList.add(subSubPart.get(l));
- }
- }
- }
- }
- }
-
private TreeItem getSelectedTreeItem() {
IPage page = view.getCurrentPage();
if (!(page instanceof DataBindingPage)) {
return null;
}
DataBindingPage dataBindingPage = (DataBindingPage) page;
+
Tree tree = dataBindingPage.getViewModelTree();
TreeItem[] treeItem = tree.getSelection();
+
+ if ((treeItem == null) || (treeItem.length < 1)) {
+ return null;
+ }
- if (treeItem[0].getParentItem() == null) {
+ if (treeItem[0].getParentItem() != null) {
return null;
}
return treeItem[0];
}
- /*
- * private Tree getTree() { IPage page = view.getCurrentPage(); if (!(page instanceof
- * DataBindingPage)) { return null; } DataBindingPage dataBindingPage = (DataBindingPage) page;
- * Tree tree = dataBindingPage.getTree();
- *
- * return tree; }
- *
- *
- * //TODO private static String readAll(Reader rd) throws IOException { StringBuilder sb = new
- * StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return
- * sb.toString(); }
- *
- *
- * public static JSONObject readJsonFromUrl(String url) throws IOException { InputStream is =
- * null; try { is = new URL(url).openStream(); //BufferedReader rd = new BufferedReader(new
- * InputStreamReader(is, Charset.forName("EUC-KR"))); BufferedReader rd = new BufferedReader(new
- * InputStreamReader(is, "utf-8")); String jsonText = readAll(rd); //JSONObject json = new
- * JSONObject(jsonText); JSONObject json = (JSONObject)JSONValue.parse(jsonText); return json; }
- * finally { is.close(); } }
- */
-
- /*
- * public Object getJSON(String json, String searchWord, Map<String, Object> resultMap) { //Json
- * DATA 전 영역 탐사 및 원하는 데이터를 Map 형태로 리턴시킴 JSONObject jsonObj = null; try { jsonObj = new
- * JSONObject(json); Iterator itr = jsonObj.keys(); int countJSON = 0; while (itr.hasNext()) {
- *
- * String key = (String)itr.next(); Object value = jsonObj.get(key); String selecter =
- * (String)value.toString();
- *
- * if(key.equals(searchWord)){ // 조건에 걸린 word 값을 찾아서 map 형태로 리턴 resultMap.put(key, value); }
- *
- * if(selecter != null && !selecter.equals("") && !selecter.equals("null") && jsonObj.get(key)
- * instanceof JSONArray){ if((JSONArray)jsonObj.get(key) instanceof JSONArray){ JSONArray
- * jsonArray = (JSONArray)jsonObj.get(key); //this.logger.debug(jsonArray.toString()); for(int i
- * = 0 ; i<jsonArray.length() ; i++){ jsonArray.get(i); JSONObject jsonObj2 = new
- * JSONObject(jsonArray.get(i).toString()); getJSON(jsonObj2.toString(), searchWord, resultMap);
- * } } } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }
- * return resultMap; }
- */
-
- /*
- * private void makeDataModel(JSONObject json, String str, TreeItem parentTreeItem, int index) {
- *
- *
- *
- * if ( (json.get(str) != null) && (
- * json.get(str).getClass().getName().equals("org.json.simple.JSONArray") )) { JSONArray array =
- * (JSONArray)json.get(str); TreeItem treeItem; if (parentTreeItem == null) { treeItem = new
- * TreeItem(getTree(), 0); } else { treeItem = new TreeItem(parentTreeItem, 0); }
- * treeItem.setText(str); treeItem.setData("TYPE", "Array");
- * treeItem.setImage(newItem.setImage( ResourceManager.getImage(BuilderConstants.ICON_DIR,
- * "temp.png"));
- *
- * if (array.get(0).getClass().getName().equals("org.json.simple.JSONObject")) { for (int j=0; j
- * < ((JSONObject)array.get(0)).size(); j++) { Object[] obj =
- * ((JSONObject)array.get(0)).keySet().toArray(); makeDataModel((JSONObject) array.get(0),
- * (String)obj[j], treeItem, 0); } } else {
- *
- * }
- *
- * } else if ( (json.get(str) != null) && (json.get(str).getClass().getName()
- * .equals("org.json.simple.JSONObject"))) { JSONObject jsonTest = (JSONObject)json.get(str);
- * TreeItem treeItem; if (parentTreeItem == null) { treeItem = new TreeItem(getTree(), 0); }
- * else { treeItem = new TreeItem(parentTreeItem, 0); } treeItem.setText(str);
- *
- * if (jsonTest.size() > 0) { for (int j=0; j < jsonTest.size(); j++) { Object[] obj =
- * jsonTest.keySet().toArray(); makeDataModel(jsonTest, (String)obj[j], treeItem, j); //TODO //
- * subTreeItem.setData((String)json.get((String)obj[j])); } } else {
- *
- * //TODO treeItem.setData((String)json.get(str)); } } else { TreeItem treeItem; if
- * (parentTreeItem == null) { treeItem = new TreeItem(getTree(), index); } else { treeItem = new
- * TreeItem(parentTreeItem, index); } treeItem.setText((String)str);
- * treeItem.setData(json.get(str)); } }
- */
-
@Override
public void run() {
-
- makeWidgetList();
-
+ IPage page = view.getCurrentPage();
+ if (!(page instanceof DataBindingPage)) {
+ return;
+ }
+ DataBindingPage dataBindingPage = (DataBindingPage) page;
+ pageDesigner = dataBindingPage.getPageDesigner();
+ if (pageDesigner == null) {
+ return;
+ }
+
+ TreeItem treeItem = getSelectedTreeItem();
+ if (treeItem == null) {
+ return;
+ }
+
+ List<BindingData> sources = pageDesigner.getAppManager().getDataSources();
+ List<String> sourceNames = new ArrayList<String>();
+ for (BindingData source : sources) {
+ sourceNames.add(source.getSourceName());
+ }
ElementListSelectionDialog dialog =
new ElementListSelectionDialog(Display.getCurrent().getActiveShell(),
new LabelProvider());
- dialog.setElements(idList.toArray());
- dialog.setTitle("Which operating system are you using");
- // User pressed cancel
+ dialog.setElements(sourceNames.toArray());
+ dialog.setTitle("");
+
if (dialog.open() != Window.OK) {
return;
}
Object[] result = dialog.getResult();
- for (int i = 0; i < partList.size(); i++) {
- if (partList.get(i).getIdPropertyValue().equals((String) result[0])) {
- // getCommandStackFromPageDesigner().execute(new
- // SetPartPropertyCommand(partList.get(i), "data-bind",
- // "value: MYOBJ.models.model0.temp", false));
- TreeItem treeItem = getSelectedTreeItem();
- if (treeItem == null) {
- return;
- }
- treeItem.setData(partList.get(i).getPropertyValue("text"));
-
- IPage page = view.getCurrentPage();
- if (!(page instanceof DataBindingPage)) {
- return;
- }
- DataBindingPage dataBindingPage = (DataBindingPage) page;
- //dataBindingPage.updateModel();
- }
- }
-
- /*
- * InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(), "", "Enter URL",
- * "http://apis.daum.net/search/blog?apikey=DAUM_SEARCH_DEMO_APIKEY&q=love&result=20&pageno=1&output=json"
- * , null);
- *
- * if (dlg.open() == Window.OK) { // User clicked OK; update the label with the input
- *
- * IPage page = view.getCurrentPage(); if (!(page instanceof DataBindingPage)) { return; }
- * DataBindingPage dataBindingPage = (DataBindingPage) page; TreeItem item =
- * dataBindingPage.addTreeItem2(); item.setData("URL", dlg.getValue());
- *
- * try { JSONObject json = readJsonFromUrl(dlg.getValue());
- *
- * Object[] str = json.keySet().toArray(); for (int i=0; i < str.length; i++) {
- * makeDataModel(json, (String)str[i], item, 0); //jsonTest.getClass(); }
- *
- * } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
- *
- * dataBindingPage.updateModel(); }
- */
-
+ dataBindingPage.setDataSourceToViewModel(pageDesigner.getAppManager().getDataSource(result[0].toString()), pageDesigner.getAppManager().getViewModel(treeItem.getText()));
}
}
package org.tizen.webuibuilder.ui.views.databinding.actions;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.gef.commands.CommandStack;
import org.eclipse.gef.ui.actions.SelectionAction;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.eclipse.ui.part.IPage;
-import org.tizen.webuibuilder.BuilderConstants;
-import org.tizen.webuibuilder.gef.commands.SetPartPropertyCommand;
import org.tizen.webuibuilder.model.Part;
-import org.tizen.webuibuilder.model.descriptors.ConstantDescriptor;
-import org.tizen.webuibuilder.model.page.PageData;
-import org.tizen.webuibuilder.model.project.ProjectManager;
-import org.tizen.webuibuilder.ui.editor.PageDesigner;
import org.tizen.webuibuilder.ui.views.databinding.DataBindingPage;
+import org.tizen.webuibuilder.ui.views.databinding.DataBindingTooltipParser;
import org.tizen.webuibuilder.ui.views.databinding.DataBindingView;
+import org.tizen.webuibuilder.ui.views.databinding.dialog.SetTargetPage;
+import org.tizen.webuibuilder.ui.views.databinding.model.BindingInfo;
public class SetTargetAction extends SelectionAction {
protected DataBindingView view;
- private ProjectManager projectManager;
- List<String> idList = new ArrayList<String>();
- List<Part> partList = new ArrayList<Part>();
-
+ private DataBindingPage dataBindingPage;
+
/**
* Constructor.
*
if (view == null) {
return false;
}
+
+ if (getSelectedTreeItem() == null) {
+ return false;
+ }
- //return true;
- return false;
+ return true;
}
public void refresh() {
setEnabled(calculateEnabled());
}
- // FIXME remove? move to databindingPage?
- private CommandStack getCommandStackFromPageDesigner() {
- PageDesigner pageDesigner = (PageDesigner) view.getSite().getPage().getActiveEditor();
- return (CommandStack) pageDesigner.getAdapter(CommandStack.class);
- }
-
- private void makeWidgetList() {
- List<Part> part = null;
-
- idList.clear();
- partList.clear();
-
- IPage page = view.getCurrentPage();
- if (!(page instanceof DataBindingPage)) {
- return;
- }
- DataBindingPage dataBindingPage = (DataBindingPage) page;
- projectManager = dataBindingPage.getProjectManager();
- List<PageData> pageData = projectManager.getDefaultAppManager().getPages();
-
- for (int i = 0; i < pageData.size(); i++) {
- part = pageData.get(i).getRootPart().getChildren();
-
- makeSubWidgetList(part, idList, partList);
- }
- }
-
- private void makeSubWidgetList(List<Part> part, List<String> idList2, List<Part> partList2) {
-
- if (part.size() == 0) {
- return;
- } else {
- for (int j = 0; j < part.size(); j++) {
- idList.add(part.get(j).getIdPropertyValue());
- partList.add(part.get(j));
- List<Part> subPart = part.get(j).getChildren();
- makeSubWidgetList(subPart, idList, partList);
- }
- }
- }
-
- private DataBindingPage getDataBindingPage() {
+ private TreeItem getSelectedTreeItem() {
IPage page = view.getCurrentPage();
if (!(page instanceof DataBindingPage)) {
return null;
}
- return (DataBindingPage) page;
- }
-
- private TreeItem getSelectedTreeItem() {
- DataBindingPage dataBindingPage = getDataBindingPage();
- if (dataBindingPage == null) {
- return null;
- }
+ DataBindingPage dataBindingPage = (DataBindingPage) page;
Tree tree = dataBindingPage.getViewModelTree();
TreeItem[] treeItem = tree.getSelection();
+
+ if ((treeItem == null) || (treeItem.length < 1)) {
+ return null;
+ }
if (treeItem[0].getParentItem() == null) {
return null;
}
- // 0 .. multi select
return treeItem[0];
}
- private void addInfoTableItem(Part part, String modelName, String widgetName,
- String bindingInfoStr) {
-
- DataBindingPage dataBindingPage = getDataBindingPage();
- if (dataBindingPage != null) {
- if (dataBindingPage.checkDuplicatedTableItem(modelName, widgetName, bindingInfoStr)) {
- dataBindingPage.addInfoTableItem(part, modelName, widgetName, bindingInfoStr);
- //dataBindingPage.updateModel();
- }
- }
- }
-
@Override
public void run() {
IPage page = view.getCurrentPage();
if (!(page instanceof DataBindingPage)) {
return;
}
+ dataBindingPage = (DataBindingPage) page;
TreeItem treeItem = getSelectedTreeItem();
if (treeItem == null) {
return;
}
-
- makeWidgetList();
-
- ElementListSelectionDialog dialog =
- new ElementListSelectionDialog(Display.getCurrent().getActiveShell(),
- new LabelProvider());
- dialog.setElements(idList.toArray());
- dialog.setTitle("Which operating system are you using");
- // User pressed cancel
- if (dialog.open() != Window.OK) {
+
+ SetTargetPage dialog = new SetTargetPage(Display.getCurrent().getActiveShell(), dataBindingPage);
+ BindingInfo bindingInfo = dialog.open();
+
+ if (bindingInfo == null) {
return;
}
- Object[] result = dialog.getResult();
-
- for (int i = 0; i < partList.size(); i++) {
-
- // TODO partList.get(i).getPartId()
- if (partList.get(i).getIdPropertyValue().equals(result[0].toString())) {
-
- // treeItem.getText(); //temp
- // treeItem.getParentItem().getText(); //model
-
- String str = makePropertyValue(treeItem);
-
- // FIXME testCode
- List<ConstantDescriptor> enums =
- partList.get(i).getPartDescriptor().getPropertyDescriptor(BuilderConstants.ATTRIBUTE_DATA_BIND)
- .getTypeDescriptor().getAvailableConstant();
- // String defaultBindingType =
- // partList.get(i).getPartDescriptor().getPropertyDescriptor(BuilderConstants.ATTRIBUTE_DATA_BIND).getDefaultValue();
-
- // TODO 0 == defaultvalue
- String defaultBindingType = enums.get(0).getValue();
- String bindingInfoStr;
- if ((partList.get(i).getParent() != null)
- && (partList.get(i).getParent().getPartDescriptor()
- .getPropertyDescriptor(BuilderConstants.ATTRIBUTE_DATA_BIND) != null)
- && (partList.get(i).getParent().getPartDescriptor()
- .getPropertyDescriptor(BuilderConstants.ATTRIBUTE_DATA_BIND).getTypeDescriptor()
- .getAvailableConstant().get(0).getValue().equals("foreach"))) {
- bindingInfoStr = defaultBindingType + ": $data." + treeItem.getText();
- } else {
- bindingInfoStr = defaultBindingType + ": " + str;
- }
-
- //TODO add -> refresh
- addInfoTableItem(partList.get(i), str, result[0].toString(), bindingInfoStr);
- getCommandStackFromPageDesigner()
- .execute(new SetPartPropertyCommand(partList.get(i), BuilderConstants.ATTRIBUTE_DATA_BIND,
- bindingInfoStr, false));
-
- /*
- * //FIXME //move this code if( (treeItem.getData("TYPE") != null) &&
- * (treeItem.getData("TYPE").equals("Array")) ) {
- * getCommandStackFromPageDesigner().execute(new
- * SetPartPropertyCommand(partList.get(i), BuilderConstants.ATTRIBUTE_DATA_BIND,
- * "foreach: MYOBJ.models."+str, false)); } else if(
- * (treeItem.getParentItem().getData("TYPE") != null) && (treeItem
- * .getParentItem().getData("TYPE").equals("Array")) ) {
- * getCommandStackFromPageDesigner().execute(new
- * SetPartPropertyCommand(partList.get(i), BuilderConstants.ATTRIBUTE_DATA_BIND, "text: "+treeItem.getText(),
- * false)); } else { getCommandStackFromPageDesigner().execute(new
- * SetPartPropertyCommand(partList.get(i), BuilderConstants.ATTRIBUTE_DATA_BIND, bindingInfoStr, false)); }
- */
- }
- }
-
- }
-
- private String makePropertyValue(TreeItem treeItem) {
- String str = "";
- while ((treeItem.getParentItem() != null)) {
- if (str == "") {
- str = treeItem.getText();
- } else {
- str = treeItem.getText() + "." + str;
- }
- treeItem = treeItem.getParentItem();
+
+ Part targetPart = bindingInfo.getTargetPart();
+ String infoValue = bindingInfo.getInfoValue();
+ String infoDisplayName = bindingInfo.getInfoDisplayName();
+
+ String viewModelInfo = DataBindingTooltipParser.makeViewModelInfo(treeItem);
+
+ if (targetPart != null) {
+ dataBindingPage.setBindingInfoToPart(targetPart, viewModelInfo, infoDisplayName, infoValue);
}
- str = treeItem.getData("DEFAULTTEXT") + "." + str;
- return str;
}
-
}
--- /dev/null
+package org.tizen.webuibuilder.ui.views.databinding.dialog;
+
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.descriptors.ConstantDescriptor;
+import org.tizen.webuibuilder.model.page.PageData;
+import org.tizen.webuibuilder.ui.views.databinding.DataBindingPage;
+import org.tizen.webuibuilder.ui.views.databinding.model.BindingInfo;
+import org.tizen.webuibuilder.utility.ResourceManager;
+
+public class SetTargetPage extends Dialog {
+
+ private Shell shell;
+ private SashForm sashForm;
+ private DataBindingPage dataBindingPage;
+ private Tree widgetTree;
+ private Tree bindingInfoTree;
+ private Button okButton;
+ private BindingInfo bindingInfo = new BindingInfo();
+
+ public SetTargetPage(Shell parent, DataBindingPage dataBindingPage) {
+ super( parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL );
+ setText( "Set Target" );
+ this.dataBindingPage = dataBindingPage;
+ }
+
+ /**
+ * Opens the dialog and returns the input
+ *
+ * @return message
+ */
+ public BindingInfo open() {
+ // Create the dialog window
+ shell = new Shell( getParent(), SWT.TITLE | SWT.CLOSE | SWT.BORDER | SWT.RESIZE );
+ shell.setText( getText() );
+ //shell.setMinimumSize(400, 500);
+ createContents();
+ shell.pack();
+
+ shell.open();
+ Display display = getParent().getDisplay();
+ while ( !shell.isDisposed() ) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ return bindingInfo;
+ }
+
+ private void createContents() {
+ FormLayout layout = new FormLayout();
+ shell.setLayout(layout);
+ layout.marginWidth = 5;
+ layout.marginHeight = 5;
+
+ sashForm = new SashForm(shell, SWT.HORIZONTAL);
+
+ FormData sashData = new FormData();
+ sashData.top = new FormAttachment( 0, 0);
+ sashData.bottom = new FormAttachment(100, -35);
+ sashData.left = new FormAttachment(0, 0);
+ sashData.right = new FormAttachment(100, -5);
+ sashForm.setLayoutData( sashData );
+
+ Group widgetTreeGroup = new Group(sashForm, SWT.NONE);
+ Group bindingInfoGroup = new Group(sashForm, SWT.NONE);
+
+ //sashForm.setWeights(new int[] {2, 3});
+
+ makeBindingInfoGroup( bindingInfoGroup );
+ makeWidgetTreeGroup( widgetTreeGroup );
+
+ // Create the cancel button and add a handler
+ // so that pressing it will set input to null
+ Button cancelButton = new Button( shell, SWT.PUSH );
+ cancelButton.setText( "CANCEL" );
+
+ FormData data = new FormData( 100, 30 );
+ data.top = new FormAttachment( sashForm, 5 );
+ data.right = new FormAttachment( 100, -5 );
+ data.bottom = new FormAttachment( 100, -5 );
+
+ cancelButton.setLayoutData( data );
+
+ cancelButton.addSelectionListener( new SelectionAdapter() {
+ public void widgetSelected( SelectionEvent event ) {
+ bindingInfo = null;
+ shell.close();
+ }
+ } );
+
+ // Create the OK button and add a handler
+ // so that pressing it will set input
+ // to the entered value
+ okButton = new Button( shell, SWT.PUSH );
+ okButton.setText( "OK" );
+
+ data = new FormData( 100, 30 );
+ data.top = new FormAttachment( sashForm, 5 );
+ data.right = new FormAttachment( cancelButton, -5 );
+ data.bottom = new FormAttachment( 100, -5 );
+
+ okButton.setLayoutData( data );
+ okButton.setEnabled(false);
+
+ okButton.addSelectionListener( new SelectionAdapter() {
+ public void widgetSelected( SelectionEvent event ) {
+ TreeItem[] widetTreeItem = widgetTree.getSelection();
+ TreeItem[] bindingInfoTreeItem = bindingInfoTree.getSelection();
+
+ if ((widetTreeItem != null) && (bindingInfoTreeItem != null)) {
+ if ((widetTreeItem.length > 0) && (bindingInfoTreeItem.length > 0)) {
+ if ((widetTreeItem[0] != null) && (bindingInfoTreeItem[0] != null)) {
+ bindingInfo.setTargetPart((Part) widetTreeItem[0].getData("PART"));
+ bindingInfo.setInfoValue((String) bindingInfoTreeItem[0].getData("INFOVALUE"));
+ bindingInfo.setInfoDisplayName((String) bindingInfoTreeItem[0].getData("INFODISPLAYNAME"));
+ }
+ }
+ }
+ shell.close();
+ }
+ });
+
+ }
+
+ private void makeBindingInfoGroup(Group bindingInfoGroup) {
+ FormLayout layout = new FormLayout();
+ bindingInfoGroup.setLayout(layout);
+
+ bindingInfoTree = new Tree(bindingInfoGroup, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION );
+
+ bindingInfoTree.setLinesVisible(true);
+ //dialogTree.setHeaderVisible(true);
+
+ FormData data = new FormData(150, 300);
+ data.top = new FormAttachment(0, 2);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.bottom = new FormAttachment(100, 0);
+ bindingInfoTree.setLayoutData(data);
+
+ bindingInfoGroup.layout();
+
+ bindingInfoTree.addMouseListener(new MouseAdapter() {
+ public void mouseUp(MouseEvent e) {
+ setVisibleToOkButton();
+ }
+ });
+ }
+
+ private void makeWidgetTreeGroup(Group widgetTreeGroup) {
+ FormLayout layout = new FormLayout();
+ widgetTreeGroup.setLayout(layout);
+
+ widgetTree = new Tree(widgetTreeGroup, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION );
+
+ FormData data = new FormData(250, 300);
+ data.top = new FormAttachment(0, 2);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.bottom = new FormAttachment(100, 0);
+ widgetTree.setLayoutData(data);
+
+ makeTreeItems(widgetTree);
+ widgetTreeGroup.layout();
+
+ widgetTree.addMouseListener(new MouseAdapter() {
+ public void mouseUp(MouseEvent e) {
+ Point point = new Point(e.x, e.y);
+ final TreeItem treeItem = widgetTree.getItem(point);
+ makeBindingInfoList(treeItem);
+ setVisibleToOkButton();
+ }
+ });
+ }
+
+ private void setVisibleToOkButton() {
+ boolean enable = false;
+ if ((widgetTree.getSelection() != null) && (widgetTree.getSelection().length > 0)) {
+ if ((bindingInfoTree.getSelection() != null) && (bindingInfoTree.getSelection().length > 0)) {
+ enable = true;
+ }
+ }
+ okButton.setEnabled(enable);
+ }
+
+ private void makeBindingInfoList(TreeItem treeItem) {
+ if (treeItem == null) {
+ widgetTree.deselectAll();
+ return;
+ }
+ Part part = (Part) treeItem.getData("PART");
+ if (part == null) {
+ return;
+ }
+
+ if (bindingInfoTree == null) {
+ return;
+ }
+
+ bindingInfoTree.removeAll();
+
+ if (part.getPartDescriptor().getPropertyDescriptor(BuilderConstants.ATTRIBUTE_DATA_BIND) == null) {
+ return;
+ }
+
+ List<ConstantDescriptor> list =
+ part.getPartDescriptor().getPropertyDescriptor(BuilderConstants.ATTRIBUTE_DATA_BIND)
+ .getTypeDescriptor().getAvailableConstant();
+
+ if ((list == null) || (list.size() <= 0)) {
+ return;
+ }
+ for (int i = 0; i < list.size(); i++) {
+ TreeItem subItem = new TreeItem(bindingInfoTree, SWT.NONE);
+ final String value = list.get(i).getValue();
+ final String displayName = list.get(i).getDisplayName();
+ subItem.setData("INFOVALUE", value);
+ if ((displayName != null) && (!displayName.isEmpty())) {
+ subItem.setText(value + "[" + displayName + "]");
+ subItem.setData("INFODISPLAYNAME", displayName);
+ } else {
+ subItem.setText(value);
+ }
+ }
+ }
+
+ private void makeTreeItems(Tree widgetTree) {
+ List<PageData> pageData = dataBindingPage.getPageDesigner().getAppManager().getPages();
+ List<Part> childParts = null;
+
+ for (int i = 0; i < pageData.size(); i++) {
+ childParts = pageData.get(i).getRootPart().getChildren();
+ makeSubWidgetList(null, childParts);
+ }
+ }
+
+ private void makeSubWidgetList(TreeItem parentItem, List<Part> childParts) {
+ if (childParts.size() == 0) {
+ return;
+ }
+
+ TreeItem subItem;
+ for (int i = 0; i < childParts.size(); i++) {
+ if (parentItem == null) {
+ subItem = new TreeItem(widgetTree, SWT.NONE);
+ } else {
+ subItem = new TreeItem(parentItem, SWT.NONE);
+ }
+ subItem.setText(childParts.get(i).getIdPropertyValue() + " <" + childParts.get(i).getPartDescriptor().getDisplayName()+ ">");
+ subItem.setData("PART", childParts.get(i));
+ String iconPath = childParts.get(i).getPartDescriptor().getIcon16();
+ Image image = ResourceManager.getImage(BuilderConstants.ICON_DIR, iconPath);
+ subItem.setImage(image);
+ if ((dataBindingPage.getSelectedPart() != null) && (childParts.get(i).equals(dataBindingPage.getSelectedPart()))) {
+ subItem.setExpanded(true);
+ widgetTree.setSelection(subItem);
+ makeBindingInfoList(subItem);
+ }
+
+ List<Part> subPart = childParts.get(i).getChildren();
+ makeSubWidgetList(subItem, subPart);
+ }
+
+ }
+
+
+}
--- /dev/null
+package org.tizen.webuibuilder.ui.views.databinding.model;
+
+import org.tizen.webuibuilder.model.Part;
+
+public class BindingInfo {
+ private Part targetPart;
+ private String infoValue;
+ private String infoDisplayName;
+
+ public Part getTargetPart() {
+ return targetPart;
+ }
+ public void setTargetPart(Part targetPart) {
+ this.targetPart = targetPart;
+ }
+ public String getInfoValue() {
+ return infoValue;
+ }
+ public void setInfoValue(String infoValue) {
+ this.infoValue = infoValue;
+ }
+ public String getInfoDisplayName() {
+ return infoDisplayName;
+ }
+ public void setInfoDisplayName(String infoDisplayName) {
+ this.infoDisplayName = infoDisplayName;
+ }
+}
\ No newline at end of file