/**
*
*/
package org.goko.gcode.rs274ngcv3.ui.workspace.uiprovider.menu.gcodeprovider;
import org.eclipse.jface.action.Action;
import org.goko.core.common.exception.GkException;
import org.goko.core.gcode.element.IGCodeProvider;
import org.goko.core.gcode.execution.ExecutionQueueType;
import org.goko.core.gcode.service.IExecutionService;
import org.goko.core.gcode.service.IGCodeProviderRepository;
import org.goko.core.log.GkLog;
import org.goko.gcode.rs274ngcv3.ui.workspace.RS274WorkspaceService;
/**
* @author PsyKo
* @date 22 nov. 2015
*/
public class AddExecutionQueueAction extends Action{
/** LOG */
private static final GkLog LOG = GkLog.getLogger(AddExecutionQueueAction.class);
/** Target GCode provider */
private Integer idGCodeProvider;
/** IRS274NGCService */
private IGCodeProviderRepository gcodeProviderRepository;
/** Target execution service*/
private IExecutionService<?, ?> executionService;
/**
* Constructor
* @param rs274WorkspaceService the {@link RS274WorkspaceService}
* @param idGCodeProvider the target GCodeProvider id
*/
public AddExecutionQueueAction(IGCodeProviderRepository gcodeProviderRepository, IExecutionService<?, ?> executionService, Integer idGCodeProvider) {
super("Add to execution queue");
this.executionService = executionService;
this.idGCodeProvider = idGCodeProvider;
this.gcodeProviderRepository = gcodeProviderRepository;
}
/** (inheritDoc)
* @see org.eclipse.jface.action.Action#isEnabled()
*/
@Override
public boolean isEnabled() {
try {
IGCodeProvider provider = gcodeProviderRepository.getGCodeProvider(idGCodeProvider);
boolean exists = executionService.findExecutionTokenByGCodeProvider(ExecutionQueueType.DEFAULT, provider) != null;
return !exists && provider.hasErrors() == false;
} catch (GkException e) {
LOG.error(e);
}
return false;
}
/** (inheritDoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
try {
executionService.addToExecutionQueue(gcodeProviderRepository.getGCodeProvider(idGCodeProvider));
} catch (GkException e) {
LOG.error(e);
}
}
}