/** * <copyright> * </copyright> * * $Id$ */ package org.jboss.tools.seam.ui.pages.editor.ecore.pages.impl; import java.util.ArrayList; import java.util.List; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.jboss.tools.common.model.XModelObject; import org.jboss.tools.jst.web.model.ReferenceObject; import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesDiagramStructureHelper; import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Page; import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesElement; import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesFactory; import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesPackage; import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Param; import org.jboss.tools.seam.ui.pages.editor.edit.PageWrapper; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Page</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link org.jboss.tools.seam.ui.pages.editor.ecore.pages.impl.PageImpl#isParamsVisible <em>Params Visible</em>}</li> * <li>{@link org.jboss.tools.seam.ui.pages.editor.ecore.pages.impl.PageImpl#isConfirmed <em>Confirmed</em>}</li> * </ul> * </p> * * @generated */ public class PageImpl extends PagesElementImpl implements Page { private String params = ""; /** * The default value of the '{@link #isParamsVisible() <em>Params Visible</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isParamsVisible() * @generated * @ordered */ protected static final boolean PARAMS_VISIBLE_EDEFAULT = false; /** * The cached value of the '{@link #isParamsVisible() <em>Params Visible</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isParamsVisible() * @generated * @ordered */ protected boolean paramsVisible = PARAMS_VISIBLE_EDEFAULT; /** * The default value of the '{@link #isConfirmed() <em>Confirmed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isConfirmed() * @generated * @ordered */ protected static final boolean CONFIRMED_EDEFAULT = false; /** * The cached value of the '{@link #isConfirmed() <em>Confirmed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isConfirmed() * @generated * @ordered */ protected boolean confirmed = CONFIRMED_EDEFAULT; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected PageImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return PagesPackage.Literals.PAGE; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isParamsVisible() { return paramsVisible; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setParamsVisible(boolean newParamsVisible) { boolean oldParamsVisible = paramsVisible; paramsVisible = newParamsVisible; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, PagesPackage.PAGE__PARAMS_VISIBLE, oldParamsVisible, paramsVisible)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isConfirmed() { return confirmed; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setConfirmed(boolean newConfirmed) { boolean oldConfirmed = confirmed; confirmed = newConfirmed; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, PagesPackage.PAGE__CONFIRMED, oldConfirmed, confirmed)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case PagesPackage.PAGE__PARAMS_VISIBLE: return isParamsVisible() ? Boolean.TRUE : Boolean.FALSE; case PagesPackage.PAGE__CONFIRMED: return isConfirmed() ? Boolean.TRUE : Boolean.FALSE; } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case PagesPackage.PAGE__PARAMS_VISIBLE: setParamsVisible(((Boolean)newValue).booleanValue()); return; case PagesPackage.PAGE__CONFIRMED: setConfirmed(((Boolean)newValue).booleanValue()); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case PagesPackage.PAGE__PARAMS_VISIBLE: setParamsVisible(PARAMS_VISIBLE_EDEFAULT); return; case PagesPackage.PAGE__CONFIRMED: setConfirmed(CONFIRMED_EDEFAULT); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case PagesPackage.PAGE__PARAMS_VISIBLE: return paramsVisible != PARAMS_VISIBLE_EDEFAULT; case PagesPackage.PAGE__CONFIRMED: return confirmed != CONFIRMED_EDEFAULT; } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public String toString() { if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (paramsVisible: "); result.append(paramsVisible); result.append(", confirmed: "); result.append(confirmed); result.append(')'); return result.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ int updatelock = 0; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public void dataChanged() { if(updatelock > 0) return; updatelock++; try { XModelObject item = getModelObject(); SeamPagesDiagramStructureHelper h = SeamPagesDiagramStructureHelper .getInstance(); setName(h.getPageTitle(item)); int[] shape = h.asIntArray(item, "shape"); if (shape != null && shape.length >= 2) { setLocation(new Point(shape[0], shape[1])); } else { setLocation(new Point(0, 0)); } if (shape != null && shape.length >= 4) { setSize(new Dimension(shape[2], shape[3])); } boolean confirmed = true; if(getData() != null && getData() instanceof ReferenceObject && ((ReferenceObject)getData()).getReference() == null){ confirmed = false; } if(isConfirmed() != confirmed) setConfirmed(confirmed); String newParams = item.getAttributeValue("params"); if (newParams == null) newParams = ""; if (!params.equals(newParams)) { params = newParams; String[][] ps1 = h.getParams(item); List<Param> ps2 = getParams(); for (int i = 0; i < ps1.length && i < ps2.size(); i++) { Param p = ps2.get(i); p.setName(ps1[i][0]); p.setValue(ps1[i][1]); } if (ps1.length > ps2.size()) { for (int i = ps2.size(); i < ps1.length; i++) { Param p = PagesFactory.eINSTANCE.createParam(); p.setName(ps1[i][0]); p.setValue(ps1[i][1]); getChildren().add(p); } } else if (ps1.length < ps2.size()) { for (int i = ps1.length; i < ps2.size(); i++) { getChildren().remove(ps2.get(i)); } } } } finally { updatelock--; } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ List<Param> getParams() { List<Param> ps = new ArrayList<Param>(); for(PagesElement p:getChildren()){ if(p instanceof Param) ps.add((Param)p); } return ps; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ PageWrapper paramList = new PageWrapper(this); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public PageWrapper getParamList() { return paramList; } } //PageImpl