blob: 05052eb812235a9ea6ff8d7ad370eb56b74f3453 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 Exyte
* 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:
* Yuri Strot - initial API and Implementation
******************************************************************************/
package org.eclipse.ui.glance.controls.decor;
import org.eclipse.jface.util.Policy;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Item;
import org.eclipse.ui.glance.utils.TextUtils;
public abstract class StructCell extends Cell {
static final StyleRange[] NO_STYLES = new StyleRange[0];
static final String KEY_TEXT_LAYOUT = Policy.JFACE + "styled_label_key_"; //$NON-NLS-1$
public StyleRange[] styles = NO_STYLES;
public StructCell(int column) {
super(column);
}
public abstract Rectangle getBounds();
public abstract Color getForeground();
public abstract Color getBackground();
public abstract Image getImage();
public abstract Rectangle getImageBounds();
public abstract Rectangle getTextBounds();
public abstract String getText();
public abstract Font getFont();
public abstract boolean isSelected();
@Override
protected Object getElement() {
return getItem();
}
protected abstract Item getItem();
protected StyleRange[] nativeStyles() {
String key = KEY_TEXT_LAYOUT + getColumn();
Object data = getItem().getData(key);
if (data instanceof StyleRange[]) {
return TextUtils.copy((StyleRange[]) data);
}
return new StyleRange[0];
}
}