/******************************************************************************* * Copyright (c) 2010 Oak Ridge National Laboratory. * 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 ******************************************************************************/ package org.csstudio.swt.xygraph.toolbar; import org.csstudio.swt.xygraph.util.SWTConstants; import org.csstudio.swt.xygraph.util.XYGraphMediaFactory; import org.eclipse.draw2d.Button; import org.eclipse.draw2d.ImageFigure; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; /**A button with gray image when disabled. * @author Xihui Chen * */ public class GrayableButton extends Button { Image image; Image grayImage; private static final String GRAY_IMAGE = "GrayableButton.GrayImage"; public GrayableButton(Image image) { this(image, null); } public GrayableButton(Image image, Image grayImage){ super(image); this.image = image; this.grayImage = XYGraphMediaFactory.getInstance().getRegisteredImage(GRAY_IMAGE + image.toString()); if( this.grayImage == null){ if(SWT.getPlatform().startsWith("rap")) { //$NON-NLS-1$ if( grayImage != null) this.grayImage = grayImage; else this.grayImage = image; } else this.grayImage = new Image(null, image, SWTConstants.IMAGE_GRAY); XYGraphMediaFactory.getInstance().registerImage(GRAY_IMAGE + image.toString(), this.grayImage); } } @Override public void setEnabled(boolean value) { super.setEnabled(value); if(value) setContents(new ImageFigure(image)); else setContents(new ImageFigure(grayImage)); } }