/** * L2FProd.com Common Components 7.3 License. * * Copyright 2005-2007 L2FProd.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 com.l2fprod.common.swing.renderer; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Paint; import javax.swing.Icon; import javax.swing.UIManager; /** * ColorCellRenderer. */ public class ColorCellRenderer extends DefaultCellRenderer { public static String toHex(Color color) { String red = Integer.toHexString(color.getRed()); String green = Integer.toHexString(color.getGreen()); String blue = Integer.toHexString(color.getBlue()); if (red.length() == 1) { red = "0" + red; } if (green.length() == 1) { green = "0" + green; } if (blue.length() == 1) { blue = "0" + blue; } return ("#" + red + green + blue).toUpperCase(); } protected String convertToString(Object value) { if (value instanceof Integer) { value = new Color(((Integer)value).intValue()); } if (!(value instanceof Color)) { return null; } Color color = (Color)value; return "R:" + color.getRed() + " G:" + color.getGreen() + " B:" + color.getBlue() + " - " + toHex(color); } protected Icon convertToIcon(Object value) { if (value == null) { return null; } if (value instanceof Integer) { value = new Color(((Integer)value).intValue()); } return new PaintIcon((Paint)value); } public static class PaintIcon implements Icon { private final Paint color; private final int width; private final int height; public PaintIcon(Paint color) { this(color, 20, 10); } public PaintIcon(Paint color, int width, int height) { this.color = color; this.width = width; this.height = height; } public int getIconHeight() { return height; } public int getIconWidth() { return width; } public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D)g; Paint oldPaint = g2d.getPaint(); if (color != null) { g2d.setPaint(color); g.fillRect(x, y, getIconWidth(), getIconHeight()); } g.setColor(UIManager.getColor("controlDkShadow")); g.drawRect(x, y, getIconWidth(), getIconHeight()); g2d.setPaint(oldPaint); } } }