private Part oldSelectedModel = null;
private IAction undoHandler;
private IAction redoHandler;
+ //private List<String> itemPath;
public DataBindingPage(DataBindingView dataBindingView) {
this.dataBindingView = dataBindingView;
refreshViewModelTree(viewModelTree);
refreshBindingInfos();
refreshActions();
+
+ expandTreeItem();
}
}
- private void refreshActions() {
+ private void expandTreeItem() {
+
+ if (pageDesigner == null) {
+ return;
+ }
+
+ List<String> itemPath = pageDesigner.getAppManager().getSelectionPath();
+ if ((itemPath == null) || (itemPath.isEmpty())){
+ return;
+ }
+
+ List<String> modelPath = new ArrayList<String>();
+ for (int i=0; i<itemPath.size(); i++) {
+ modelPath.add(itemPath.get(i));
+ }
+
+ if ((modelPath != null) && (!modelPath.isEmpty())) {
+ TreeItem selectedItem = getSelectedItem(viewModelTree, modelPath);
+ if (selectedItem != null) {
+ selectedItem.setExpanded(true);
+ viewModelTree.setSelection(selectedItem);
+ } else {
+ selectedItem = getSelectedItem(dataSourceTree, itemPath.get(itemPath.size()-1));
+ if (selectedItem != null) {
+ selectedItem.setExpanded(true);
+ dataSourceTree.setSelection(selectedItem);
+ }
+ }
+ }
+ }
+
+ private TreeItem getSelectedItem(Tree tree, String name) {
+
+ TreeItem[] treeItems = tree.getItems();
+ TreeItem selectedItem = null;
+ for (TreeItem treeItem : treeItems) {
+ if (treeItem.getText().equals(name)) {
+ selectedItem = treeItem;
+ break;
+ }
+ }
+ return selectedItem;
+ }
+
+ private TreeItem getSelectedItem(Tree tree, List<String> itemPath) {
+ String itemName = itemPath.get(itemPath.size()-1);
+ itemPath.remove(itemPath.size()-1);
+ TreeItem[] treeItems = tree.getItems();
+ TreeItem selectedItem = null;
+ for (TreeItem treeItem : treeItems) {
+ if (treeItem.getText().equals(itemName)) {
+ if (itemPath.isEmpty()) {
+ selectedItem = treeItem;
+ } else {
+ selectedItem = getSelectedItem(treeItem, itemPath);
+ }
+ break;
+ }
+ }
+ return selectedItem;
+ }
+
+ private TreeItem getSelectedItem(TreeItem parentTreeItem, List<String> itemPath) {
+ if (itemPath.isEmpty()) {
+ return parentTreeItem;
+ }
+ String itemName = itemPath.get(itemPath.size()-1);
+ itemPath.remove(itemPath.size()-1);
+
+ TreeItem[] treeItems = parentTreeItem.getItems();
+ TreeItem selectedItem = null;
+
+ for (TreeItem treeItem : treeItems) {
+ if (treeItem.getText().equals(itemName)) {
+ selectedItem = getSelectedItem(treeItem, itemPath);
+ break;
+ }
+ }
+
+ return selectedItem;
+ }
+
+ private void refreshActions() {
if (undoHandler != null) {
((UpdateAction) undoHandler).update();
}
TreeItem[] selectedItems = viewModelTree.getSelection();
- if (selectedItems.length != 0) {
+ if (selectedItems.length > 0) {
int idIndex = 0;
while (!canSetTreeItemName(selectedItems[0], "viewModelItem" + idIndex)) {
idIndex++;
composite.setLayout(new FillLayout());
SashForm sashForm = new SashForm(composite, SWT.HORIZONTAL);
- // viewModelCount = 0;
- // dataSourceCount = 0;
makeDataModelParentPanel(sashForm);
makeBindingInfoPanel(sashForm);
private List<BindingData> viewModels = new ArrayList<BindingData>();
private List<BindingData> dataSources = new ArrayList<BindingData>();
+ private List<String> selectionPath = new ArrayList<String>();
private List<IBindingDataSetListener> listeners = new ArrayList<IBindingDataSetListener>();
private List<IBindingDataSetListener> removeListeners = new ArrayList<IBindingDataSetListener>();
*/
public void addViewModel(BindingData bindingData) {
viewModels.add(bindingData);
-
+ selectionPath.clear();
+ selectionPath.add(bindingData.getName());
fireEvent(new BindingDataSetEvent(BindingDataSetEventType.VIEWMODEL_ADDED, bindingData, getNumberOfViewModels() - 1 , null));
}
}
public void changeViewModel(BindingDataSetEventType type, BindingData bindingData, List<String> itemPath, String childName, String value) {
+ selectionPath = itemPath;
if (type.equals(BindingDataSetEventType.VIEWMODEL_ITEM_ADDED)) {
List<BindingData> viewModels = getViewModels();
for (BindingData viewModel : viewModels) {
if (viewModel.equals(bindingData)) {
- BindingObject viewModelObject = getViewModelObject(bindingData, itemPath, childName);
+ BindingObject viewModelObject = getViewModelObject(bindingData, itemPath);
if (viewModelObject != null) {
addChildViewModelObject(viewModelObject, childName, value);
} else if (childName != null) {
List<BindingData> viewModels = getViewModels();
for (BindingData viewModel : viewModels) {
if (viewModel.equals(bindingData)) {
- BindingObject viewModelObject = getViewModelParentObject(bindingData, itemPath, childName);
+ BindingObject viewModelObject = getViewModelParentObject(bindingData, itemPath);
if (viewModelObject != null) {
removeChildViewModelObject(viewModelObject, childName, value);
} else if (childName != null) {
public void changeViewModel(BindingDataSetEventType type, BindingData bindingData, List<String> itemPath,
BindingObject viewModelObject, String value) {
+ selectionPath = itemPath;
if (type.equals(BindingDataSetEventType.VIEWMODEL_ITEM_ADDED)) {
List<BindingData> viewModels = getViewModels();
for (BindingData viewModel : viewModels) {
if (viewModel.equals(bindingData)) {
- BindingObject viewModelParentObject = getViewModelParentObject(bindingData, itemPath, viewModelObject.getName());
+ BindingObject viewModelParentObject = getViewModelParentObject(bindingData, itemPath);
if (viewModelParentObject != null) {
viewModelParentObject.add(viewModelObject);
} else {
private BindingObject getViewModelParentObject(BindingData bindingData,
- List<String> itemPath, String childName) {
- if ((itemPath == null) || (itemPath.isEmpty())) {
+ List<String> itemPath) {
+ if ((itemPath == null) || (itemPath.size() < 2)) {
return null;
}
List<String> modelPath = new ArrayList<String>();
- for (int i=0; i<itemPath.size()-1; i++) {
+ for (int i=0; i<itemPath.size(); i++) {
modelPath.add(itemPath.get(i));
}
- return getViewModelObject(bindingData, modelPath, childName);
+ modelPath.remove(0);
+ return getViewModelObject(bindingData, modelPath);
}
public BindingObject getViewModelObject(BindingData bindingData,
- List<String> itemPath, String childName) {
+ List<String> itemPath) {
List<BindingObject> viewModelObjects = bindingData.getViewModelObjects();
BindingObject object = null;
List<String> modelPath = new ArrayList<String>();
break;
}
}
+ selectionPath.clear();
+ selectionPath.add(bindingData.getName());
viewModels.remove(index);
fireEvent(new BindingDataSetEvent(BindingDataSetEventType.VIEWMODEL_REMOVED, bindingData, index, null));
}
*/
public void addDataSource(BindingData bindingData) {
dataSources.add(bindingData);
-
+ selectionPath.clear();
+ selectionPath.add(bindingData.getSourceName());
fireEvent(new BindingDataSetEvent(BindingDataSetEventType.DATASOURCE_ADDED, bindingData, getNumberOfDataSources() - 1 , null));
}
break;
}
}
+ selectionPath.clear();
+ selectionPath.add(bindingData.getName());
dataSources.remove(index);
fireEvent(new BindingDataSetEvent(BindingDataSetEventType.DATASOURCE_REMOVED, bindingData, index, null));
}
}
}
+ public List<String> getSelectionPath() {
+ //if the object does not exist, then select parent object.
+ if (!isExist(selectionPath)) {
+ if (selectionPath.size() > 1) {
+ List<String> modelPath = new ArrayList<String>();
+ for (int i=0; i<selectionPath.size(); i++) {
+ modelPath.add(selectionPath.get(i));
+ }
+ modelPath.remove(0);
+ return modelPath;
+ }
+ }
+ return selectionPath;
+ }
+
+ private boolean isExist(List<String> selectionPath) {
+ if (selectionPath.size() < 1 ) {
+ return false;
+ }
+ BindingData data = getViewModel(selectionPath.get(selectionPath.size()-1));
+ if (data != null) {
+ BindingObject viewModelObject = getViewModelObject(data, selectionPath);
+ if (viewModelObject == null) {
+ return false;
+ }
+ } else {
+ data = getDataSource(selectionPath.get(selectionPath.size()-1));
+ if (data == null) {
+ return false;
+ }
+ }
+ return true;
+ }
+
}