/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2011 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.server.headlessclient.eventthread;
import com.servoy.j2db.util.Debug;
/**
* A default empty event used by the {@link WicketEventDispatcher}
*
* @author jcompagner
*
* @since 6.1
*
*/
public class Event
{
private volatile boolean runInBackground;
private volatile boolean suspended;
private final Runnable runnable;
private volatile boolean executed;
private volatile Exception exception;
public Event(Runnable runnable)
{
this.runnable = runnable;
}
/**
* Called by the script thread to execute itself.
*/
public void execute()
{
try
{
if (runnable != null)
{
runnable.run();
}
}
catch (Exception e)
{
Debug.error(e);
exception = e;
}
finally
{
executed = true;
}
}
/**
* @return the exception
*/
public Exception getException()
{
return exception;
}
/**
* Called when this event will be suspended, will set this event in a suspended state.
*/
public void willSuspend()
{
suspended = true;
}
/**
* Called when this event will be resumed will set this event in a resumed state.
*/
public void willResume()
{
suspended = false;
}
/**
* @return the executed
*/
public boolean isExecuted()
{
return executed;
}
/**
* @return true This will return true if this event is in a suspended state.
*/
public boolean isSuspended()
{
return suspended;
}
/**
* Must be called when this event will be executed in the background (the ui will be painted)
*/
public void executeInBackground()
{
runInBackground = true;
}
/**
* @return true when {@link #executeInBackground()} was called.
*/
public boolean isExecutingInBackground()
{
return runInBackground;
}
}