package database;
import java.util.Map;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
public class CustomProperty extends DatabaseProperty {
private DatabaseProperty[] _subProperties;
public CustomProperty(String name, DatabaseProperty[] subProperties)
{
_name = name;
_type = "Custom";
_subProperties = subProperties;
JPanel editUI = new JPanel();
editUI.setLayout(new BoxLayout(editUI, BoxLayout.Y_AXIS));
// Add all of our sub-property uis to our ui
for (DatabaseProperty subProperty : _subProperties) {
editUI.add(subProperty.getEditingUI());
}
_editUI = editUI;
}
@Override
public void update(DatabaseModel model) {
for (DatabaseProperty subProperty : _subProperties) {
subProperty.update(model);
}
}
@Override
public Object getTableElement() {
return this;
}
@Override
public void setTableElement(Object value) {
}
@Override
public boolean isTableElementEditable() {
return false;
}
@Override
public DatabaseProperty initializeInstance() {
DatabaseProperty[] copyArray = new DatabaseProperty[_subProperties.length];
for(int i = 0; i < copyArray.length; i++) {
copyArray[i] = _subProperties[i].initializeInstance();
}
return new CustomProperty(_name, copyArray);
}
@Override
public void resolveNamesToItems(Map<String, DatabaseItem> itemMap)
{
for (DatabaseProperty subProperty : _subProperties) {
subProperty.resolveNamesToItems(itemMap);
}
}
@Override
public String toXML() {
String xml = "<CustomProperty name=\"" + _name + "\">\n";
for (DatabaseProperty subProperty : _subProperties) {
xml += subProperty.toXML() + "\n";
}
xml += "</CustomProperty>";
return xml;
}
}