public BehaviorEditor(ElementVO elementVO, MethodVO methodVO, ElementForm elementForm) { InitializeComponent(); try { using (var reader = new XmlTextReader("jbdl.xshd")) { jpBehaviorEdit.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance); } } catch (Exception ex) { MessageBox.Show("XSHD読み込み処理でエラーが発生しました: " + ex.Message); } jpBehaviorEdit.ShowLineNumbers = true; jpBehaviorEdit.Options.ShowEndOfLine = true; jpBehaviorEdit.Options.ShowSpaces = true; //イベントハンドラを登録 jpBehaviorEdit.TextArea.TextEntered += TextArea_TextEntered; jpBehaviorEdit.TextArea.TextEntering += TextArea_TextEntering; // パラメータで取得した要素、メソッドを自オブジェクト内に保持 element = elementVO; method = methodVO; oldBehaviorValue = methodVO.behavior; this.jpBehaviorEdit.Text = BehaviorPreparator.getParsedBehavior(methodVO.behavior); // this.jpBehaviorEdit.Text = methodVO.behavior; this.parentForm = elementForm; }
private static void runOnLocalFileMode(string projectFile, string elemGuid) { // プロジェクトファイルの存在チェック if (System.IO.File.Exists(projectFile)) { // プロジェクト設定ファイルのロード ProjectSetting.load(projectFile); } else { MessageBox.Show("指定されたプロジェクトファイルが見つかりません"); return; } try { // 要素ファイルからGUIDで検索した結果を読み込む ElementVO elemvo = ElementsXmlReader.readElementFile(elemGuid); ElementForm elementForm = new ElementForm(ref elemvo); Application.Run(elementForm); } catch (Exception ex) { MessageBox.Show(ex.Message, "エラー発生"); } }
void openNewElementWindow() { if (!existOnOpenElements(targetElement)) { addOpenedElements(targetElement); ElementForm elemForm = new ElementForm(ref targetElement); elemForm.Show(this); openedForms.Add(elemForm); } }
/// <summary> /// 保存処理 /// </summary> private void SavaMethodChange() { // 前回保存の操作の名前 this.oldMethodName = this.method.name; // 前回の振る舞いを保存する this.oldBehaviorValue = changeLfToCrlf(this.txtBehavior.Text); // 名前 this.method.name = this.txtMethodName.Text; // 振る舞い this.method.behavior = changeLfToCrlf(this.txtBehavior.Text); this.method.changed = 'U'; this.element.changed = 'U'; ElementForm parentForm = (ElementForm)(this.Owner); parentForm.repaintFormMethod(this.method); }
void ButtonRevertClick(object sender, EventArgs e) { EA.Repository repo = ProjectSetting.getVO().eaRepo; // 反映前のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する ElementVO revertedElement = null; EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(mergedElement.guid); if (eaElemObj == null) { MessageBox.Show("EAから要素の取得に失敗しました。 異常終了しました。 GUID=" + mergedElement.guid); return; } else { revertedElement = ObjectEAConverter.getElementFromEAObject(eaElemObj); } // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する ArtifactXmlWriter writer = new ArtifactXmlWriter(); StreamWriter elsw = null; string outputDir = ProjectSetting.getVO().projectPath; string elemFilePath = outputDir + @"\elements\" + revertedElement.guid.Substring(1, 1) + @"\" + revertedElement.guid.Substring(2, 1) + @"\" + revertedElement.guid.Substring(1, 36) + ".xml"; try { //BOM無しのUTF8でテキストファイルを作成する elsw = new StreamWriter(elemFilePath); elsw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> "); ElementXmlWriter.writeElementXml(revertedElement, 0, elsw); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (elsw != null) { elsw.Close(); } } // changedFile が存在したら削除する try { string changedElemFilePath = outputDir + @"\elements\" + revertedElement.guid.Substring(1, 1) + @"\" + revertedElement.guid.Substring(2, 1) + @"\" + revertedElement.guid.Substring(1, 36) + "_changed.xml"; if (System.IO.File.Exists(changedElemFilePath)) { System.IO.File.Delete(changedElemFilePath); } } catch (Exception ex) { Console.WriteLine(ex.Message); } // 呼び出し元から受領した更新後ElementをRevert後の要素で置き換え // rightElement = revertedElement; // 親フォームの再描画を依頼 ElementForm oya = (ElementForm)this.Owner; oya.repaint(revertedElement); // XMLファイルをコミットするためにTortoiseGitを起動する //string exename = @"TortoiseGitProc.exe"; //string arguments = @"/command:commit /path:" + elemFilePath; //Process p = Process.Start( exename, arguments ); // 自分をクローズ this.Close(); }
void ButtonCommitCloseClick(object sender, EventArgs e) { EA.Repository repo = ProjectSetting.getVO().eaRepo; if (mergedElement == null) { MessageBox.Show("反映するべき差分が見つからなかったため、終了します"); return; } // 変更のあったメソッドを順にEAに反映する foreach (MethodVO m in mergedElement.methods) { MethodVO updMth = searchMethodByGuid(rightElement.methods, m.guid); if (m.changed == 'U') { execUpdateMethod(repo, updMth); } } // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する ElementVO refreshedElement = null; EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(mergedElement.guid); if (eaElemObj == null) { MessageBox.Show("EAから要素の取得に失敗しました。 異常終了しました。 GUID=" + mergedElement.guid); return; } else { refreshedElement = ObjectEAConverter.getElementFromEAObject(eaElemObj); } // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する StreamWriter elsw = null; string outputDir = ProjectSetting.getVO().projectPath; string elemFilePath = outputDir + @"\elements\" + refreshedElement.guid.Substring(1, 1) + @"\" + refreshedElement.guid.Substring(2, 1) + @"\" + refreshedElement.guid.Substring(1, 36) + ".xml"; try { //BOM無しのUTF8でテキストファイルを作成する elsw = new StreamWriter(elemFilePath); elsw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> "); ElementXmlWriter.writeElementXml(refreshedElement, 0, elsw); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (elsw != null) { elsw.Close(); } } // changedFile が存在したら削除する try { string changedElemFilePath = outputDir + @"\elements\" + refreshedElement.guid.Substring(1, 1) + @"\" + refreshedElement.guid.Substring(2, 1) + @"\" + refreshedElement.guid.Substring(1, 36) + "_changed.xml"; if (System.IO.File.Exists(changedElemFilePath)) { System.IO.File.Delete(changedElemFilePath); } } catch (Exception ex) { Console.WriteLine(ex.Message); } // 親フォームの再描画を依頼 ElementForm oya = (ElementForm)this.Owner; oya.repaint(refreshedElement); // XMLファイルをコミットするためにTortoiseGitを起動する //string exename = @"TortoiseGitProc.exe"; //string arguments = @"/command:commit /path:" + elemFilePath; //Process p = Process.Start( exename, arguments ); // 自分をクローズ this.Close(); }