/* This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2011 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ package com.servoy.j2db.util.gui; import java.awt.Color; import java.awt.Component; import java.awt.Insets; import javax.swing.border.BevelBorder; import com.servoy.j2db.util.ComponentFactoryHelper; /** * Bevel border supporting custom border insets * * @author gboros * */ public class CustomBevelBorder extends BevelBorder implements ISupportCustomBorderInsets { private final Insets customBorderInsets; // tries to imitate web behavior when only one color is defined private Color customColor = null; public CustomBevelBorder(int bevelType, Insets customBorderInsets) { super(bevelType); this.customBorderInsets = customBorderInsets; } public CustomBevelBorder(int bevelType, Color customColor, Insets customBorderInsets) { super(bevelType); this.customBorderInsets = customBorderInsets; this.customColor = customColor; } public CustomBevelBorder(int bevelType, Color highlight, Color shadow, Insets customBorderInsets) { super(bevelType, highlight, shadow); this.customBorderInsets = customBorderInsets; } public CustomBevelBorder(int bevelType, Color highlightOuterColor, Color highlightInnerColor, Color shadowOuterColor, Color shadowInnerColor, Insets customBorderInsets) { super(bevelType, highlightOuterColor, highlightInnerColor, shadowOuterColor, shadowInnerColor); this.customBorderInsets = customBorderInsets; } public Insets getCustomBorderInsets() { if (customBorderInsets != null) { return customBorderInsets; } return ComponentFactoryHelper.getBorderInsetsForNoComponent(this); } @Override public Color getHighlightInnerColor(Component c) { if (customColor != null) { return customColor.brighter().brighter(); } return super.getHighlightInnerColor(c); } @Override public Color getHighlightOuterColor(Component c) { if (customColor != null) { return customColor.brighter().brighter().brighter(); } return super.getHighlightOuterColor(c); } @Override public Color getShadowInnerColor(Component c) { if (customColor != null) { return customColor.darker().darker(); } return super.getShadowInnerColor(c); } @Override public Color getShadowOuterColor(Component c) { if (customColor != null) { return customColor.darker().darker().darker(); } return super.getShadowOuterColor(c); } }