/*
* (c) Rob Gordon 2005
*/
package org.oddjob.designer.view;
import org.oddjob.arooa.ArooaParseException;
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.SingleTypeSelection;
import org.oddjob.arooa.design.view.DesignViewException;
import org.oddjob.arooa.parsing.QTag;
public class TypeSelectionDummy implements DummyItemView {
SingleTypeSelection typeSelection;
DesignInstance instance;
public TypeSelectionDummy(SingleTypeSelection typeSelection) {
this.typeSelection = typeSelection;
typeSelection.getDesignElementProperty().addDesignListener(
new DesignListener() {
public void childAdded(DesignStructureEvent event) {
if (event.getIndex() != 0) {
throw new RuntimeException("Unexpected.");
}
instance = event.getChild();
}
public void childRemoved(DesignStructureEvent event) {
if (event.getIndex() != 0) {
throw new RuntimeException("Unexpected.");
}
instance = null;
}
});
}
public void inline(DummyDialogue form) {
form.addField(new SelectionWidget() {
public String getName() {
return typeSelection.getTitle();
}
public DesignInstance getSelected() {
return instance;
}
public DesignInstance setSelected(QTag tag) {
InstanceSupport support = new InstanceSupport(
typeSelection.getDesignElementProperty());
if (instance != null) {
support.removeInstance(instance);
}
try {
support.insertTag(0, tag);
} catch (ArooaParseException e) {
throw new DesignViewException(e);
}
return instance;
}
});
}
}