Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * This file is part of WebLookAndFeel library.
 *
 * WebLookAndFeel library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * WebLookAndFeel library 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with WebLookAndFeel library.  If not, see <http://www.gnu.org/licenses/>.
 */

import java.awt.Component;

import java.awt.Container;

import javax.swing.JComponent;

public class Main {
    /**
     * Client property key that identifies that component can handle enabled
     * state changes.
     */
    public static final String HANDLES_ENABLE_STATE = "HANDLES_ENABLE_STATE";

    /**
     * Sets enabled state of component and all of its children.
     *
     * @param component
     *            component to modify
     * @param enabled
     *            whether component is enabled or not
     */
    public static void setEnabledRecursively(final Component component, final boolean enabled) {
        setEnabledRecursively(component, enabled, false);
    }

    /**
     * Sets enabled state of component and all of its children.
     *
     * @param component
     *            component to modify
     * @param enabled
     *            whether component is enabled or not
     * @param startFromChilds
     *            whether exclude component from changes or not
     */
    public static void setEnabledRecursively(final Component component, final boolean enabled,
            final boolean startFromChilds) {
        if (component == null) {
            return;
        }
        if (!startFromChilds) {
            component.setEnabled(enabled);
        }
        if (component instanceof Container) {
            if (!startFromChilds && isHandlesEnableState(component)) {
                return;
            }
            for (final Component child : ((Container) component).getComponents()) {
                setEnabledRecursively(child, enabled, false);
            }
        }
    }

    /**
     * Returns whether HANDLES_ENABLE_STATE mark is set in this component to
     * true or not.
     *
     * @param component
     *            component to process
     * @return true if HANDLES_ENABLE_STATE mark is set in this component to
     *         true, false otherwise
     */
    public static boolean isHandlesEnableState(final Component component) {
        if (component instanceof JComponent) {
            final Object handlesEnabledState = ((JComponent) component).getClientProperty(HANDLES_ENABLE_STATE);
            if (handlesEnabledState != null && handlesEnabledState instanceof Boolean
                    && (Boolean) handlesEnabledState) {
                return true;
            }
        }
        return false;
    }
}