package org.goko.gcode.rs274ngcv3.ui.workspace.uiprovider.menu.modifier; 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.rs274ngcv3.IRS274NGCService; import org.goko.core.gcode.rs274ngcv3.element.GCodeProvider; import org.goko.core.gcode.rs274ngcv3.element.IModifier; import org.goko.core.log.GkLog; public class EnableDisableAction extends Action { /** LOG */ private static final GkLog LOG = GkLog.getLogger(EnableDisableAction.class); /** GCode service */ private IRS274NGCService rs274Service; /** Target modifier */ private Integer idModifier; public EnableDisableAction(IRS274NGCService rs274Service, Integer idModifier) { super("Enable", Action.AS_CHECK_BOX); this.idModifier = idModifier; this.rs274Service = rs274Service; try { IModifier<GCodeProvider> modifier = rs274Service.getModifier(idModifier); setChecked(modifier.isEnabled()); } catch (GkException e) { LOG.error(e); } } /** (inheritDoc) * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { try { IModifier<GCodeProvider> modifier = rs274Service.getModifier(idModifier); IGCodeProvider provider = rs274Service.getGCodeProvider(modifier.getIdGCodeProvider()); return !provider.isLocked(); } catch (GkException e) { LOG.error(e); return false; } } /** * (inheritDoc) * * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { try { IModifier<GCodeProvider> modifier = rs274Service.getModifier(idModifier); modifier.setEnabled(isChecked()); rs274Service.updateModifier(modifier); } catch (GkException e) { LOG.error(e); } } }