return customComponent;
}
public void reset() {
for (final Map.Entry<EditedElementDescription<? extends DomElement>, DomElement> entry : myDomElements.entrySet()) {
final DomElement newValue = entry.getKey().find();
final DomElement oldValue = entry.getValue();
if (newValue != null && !newValue.equals(oldValue) || newValue == null && !oldValue.getManager().isMockElement(oldValue)) {
((StableElement)oldValue).revalidate();
}
}
super.reset();
}
public void commit() {
super.commit();
final List<EditedElementDescription> descriptions = new ArrayList<EditedElementDescription>();
final Set<PsiFile> changedFiles = new HashSet<PsiFile>();
for (final Map.Entry<EditedElementDescription<? extends DomElement>, DomElement> entry : myDomElements.entrySet()) {
final EditedElementDescription description = entry.getKey();
final DomElement editedElement = entry.getValue();
if (description.find() == null && editedElement.getXmlTag() != null) {
descriptions.add(description);
final XmlFile xmlFile = description.getEditedFile();
if (xmlFile != null) {
changedFiles.add(xmlFile);
}
}
}
new WriteCommandAction(project, changedFiles.toArray(new PsiFile[changedFiles.size()])) {
protected void run(Result result) throws Throwable {
for (EditedElementDescription description : descriptions) {
final DomElement editedElement = myDomElements.get(description);
DomElement element = description.addElement();
element.copyFrom(editedElement);
description.initialize(element);
removeWatchedElement(editedElement);
((StableElement)editedElement).invalidate();
}
}