Added Commands for create/delete in tableView
diff --git a/ECP2/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/controls/TableControl.java b/ECP2/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/controls/TableControl.java
index 60a0f4b..790d781 100644
--- a/ECP2/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/controls/TableControl.java
+++ b/ECP2/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/controls/TableControl.java
@@ -13,7 +13,6 @@
package org.eclipse.emf.ecp.edit.internal.swt.controls;
import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.databinding.EMFProperties;
import org.eclipse.emf.databinding.edit.EMFEditObservables;
import org.eclipse.emf.ecore.EClass;
@@ -25,6 +24,9 @@
import org.eclipse.emf.ecp.edit.internal.swt.util.CellEditorFactory;
import org.eclipse.emf.ecp.edit.internal.swt.util.ECPCellEditor;
import org.eclipse.emf.ecp.edit.internal.swt.util.SWTControl;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
@@ -60,7 +62,10 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.TableColumn;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
/**
* The class describing a table control.
@@ -350,11 +355,18 @@
return;
}
+ List<EObject> deletionList = new ArrayList<EObject>();
Iterator<?> iterator = selection.iterator();
while (iterator.hasNext()) {
- list.remove(iterator.next());
+ deletionList.add((EObject) iterator.next());
}
+
+ EObject modelElement = getModelElementContext().getModelElement();
+ EditingDomain editingDomain = getModelElementContext().getEditingDomain();
+ editingDomain.getCommandStack().execute(
+ RemoveCommand.create(editingDomain, modelElement, getStructuralFeature(), deletionList));
+
}
});
}
@@ -398,14 +410,13 @@
tableViewer.getTable().setEnabled(false);
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
private void addRow(EClass clazz) {
EObject modelElement = getModelElementContext().getModelElement();
- EStructuralFeature structuralFeature = getStructuralFeature();
- EList list = (EList) modelElement.eGet(structuralFeature);
-
EObject instance = clazz.getEPackage().getEFactoryInstance().create(clazz);
- list.add(instance);
+
+ EditingDomain editingDomain = getModelElementContext().getEditingDomain();
+ editingDomain.getCommandStack().execute(
+ AddCommand.create(editingDomain, modelElement, getStructuralFeature(), Collections.singleton(instance)));
}
}