/* * Copyright 2005 MH-Software-Entwicklung. All rights reserved. * Use is subject to license terms. */ package com.jtattoo.plaf; import java.awt.Color; import java.awt.Graphics; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.*; import javax.swing.border.Border; import javax.swing.plaf.*; import javax.swing.plaf.basic.*; import javax.swing.text.JTextComponent; /** * @author Michael Hagen */ public class BaseEditorPaneUI extends BasicEditorPaneUI { private Border orgBorder = null; private FocusListener focusListener = null; public static ComponentUI createUI(JComponent c) { return new BaseEditorPaneUI(); } public void installDefaults() { super.installDefaults(); updateBackground(); } protected void installListeners() { super.installListeners(); if (AbstractLookAndFeel.getTheme().doShowFocusFrame()) { focusListener = new FocusListener() { public void focusGained(FocusEvent e) { if (getComponent() != null) { orgBorder = getComponent().getBorder(); LookAndFeel laf = UIManager.getLookAndFeel(); if (laf instanceof AbstractLookAndFeel && orgBorder instanceof UIResource) { Border focusBorder = ((AbstractLookAndFeel)laf).getBorderFactory().getFocusFrameBorder(); getComponent().setBorder(focusBorder); } getComponent().invalidate(); getComponent().repaint(); } } public void focusLost(FocusEvent e) { if (getComponent() != null) { getComponent().setBorder(orgBorder); getComponent().invalidate(); getComponent().repaint(); } } }; getComponent().addFocusListener(focusListener); } } protected void uninstallListeners() { getComponent().removeFocusListener(focusListener); focusListener = null; super.uninstallListeners(); } protected void paintBackground(Graphics g) { g.setColor(getComponent().getBackground()); if (AbstractLookAndFeel.getTheme().doShowFocusFrame()) { if (getComponent().hasFocus() && getComponent().isEditable()) { g.setColor(AbstractLookAndFeel.getTheme().getFocusBackgroundColor()); } } g.fillRect(0, 0, getComponent().getWidth(), getComponent().getHeight()); } private void updateBackground() { JTextComponent c = getComponent(); if (c.getBackground() instanceof UIResource) { if (!c.isEnabled() || !c.isEditable()) { c.setBackground(AbstractLookAndFeel.getDisabledBackgroundColor()); } else { c.setBackground(AbstractLookAndFeel.getInputBackgroundColor()); } } } }