blob: 79dd4735f5a35ddd14dc0763958bc757dfd47c19 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* 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.intellij.uiDesigner.lw;
import javax.swing.*;
import java.awt.*;
import java.lang.reflect.Field;
/**
* @author yole
*/
public class ColorDescriptor {
private final Color myColor;
private String mySwingColor;
private String mySystemColor;
private String myAWTColor;
public ColorDescriptor(final Color color) {
myColor = color;
}
public static ColorDescriptor fromSwingColor(final String swingColor) {
ColorDescriptor result = new ColorDescriptor(null);
result.mySwingColor = swingColor;
return result;
}
public static ColorDescriptor fromSystemColor(final String systemColor) {
ColorDescriptor result = new ColorDescriptor(null);
result.mySystemColor = systemColor;
return result;
}
public static ColorDescriptor fromAWTColor(final String awtColor) {
ColorDescriptor result = new ColorDescriptor(null);
result.myAWTColor = awtColor;
return result;
}
private static Color getColorField(final Class aClass, final String fieldName) {
try {
final Field field = aClass.getDeclaredField(fieldName);
return (Color)field.get(null);
}
catch (NoSuchFieldException e) {
return Color.black;
}
catch (IllegalAccessException e) {
return Color.black;
}
}
public Color getResolvedColor() {
if (myColor != null) {
return myColor;
}
if (mySwingColor != null) {
return UIManager.getColor(mySwingColor);
}
if (mySystemColor != null) {
return getColorField(SystemColor.class, mySystemColor);
}
if (myAWTColor != null) {
return getColorField(Color.class, myAWTColor);
}
return null;
}
public Color getColor() {
return myColor;
}
public String getSwingColor() {
return mySwingColor;
}
public String getSystemColor() {
return mySystemColor;
}
public String getAWTColor() {
return myAWTColor;
}
public String toString() {
if (mySwingColor != null) {
return mySwingColor;
}
if (mySystemColor != null) {
return mySystemColor;
}
if (myAWTColor != null) {
return myAWTColor;
}
if (myColor != null) {
return "[" + myColor.getRed() + "," + myColor.getGreen() + "," + myColor.getBlue() + "]";
}
return "null";
}
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof ColorDescriptor)) {
return false;
}
ColorDescriptor rhs = (ColorDescriptor) obj;
if (myColor != null) {
return myColor.equals(rhs.myColor);
}
if (mySwingColor != null) {
return mySwingColor.equals(rhs.mySwingColor);
}
if (mySystemColor != null) {
return mySystemColor.equals(rhs.mySystemColor);
}
if (myAWTColor != null) {
return myAWTColor.equals(rhs.myAWTColor);
}
return false;
}
public boolean isColorSet() {
return myColor != null || mySwingColor != null || mySystemColor != null || myAWTColor != null;
}
}