/***************************************************************************** * Copyright (c) 2012 CEA LIST. * * * 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: * CEA LIST - Initial API and implementation * *****************************************************************************/ package org.eclipse.papyrus.uml.diagram.common.editparts; import org.eclipse.emf.common.notify.Notification; import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart; import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; import org.eclipse.gmf.runtime.notation.FillStyle; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.gmf.runtime.notation.datatype.GradientData; import org.eclipse.papyrus.infra.emf.appearance.helper.ShadowFigureHelper; import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.IPapyrusNodeFigure; import org.eclipse.swt.graphics.Color; /** * this uml edit part can refresh shadow and gradient. */ public abstract class CompositeEditPart extends AbstractBorderedShapeEditPart { public CompositeEditPart(View view) { super(view); } @Override protected NodeFigure createMainFigure() { return createNodeFigure(); } public abstract IPapyrusNodeFigure getPrimaryShape(); @Override public boolean supportsGradient() { return true; } @Override protected void handleNotificationEvent(Notification event) { super.handleNotificationEvent(event); // set the figure active when the feature of the of a class is true if(resolveSemanticElement() != null) { refreshShadow(); } } @Override protected void refreshVisuals() { super.refreshVisuals(); refreshShadow(); } @Override protected void setTransparency(int transp) { getPrimaryShape().setTransparency(transp); } /** * sets the back ground color of this edit part */ @Override protected void setBackgroundColor(Color color) { getPrimaryShape().setBackgroundColor(color); getPrimaryShape().setIsUsingGradient(false); getPrimaryShape().setGradientData(-1, -1, 0); } /** * Override to set the gradient data to the correct figure */ @Override protected void setGradient(GradientData gradient) { IPapyrusNodeFigure fig = getPrimaryShape(); FillStyle style = (FillStyle)getPrimaryView().getStyle(NotationPackage.Literals.FILL_STYLE); if(gradient != null) { fig.setIsUsingGradient(true);; fig.setGradientData(style.getFillColor(), gradient.getGradientColor1(), gradient.getGradientStyle()); } else { fig.setIsUsingGradient(false); } } @Override protected void setForegroundColor(Color color) { getPrimaryShape().setForegroundColor(color); } protected void refreshShadow() { getPrimaryShape().setShadow(ShadowFigureHelper.getShadowFigureValue((View)getModel())); } }