/*******************************************************************************
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* All rights reserved. This program and the accompanying materials are 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
*******************************************************************************/
package gov.redhawk.ide.sad.internal.ui.properties.model;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.edit.provider.ItemProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import mil.jpeojtrs.sca.prf.AbstractProperty;
import mil.jpeojtrs.sca.prf.StructSequence;
import mil.jpeojtrs.sca.prf.StructSequenceRef;
import mil.jpeojtrs.sca.prf.StructValue;
import mil.jpeojtrs.sca.sad.SadComponentInstantiation;
public abstract class SadPropertiesStructSequenceNestedProperty extends ItemProvider implements SadProperty {
protected final AbstractProperty definition;
private ILabelProvider labelProvider;
public SadPropertiesStructSequenceNestedProperty(AdapterFactory adapterFactory, AbstractProperty def, Object parent) {
super(adapterFactory);
this.parent = parent;
this.definition = def;
}
@Override
public SadPropertiesStructSequence getParent() {
return (SadPropertiesStructSequence) super.getParent();
}
protected abstract List< ? > getRefValues(List<StructValue> values);
@Override
public Object getPrfValue() {
StructSequence seq = getParent().getDefinition();
return getRefValues(seq.getStructValue());
}
@Override
public Object getSadValue() {
StructSequenceRef structSequenceRef = getParent().getValueRef();
if (structSequenceRef != null) {
return getRefValues(structSequenceRef.getStructValue());
}
return null;
}
@Override
public ILabelProvider getLabelProvider() {
if (labelProvider == null) {
labelProvider = new LabelProvider() {
@Override
public String getText(Object element) {
if (element != null) {
return Arrays.toString(((List< ? >) element).toArray());
}
return "";
}
};
}
return labelProvider;
}
@Override
public Collection< ? > getKinds() {
return getParent().getKinds();
}
@Override
public AbstractProperty getDefinition() {
return definition;
}
@Override
public boolean isAssemblyControllerProperty() {
return getParent().isAssemblyControllerProperty();
}
@Override
public String getExternalID() {
return null;
}
@Override
public boolean canSetExternalId() {
return false;
}
@Override
public void setExternalID(String newExternalID) {
}
@Override
public void setSadValue(Object value) {
}
@Override
public String getID() {
return definition.getId();
}
@Override
public SadComponentInstantiation getComponentInstantiation() {
return getParent().getComponentInstantiation();
}
}