All Downloads are FREE. Search and download functionalities are using the official Maven repository.

freeseawind.lf.event.LuckBorderFocusHandle Maven / Gradle / Ivy

The newest version!
package freeseawind.lf.event;

import java.awt.Component;
import java.awt.event.FocusEvent;
import java.awt.event.MouseEvent;

import javax.swing.JComponent;

import freeseawind.lf.border.LuckBorderField;
import freeseawind.lf.border.LuckShapeBorder;

/**
 * A border focus handler implement class.
 *
 * @author freeseawind@github
 * @version 1.0
 */
public abstract class LuckBorderFocusHandle extends LuckFocusHandle
{
    public LuckBorderFocusHandle()
    {
    }

    @Override
    public void mouseEntered(MouseEvent e)
    {
        if(isLuckLineBorder())
        {
            handleFocusGained();
        }
    }

    @Override
    public void mouseExited(MouseEvent e)
    {
        Component source = (Component) e.getSource();

        if (isLuckLineBorder() && !source.contains(e.getPoint()))
        {
            handleFocusLost();
        }
    }

    @Override
    public void focusLost(FocusEvent e)
    {
        if(isLuckLineBorder())
        {
            handleFocusLost();
        }
    }

    /**
     * 获取事件源
     *
     * @return JComponent获取焦点的组件
     */
    public abstract JComponent getComponent();

    /**
     * 获取边框属性
     *
     * @return LuckBorderField
     */
    public abstract LuckBorderField getBorderField();

    /**
     * 失去焦点事件
     */
    protected void handleFocusLost()
    {
        if(getBorderField().isFocusGaind() && !getComponent().isFocusOwner())
        {
            getBorderField().setFocusGained(false);

            getComponent().repaint();
        }
    }

    /**
     * 获取焦点事件
     */
    protected void handleFocusGained()
    {
        if(!getBorderField().isFocusGaind() && getComponent().isEnabled())
        {
            getBorderField().setFocusGained(true);

            getComponent().repaint();
        }
    }

    /**
     * 判断是否是指定的焦点边框
     *
     * @return
     */
    private boolean isLuckLineBorder()
    {
        if (getComponent().getBorder() instanceof LuckShapeBorder)
        {
            return true;
        }

        return false;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy