protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress) { IXmlTagHeader tagHeader = GetTagHeader(); if (tagHeader == null) { return(null); } IXmlTag tag = XmlTagNavigator.GetByTagHeader(tagHeader); if (tag == null) { return(null); } XmlElementFactory factory = XmlElementFactory.GetInstance(tag); IXmlAttribute idAttr = factory.CreateAttributeForTag(tag, "id=\"\""); tag.AddAttributeBefore(idAttr, null); // continuation to do after transaction committed return(textControl => // move cursor inside new created id attribute textControl.Caret.MoveTo(idAttr.Value.GetDocumentRange().TextRange.StartOffset, CaretVisualPlacement.Generic)); }
public override bool IsAvailable(IUserDataHolder dataHolder) { // grab the tag we're on IXmlTagHeader tagHeader = GetTagHeader(); if (tagHeader == null) { return(false); } // check if the attribute is already there (case-insensitive) IXmlAttribute idAttr = tagHeader.GetAttribute(attr => StringComparer.OrdinalIgnoreCase.Equals(attr.AttributeName, "id")); if (idAttr != null) { return(false); } return(true); }