/*******************************************************************************
* 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.core.utils;
import org.eclipse.graphiti.features.impl.AbstractFeature;
import org.eclipse.graphiti.mm.StyleContainer;
import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
import org.eclipse.graphiti.mm.algorithms.styles.AdaptedGradientColoredAreas;
import org.eclipse.graphiti.mm.algorithms.styles.Style;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.services.IGaService;
import org.eclipse.graphiti.util.ColorConstant;
import org.eclipse.graphiti.util.IColorConstant;
import org.eclipse.graphiti.util.PredefinedColoredAreas;
public class StyleUtil {
private static final String CLASS_ID = "E-CLASS";
private static final String TEXT_ID = "E-CLASS-TEXT";
public static final IColorConstant CLASS_TEXT_FOREGROUND = IColorConstant.BLACK;
//public static final IColorConstant CLASS_FOREGROUND = new ColorConstant(146, 146, 208);
//public static final IColorConstant CLASS_FOREGROUND = new ColorConstant(102, 175, 232);
//public static final IColorConstant CLASS_FOREGROUND = new ColorConstant(163, 202, 232);
public static final IColorConstant CLASS_FOREGROUND = new ColorConstant(116, 143, 165);
//public static final IColorConstant CLASS_BACKGROUND = new ColorConstant(220, 220, 255);
public static final IColorConstant CLASS_BACKGROUND = new ColorConstant(220, 233, 255);
public static Style getStyleForClass(Diagram diagram) {
Style s = findStyle(diagram, CLASS_ID);
if(s == null) {
IGaService gaService = Graphiti.getGaService();
s = gaService.createStyle(diagram, CLASS_ID);
s.setForeground(gaService.manageColor(diagram, CLASS_FOREGROUND));
s.setBackground(gaService.manageColor(diagram, CLASS_BACKGROUND));
s.setLineWidth(1);
}
return s;
}
public static Style getStyleForText(Diagram diagram) {
Style parentStyle = getStyleForClass(diagram);
Style s = findStyle(parentStyle, TEXT_ID);
if(s == null) {
IGaService gaService = Graphiti.getGaService();
s = gaService.createStyle(diagram, TEXT_ID);
s.setForeground(gaService.manageColor(diagram, CLASS_TEXT_FOREGROUND));
}
return s;
}
private static Style findStyle(StyleContainer container, String id) {
if (container.getStyles() != null) {
for (Style s : container.getStyles()) {
if (s.getId().equals(id)) {
return s;
}
}
}
return null;
}
public static void applyBGStyle(GraphicsAlgorithm shape,
AbstractFeature feature) {
IGaService gaService = Graphiti.getGaService();
shape.setStyle(StyleUtil.getStyleForClass(feature.getFeatureProvider().getDiagramTypeProvider().getDiagram()));
shape.setFilled(true);
AdaptedGradientColoredAreas gradient = PredefinedColoredAreas.getBlueWhiteAdaptions();
gaService.setRenderingStyle(shape, gradient);
}
}