/******************************************************************************* | |
* Copyright (c) 2008, 2012 IBM Corporation and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.bpel.compare.ui.gef.bpel; | |
import java.util.WeakHashMap; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.gef.EditPart; | |
import org.eclipse.gef.EditPartFactory; | |
import org.eclipse.gef.EditPartListener; | |
import org.eclipse.gef.EditPartViewer; | |
public class BPELCompareEditPartFactory extends | |
org.eclipse.bpel.ui.editparts.util.BPELEditPartFactory { | |
String GRAPHICAL_ROLE = "GraphicalEditPolicy"; | |
private static WeakHashMap<EObject, EditPart> model2editPart = | |
new WeakHashMap<EObject, EditPart>(); | |
public static EditPart getEditPart(EObject model) { | |
return model2editPart.get(model); | |
} | |
@Override | |
public EditPart createEditPart(EditPart context, Object model) { | |
EditPart editPart = super.createEditPart(context, model); | |
model2editPart.put((EObject) editPart.getModel(), editPart); | |
updateEditPolicy(editPart); | |
return editPart; | |
} | |
private void updateEditPolicy(EditPart editPart) { | |
if (editPart == null) { | |
return; | |
} | |
editPart.installEditPolicy(GRAPHICAL_ROLE, new BPELCompareEditPolicy()); | |
editPart.addEditPartListener(new EditPartListener.Stub() { | |
@Override | |
public void selectedStateChanged(EditPart editpart) { | |
if (editpart.getSelected() != EditPart.SELECTED_NONE) { | |
EditPartViewer viewer = editpart.getViewer(); | |
EditPartFactory uiFactory = viewer.getEditPartFactory(); | |
if (uiFactory instanceof BPELCompareEditPartFactory) { | |
BPELContentMergeViewer mergeViewer = | |
BPELContentMergeViewer.getBPELContentMergeViewer( | |
(BPELCompareEditPartFactory) uiFactory); | |
mergeViewer.selectionChanged(viewer); | |
} | |
} | |
} | |
}); | |
for (Object child : editPart.getChildren()) { | |
if (child instanceof EditPart) { | |
updateEditPolicy((EditPart) child); | |
} | |
} | |
} | |
} |