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

org.uncommons.watchmaker.swing.AbortControl Maven / Gradle / Ivy

There is a newer version: 0.7.1
Show newest version
// ============================================================================
//   Copyright 2006-2009 Daniel W. Dyer
//
//   Licensed under the Apache License, Version 2.0 (the "License");
//   you may not use this file except in compliance with the License.
//   You may obtain a copy of the License at
//
//       http://www.apache.org/licenses/LICENSE-2.0
//
//   Unless required by applicable law or agreed to in writing, software
//   distributed under the License is distributed on an "AS IS" BASIS,
//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//   See the License for the specific language governing permissions and
//   limitations under the License.
// ============================================================================
package org.uncommons.watchmaker.swing;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import org.uncommons.watchmaker.framework.TerminationCondition;
import org.uncommons.watchmaker.framework.termination.UserAbort;

/**
 * A GUI control that allows the user to abort an evolutionary program.
 * @author Daniel Dyer
 */
public class AbortControl implements EvolutionControl
{
    private final JButton control = new JButton("Abort");
    private final UserAbort abortCondition = new UserAbort();
    
    public AbortControl()
    {
        control.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent actionEvent)
            {
                control.setEnabled(false);
                abortCondition.abort();
            }
        });
        setDescription("Terminate the evolution on completion of the current generation.");
    }


    /**
     * @return A button that, when pressed, will trigger the abort condition
     * associated with this control.
     */
    public JButton getControl()
    {
        return control;
    }


    /**
     * Enables the GUI control and resets the abort condition ready
     * for use.
     */
    public void reset()
    {
        control.setEnabled(true);
        abortCondition.reset();
    }


    /**
     * @return A {@link TerminationCondition} that is tied to this control.  It can
     * be passed to an {@link org.uncommons.watchmaker.framework.EvolutionEngine}
     * so that the evolution is aborted when this control is invoked.
     */
    public TerminationCondition getTerminationCondition()
    {
        return abortCondition;
    }


    /**
     * {@inheritDoc}
     */
    public final void setDescription(String description)
    {
        control.setToolTipText(description);
    }    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy