/******************************************************************************* * Copyright (c) 2015 Fabio Zadrozny and others. * 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: * Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation *******************************************************************************/ package org.eclipse.e4.ui.internal.css.swt.dom; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Listener; /** * Customization for selection/hot color for Trees/Tables. */ public class ControlSelectedColorCustomization { public final static String SELECTION_FOREGROUND_COLOR = "org.eclipse.e4.ui.css.swt.selectionForegroundColor"; //$NON-NLS-1$ public final static String SELECTION_BACKGROUND_COLOR = "org.eclipse.e4.ui.css.swt.selectionBackgroundColor"; //$NON-NLS-1$ public final static String SELECTION_BORDER_COLOR = "org.eclipse.e4.ui.css.swt.selectionBorderColor"; //$NON-NLS-1$ public final static String HOT_BACKGROUND_COLOR = "org.eclipse.e4.ui.css.swt.hotBackgroundColor"; //$NON-NLS-1$ public final static String HOT_BORDER_COLOR = "org.eclipse.e4.ui.css.swt.hotBorderColor"; //$NON-NLS-1$ private final Control fControl; private final Listener fEraseListener; public ControlSelectedColorCustomization(Control control, Listener eraseListener) { this.fControl = control; this.fEraseListener = eraseListener; } private void setEraseListener(Control control) { control.removeListener(SWT.EraseItem, fEraseListener); control.addListener(SWT.EraseItem, fEraseListener); } // Selection foreground public void setSelectionForegroundColor(Color color) { fControl.setData(SELECTION_FOREGROUND_COLOR, color); setEraseListener(fControl); } public Color getSelectionForegroundColor() { return getSelectionForegroundColor(fControl); } public static Color getSelectionForegroundColor(Control control) { Object data = control.getData(SELECTION_FOREGROUND_COLOR); if (data instanceof Color) { return (Color) data; } return null; } // Selection background public void setSelectionBackgroundColor(Color color) { fControl.setData(SELECTION_BACKGROUND_COLOR, color); setEraseListener(fControl); } public Color getSelectionBackgroundColor() { return getSelectionBackgroundColor(fControl); } public static Color getSelectionBackgroundColor(Control control) { Object data = control.getData(SELECTION_BACKGROUND_COLOR); if (data instanceof Color) { return (Color) data; } return null; } // Selection border public void setSelectionBorderColor(Color color) { fControl.setData(SELECTION_BORDER_COLOR, color); setEraseListener(fControl); } public Color getSelectionBorderColor() { return getSelectionBorderColor(fControl); } public static Color getSelectionBorderColor(Control control) { Object data = control.getData(SELECTION_BORDER_COLOR); if (data instanceof Color) { return (Color) data; } return null; } // --- Hot background public void setHotBackgroundColor(Color color) { fControl.setData(HOT_BACKGROUND_COLOR, color); setEraseListener(fControl); } public Color getHotBackgroundColor() { return getHotBackgroundColor(fControl); } public static Color getHotBackgroundColor(Control fControl) { Object data = fControl.getData(HOT_BACKGROUND_COLOR); if (data instanceof Color) { return (Color) data; } return null; } // --- Hot border public void setHotBorderColor(Color color) { fControl.setData(HOT_BORDER_COLOR, color); setEraseListener(fControl); } public Color getHotBorderColor() { return getHotBorderColor(fControl); } public static Color getHotBorderColor(Control control) { Object data = control.getData(HOT_BORDER_COLOR); if (data instanceof Color) { return (Color) data; } return null; } }