/** * (c) Urs Zeidler */ package de.urszeidler.eclipse.shr5.gameplay.impl; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Date; import java.util.List; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; import de.urszeidler.eclipse.shr5.gameplay.Command; import de.urszeidler.eclipse.shr5.gameplay.GameplayPackage; import de.urszeidler.eclipse.shr5.gameplay.SetFeatureCommand; import de.urszeidler.eclipse.shr5.gameplay.util.CommandCallback; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Set Feature Command</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#isExecuted <em>Executed</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#getSubCommands <em>Sub Commands</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#getDate <em>Date</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#getCmdCallback <em>Cmd Callback</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#isExecuting <em>Executing</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#isCanExecute <em>Can Execute</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#isHidden <em>Hidden</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#getValue <em>Value</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#getObject <em>Object</em>}</li> * <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.SetFeatureCommandImpl#getFeature <em>Feature</em>}</li> * </ul> * </p> * * @generated */ public class SetFeatureCommandImpl extends MinimalEObjectImpl.Container implements SetFeatureCommand { /** * The default value of the '{@link #isExecuted() <em>Executed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isExecuted() * @generated * @ordered */ protected static final boolean EXECUTED_EDEFAULT = false; /** * The cached value of the '{@link #isExecuted() <em>Executed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isExecuted() * @generated * @ordered */ protected boolean executed = EXECUTED_EDEFAULT; /** * The cached value of the '{@link #getSubCommands() <em>Sub Commands</em>}' containment reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSubCommands() * @generated * @ordered */ protected EList<Command> subCommands; /** * The default value of the '{@link #getDate() <em>Date</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getDate() * @generated * @ordered */ protected static final Date DATE_EDEFAULT = null; /** * The cached value of the '{@link #getDate() <em>Date</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getDate() * @generated * @ordered */ protected Date date = DATE_EDEFAULT; /** * The default value of the '{@link #getCmdCallback() <em>Cmd Callback</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @see #getCmdCallback() * @generated not * @ordered */ protected static final CommandCallback CMD_CALLBACK_EDEFAULT = null;// (CommandCallback)GameplayFactory.eINSTANCE.createFromString(GameplayPackage.eINSTANCE.getCommandCallback(), // ""); /** * The cached value of the '{@link #getCmdCallback() <em>Cmd Callback</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getCmdCallback() * @generated * @ordered */ protected CommandCallback cmdCallback = CMD_CALLBACK_EDEFAULT; /** * This is true if the Cmd Callback attribute has been set. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ protected boolean cmdCallbackESet; /** * The default value of the '{@link #isExecuting() <em>Executing</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isExecuting() * @generated * @ordered */ protected static final boolean EXECUTING_EDEFAULT = false; /** * The cached value of the '{@link #isExecuting() <em>Executing</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isExecuting() * @generated * @ordered */ protected boolean executing = EXECUTING_EDEFAULT; /** * The default value of the '{@link #isCanExecute() <em>Can Execute</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isCanExecute() * @generated * @ordered */ protected static final boolean CAN_EXECUTE_EDEFAULT = false; /** * The default value of the '{@link #isHidden() <em>Hidden</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isHidden() * @generated * @ordered */ protected static final boolean HIDDEN_EDEFAULT = false; /** * The cached value of the '{@link #isHidden() <em>Hidden</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isHidden() * @generated * @ordered */ protected boolean hidden = HIDDEN_EDEFAULT; /** * The default value of the '{@link #getValue() <em>Value</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getValue() * @generated * @ordered */ protected static final Object VALUE_EDEFAULT = null; /** * The cached value of the '{@link #getValue() <em>Value</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getValue() * @generated * @ordered */ protected Object value = VALUE_EDEFAULT; /** * The cached value of the '{@link #getObject() <em>Object</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getObject() * @generated * @ordered */ protected EObject object; /** * The cached value of the '{@link #getFeature() <em>Feature</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getFeature() * @generated * @ordered */ protected EStructuralFeature feature; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected SetFeatureCommandImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return GameplayPackage.Literals.SET_FEATURE_COMMAND; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isExecuted() { return executed; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setExecuted(boolean newExecuted) { boolean oldExecuted = executed; executed = newExecuted; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__EXECUTED, oldExecuted, executed)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<Command> getSubCommands() { if (subCommands == null) { subCommands = new EObjectContainmentEList<Command>(Command.class, this, GameplayPackage.SET_FEATURE_COMMAND__SUB_COMMANDS); } return subCommands; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Date getDate() { return date; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setDate(Date newDate) { Date oldDate = date; date = newDate; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__DATE, oldDate, date)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public CommandCallback getCmdCallback() { return cmdCallback; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setCmdCallback(CommandCallback newCmdCallback) { CommandCallback oldCmdCallback = cmdCallback; cmdCallback = newCmdCallback; boolean oldCmdCallbackESet = cmdCallbackESet; cmdCallbackESet = true; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__CMD_CALLBACK, oldCmdCallback, cmdCallback, !oldCmdCallbackESet)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void unsetCmdCallback() { CommandCallback oldCmdCallback = cmdCallback; boolean oldCmdCallbackESet = cmdCallbackESet; cmdCallback = CMD_CALLBACK_EDEFAULT; cmdCallbackESet = false; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.UNSET, GameplayPackage.SET_FEATURE_COMMAND__CMD_CALLBACK, oldCmdCallback, CMD_CALLBACK_EDEFAULT, oldCmdCallbackESet)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isSetCmdCallback() { return cmdCallbackESet; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isExecuting() { return executing; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setExecuting(boolean newExecuting) { boolean oldExecuting = executing; executing = newExecuting; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__EXECUTING, oldExecuting, executing)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated not */ public boolean isCanExecute() { return (getFeature() != null && getObject() != null); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isHidden() { return hidden; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setHidden(boolean newHidden) { boolean oldHidden = hidden; hidden = newHidden; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__HIDDEN, oldHidden, hidden)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Object getValue() { return value; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setValue(Object newValue) { Object oldValue = value; value = newValue; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__VALUE, oldValue, value)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EObject getObject() { if (object != null && object.eIsProxy()) { InternalEObject oldObject = (InternalEObject)object; object = eResolveProxy(oldObject); if (object != oldObject) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, GameplayPackage.SET_FEATURE_COMMAND__OBJECT, oldObject, object)); } } return object; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EObject basicGetObject() { return object; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setObject(EObject newObject) { EObject oldObject = object; object = newObject; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__OBJECT, oldObject, object)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EStructuralFeature getFeature() { if (feature != null && feature.eIsProxy()) { InternalEObject oldFeature = (InternalEObject)feature; feature = (EStructuralFeature)eResolveProxy(oldFeature); if (feature != oldFeature) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, GameplayPackage.SET_FEATURE_COMMAND__FEATURE, oldFeature, feature)); } } return feature; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EStructuralFeature basicGetFeature() { return feature; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setFeature(EStructuralFeature newFeature) { EStructuralFeature oldFeature = feature; feature = newFeature; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.SET_FEATURE_COMMAND__FEATURE, oldFeature, feature)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated not */ public void redo() { setExecuting(true); if (isSetCmdCallback()) cmdCallback.prepareCommand(this, GameplayPackage.Literals.SET_FEATURE_COMMAND__OBJECT, GameplayPackage.Literals.SET_FEATURE_COMMAND__FEATURE); if (!getFeature().isMany()) getObject().eSet(getFeature(), getValue()); else{ ((List<Object>)getObject().eGet(getFeature())).add(getValue()); } setExecuted(true); setExecuting(false); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void undo() { // TODO: implement this method // Ensure that you remove @generated or mark it @generated NOT throw new UnsupportedOperationException(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case GameplayPackage.SET_FEATURE_COMMAND__SUB_COMMANDS: return ((InternalEList<?>)getSubCommands()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case GameplayPackage.SET_FEATURE_COMMAND__EXECUTED: return isExecuted(); case GameplayPackage.SET_FEATURE_COMMAND__SUB_COMMANDS: return getSubCommands(); case GameplayPackage.SET_FEATURE_COMMAND__DATE: return getDate(); case GameplayPackage.SET_FEATURE_COMMAND__CMD_CALLBACK: return getCmdCallback(); case GameplayPackage.SET_FEATURE_COMMAND__EXECUTING: return isExecuting(); case GameplayPackage.SET_FEATURE_COMMAND__CAN_EXECUTE: return isCanExecute(); case GameplayPackage.SET_FEATURE_COMMAND__HIDDEN: return isHidden(); case GameplayPackage.SET_FEATURE_COMMAND__VALUE: return getValue(); case GameplayPackage.SET_FEATURE_COMMAND__OBJECT: if (resolve) return getObject(); return basicGetObject(); case GameplayPackage.SET_FEATURE_COMMAND__FEATURE: if (resolve) return getFeature(); return basicGetFeature(); } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case GameplayPackage.SET_FEATURE_COMMAND__EXECUTED: setExecuted((Boolean)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__SUB_COMMANDS: getSubCommands().clear(); getSubCommands().addAll((Collection<? extends Command>)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__DATE: setDate((Date)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__CMD_CALLBACK: setCmdCallback((CommandCallback)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__EXECUTING: setExecuting((Boolean)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__HIDDEN: setHidden((Boolean)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__VALUE: setValue(newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__OBJECT: setObject((EObject)newValue); return; case GameplayPackage.SET_FEATURE_COMMAND__FEATURE: setFeature((EStructuralFeature)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case GameplayPackage.SET_FEATURE_COMMAND__EXECUTED: setExecuted(EXECUTED_EDEFAULT); return; case GameplayPackage.SET_FEATURE_COMMAND__SUB_COMMANDS: getSubCommands().clear(); return; case GameplayPackage.SET_FEATURE_COMMAND__DATE: setDate(DATE_EDEFAULT); return; case GameplayPackage.SET_FEATURE_COMMAND__CMD_CALLBACK: unsetCmdCallback(); return; case GameplayPackage.SET_FEATURE_COMMAND__EXECUTING: setExecuting(EXECUTING_EDEFAULT); return; case GameplayPackage.SET_FEATURE_COMMAND__HIDDEN: setHidden(HIDDEN_EDEFAULT); return; case GameplayPackage.SET_FEATURE_COMMAND__VALUE: setValue(VALUE_EDEFAULT); return; case GameplayPackage.SET_FEATURE_COMMAND__OBJECT: setObject((EObject)null); return; case GameplayPackage.SET_FEATURE_COMMAND__FEATURE: setFeature((EStructuralFeature)null); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case GameplayPackage.SET_FEATURE_COMMAND__EXECUTED: return executed != EXECUTED_EDEFAULT; case GameplayPackage.SET_FEATURE_COMMAND__SUB_COMMANDS: return subCommands != null && !subCommands.isEmpty(); case GameplayPackage.SET_FEATURE_COMMAND__DATE: return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals(date); case GameplayPackage.SET_FEATURE_COMMAND__CMD_CALLBACK: return isSetCmdCallback(); case GameplayPackage.SET_FEATURE_COMMAND__EXECUTING: return executing != EXECUTING_EDEFAULT; case GameplayPackage.SET_FEATURE_COMMAND__CAN_EXECUTE: return isCanExecute() != CAN_EXECUTE_EDEFAULT; case GameplayPackage.SET_FEATURE_COMMAND__HIDDEN: return hidden != HIDDEN_EDEFAULT; case GameplayPackage.SET_FEATURE_COMMAND__VALUE: return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value); case GameplayPackage.SET_FEATURE_COMMAND__OBJECT: return object != null; case GameplayPackage.SET_FEATURE_COMMAND__FEATURE: return feature != null; } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException { switch (operationID) { case GameplayPackage.SET_FEATURE_COMMAND___REDO: redo(); return null; case GameplayPackage.SET_FEATURE_COMMAND___UNDO: undo(); return null; } return super.eInvoke(operationID, arguments); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public String toString() { if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (executed: "); result.append(executed); result.append(", date: "); result.append(date); result.append(", cmdCallback: "); if (cmdCallbackESet) result.append(cmdCallback); else result.append("<unset>"); result.append(", executing: "); result.append(executing); result.append(", hidden: "); result.append(hidden); result.append(", value: "); result.append(value); result.append(')'); return result.toString(); } } // SetFeatureCommandImpl