/*******************************************************************************
* Copyright (c) 2012 xored software, Inc. 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:
* xored software, Inc. - initial API and implementation (Yuri Strot)
******************************************************************************/
package com.xored.glance.ui.controls.decor;
import com.xored.glance.ui.utils.TextUtils;
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;
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 Color getBackground();
public abstract Rectangle getBounds();
public abstract Font getFont();
public abstract Color getForeground();
public abstract Image getImage();
public abstract Rectangle getImageBounds();
public abstract String getText();
public abstract Rectangle getTextBounds();
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];
}
}