/*****************************************************************************
* Copyright (c) 2015 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:
* Dirk Fauth <dirk.fauth@googlemail.com> - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.nebula.widgets.richtext.painter;
import java.util.Arrays;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.RGB;
//TODO javadoc
public class ResourceHelper {
private ResourceHelper() {
}
public static Color getColor(String rgbString) {
if (!JFaceResources.getColorRegistry().hasValueFor(rgbString)) {
// rgb string in format rgb(r, g, b)
String rgbValues = rgbString.substring(rgbString.indexOf('(') + 1, rgbString.lastIndexOf(')'));
String[] values = rgbValues.split(",");
try {
int red = Integer.valueOf(values[0].trim());
int green = Integer.valueOf(values[1].trim());
int blue = Integer.valueOf(values[2].trim());
JFaceResources.getColorRegistry().put(rgbString, new RGB(red, green, blue));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
return JFaceResources.getColorRegistry().get(rgbString);
}
public static Font getFont(FontData... fontDatas) {
StringBuilder keyBuilder = new StringBuilder();
for (FontData fontData : fontDatas) {
keyBuilder.append(fontData.toString());
}
String key = keyBuilder.toString();
if (!JFaceResources.getFontRegistry().hasValueFor(key)) {
JFaceResources.getFontRegistry().put(key, fontDatas);
}
return JFaceResources.getFont(key);
}
public static Font getFont(Font currentFont, String name, Integer size) {
FontData[] original = currentFont.getFontData();
FontData[] fontData = Arrays.copyOf(original, original.length);
for (FontData data : fontData) {
if (name != null) {
data.setName(name);
}
if (size != null) {
data.setHeight(size);
}
}
return getFont(fontData);
}
public static Font getBoldFont(Font currentFont) {
FontData[] original = currentFont.getFontData();
FontData[] fontData = Arrays.copyOf(original, original.length);
for (FontData data : fontData) {
data.setStyle(data.getStyle() | SWT.BOLD);
}
return getFont(fontData);
}
public static Font getItalicFont(Font currentFont) {
FontData[] original = currentFont.getFontData();
FontData[] fontData = Arrays.copyOf(original, original.length);
for (FontData data : fontData) {
data.setStyle(data.getStyle() | SWT.ITALIC);
}
return getFont(fontData);
}
public static String ltrim(String s) {
int i = 0;
while (i < s.length() && Character.isWhitespace(s.charAt(i))) {
i++;
}
return s.substring(i);
}
public static String rtrim(String s) {
int i = s.length() - 1;
while (i >= 0 && Character.isWhitespace(s.charAt(i))) {
i--;
}
return s.substring(0, i + 1);
}
}