package org.goko.gcode.rs274ngcv3.ui.workspace.uiprovider.menu.gcoderepository; import java.util.List; import org.apache.commons.collections.CollectionUtils; 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.execution.ExecutionState; import org.goko.core.gcode.service.IExecutionService; import org.goko.core.gcode.service.IGCodeProviderRepository; import org.goko.core.log.GkLog; /** * Action to add all the gcode provider to the queue * * @author Psyko * */ public class AddAllGCodeInQueueAction extends Action { /** LOG */ private static final GkLog LOG = GkLog.getLogger(AddAllGCodeInQueueAction.class); /** Target execution service */ private IExecutionService<?,?> executionService; /** Target GCode service */ private IGCodeProviderRepository gcodeRepository; /** * Constructor * @param executionService the execution service * @param gcodeService the gcode service */ public AddAllGCodeInQueueAction(IExecutionService<?, ?> executionService, IGCodeProviderRepository gcodeRepository) { super("Add all to execution queue"); this.executionService = executionService; this.gcodeRepository = gcodeRepository; } /** (inheritDoc) * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { boolean enabled = false; try { // Enabled when not running enabled = !ExecutionState.RUNNING.equals(executionService.getExecutionState()) && !ExecutionState.PAUSED.equals(executionService.getExecutionState()) && !ExecutionState.ERROR.equals(executionService.getExecutionState()); } catch (GkException e) { LOG.error(e); } return enabled; } /** (inheritDoc) * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { try { List<IGCodeProvider> lstProvider = gcodeRepository.getGCodeProvider(); if(CollectionUtils.isNotEmpty(lstProvider)){ for (IGCodeProvider gcodeProvider : lstProvider) { if(executionService.findExecutionTokenByGCodeProvider(ExecutionQueueType.DEFAULT, gcodeProvider) == null){ executionService.addToExecutionQueue(gcodeProvider); } } } } catch (GkException e) { LOG.error(e); } } }