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

org.jgrasstools.gui.console.LogConsoleController Maven / Gradle / Ivy

The newest version!
package org.jgrasstools.gui.console;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.io.PrintStream;

import javax.swing.JComponent;
import javax.swing.text.BadLocationException;

import org.jgrasstools.gears.libs.modules.JGTConstants;
import org.jgrasstools.gears.libs.monitor.IJGTProgressMonitor;
import org.jgrasstools.gears.libs.monitor.LogProgressMonitor;
import org.jgrasstools.gui.utils.GuiUtilities;
import org.jgrasstools.gui.utils.ImageCache;
import org.joda.time.DateTime;

public class LogConsoleController extends LogConsoleView {

    private IJGTProgressMonitor pm = new LogProgressMonitor();
    private String processName;
    private PrintStream logAreaPrintStream;

    public LogConsoleController( final IJGTProgressMonitor pm ) {
        if (pm != null)
            this.pm = pm;
        init();
    }

    private void init() {
        clearButton.addActionListener(new ActionListener(){
            public void actionPerformed( ActionEvent e ) {
                // clears the text area
                try {
                    logArea.getDocument().remove(0, logArea.getDocument().getLength());
                } catch (BadLocationException ex) {
                    ex.printStackTrace();
                }
            }
        });
        clearButton.setIcon(ImageCache.getInstance().getImage(ImageCache.TRASH));

        copyButton.addActionListener(new ActionListener(){
            public void actionPerformed( ActionEvent e ) {
                GuiUtilities.copyToClipboard(logArea.getText());
            }
        });
        copyButton.setIcon(ImageCache.getInstance().getImage(ImageCache.COPY));

        stopButton.addActionListener(new ActionListener(){
            public void actionPerformed( ActionEvent e ) {
                if (pm != null)
                    pm.setCanceled(true);
                stopButton.setEnabled(false);
            }
        });
        stopButton.setIcon(ImageCache.getInstance().getImage(ImageCache.PROGRESS_STOP));

        logAreaPrintStream = new PrintStream(new CustomOutputStream(logArea));

        // re-assigns standard output stream and error output stream
        System.setOut(logAreaPrintStream);
        System.setErr(logAreaPrintStream);

        setPreferredSize(new Dimension(480, 320));

        addComponentListener(new ComponentListener(){

            public void componentShown( ComponentEvent e ) {
            }

            public void componentResized( ComponentEvent e ) {
            }

            public void componentMoved( ComponentEvent e ) {
            }

            public void componentHidden( ComponentEvent e ) {
                stopLogging();
            }

        });

    }

    public PrintStream getLogAreaPrintStream() {
        return logAreaPrintStream;
    }

    public void beginProcess( String name ) {
        processName = name;
        System.out.println("Process " + name + " started at: "
                + new DateTime().toString(JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS) + "\n\n");
    }

    public void finishProcess() {
        System.out.println("\n\nProcess " + processName + " stopped at: "
                + new DateTime().toString(JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS));
        stopButton.setEnabled(false);
    }

    public void stopLogging() {
        System.setOut(System.out);
        System.setErr(System.err);
    }

    public JComponent asJComponent() {
        return this;
    }

    public IJGTProgressMonitor getProgressMonitor() {
        return pm;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy