/* * Copyright 2015 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.red.viewers; import org.eclipse.jface.resource.FontDescriptor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.StyledString.Styler; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.TextStyle; import org.eclipse.swt.widgets.Display; import org.robotframework.ide.eclipse.main.plugin.RedImages; import org.robotframework.red.graphics.ColorsManager; import org.robotframework.red.graphics.FontsManager; import org.robotframework.red.graphics.ImagesManager; /** * Those objects are used in order to have additional entry in table which can * be handled by editing supports * * @author anglart */ public class ElementAddingToken { private final String newElementTypeName; private final boolean enabled; private final int rank; private final Object parent; public ElementAddingToken(final String newElementTypeName, final boolean isEnabled) { this(null, newElementTypeName, isEnabled, 0); } public ElementAddingToken(final Object parent, final String newElementTypeName, final boolean isEnabled, final int rank) { this.parent = parent; this.newElementTypeName = newElementTypeName; this.enabled = isEnabled; this.rank = rank; } public Object getParent() { return parent; } public Image getImage() { if (rank > 0) { return null; } final ImageDescriptor addImage = RedImages.getAddImage(); return ImagesManager.getImage(enabled ? addImage : RedImages.getGrayedImage(addImage)); } public StyledString getStyledText() { final String msg = rank == 0 ? "...add new" + " " + newElementTypeName : "..."; return new StyledString(msg, new Styler() { @Override public void applyStyles(final TextStyle textStyle) { textStyle.foreground = enabled ? ColorsManager.getColor(30, 127, 60) : ColorsManager.getColor(200, 200, 200); textStyle.font = getFont(textStyle.font, rank == 0 ? SWT.ITALIC : SWT.ITALIC | SWT.BOLD); } }); } private Font getFont(final Font fontToReuse, final int style) { final Font currentFont = fontToReuse == null ? Display.getCurrent().getSystemFont() : fontToReuse; final FontDescriptor fontDescriptor = FontDescriptor.createFrom(currentFont).setStyle(style); return FontsManager.getFont(fontDescriptor); } }