/*---------------------------------------------------------------------------
File:         			FunctionThread.java
Package:                        JFLAP Version 3.0
Author:			        Eric Gramond 
                                
Description of Contents:	Contains class FunctionThread.
				
--------------------------------------------------------------------------*/

/* 
 * Susan H. Rodger, Magda Procopiuc, Octavian Procopiuc, Eric Gramond
 * Computer Science Department
 * Duke University
 * June 1998
 * Supported by National Science Foundation DUE-9596002 and DUE-9555084.
 *
 * Copyright (c) 1998
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the author.  The name of the author may not be used to
 * endorse or promote products derived from this software without
 * specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */
package flap;

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
import java.net.URL;
import java.util.*;
import java.lang.reflect.*;


/**
 * thread used to run a given function on its own separate thread. 
 * makes life much simpler.
 */
public class FunctionThread extends Thread {

    
    Method myFunction;
    Object myTarget;
    Object[] myArguments;

    public FunctionThread( Method function, Object target, Object[] arguments) {
	myFunction = function;
	myTarget = target;
	myArguments = arguments;
    }
    
    public void run() {
	try {
	    myFunction.invoke(myTarget, myArguments);
	}
	catch(InvocationTargetException h) {
	    System.out.println("Invocation target exception: " +h.getTargetException().getMessage());
	}
	catch (IllegalAccessException h) {
	    System.out.println("IllegalAccessException");
	}
    }

}
