/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.options.impl;
import org.jboss.tools.common.meta.*;
import org.jboss.tools.common.model.*;
import org.jboss.tools.common.model.impl.*;
import java.util.*;
public class SharableContainerImpl extends SharableElementImpl {
private static final long serialVersionUID = 7648767438226121456L;
public SharableContainerImpl() {
super();
}
protected void onSetEntity(String entityName) {
XModelEntity entity = getModel().getMetaData().getEntity(entityName);
XChild[] cs = entity.getChildren();
if(cs.length > 0) {
for (int i = 0; i < LIST.length; i++) {
XScope s = (XScope)scopes.get(LIST[i]);
XModelObjectImpl o = (XModelObjectImpl)getModel().createModelObject(cs[0].getName(), new Properties());
o.setParent_0(this);
s.setChild(o);
}
}
super.onSetEntity(entityName);
}
public XModelObject[] getChildren() {
XModelObject c = (XModelObject)scope.getChild();
return (c == null) ? new XModelObject[0]
: new XModelObject[]{c};
}
public XModelObject getChildForScope(String scopename) {
XScope scope = (XScope)scopes.get(scopename);
if(scope == null) scope = project_;
return scope.getChild();
}
public String setAttributeValue(String attributeName, String value) {
String ov = super.getAttributeValue(attributeName);
if(ov != null && ov.equals(value)) return value;
String s = super.setAttributeValue(attributeName, value);
if("scope".equals(attributeName) && !ov.equals(s)) { //$NON-NLS-1$
((XModelImpl)getModel()).fireStructureChanged(this);
}
return s;
}
private void shareChild0(XScope fs, XScope ts) {
XModelObject fc = fs.getChild();
if(fc == null) return;
XModelObjectImpl tc = (XModelObjectImpl)fc.copy();
tc.setParent_0(this);
ts.setChild(tc);
}
protected void childsharing(String fromscope, String toscope) {
shareChild0(getXScope(fromscope), getXScope(toscope));
((XModelImpl)getModel()).fireStructureChanged(this);
}
protected void copy_children(XModelObject copy, boolean transform) {
SharableContainerImpl _copy = (SharableContainerImpl)copy;
for (int i = 0; i < LIST.length; i++) {
XScope sc = (XScope)scopes.get(LIST[i]);
XScope _sc = (XScope)_copy.scopes.get(LIST[i]);
XModelObjectImpl ccur = (XModelObjectImpl)sc.getChild();
XModelObjectImpl ccop = (XModelObjectImpl)ccur.copy(transform);
ccop.setParent_0(_copy);
_sc.setChild(ccop);
}
}
protected void fireUpdateChilds() {
XModelObject c = getChildAt(0);
if(c != null) c.fireObjectChanged(null);
}
protected void mergeChildren(String fromscope, String toscope, boolean existed, boolean merge_all) {
if(!existed) shareChild0(getXScope(fromscope), getXScope(toscope));
}
}