package org.xmind.ui.commands;
import org.eclipse.core.runtime.Assert;
import org.xmind.core.Core;
import org.xmind.core.ITopic;
import org.xmind.core.ITopicExtension;
import org.xmind.core.ITopicExtensionElement;
import org.xmind.core.event.CoreEvent;
import org.xmind.core.event.ICoreEventSource;
import org.xmind.gef.command.SourceCommand;
import org.xmind.ui.internal.branch.UnbalancedData;
public class ModifyRightNumberOfUnbalancedStructureCommand extends
SourceCommand {
private ITopic topic = null;
private String preNum;
private int postNum;
public ModifyRightNumberOfUnbalancedStructureCommand(ITopic topic,
String preNum, int postNum) {
Assert.isNotNull(topic);
this.topic = topic;
this.preNum = preNum;
this.postNum = postNum;
}
public void redo() {
ITopicExtension extension = topic
.createExtension(UnbalancedData.EXTENTION_UNBALANCEDSTRUCTURE);
ITopicExtensionElement element = extension.getContent()
.getCreatedChild(UnbalancedData.EXTENTIONELEMENT_RIGHTNUMBER);
element.setTextContent(String.valueOf(postNum));
fireForceStructureChange();
super.redo();
}
public void undo() {
ITopicExtension extension = topic
.createExtension(UnbalancedData.EXTENTION_UNBALANCEDSTRUCTURE);
ITopicExtensionElement element = extension.getContent()
.getCreatedChild(UnbalancedData.EXTENTIONELEMENT_RIGHTNUMBER);
element.setTextContent(preNum);
fireForceStructureChange();
super.undo();
}
private void fireForceStructureChange() {
if (!(topic instanceof ICoreEventSource))
return;
ICoreEventSource source = (ICoreEventSource) topic;
String eventType = Core.StructureClass;
String structureClass = topic.getStructureClass();
source.getCoreEventSupport()
.dispatch(
source,
new CoreEvent(source, eventType, structureClass,
structureClass));
}
}