Matrix view now uses operation to delete links
This patch updates the matrix view to use the new operation to delete
trace links and also adds a security question before deletion.
Change-Id: I8bcfcf2028d44d8ebf8b957e4ec0c5208df7dd95
diff --git a/bundles/org.eclipse.capra.ui.matrix/src/org/eclipse/capra/ui/matrix/views/TraceabilityMatrixView.java b/bundles/org.eclipse.capra.ui.matrix/src/org/eclipse/capra/ui/matrix/views/TraceabilityMatrixView.java
index be78530..936fca7 100644
--- a/bundles/org.eclipse.capra.ui.matrix/src/org/eclipse/capra/ui/matrix/views/TraceabilityMatrixView.java
+++ b/bundles/org.eclipse.capra.ui.matrix/src/org/eclipse/capra/ui/matrix/views/TraceabilityMatrixView.java
@@ -38,6 +38,10 @@
import org.eclipse.capra.ui.matrix.TraceabilityMatrixHeaderToolTip;
import org.eclipse.capra.ui.matrix.TraceabilityMatrixRowHeaderDataProvider;
import org.eclipse.capra.ui.matrix.selection.TraceabilityMatrixSelectionProvider;
+import org.eclipse.capra.ui.operations.DeleteTraceOperation;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.OperationHistoryFactory;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
@@ -48,6 +52,7 @@
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.nebula.widgets.nattable.NatTable;
import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration;
@@ -86,6 +91,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPage;
@@ -115,6 +121,10 @@
*/
public class TraceabilityMatrixView extends ViewPart {
+ private static final String CONFIRM_DELETION_QUESTION = "Are you sure you want to delete the trace link?";
+
+ private static final String CONFIRM_DELETION_TITLE = "Delete trace link";
+
/**
* The ID of the view as specified by the extension.
*/
@@ -133,7 +143,6 @@
private ResourceSet resourceSet = EditingDomainHelper.getResourceSet();
private final TraceMetaModelAdapter traceAdapter = ExtensionPointHelper.getTraceMetamodelAdapter().get();
- private TraceMetaModelAdapter metamodelAdapter = ExtensionPointHelper.getTraceMetamodelAdapter().get();
private TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
private TraceabilityMatrixDataProvider bodyDataProvider;
@@ -319,7 +328,7 @@
} else {
// Without a selection, show a matrix of all traces
if (traceModel != null) {
- traces = metamodelAdapter.getAllTraceLinks(traceModel);
+ traces = traceAdapter.getAllTraceLinks(traceModel);
}
}
// If the current selection does not contain elements from the trace model, it
@@ -453,11 +462,24 @@
public void run() {
if (selectedModels != null && !selectedModels.isEmpty()
&& selectedModels.get(0) instanceof ConnectionAdapter) {
- ConnectionAdapter adapter = (ConnectionAdapter) selectedModels.get(0);
- Connection connection = adapter.getConnection();
- EObject traceModel = persistenceAdapter.getTraceModel(resourceSet);
- traceAdapter.deleteTrace(List.of(connection), traceModel);
- showAllAction.run();
+ Shell shell = TraceabilityMatrixView.this.getSite().getShell();
+ if (MessageDialog.open(MessageDialog.QUESTION, shell, CONFIRM_DELETION_TITLE,
+ CONFIRM_DELETION_QUESTION, SWT.NONE)) {
+ ConnectionAdapter adapter = (ConnectionAdapter) selectedModels.get(0);
+ Connection connection = adapter.getConnection();
+
+ DeleteTraceOperation deleteTraceOperation = new DeleteTraceOperation(CONFIRM_DELETION_TITLE,
+ connection);
+ deleteTraceOperation.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
+
+ IOperationHistory operationHistory = OperationHistoryFactory.getOperationHistory();
+ try {
+ operationHistory.execute(deleteTraceOperation, null, TraceabilityMatrixView.this.getSite());
+ } catch (ExecutionException e) {
+ // Deliberately do nothing. Errors should be caught by the operation.
+ }
+ showAllAction.run();
+ }
}
}
};