001/**
002 */
003package org.nasdanika.html.model.html.impl;
004
005import java.util.Collection;
006import org.eclipse.emf.common.notify.NotificationChain;
007import org.eclipse.emf.common.util.EList;
008import org.eclipse.emf.common.util.EMap;
009import org.eclipse.emf.ecore.EClass;
010
011import org.eclipse.emf.ecore.EObject;
012import org.eclipse.emf.ecore.EStructuralFeature;
013import org.eclipse.emf.ecore.InternalEObject;
014import org.eclipse.emf.ecore.util.InternalEList;
015import org.nasdanika.html.model.html.HtmlElement;
016import org.nasdanika.html.model.html.HtmlPackage;
017import org.nasdanika.ncore.impl.ModelElementImpl;
018
019/**
020 * <!-- begin-user-doc -->
021 * An implementation of the model object '<em><b>Element</b></em>'.
022 * <!-- end-user-doc -->
023 * <p>
024 * The following features are implemented:
025 * </p>
026 * <ul>
027 *   <li>{@link org.nasdanika.html.model.html.impl.HtmlElementImpl#getAttributes <em>Attributes</em>}</li>
028 *   <li>{@link org.nasdanika.html.model.html.impl.HtmlElementImpl#getContent <em>Content</em>}</li>
029 * </ul>
030 *
031 * @generated
032 */
033public abstract class HtmlElementImpl extends ModelElementImpl implements HtmlElement {
034        /**
035         * <!-- begin-user-doc -->
036         * <!-- end-user-doc -->
037         * @generated
038         */
039        protected HtmlElementImpl() {
040                super();
041        }
042
043        /**
044         * <!-- begin-user-doc -->
045         * <!-- end-user-doc -->
046         * @generated
047         */
048        @Override
049        protected EClass eStaticClass() {
050                return HtmlPackage.Literals.HTML_ELEMENT;
051        }
052
053        /**
054         * <!-- begin-user-doc -->
055         * <!-- end-user-doc -->
056         * @generated
057         */
058        @SuppressWarnings("unchecked")
059        @Override
060        public EMap<String, EObject> getAttributes() {
061                return (EMap<String, EObject>)eDynamicGet(HtmlPackage.HTML_ELEMENT__ATTRIBUTES, HtmlPackage.Literals.HTML_ELEMENT__ATTRIBUTES, true, true);
062        }
063
064        /**
065         * <!-- begin-user-doc -->
066         * <!-- end-user-doc -->
067         * @generated
068         */
069        @SuppressWarnings("unchecked")
070        @Override
071        public EList<EObject> getContent() {
072                return (EList<EObject>)eDynamicGet(HtmlPackage.HTML_ELEMENT__CONTENT, HtmlPackage.Literals.HTML_ELEMENT__CONTENT, true, true);
073        }
074
075        /**
076         * <!-- begin-user-doc -->
077         * <!-- end-user-doc -->
078         * @generated
079         */
080        @Override
081        public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
082                switch (featureID) {
083                        case HtmlPackage.HTML_ELEMENT__ATTRIBUTES:
084                                return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
085                        case HtmlPackage.HTML_ELEMENT__CONTENT:
086                                return ((InternalEList<?>)getContent()).basicRemove(otherEnd, msgs);
087                }
088                return super.eInverseRemove(otherEnd, featureID, msgs);
089        }
090
091        /**
092         * <!-- begin-user-doc -->
093         * <!-- end-user-doc -->
094         * @generated
095         */
096        @Override
097        public Object eGet(int featureID, boolean resolve, boolean coreType) {
098                switch (featureID) {
099                        case HtmlPackage.HTML_ELEMENT__ATTRIBUTES:
100                                if (coreType) return getAttributes();
101                                else return getAttributes().map();
102                        case HtmlPackage.HTML_ELEMENT__CONTENT:
103                                return getContent();
104                }
105                return super.eGet(featureID, resolve, coreType);
106        }
107
108        /**
109         * <!-- begin-user-doc -->
110         * <!-- end-user-doc -->
111         * @generated
112         */
113        @SuppressWarnings("unchecked")
114        @Override
115        public void eSet(int featureID, Object newValue) {
116                switch (featureID) {
117                        case HtmlPackage.HTML_ELEMENT__ATTRIBUTES:
118                                ((EStructuralFeature.Setting)getAttributes()).set(newValue);
119                                return;
120                        case HtmlPackage.HTML_ELEMENT__CONTENT:
121                                getContent().clear();
122                                getContent().addAll((Collection<? extends EObject>)newValue);
123                                return;
124                }
125                super.eSet(featureID, newValue);
126        }
127
128        /**
129         * <!-- begin-user-doc -->
130         * <!-- end-user-doc -->
131         * @generated
132         */
133        @Override
134        public void eUnset(int featureID) {
135                switch (featureID) {
136                        case HtmlPackage.HTML_ELEMENT__ATTRIBUTES:
137                                getAttributes().clear();
138                                return;
139                        case HtmlPackage.HTML_ELEMENT__CONTENT:
140                                getContent().clear();
141                                return;
142                }
143                super.eUnset(featureID);
144        }
145
146        /**
147         * <!-- begin-user-doc -->
148         * <!-- end-user-doc -->
149         * @generated
150         */
151        @Override
152        public boolean eIsSet(int featureID) {
153                switch (featureID) {
154                        case HtmlPackage.HTML_ELEMENT__ATTRIBUTES:
155                                return !getAttributes().isEmpty();
156                        case HtmlPackage.HTML_ELEMENT__CONTENT:
157                                return !getContent().isEmpty();
158                }
159                return super.eIsSet(featureID);
160        }
161
162} //HtmlElementImpl