use of com.archimatetool.model.IDiagramModelArchimateComponent in project archi by archimatetool.
the class TreeSelectionSynchroniser method selectionChanged.
@Override
public void selectionChanged(SelectionChangedEvent event) {
if (isDispatching) {
return;
}
fLastEvent = event;
if (!Preferences.doLinkView() || !fDoSync) {
return;
}
isDispatching = true;
ISelection selection = event.getSelection();
Object source = event.getSource();
// Selection from Diagram Editor, so update the Tree if it is showing
if (source instanceof GraphicalViewer && fTreeView != null) {
List<Object> list = new ArrayList<Object>();
for (Object o : ((IStructuredSelection) selection).toArray()) {
if (o instanceof EditPart) {
Object model = ((EditPart) o).getModel();
// Archimate concept
if (model instanceof IDiagramModelArchimateComponent) {
model = ((IDiagramModelArchimateComponent) model).getArchimateConcept();
list.add(model);
} else // Diagram model
if (model instanceof IDiagramModel) {
list.add(model);
}
}
}
// Select in tree
fTreeView.getViewer().setSelection(new StructuredSelection(list), true);
} else // Archimate objects selection from Tree View, so update any Archimate Diagram Editors
if (source instanceof TreeViewer) {
List<IArchimateConcept> list = new ArrayList<IArchimateConcept>();
// Archimate elements
for (Object o : ((IStructuredSelection) selection).toArray()) {
if (o instanceof IArchimateConcept) {
list.add((IArchimateConcept) o);
}
}
// Select these in the Diagram Editors
for (IDiagramModelEditor diagramEditor : fDiagramEditors) {
if (diagramEditor instanceof IArchimateDiagramEditor) {
((IArchimateDiagramEditor) diagramEditor).selectArchimateConcepts(list.toArray(new IArchimateConcept[list.size()]));
}
}
}
isDispatching = false;
}
Aggregations