/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ package org.pentaho.di.ui.core.gui; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; /** * Class to keep track of which color is a system color (managed by the OS) and which is not. * * @author Matt * @since 2006-06-15 * */ public class ManagedColor { private Color color; private boolean systemColor; /** * @param color * The color * @param systemColor * true if this is a system color and doesn't need to be disposed off */ public ManagedColor( Color color, boolean systemColor ) { this.color = color; this.systemColor = systemColor; } /** * Create a new managed color by using the Red Green & Blue values. * * @param display * @param rgb */ public ManagedColor( Display display, RGB rgb ) { this.color = new Color( display, rgb ); this.systemColor = false; } /** * Create a new managed color by using the Red Green & Blue values. * * @param display * @param r * Red composite * @param g * Green composite * @param b * Blue composite */ public ManagedColor( Display display, int r, int g, int b ) { this.color = new Color( display, r, g, b ); this.systemColor = false; } /** * Create a managed color by specifying the color (SWT.COLOR_*) * * @param display * @param color */ public ManagedColor( Display display, int color ) { this.color = display.getSystemColor( color ); this.systemColor = false; } /** * Free the managed resource if it hasn't already been done and if this is not a system color * */ public void dispose() { // System color and already disposed off colors don't need to be disposed! if ( !systemColor && !color.isDisposed() ) { color.dispose(); } } /** * @return Returns the color. */ public Color getColor() { return color; } /** * @param color * the color to set */ public void setColor( Color color ) { this.color = color; } /** * @param systemColor * the systemColor to set */ public void setSystemColor( boolean systemColor ) { this.systemColor = systemColor; } /** * @return true if this is a system color. */ public boolean isSystemColor() { return systemColor; } }