blob: d08bb4519e669a862d11182064882c58b64120e8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 École Polytechnique de Montréal
*
* 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
*******************************************************************************/
package org.eclipse.tracecompass.internal.tmf.ui.util;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.tmf.core.model.StyleProperties;
import org.eclipse.tracecompass.tmf.core.model.StyleProperties.BorderStyle;
import org.eclipse.tracecompass.tmf.core.presentation.RGBAColor;
import org.eclipse.tracecompass.tmf.ui.colors.ColorUtils;
import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEventStyleStrings;
/**
* Temporary class to convert an old style map using deprecated
* {@link ITimeEventStyleStrings} to the new style properties in
* {@link StyleProperties}.
*
* @author Geneviève Bastien
*/
public class StylePropertiesUtils {
/**
* Transforms deprecated {@link ITimeEventStyleStrings} methods to the
* proper styles. It will create the new properties out of the deprecated
* ones only if such properties do not exist yet.
*
* @param styleMap
* The original style map.
* @return A new map of style. This map is not immutable.
*/
@SuppressWarnings("deprecation")
public static @NonNull Map<@NonNull String, @NonNull Object> updateEventStyleProperties(@Nullable Map<String, Object> styleMap) {
if (styleMap == null) {
return new HashMap<>();
}
@NonNull Map<@NonNull String, @NonNull Object> updatedStyles = new HashMap<>(styleMap);
Object object = styleMap.get(ITimeEventStyleStrings.label());
if (object != null && !styleMap.containsKey(StyleProperties.STYLE_NAME)) {
updatedStyles.put(StyleProperties.STYLE_NAME, object);
}
object = styleMap.get(ITimeEventStyleStrings.heightFactor());
if (object != null && !styleMap.containsKey(StyleProperties.HEIGHT)) {
updatedStyles.put(StyleProperties.HEIGHT, object);
}
object = styleMap.get(ITimeEventStyleStrings.fillStyle());
if (object != null && !styleMap.containsKey(StyleProperties.LINEAR_GRADIENT)) {
if (object.equals(ITimeEventStyleStrings.gradientColorFillStyle())) {
updatedStyles.put(StyleProperties.LINEAR_GRADIENT, true);
} else {
updatedStyles.put(StyleProperties.LINEAR_GRADIENT, false);
}
}
object = styleMap.get(ITimeEventStyleStrings.fillColor());
if (object != null && (object instanceof Integer)) {
RGBAColor rgba = new RGBAColor((int) object);
String hexColor = ColorUtils.toHexColor(rgba.getRed(), rgba.getGreen(), rgba.getBlue());
float opacity = (float) rgba.getAlpha() / 255;
if (!styleMap.containsKey(StyleProperties.BACKGROUND_COLOR)) {
updatedStyles.put(StyleProperties.BACKGROUND_COLOR, hexColor);
}
if (!styleMap.containsKey(StyleProperties.COLOR)) {
updatedStyles.put(StyleProperties.COLOR, hexColor);
}
if (!styleMap.containsKey(StyleProperties.OPACITY)) {
updatedStyles.put(StyleProperties.OPACITY, opacity);
}
}
object = styleMap.get(ITimeEventStyleStrings.fillColorEnd());
if (object != null && !styleMap.containsKey(StyleProperties.LINEAR_GRADIENT_COLOR_END)) {
if (object instanceof Integer) {
RGBAColor rgba = new RGBAColor((int) object);
updatedStyles.put(StyleProperties.LINEAR_GRADIENT_COLOR_END, ColorUtils.toHexColor(rgba.getRed(), rgba.getGreen(), rgba.getBlue()));
}
}
object = styleMap.get(ITimeEventStyleStrings.borderEnable());
if (object != null && !styleMap.containsKey(StyleProperties.BORDER_STYLE)) {
if (object instanceof Boolean && (Boolean) object) {
updatedStyles.put(StyleProperties.BORDER_STYLE, BorderStyle.SOLID);
} else {
updatedStyles.put(StyleProperties.BORDER_STYLE, BorderStyle.NONE);
}
}
object = styleMap.get(ITimeEventStyleStrings.borderColor());
if (object != null && !styleMap.containsKey(StyleProperties.BORDER_COLOR)) {
if (object instanceof Integer) {
RGBAColor rgba = new RGBAColor((int) object);
updatedStyles.put(StyleProperties.BORDER_COLOR, ColorUtils.toHexColor(rgba.getRed(), rgba.getGreen(), rgba.getBlue()));
}
}
object = styleMap.get(ITimeEventStyleStrings.borderThickness());
if (object != null && !styleMap.containsKey(StyleProperties.BORDER_WIDTH)) {
updatedStyles.put(StyleProperties.BORDER_WIDTH, object);
}
object = styleMap.get(ITimeEventStyleStrings.symbolStyle());
if (object != null && !styleMap.containsKey(StyleProperties.SYMBOL_TYPE)) {
String symbolType = ITimeEventStyleStrings.SYMBOL_TYPES.get(object);
if (symbolType != null) {
updatedStyles.put(StyleProperties.SYMBOL_TYPE, symbolType);
}
}
return updatedStyles;
}
}