001: /*
002: * Copyright 2005 Patrick Gotthardt
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package com.pagosoft.plaf;
017:
018: import javax.swing.*;
019: import javax.swing.plaf.*;
020: import javax.swing.plaf.basic.*;
021: import javax.swing.plaf.metal.*;
022: import java.awt.*;
023:
024: public class PgsToggleButtonUI extends MetalToggleButtonUI {
025: private static PgsToggleButtonUI INSTANCE = new PgsToggleButtonUI();
026:
027: public static ComponentUI createUI(JComponent c) {
028: if (c.getParent() instanceof JToolBar) {
029: return ToolBarToggleButtonUI.createUI(c);
030: }
031: return INSTANCE;
032: }
033:
034: public void installDefaults(AbstractButton b) {
035: super .installDefaults(b);
036: b.setFocusPainted(false);
037: b.putClientProperty("rolloverBackground", UIManager
038: .getColor("ToggleButton.rolloverBackground"));
039: b.putClientProperty("pgs.isFlat", UIManager
040: .get("ToggleButton.isFlat"));
041: b.putClientProperty("gradientStart", UIManager
042: .get("ToggleButton.gradientStart"));
043: b.putClientProperty("gradientEnd", UIManager
044: .get("ToggleButton.gradientEnd"));
045: b.putClientProperty("rollover.gradientStart", UIManager
046: .get("ToggleButton.rolloverGradientStart"));
047: b.putClientProperty("rollover.gradientEnd", UIManager
048: .get("ToggleButton.rolloverGradientEnd"));
049: b.putClientProperty("selected.gradientStart", UIManager
050: .get("ToggleButton.selectedGradientStart"));
051: b.putClientProperty("selected.gradientEnd", UIManager
052: .get("ToggleButton.selectedGradientEnd"));
053: }
054:
055: protected BasicButtonListener createButtonListener(AbstractButton b) {
056: return new RolloverButtonListener(b);
057: }
058:
059: protected void paintFocus(Graphics g, AbstractButton b,
060: Rectangle viewRect, Rectangle textRect, Rectangle iconRect) {
061:
062: int topLeftInset = 3;
063: int width = b.getWidth() - topLeftInset * 2;
064: int height = b.getHeight() - topLeftInset * 2;
065:
066: g.setColor(getFocusColor());
067: PgsUtils.drawRoundRect(g, topLeftInset, topLeftInset,
068: width - 1, height - 1, 3, 3);
069: }
070:
071: public void update(Graphics g, JComponent c) {
072: AbstractButton b = (AbstractButton) c;
073: if (c.isOpaque()) {
074: if (b.isContentAreaFilled()) {
075: if (Boolean.TRUE.equals(c
076: .getClientProperty("pgs.isFlat"))
077: || !b.isEnabled()) {
078: g.setColor(c.isEnabled()
079: && b.getModel().isRollover() ? (Color) c
080: .getClientProperty("rolloverBackground")
081: : c.getBackground());
082: g.fillRect(0, 0, c.getWidth(), c.getHeight());
083: } else {
084: if (c.isEnabled() && b.getModel().isRollover()) {
085: PgsUtils.drawGradient(g, c, "rollover");
086: } else {
087: PgsUtils.drawGradient(g, c);
088: }
089: }
090: }
091: }
092: super .paint(g, c);
093: }
094:
095: protected void paintButtonPressed(Graphics g, AbstractButton b) {
096: if (b.isContentAreaFilled()) {
097: if (Boolean.TRUE.equals(b.getClientProperty("pgs.isFlat"))) {
098: g.setColor(getSelectColor());
099: g.fillRect(0, 0, b.getWidth(), b.getHeight());
100: } else {
101: PgsUtils.drawGradient(g, b, "selected");
102: }
103: }
104: }
105: }
|