package org.joone.edit;

import org.joone.net.NetChecker;
import org.joone.net.NeuralNet;
import org.joone.net.NetCheck;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.TreeSet;
import java.util.Iterator;

/**
 * This class creates a To Do frame centered on the coordinates of the parent JoonEdit application.
 *
 * @author Harry Glasgow
 */
public class TodoFrame extends JFrame {

    /** The patenr JoonEdit application. */
    private JoonEdit owner = null;

    /** The center panel that holds the details of the checks. */
    private JPanel centerPanel = new JPanel();

    /**
     * Constructor.
     *
     * @param ownerArg the parent JooneEdit application.
     */
    public TodoFrame(Frame ownerArg) {

        // Remember the parent for later.
        owner = (JoonEdit) ownerArg;

        setTitle("To Do List");
        setResizable(false);

        // JFrames have to work with the RootPane, not the default container
        JRootPane rp = getRootPane();
        rp.setLayout(new BorderLayout());

        // Set up a panel in the CENTER to display validation checks.
        centerPanel.setLayout(new GridLayout(0, 1));
        rp.add(centerPanel, BorderLayout.CENTER);

        // Set up a Revalidate button.
        Button b = new Button("Revalidate");
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                check();
                pack();
                repaint();
            }
        });
        JPanel jp2 = new JPanel();
        jp2.add(b);
        rp.add(jp2, BorderLayout.SOUTH);
    }

    /**
     * Method to perform checks and display the validation checks.
     */
    public void show() {
        check();
        pack();
        setIconImage(owner.getIconImage());
        setLocation((owner.getWidth() - owner.getX() - getWidth()) / 2,
                (owner.getHeight() - owner.getY() - getHeight()) / 2);
        super.show();
    }

    /**
     * Method to check the network and displa the new validation errors.
     */
    private void check() {
        NeuralNetDrawing nnd = (NeuralNetDrawing) owner.drawing();
        NeuralNet nn = nnd.getNeuralNet();
        NetChecker nc = new NetChecker(nn);
        TreeSet checks = nc.check();
        centerPanel.removeAll();
        if (checks.isEmpty()) {
            centerPanel.add(new JLabel("Network checks out okay."));
        } else {
            Iterator iter = checks.iterator();
            while (iter.hasNext()) {
                NetCheck netCheck = (NetCheck) iter.next();
                centerPanel.add(new JLabel(netCheck.toString()));
            }
        }
    }
}
 

Ads help maintain this website.