/* * (c) Rob Gordon 2005 */ package org.oddjob.designer.view; import java.util.ArrayList; import java.util.List; import org.oddjob.arooa.ArooaParseException; import org.oddjob.arooa.design.DesignElementProperty; import org.oddjob.arooa.design.DesignInstance; import org.oddjob.arooa.design.DesignListener; import org.oddjob.arooa.design.DesignStructureEvent; import org.oddjob.arooa.design.InstanceSupport; import org.oddjob.arooa.design.screem.MultiTypeTable; import org.oddjob.arooa.design.view.DesignViewException; import org.oddjob.arooa.parsing.QTag; public class MultiTypeTableDummy implements DummyItemView { private MultiTypeTable multiTypeTable; private List<DesignInstance> instances = new ArrayList<DesignInstance>(); public MultiTypeTableDummy(MultiTypeTable multiTypeTable) { this.multiTypeTable = multiTypeTable; DesignElementProperty de = multiTypeTable.getDesignProperty(); de.addDesignListener(new DesignListener() { public void childAdded(DesignStructureEvent event) { instances.add(event.getIndex(), event.getChild()); } public void childRemoved(DesignStructureEvent event) { instances.remove(event.getIndex()); } }); } public void inline(DummyDialogue form) { form.addField(new TableWidget() { public DesignInstance getInstanceAt(int index) { return instances.get(index); } public String getName() { return multiTypeTable.getTitle(); } public void setInstanceAt(int index, QTag tag) { try { create(index, tag); } catch (ArooaParseException e) { throw new DesignViewException(e); } } }); } private void create(int index, QTag type) throws ArooaParseException { if (multiTypeTable.isKeyed()) { throw new RuntimeException("Table is keyed! supply a name."); } DesignElementProperty designProperty = multiTypeTable.getDesignProperty(); InstanceSupport support = new InstanceSupport( designProperty); if (index < instances.size()) { support.removeInstance(instances.get(index)); } support.insertTag(index, type); } }