package org.jboss.tools.seam.pages.xml.model.impl;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.impl.OrderedObjectImpl;
import org.jboss.tools.jst.web.model.ReferenceObject;
import org.jboss.tools.jst.web.model.WebProcess;
import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesDiagramHelper;
import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesUpdateHelper;
public class SeamPagesDiagramImpl extends OrderedObjectImpl implements WebProcess, ReferenceObject, SeamPagesConstants {
private static final long serialVersionUID = 1981573715076399163L;
protected XModelObject reference;
protected SeamPagesDiagramHelper phelper = new SeamPagesDiagramHelper(this);
protected SeamPagesUpdateHelper uhelper = null;
protected boolean isPrepared = false;
public XModelObject getReference() {
return reference;
}
public void setReference(XModelObject reference) {
this.reference = reference;
if(reference != null) {
String shape = get("SHAPE");
if(shape != null && shape.length() > 0) reference.set("_shape", shape);
}
}
public boolean isPrepared() {
return isPrepared;
}
public void firePrepared() {
isPrepared = true;
fireStructureChanged(3, getPath());
}
public void autolayout() {
phelper.autolayout();
}
protected void loadChildren() {
if (isPrepared && reference == null && isActive()) {
restoreRefs();
registerListener();
updateDiagram();
}
}
protected void restoreRefs() {
phelper.restoreRefs();
}
protected void updateDiagram() {
phelper.updateDiagram();
}
protected void registerListener() {
if (uhelper == null) {
uhelper = new SeamPagesUpdateHelper(this);
}
}
protected void deactivate() {
if (uhelper != null) {
uhelper.unregister();
uhelper = null;
}
}
public SeamPagesDiagramHelper getHelper() {
return phelper;
}
protected void changeTimeStamp() {
boolean actualBody = false;
String abts = null;
XModelObject parent = (XModelObject)getParent();
if(parent != null) {
abts = parent.get("actualBodyTimeStamp");
actualBody = (abts != null && (abts.equals("0") || abts.equals("" + parent.getTimeStamp())));
}
super.changeTimeStamp();
if(actualBody && !abts.equals("0")) {
parent.set("actualBodyTimeStamp", "" + parent.getTimeStamp());
}
}
}