/****************************************************************************
* Copyright (c) 2005-2006 Jeremy Dowdall
* 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:
* Jeremy Dowdall <jeremyd@aspencloud.com> - initial API and implementation
*****************************************************************************/
package org.eclipse.nebula.widgets.ctree;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
/**
* <p>
* NOTE: THIS WIDGET AND ITS API ARE STILL UNDER DEVELOPMENT. THIS IS A PRE-RELEASE ALPHA
* VERSION. USERS SHOULD EXPECT API CHANGES IN FUTURE VERSIONS.
* </p>
*/
public class SColors {
public static final boolean gtk = "gtk".equals(SWT.getPlatform());
private Display display;
private List disposable = new ArrayList();
private Color grid;
private Color border;
private Color itemBackgroundNormal;
private Color itemBackgroundSelected;
private Color itemBackgroundSelectedNoFocus;
private Color itemForegroundNormal;
private Color itemForegroundSelected;
private Color listBackground;
private boolean hasFocus = false;
public SColors(Display display) {
this.display = display;
setBorder(SWT.COLOR_WIDGET_BORDER);
setGrid(new RGB(238,238,238));
setItemBackgroundNormal(SWT.COLOR_LIST_BACKGROUND);
setItemBackgroundSelected(SWT.COLOR_LIST_SELECTION);
if(gtk) {
setItemBackgroundSelectedNoFocus(new RGB(150,150,130)); // TODO: color: inactive List background
} else {
setItemBackgroundSelectedNoFocus(SWT.COLOR_WIDGET_BACKGROUND); // TODO: color: inactive List background
}
setItemForegroundNormal(SWT.COLOR_LIST_FOREGROUND);
setItemForegroundSelected(SWT.COLOR_LIST_SELECTION_TEXT);
setTableBackground(SWT.COLOR_LIST_BACKGROUND);
}
public Color getBorder() {
return border;
}
public Color getGrid() {
return grid;
}
public Color getItemBackgroundNormal() {
return itemBackgroundNormal;
}
public Color getItemBackgroundSelected() {
return hasFocus ? itemBackgroundSelected : itemBackgroundSelectedNoFocus;
}
public Color getItemForegroundNormal() {
return itemForegroundNormal;
}
public Color getItemForegroundSelected() {
return itemForegroundSelected;
}
public Color getTableBackground() {
return listBackground;
}
public void setFocus(boolean focus) {
hasFocus = focus;
}
public void setBorder(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
border = color;
}
}
}
public void setBorder(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
border = color;
disposable.add(color);
}
}
public void setGrid(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
grid = color;
}
}
}
public void setGrid(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
grid = color;
disposable.add(color);
}
}
public void setItemBackgroundNormal(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
itemBackgroundNormal = color;
}
}
}
public void setItemBackgroundNormal(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
itemBackgroundNormal = color;
disposable.add(color);
}
}
public void setItemBackgroundSelected(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
itemBackgroundSelected = color;
}
}
}
public void setItemBackgroundSelected(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
itemBackgroundSelected = color;
disposable.add(color);
}
}
public void setItemBackgroundSelectedNoFocus(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
itemBackgroundSelectedNoFocus = color;
}
}
}
public void setItemBackgroundSelectedNoFocus(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
itemBackgroundSelectedNoFocus = color;
disposable.add(color);
}
}
public void setItemForegroundNormal(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
itemForegroundNormal = color;
}
}
}
public void setItemForegroundNormal(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
itemForegroundNormal = color;
disposable.add(color);
}
}
public void setItemForegroundSelected(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
itemForegroundSelected = color;
}
}
}
public void setItemForegroundSelected(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
itemForegroundSelected = color;
disposable.add(color);
}
}
public void setTableBackground(int swtConstant) {
if((display != null) && !display.isDisposed()) {
Color color = display.getSystemColor(swtConstant);
if(color != null) {
listBackground = color;
}
}
}
public void setTableBackground(RGB rgb) {
if((display != null) && !display.isDisposed()) {
Color color = new Color(display, rgb);
listBackground = color;
disposable.add(color);
}
}
public void dispose() {
for(Iterator i = disposable.iterator(); i.hasNext(); ) {
Color color = (Color) i.next();
if((color != null) && (!color.isDisposed())) {
color.dispose();
}
}
}
}