/*******************************************************************************
* Copyright (c) 2016 Red Hat.
* 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:
* Red Hat - Initial Contribution
*******************************************************************************/
package org.eclipse.linuxtools.internal.docker.ui.consoles;
import java.util.function.Consumer;
import org.eclipse.jface.viewers.StyledString.Styler;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.TextStyle;
import org.eclipse.swt.widgets.Display;
/**
* A utility class to build {@link Styler}
*/
public class StylerBuilder {
// color fg bg
// black 30 40
// red 31 41
// green 32 42
// yellow 33 43
// blue 34 44
// purple 35 45
// cyan 36 46
// gray/white 37 47
/**
* @return a {@link Styler} configured with a {@link SWT#COLOR_BLACK}
* foreground color.
*/
public static Styler defaultStyler() {
return styler(30);
}
/**
* Returns a {@link Styler} configured with a foreground color based on the
* given {@code}:
* <ul>
* <li>30: {@link SWT#COLOR_BLACK}</li>
* <li>31: {@link SWT#COLOR_DARK_RED}</li>
* <li>32: {@link SWT#COLOR_DARK_GREEN}</li>
* <li>33: {@link SWT#COLOR_DARK_YELLOW}</li>
* <li>34: {@link SWT#COLOR_DARK_BLUE}</li>
* <li>35: {@link SWT#COLOR_DARK_MAGENTA}</li>
* <li>36: {@link SWT#COLOR_DARK_CYAN}</li>
* <li>37: {@link SWT#COLOR_DARK_GRAY}</li>
* </ul>
* If the code is unknown, the {@link SWT#COLOR_BLACK} is used as the
* foreground color.
*
* @param code
* the code for the foreground color
* @return the configured {@link Styler}
*/
public static Styler styler(final int code) {
switch (code) {
case 31:
return styler(textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED));
case 32:
return styler(
textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN));
case 33:
return styler(
textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_YELLOW));
case 34:
return styler(textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_BLUE));
case 35:
return styler(
textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_MAGENTA));
case 36:
return styler(textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_CYAN));
case 37:
return styler(textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY));
case 30:
default:
return styler(textStyle -> textStyle.foreground = Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
}
}
/**
* @return a {@link Styler} that sets the colors by the help of the given
* {@code colorSetter} what the given
* @param colorSetter
* the {@link Consumer} to call to set the colors.
*/
private static Styler styler(final Consumer<TextStyle> colorSetter) {
return new Styler() {
@Override
public void applyStyles(final TextStyle textStyle) {
colorSetter.accept(textStyle);
}
};
}
}