| /******************************************************************************* |
| * Copyright (c) 2005, 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 v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.bpel.ui.editparts.policies; |
| |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| import org.eclipse.bpel.ui.figures.ElseResizeHandle; |
| import org.eclipse.bpel.ui.util.BPELDragEditPartsTracker; |
| import org.eclipse.draw2d.Cursors; |
| import org.eclipse.draw2d.PositionConstants; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.gef.GraphicalEditPart; |
| import org.eclipse.gef.Handle; |
| |
| |
| public class ElseHighlightEditPolicy extends ContainerHighlightEditPolicy { |
| |
| public ElseHighlightEditPolicy(boolean resizable, boolean movable) { |
| super(resizable, movable); |
| } |
| |
| @Override |
| protected List<Handle> createSelectionHandles() { |
| // HACK: Avoid creating selection handles for objects that have already been deleted |
| // (this can occur in some tricky notification scenarios) |
| if (((EObject)getHost().getModel()).eResource() == null) { return Collections.emptyList(); } |
| |
| List<Handle> list = new ArrayList<Handle>(); |
| addCaseCornerHandles((GraphicalEditPart)getHost(), list); |
| return list; |
| } |
| static void addCaseCornerHandles(GraphicalEditPart part, List<Handle> handles) { |
| handles.add(createCaseHandle(part, PositionConstants.SOUTH_EAST)); |
| handles.add(createCaseHandle(part, PositionConstants.SOUTH_WEST)); |
| handles.add(createCaseHandle(part, PositionConstants.NORTH_WEST)); |
| handles.add(createCaseHandle(part, PositionConstants.NORTH_EAST)); |
| } |
| static Handle createCaseHandle(GraphicalEditPart owner, int direction) { |
| ElseResizeHandle handle = new ElseResizeHandle(owner, direction); |
| handle.setCursor(Cursors.SIZEALL); |
| handle.setDragTracker(new BPELDragEditPartsTracker(owner)); |
| return handle; |
| } |
| } |