/******************************************************************************* | |
* Copyright (c) 2009 Mia-Software and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v2.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v20.html | |
* | |
* Contributors: | |
* Nicolas Bros (Mia-Software) - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.modisco.infra.browser.custom.util; | |
import java.util.regex.Matcher; | |
import java.util.regex.Pattern; | |
import org.eclipse.modisco.infra.browser.custom.CustomViewFeature; | |
import org.eclipse.modisco.infra.browser.custom.CustomizableFeatures; | |
import org.eclipse.modisco.infra.browser.custom.FeatureValue; | |
import org.eclipse.modisco.infra.browser.custom.FeatureValueCase; | |
import org.eclipse.swt.graphics.RGB; | |
/** | |
* @deprecated Will be replaced by EMF Facet, | |
* cf https://bugs.eclipse.org/bugs/show_bug.cgi?id=470715 | |
*/ | |
@Deprecated | |
public final class UicustomUtil { | |
private static final int MAX_COLOR_INTENSITY = 255; | |
private UicustomUtil() { | |
// cannot be instantiated | |
} | |
private static final Pattern RGB_PATTERN = Pattern.compile("\\((\\d+),(\\d+),(\\d+)\\)"); //$NON-NLS-1$ | |
private static final int RGB_PATTERN_GROUP_RED = 1; | |
private static final int RGB_PATTERN_GROUP_GREEN = 2; | |
private static final int RGB_PATTERN_GROUP_BLUE = 3; | |
/** | |
* Decode the given color string (R,G,B) | |
* | |
* @return the corresponding color, or <code>null</code> if the given string | |
* does not define a valid color | |
*/ | |
public static RGB decodeColor(final String strColor) { | |
Matcher matcher = UicustomUtil.RGB_PATTERN.matcher(strColor); | |
if (matcher.matches()) { | |
try { | |
int r = Integer.parseInt(matcher.group(UicustomUtil.RGB_PATTERN_GROUP_RED)); | |
int g = Integer.parseInt(matcher.group(UicustomUtil.RGB_PATTERN_GROUP_GREEN)); | |
int b = Integer.parseInt(matcher.group(UicustomUtil.RGB_PATTERN_GROUP_BLUE)); | |
if (r >= 0 && r <= UicustomUtil.MAX_COLOR_INTENSITY && g >= 0 | |
&& g <= UicustomUtil.MAX_COLOR_INTENSITY && b >= 0 | |
&& b <= UicustomUtil.MAX_COLOR_INTENSITY) { | |
return new RGB(r, g, b); | |
} | |
} catch (NumberFormatException e) { | |
return null; | |
} | |
} | |
return null; | |
} | |
public static OverlayIconInfo decodeOverlayIcon(final String encodedOverlayIcon) { | |
String[] parts = encodedOverlayIcon.split(":"); //$NON-NLS-1$ | |
if (parts.length != 2) { | |
throw new IllegalArgumentException("overlay icon should be encoded as 'path:position'"); //$NON-NLS-1$ | |
} | |
return new OverlayIconInfo(parts[0], OverlayIconPosition.valueOf(parts[1])); | |
} | |
public static String encodeOverlayIcon(final String path, final OverlayIconPosition iconPosition) { | |
return path + ":" + iconPosition; //$NON-NLS-1$ | |
} | |
public static CustomizableFeatures getCustomizedFeature(final FeatureValue featureValue) { | |
CustomViewFeature feature = featureValue.getFeature(); | |
if (feature == null) { | |
return featureValue.getCase().getFeature().getCustomizedFeature(); | |
} | |
return feature.getCustomizedFeature(); | |
} | |
/** | |
* @return the {@link FeatureValue} of the given {@link CustomViewFeature} | |
* or {@link FeatureValueCase}, or <code>null</code> if the given | |
* element is not of one of these types | |
*/ | |
public static FeatureValue getFeatureValue(final Object element) { | |
if (element instanceof CustomViewFeature) { | |
CustomViewFeature customViewFeature = (CustomViewFeature) element; | |
return customViewFeature.getDefaultValue(); | |
} else if (element instanceof FeatureValueCase) { | |
FeatureValueCase valueCase = (FeatureValueCase) element; | |
return valueCase.getValue(); | |
} | |
return null; | |
} | |
} |