Package org.gudy.azureus2.ui.swt.config

Source Code of org.gudy.azureus2.ui.swt.config.ColorParameter

/*
* File    : ColorParameter.java
* Created : 12 nov. 2003
* By      : Olivier
*
* Azureus - a Java Bittorrent client
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details ( see the LICENSE file ).
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package org.gudy.azureus2.ui.swt.config;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;

import com.aelitis.azureus.ui.swt.utils.ColorCache;


/**
* @author Olivier
*
*/
public class ColorParameter extends Parameter implements ParameterListener {

 
  private Button colorChooser;
  protected String sParamName;
  private Image img;
 
  private int r;
  private int g;
  private int b;

  public ColorParameter(final Composite composite,
                        final String name,
                        int _r, int _g, int _b) {
    super(name);
    sParamName = name;
    colorChooser = new Button(composite,SWT.PUSH);
    r = COConfigurationManager.getIntParameter(name+".red",_r);
    g = COConfigurationManager.getIntParameter(name+".green",_g);
    b = COConfigurationManager.getIntParameter(name+".blue",_b);
    updateButtonColor(composite.getDisplay(), r, g, b);

    COConfigurationManager.addParameterListener(sParamName, this);
   
    colorChooser.addListener(SWT.Dispose, new Listener() {
      public void handleEvent(Event e) {
        COConfigurationManager.removeParameterListener(sParamName, ColorParameter.this);
        if(img != null && ! img.isDisposed()) {
          img.dispose();         
        }
      }
    });

    colorChooser.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        ColorDialog cd = new ColorDialog(composite.getShell());
        cd.setRGB(new RGB(r,g,b));
        RGB newColor = cd.open();
        if (newColor == null)
          return;
        newColorChosen();
        COConfigurationManager.setRGBParameter(name, newColor.red, newColor.green, newColor.blue);
        newColorSet();
      }
    });
   
  }
 
  private void updateButtonColor(final Display display, final int rV, final int gV, final int bV) {
    Image oldImg = img;
    Color color = ColorCache.getColor(display, rV, gV, bV);
    img = new Image(display,25,10);
    GC gc = new GC(img);
    gc.setBackground(color);
    gc.fillRectangle(0,0,25,10);
    gc.dispose();
    colorChooser.setImage(img);
    if(oldImg != null && ! oldImg.isDisposed())
      oldImg.dispose();
  }

  public Control getControl() {
    return colorChooser;
  }

  public void setLayoutData(Object layoutData) {
    colorChooser.setLayoutData(layoutData);
  }

  public void parameterChanged(String parameterName) {
    r = COConfigurationManager.getIntParameter(sParamName+".red");
    g = COConfigurationManager.getIntParameter(sParamName+".green");
    b = COConfigurationManager.getIntParameter(sParamName+".blue");
    updateButtonColor(colorChooser.getDisplay(), r, g, b);
  }
 
  public void newColorChosen() {
    // subclasses can write their own code
  }
 
  public void newColorSet() {
    // subclasses can write their own code
  }

  public void setValue(Object value) {
    // not needed, we already trap external changes
  }
}
TOP

Related Classes of org.gudy.azureus2.ui.swt.config.ColorParameter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.