/**
	This method is used to redo the last operation
*/
void ControllerEditor::redo(){
	if( nextControlShot >= maxControlShot+1 ) return;
	nextControlShot++;
	clearEditedCurves();
	delete conF;
	loadFramework(nextControlShot-1);	
}
/**
	This method is used to undo the last operation
*/
void ControllerEditor::undo(){
	if( nextControlShot <= 0 ) return;
	nextControlShot--;
	clearEditedCurves();
	delete conF;
	loadFramework(nextControlShot-1);	
}
/**
 * This method is used to reload the application.
 */
void ControllerEditor::reload(){
	nextControlShot = 0;
	clearEditedCurves();

	delete conF;
	loadFramework();
}
jint JNI_GetCreatedJavaVMs(JavaVM **vmBuf, jsize bufLen, jsize *nVMs)
{
    static const struct mach_header *header = 0;
    if (!header) {
        header = loadFramework("/System/Library/Frameworks/JavaVM.framework/JavaVM");
    }
    static jint(*functionPointer)(JavaVM **, jsize, jsize *) = 0;
    if (!functionPointer) {
        functionPointer = getFunctionPointer(header, "_JNI_GetCreatedJavaVMs");
    }
    return functionPointer(vmBuf, bufLen, nVMs);
}
/**
 * Constructor.
 */
ControllerEditor::ControllerEditor(void){
	tprintf("Loading Controller Editor...\n");
	strcpy(inputFile,  "init/input.conF");

	loadFramework();

	Globals::changeCurrControlShotStr( -1 );
	conF->getState(&conState);

	nextControlShot = 0;
	maxControlShot = -1;

	registerTclFunctions();
}
/**
 * This method is used to create a physical world and load the objects in it.
 */
void ControllerEditor::loadFramework(){
	loadFramework( -1 );
}