Package org.eclipse.jst.jsf.taglibprocessing.attributevalues

Source Code of org.eclipse.jst.jsf.taglibprocessing.attributevalues.ColorType

/*******************************************************************************
* Copyright (c) 2007 Oracle Corporation., 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:
*    Yury Kats/Oracle - initial API and implementation
*   
********************************************************************************/
package org.eclipse.jst.jsf.taglibprocessing.attributevalues;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.graphics.RGB;

/**
* Meta-data processing type representing a color.
* A color is defined as in html spec http://www.w3.org/TR/html4/types.html#type-color
*
* <p><b>Provisional API - subject to change</b></p>
*
* @author ykats
*/

public class ColorType extends EnumerationType implements IPossibleValues {
 
  /**
   * List of standard colors
   * See http://www.w3.org/TR/html4/types.html#type-color
   */
  private final static String[] COLORS = {"Black", "Silver", "Gray", "White", "Maroon", "Red", "Purple", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
        "Fuchsia", "Green", "Lime", "Olive", "Yellow", "Navy", "Blue", "Teal","Aqua"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$
    //if ordering changes, must change RGB[] ordering

  private RGB[] _rgb;

  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.taglibprocessing.attributevalues.EnumerationType#getReturnType()
   */
  protected String getReturnType(){ return "java.lang.String";} //$NON-NLS-1$

  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.metadataprocessors.features.IValidValues#isValidValue(java.lang.String)
   */
  public boolean isValidValue(String value) { 
    boolean bValid = true;
    String trimmedVal = value.trim();
    if (trimmedVal.length() == 0)
      bValid = false;
    else if (trimmedVal.charAt(0) == '#' && trimmedVal.length() == 7) {
      for (int i=1; i<7; i++) {
        if (trimmedVal.charAt(i) < '0' ||
          (trimmedVal.charAt(i) > '9' && trimmedVal.charAt(i) < 'A') ||
          (trimmedVal.charAt(i) > 'F' && trimmedVal.charAt(i) < 'a') ||
          trimmedVal.charAt(i) > 'f') {
          bValid = false;
          break;
        }
      }
    }
    else {
      bValid = false;
      for (int i = 0; i < COLORS.length; i++) {
        if(trimmedVal.equalsIgnoreCase(COLORS[i])) {
          bValid = true;
          break;
        }
      }
    }
   
    if(!bValid) {
      addNewValidationMessage(Messages.ColorType_invalid_color);
    }
   
    return getValidationMessages().isEmpty();
  }

  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues#getPossibleValues()
   */
  public List getPossibleValues() {
    List ret = new ArrayList(COLORS.length);
    for (int i=0;i < COLORS.length;i++){
      PossibleValue pv = new PossibleValue(COLORS[i]);
      pv.setIcon(createImage(i));
      ret.add(pv);
    }
    return ret;
  }

  private ImageDescriptor createImage(int color) {
    PaletteData pd = getPaletteData(color);
    return ImageDescriptor.createFromImageData(new ImageData(16, 16, 1, pd));
  }

  private PaletteData getPaletteData(int color){
    if (_rgb == null){
      _rgb = new RGB[16];
      _rgb[0] = new RGB(0,0,0);//black
      _rgb[1] = new RGB(192,192,192);//silver
      _rgb[2] = new RGB(128,128,128);//gray
      _rgb[3] = new RGB(255,255,255);//white
      _rgb[4] = new RGB(128,0,0);//Maroon
      _rgb[5] = new RGB(255,0,0);//Red
      _rgb[6] = new RGB(128,0,128);//Purple
      _rgb[7] = new RGB(255,0,255);//Fuchsia
      _rgb[8] = new RGB(0,128,0);//Green
      _rgb[9] = new RGB(0,255,0);//Lime
      _rgb[10] = new RGB(128,128,0);//Olive
      _rgb[11] = new RGB(255,255,0);//Yellow
      _rgb[12] = new RGB(0,0,128);//Navy
      _rgb[13] = new RGB(0,0,255);//Blue
      _rgb[14] = new RGB(0,128,128);//Teal
      _rgb[15] = new RGB(0,255,255);//Aqua
    }
    RGB[] rgbColor = new RGB[1];
    System.arraycopy(_rgb, color, rgbColor, 0, 1);
    return new PaletteData(rgbColor);
  }
}
TOP

Related Classes of org.eclipse.jst.jsf.taglibprocessing.attributevalues.ColorType

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.