Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.preferences/src/org/eclipse/papyrus/preferences/utils/GradientPreferenceConverter.java')
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.preferences/src/org/eclipse/papyrus/preferences/utils/GradientPreferenceConverter.java207
1 files changed, 207 insertions, 0 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.preferences/src/org/eclipse/papyrus/preferences/utils/GradientPreferenceConverter.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.preferences/src/org/eclipse/papyrus/preferences/utils/GradientPreferenceConverter.java
new file mode 100644
index 00000000000..b8d42ec1d7e
--- /dev/null
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.preferences/src/org/eclipse/papyrus/preferences/utils/GradientPreferenceConverter.java
@@ -0,0 +1,207 @@
+/****************************************************************************
+ * Copyright (c) 2009 Atos Origin.
+ *
+ * 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:
+ * Thibault Landre (Atos Origin) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.preferences.utils;
+
+import java.util.StringTokenizer;
+
+import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
+import org.eclipse.gmf.runtime.notation.GradientStyle;
+import org.eclipse.gmf.runtime.notation.datatype.GradientData;
+import org.eclipse.swt.graphics.RGB;
+
+/**
+ * An utility class to ease the use of gradient preference within Papyrus. It converts the
+ * preference into gradientData, RGB color and int (transparency and style) and vice versa
+ *
+ * @author tlandre
+ *
+ */
+public class GradientPreferenceConverter {
+
+ private static final int GRADIENT_COLOR1 = 0;
+
+ private static final int GRADIENT_COLOR2 = 1;
+
+ private static final int GRADIENT_STYLE = 2;
+
+ private static final int GRADIENT_TRANSPARENCY = 3;
+
+ private int fStyle = GradientStyle.HORIZONTAL;
+
+ private int fTransparency = 0;
+
+ private RGB fColor1;
+
+ private RGB fColor2;
+
+ /**
+ * Constructor
+ *
+ * @param pPreference
+ * the preference. It must be formated like this : <br>
+ * <code>RGB {x, x, x};RGB {x, x,
+ * x};style;transparency</code> <br>
+ * where style and transparency are <code>int</code>
+ */
+ public GradientPreferenceConverter(String pPreference) {
+ initFieldFromPreference(pPreference);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param pColor1
+ * the first color used
+ * @param pColor2
+ * the second color used
+ * @param pStyle
+ * the style of the gradient. It can be GradientStyle.VERTICAL or
+ * GradientStyle.HORIZONTAL
+ * @param pTransparency
+ * the transparency. It must be contained in [0,100]
+ */
+ public GradientPreferenceConverter(RGB pColor1, RGB pColor2, int pStyle, int pTransparency) {
+ fColor1 = pColor1;
+ fColor2 = pColor2;
+ fStyle = pStyle;
+ fTransparency = pTransparency;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param pColor1
+ * the first color used
+ * @param pColor2
+ * the second color used
+ * @param pStyle
+ * the style of the gradient. It can be GradientStyle.VERTICAL or
+ * GradientStyle.HORIZONTAL
+ * @param pTransparency
+ * the transparency. It must be contained in [0,100]
+ */
+ // @unused
+ public GradientPreferenceConverter(int pColor1, int pColor2, int pStyle, int pTransparency) {
+ fColor1 = FigureUtilities.integerToRGB(pColor1);
+ fColor2 = FigureUtilities.integerToRGB(pColor2);
+ fStyle = pStyle;
+ fTransparency = pTransparency;
+ }
+
+ private void initFieldFromPreference(String pPreference) {
+ String[] values = pPreference.split(";"); //$NON-NLS-1$
+ if(values.length == 4) {
+ fColor1 = getRGBColor(values[GRADIENT_COLOR1]);
+ fColor2 = getRGBColor(values[GRADIENT_COLOR2]);
+ fStyle = Integer.parseInt(values[GRADIENT_STYLE]);
+ fTransparency = Integer.parseInt(values[GRADIENT_TRANSPARENCY]);
+ }
+ }
+
+ /**
+ * Get the transparency of the gradient
+ *
+ * @return the transparency
+ */
+ public int getTransparency() {
+ return fTransparency;
+ }
+
+ /**
+ * Get the gradientData of the gradient
+ *
+ * @return the gradientData
+ */
+ public GradientData getGradientData() {
+ GradientData gd = GradientData.getDefaultGradientData();
+ if(fColor1 != null && fColor2 != null) {
+ gd = new GradientData(FigureUtilities.RGBToInteger(fColor1), FigureUtilities.RGBToInteger(fColor2), fStyle);
+ }
+ return gd;
+ }
+
+ /**
+ * Get the first color used for the gradient.
+ *
+ * @return the RGB
+ */
+ public RGB getColor1() {
+ RGB color;
+ if(fColor1 != null) {
+ color = fColor1;
+ } else {
+ color = FigureUtilities.integerToRGB(GradientData.getDefaultGradientData().getGradientColor1());
+ }
+ return color;
+ }
+
+ /**
+ * Get the second color used for the gradient.
+ *
+ * @return the RGB
+ */
+ // @unused
+ public RGB getColor2() {
+ RGB color;
+ if(fColor1 != null) {
+ color = fColor2;
+ } else {
+ color = FigureUtilities.integerToRGB(GradientData.getDefaultGradientData().getGradientColor2());
+ }
+ return color;
+ }
+
+ /**
+ * Get the style of the gradient
+ *
+ * @return GradientStyle.HORIZONTAL or GradientStyle.VERTICAL
+ */
+ public int getStyle() {
+ return fStyle;
+ }
+
+ /**
+ * Extract the values of the RGB color contained in the string "RGB {x, x, x}"
+ *
+ * @param string
+ * a string of format "RGB {x, x, x}"
+ * @return the corresponding color
+ */
+ private static RGB getRGBColor(String string) {
+ StringTokenizer st = new StringTokenizer(string, "RGB ,{}"); //$NON-NLS-1$
+ int red = Integer.parseInt(st.nextToken());
+ int green = Integer.parseInt(st.nextToken());
+ int blue = Integer.parseInt(st.nextToken());
+
+ return new RGB(red, green, blue);
+ }
+
+ /**
+ * Get a string that can be store The value is in the following format : <br>
+ * <b>RGB {x, x, x};RGB {x, x, x};style;transparency</b> <br>
+ * where style and transparency are <b>int</b>
+ *
+ * @return the string
+ */
+ public String getPreferenceValue() {
+ StringBuffer sb = new StringBuffer(30);
+ sb.append(fColor1.toString());
+ sb.append(";"); //$NON-NLS-1$
+ sb.append(fColor2.toString());
+ sb.append(";"); //$NON-NLS-1$
+ sb.append(fStyle);
+ sb.append(";"); //$NON-NLS-1$
+ sb.append(fTransparency);
+ return sb.toString().trim();
+ }
+}

Back to the top