/*******************************************************************************
* Copyright (c) 2011 Red Hat, Inc.
* All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.bpmn2.modeler.ui.views;
import java.io.IOException;
import org.eclipse.bpmn2.modeler.core.ModelHandler;
import org.eclipse.bpmn2.modeler.core.ModelHandlerLocator;
import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
class BpmnModelViewerSelectionListener implements ISelectionListener {
private final ViewContentProvider contentProvider;
private BPMN2Editor editor;
private final TreeViewer viewer;
public BpmnModelViewerSelectionListener(TreeViewer viewer) {
this.viewer = viewer;
this.contentProvider = (ViewContentProvider) viewer.getContentProvider();
}
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
if (part instanceof BPMN2Editor) {
editor = (BPMN2Editor) part;
try {
ModelHandler modelHandler = ModelHandlerLocator.getModelHandler(editor.getDiagramTypeProvider()
.getDiagram().eResource());
contentProvider.updateModel(modelHandler);
viewer.refresh(true);
} catch (IOException e) {
e.printStackTrace();
}
}
Object[] selected = contentProvider.getSelected(selection);
if (selected != null) {
viewer.setSelection(new StructuredSelection(selected), true);
}
}
}