public void writeElements() { Console.Write("inserting element table "); conn.Open(); recreateElementTable(); ArtifactXmlReader atfReader = new ArtifactXmlReader(this.projectDir); IList <ArtifactVO> artifacts = ArtifactsXmlReader.readArtifactList(this.projectDir, ProjectSetting.getVO().artifactsFile); string target_dir = null; target_dir = ConfigurationManager.AppSettings["artifact_dir"]; elementRecCount = 0; foreach (ArtifactVO atf in artifacts) { // 成果物パッケージ別のXMLファイル読み込み List <ElementVO> elements = atfReader.readAllElements(atf, null); // 読み込んだ成果物情報を元に読み込み readElementsInArtifact(atf, elements); } transaction.Commit(); Console.WriteLine(". done(" + elementRecCount + "records)"); conn.Close(); }
private void addElementLabels(ElementVO elem) { int rowIndex = 0; string artifactsDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath; ArtifactXmlReader reader = new ArtifactXmlReader(artifactsDir); tableLayoutPanel1.RowCount = elem.attributes.Count + elem.methods.Count + elem.taggedValues.Count; foreach (AttributeVO attr in elem.attributes) { addAttributeBox(rowIndex, reader, attr); rowIndex++; } foreach (MethodVO mth in elem.methods) { addMethodBox(rowIndex, reader, mth); rowIndex++; } foreach (TaggedValueVO tgv in elem.taggedValues) { addTaggedValueBox(rowIndex, reader, tgv); rowIndex++; } }
public void exportBehaviorText() { // 出力フォルダはプロジェクトファイルの配置パスとする string outputDir = ProjectSetting.getVO().projectPath; // 全成果物リストの読み込み string artifactDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath; ArtifactsVO allArtifacts = ArtifactsXmlReader.readAllArtifacts(artifactDir); // 成果物パッケージXMLファイル読み込み ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true); for (int i = 0; i < allArtifacts.artifactList.Count; i++) { ArtifactVO atf = allArtifacts.artifactList[i]; // 成果物VOのPathNameより出力が必要と判断された場合 if (artifactPathNameIsValid(atf.pathName)) { // ルールに従い、GUIDから成果物ファイルの名称を取得 string artifactFileName = "atf_" + atf.guid.Substring(1, 36) + ".xml"; // 成果物ファイル名と出力フォルダを渡し、ふるまいテキストを出力させる outputIndexedBehaviorText(atfReader, artifactFileName, outputDir); Console.WriteLine("{0}:テキスト出力中 {1}", i + 1, artifactFileName); } } }
/// <summary> /// 比較して差異があったメソッドに対して左右それぞれのオリジナル情報を出力し、ピンポイントの比較ができるようにする /// </summary> /// <param name="tagVal">該当メソッド</param> /// <param name="leftRight"> "L" もしくは "R" を指定する(出力ファイル名のサフィックスになる)</param> private void outputOriginalTaggedValueFile(TaggedValueVO tagVal, string leftRight) { XmlDocument xmlDocument = new XmlDocument(); string xmlDir = null; if ("L".Equals(leftRight)) { xmlDir = this.fromArtifactDir; } else { xmlDir = this.toArtifactDir; } ArtifactXmlReader atfReader = new ArtifactXmlReader(xmlDir); // 現在処理中の成果物のGUID、およびメソッドのGUIDから(左もしくは右の)XMLノードを取得 XmlNode taggedValueNode = atfReader.readTaggedValueNode(procArtifact.guid, tagVal.guid); // 成果物のGUID, メソッドのGUIDから読み取ったメソッドNodeがNULLだったらスキップ if (taggedValueNode != null) { // 新しいrootノードを、成果物XMLからインポートする形で作成 XmlNode root = xmlDocument.ImportNode(taggedValueNode, true); // ルート配下に引数のドキュメントを追加 xmlDocument.AppendChild(root); // この内容で操作の詳細に記録する xmlDocument.Save(this.outputDir + "\\detail\\#taggedValue_" + tagVal.guid.Substring(1, 36) + "_" + leftRight + ".xml"); } }
private static string outputArtifactAsciidoc(ArtifactXmlReader atfReader, string artifactFile, string asciidocDir) { // ArtifactVO artifact = atfReader.readArtifactFile(artifactFile); ArtifactAsciidocWriter aaWriter = new ArtifactAsciidocWriter(artifact); string plainFileName = Path.GetFileNameWithoutExtension(artifactFile); string partGuid = artifact.guid.Substring(1, 8); string artifactFileName = "atf_" + filterSpecialChar(artifact.name) + "_" + partGuid + ".adoc"; aaWriter.writeFile(asciidocDir + "\\" + artifactFileName); return(artifactFileName); }
/// <summary> /// プロジェクト内の全成果物の読み込み /// ALL_Artifacts.xml → atf_xxxx.xml ファイルを読み、全ての成果物パッケージの内容をメモリに読み込む /// </summary> /// <param name="projectDir_"></param> /// <returns>全成果物のリスト</returns> private List <ArtifactVO> readAllArtifacts(string projectDir_) { List <ArtifactVO> retList = ArtifactsXmlReader.readArtifactList(projectDir_); ArtifactXmlReader atfReader = new ArtifactXmlReader(projectDir_); foreach (ArtifactVO atf in retList) { // 成果物パッケージ別のXMLファイル読み込み atfReader.readArtifactDesc(atf); } // 成果物リストをソートする。 ソートキー=GUID(自然順序付け)see: BehaviorDevelop.vo.ArtifactVO#compareTo retList.Sort(); return(retList); }
/// <summary> /// プロジェクト内の全成果物の読み込み /// AllArtifacts.xml → atf_xxxx.xml ファイルを読み、全ての成果物パッケージの内容をメモリに読み込む /// </summary> /// <param name="projectDir"></param> /// <returns>全成果物のリスト</returns> private List <ArtifactVO> readAllArtifacts(string artifactsDir) { List <ArtifactVO> retList = ArtifactsXmlReader.readArtifactList(artifactsDir, ProjectSetting.getVO().artifactsFile); ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactsDir); foreach (ArtifactVO atf in retList) { // 成果物パッケージ別のXMLファイル読み込み atfReader.readArtifactDesc(atf); // 成果物配下の子ノードをGUIDでソート atf.sortChildNodesGuid(); } // 成果物リストをソートする。 ソートキー=GUID(自然順序付け)see: BehaviorDevelop.vo.ArtifactVO#compareTo retList.Sort(); return(retList); }
/// <summary> /// /// </summary> /// <param name="atfReader"></param> /// <param name="artifactFile"></param> /// <param name="outputDir"></param> private void outputIndexedBehaviorText(ArtifactXmlReader atfReader, string artifactFile, string outputDir) { // 成果物XMLファイルの読み込み ArtifactVO artifact = atfReader.readArtifactFile(artifactFile); string textFileName = "BehaviorText"; List <ElementVO> elements = artifact.getOwnElements(); foreach (ElementVO elem in elements) { if (elementPathNameIsValid(elem.elementPath)) { if (elem.eaType == "Class" || elem.eaType == "Interface" || elem.eaType == "Enumeration" || elem.eaType == "Notes") { outputBehaviorTextFile(elem, outputDir + "\\" + textFileName); } } } return; }
static void Main(string[] args) { if (args.Length >= 1) { string projectFile = args[0]; //string artifactFile = args[1]; //string adocFile = args[2]; // .bdprjファイルの読み込み ProjectSetting.load(projectFile); // 出力フォルダの存在チェック&無ければ作成 string asciidocDir = ProjectSetting.getVO().projectPath + "\\" + "asciidocs"; makeAsciidocDirIfNotExist(asciidocDir); // 成果物パッケージXMLファイル読み込み string artifactDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath; ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true); // 成果物読み込み先の artifacts フォルダが存在する場合 if (Directory.Exists(artifactDir)) { // その配下の成果物ファイルを取得 string[] atfFiles = Directory.GetFiles(artifactDir, "atf_*.xml"); Console.WriteLine("成果物Path=" + artifactDir); for (var i = 0; i < atfFiles.Length; i++) { string adocfile = outputArtifactAsciidoc(atfReader, Path.GetFileName(atfFiles[i]), asciidocDir); Console.WriteLine("({0}/{1})ドキュメント出力: {2}", i + 1, atfFiles.Length, adocfile); } } } else { Console.WriteLine("引数が足りません: "); Console.WriteLine("Usage: AsciidocGenerator <.bdprj file> <artifactFile(.xml)> <outputFile(.adoc)>"); } }
/// <summary> /// 成果物XMLを全て読み込み、結果のArtifactsVOを返却する /// </summary> /// <param name="artifactDir"></param> /// <returns></returns> private static ArtifactsVO readAllArtifacts(string artifactDir) { // AllArtifacts.xml を読み込み、成果物の内容が未セット状態のartifactListを設定する ArtifactsVO allArtifacts = ArtifactsXmlReader.readAllArtifacts(artifactDir); // 成果物パッケージXMLファイル読み込み用のReaderを生成する ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true); for (int i = 0; i < allArtifacts.artifactList.Count; i++) { ArtifactVO atf = allArtifacts.artifactList[i]; // 成果物XMLファイルの読み込み string artifactFileName = "atf_" + atf.guid.Substring(1, 36) + ".xml"; ArtifactVO artifact = atfReader.readArtifactFile(artifactFileName); // 読み込んだ結果の成果物VOでListの中身を置き換える allArtifacts.artifactList[i] = artifact; } return(allArtifacts); }
/// <summary> /// 比較して差異があったメソッドに対して左右それぞれのオリジナル情報を出力し、ピンポイントの比較ができるようにする /// </summary> /// <param name="mth">該当メソッド</param> /// <param name="leftRight"> "L" もしくは "R" を指定する(出力ファイル名のサフィックスになる)</param> private void outputOriginalMethodFile(MethodVO mth, string leftRight) { XmlDocument xmlDocument = new XmlDocument(); // ' XML宣言部分生成 // Set head = xmlDocument.createProcessingInstruction("xml", "version='1.0'") // XmlProcessingInstruction head = xmlDocument.CreateProcessingInstruction("xml", "version='1.0'"); //' XML宣言部分設定 // xmlDocument.AppendChild(head); string xmlDir = null; if ("L".Equals(leftRight)) { xmlDir = this.fromArtifactDir; } else { xmlDir = this.toArtifactDir; } ArtifactXmlReader atfReader = new ArtifactXmlReader(xmlDir); // 現在処理中の成果物のGUID、およびメソッドのGUIDから(左もしくは右の)XMLノードを取得 XmlNode methodNode = atfReader.readMethodNode(procArtifact.guid, mth.guid); // 成果物のGUID, メソッドのGUIDから読み取ったメソッドNodeがNULLだったらスキップ if (methodNode != null) { // 新しいrootノードを、成果物XMLからインポートする形で作成 XmlNode root = xmlDocument.ImportNode(methodNode, true); // ルート配下に引数のドキュメントを追加 xmlDocument.AppendChild(root); // この内容で操作の詳細に記録する xmlDocument.Save(this.outputDir + "\\detail\\#method_" + mth.guid.Substring(1, 36) + "_" + leftRight + ".xml"); } }
/// <summary> /// 比較して差異があった属性に対して左右それぞれのオリジナル情報を出力し、ピンポイントの比較ができるようにする /// </summary> /// <param name="attr">該当属性</param> /// <param name="leftRight"> "L" もしくは "R" を指定する(出力ファイル名のサフィックスになる)</param> private void outputOriginalAttributeFile(AttributeVO attr, string leftRight) { XmlDocument xmlDocument = new XmlDocument(); // ' XML宣言部分生成 // Set head = xmlDocument.createProcessingInstruction("xml", "version='1.0'") XmlProcessingInstruction head = xmlDocument.CreateProcessingInstruction("xml", "version='1.0'"); //' XML宣言部分設定 xmlDocument.AppendChild(head); string xmlDir = null; if ("L".Equals(leftRight)) { xmlDir = this.fromArtifactDir; } else { xmlDir = this.toArtifactDir; } ArtifactXmlReader atfReader = new ArtifactXmlReader(xmlDir); // 現在処理中の成果物のGUID、および属性のGUIDから(左もしくは右の)XMLノードを取得 XmlNode attrNode = atfReader.readAttributeNode(procArtifact.guid, attr.guid); // 成果物のGUID,属性のGUIDから取得した属性NodeがNullなら出力をスキップする if (attrNode != null) { // 新しいrootノードを、成果物XMLからインポートする形で作成 XmlNode root = xmlDocument.ImportNode(attrNode, true); // ルート配下に引数のドキュメントを追加 xmlDocument.AppendChild(root); // この内容で操作の詳細に記録する xmlDocument.Save(outputDir + "\\detail\\#attribute_" + attr.guid.Substring(1, 36) + "_" + leftRight + ".xml"); } }
/// <summary> /// 成果物パネルのアクティベート。 /// 主にパッケージツリーで成果物PKGを選択した時に呼び出され、新たに成果物情報をファイルから読んで成果物パネルを表示する。 /// あるいは既に成果物パネルの開いているタブ内で表示されている場合はそのタブをアクティベートして終了する。 /// </summary> /// <param name="atf"></param> /// <returns></returns> public ArtifactVO activateArtifactPanel(ArtifactVO atf) { // 既にタブページで対象の成果物を開いていないかをチェックする foreach (TabPage page in tabControl1.TabPages) { // 開こうとしている成果物のGUIDとページで記憶しているGUIDが一致したら string guid = (string)(page.Tag); if (atf.guid.Equals(guid)) { // 該当のタブページを選択状態にし、終了 tabControl1.SelectedTab = page; return(atf); } } string artifactDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath; ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true); // 成果物パッケージ別のXMLファイル読み込み atfReader.readArtifactDesc(atf); // 新しく開くアーティファクト内のフォルダツリーを作成 TreeView folderTree = new TreeView(); folderTree.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); folderTree.ImageIndex = 0; folderTree.ImageList = this.imageList1; folderTree.Nodes.Add(makePackageNode(null, atf.package, true)); folderTree.ExpandAll(); // アーティファクト内の要素リストを作成 FlowLayoutPanel elemPanel = new FlowLayoutPanel(); elemPanel.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); elemPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; elemPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; elemPanel.WrapContents = false; elemPanel.AutoScroll = true; makeElementsPanelContents(elemPanel, atf.package); TabPage atfPage = new TabPage(); atfPage.Controls.Add(elemPanel); // atfPage.Text = ((atf.package.stereoType != null) ? "<<" + atf.package.stereoType + ">> " : "" ) + atf.name ; atfPage.Text = atf.name; atfPage.Tag = atf.guid; // タブクローズ用のコンテキストメニューをTabPageに登録 atfPage.ContextMenuStrip = tabContextMenuStrip; // 作成したタブページをタブコントロールに追加し、そのタブを選択状態にする tabControl1.TabPages.Add(atfPage); tabControl1.SelectedTab = atfPage; return(atf); }
private void addTaggedValueBox(int rowIndex, ArtifactXmlReader reader, TaggedValueVO tgv) { int longerLine; TaggedValueVO leftTgv = tgv; TaggedValueVO rightTgv = tgv; string leftText = ""; string rightText = ""; ListBox listL = makeNewListBox(); ListBox listR = makeNewListBox(); switch (tgv.changed) { case 'U': leftTgv = reader.readTaggedValueDiffDetail(tgv.guid, "L"); rightTgv = reader.readTaggedValueDiffDetail(tgv.guid, "R"); DiffPresenter.getDisagreedTaggedValueDesc(leftTgv, rightTgv, ref leftText, ref rightText); leftDiffBuffer = new StringBuilder(); rightDiffBuffer = new StringBuilder(); var simpleDiff = new SimpleDiff <string>(leftText.Split('\n'), rightText.Split('\n')); simpleDiff.LineUpdate += new EventHandler <DiffEventArgs <string> >(ElementDiff_LineUpdate); simpleDiff.RunDiff(); leftText = leftDiffBuffer.ToString(); rightText = rightDiffBuffer.ToString(); selectedTag = rightTgv; leftDiffBuffer.Clear(); rightDiffBuffer.Clear(); break; case 'C': rightTgv = reader.readTaggedValueDiffDetail(tgv.guid, "R"); DiffPresenter.getMonoTaggedValueDesc(rightTgv, ref rightText); selectedTag = rightTgv; break; case 'D': leftTgv = reader.readTaggedValueDiffDetail(tgv.guid, "L"); DiffPresenter.getMonoTaggedValueDesc(leftTgv, ref leftText); selectedTag = leftTgv; break; default: break; } longerLine = getLongerLine(leftText, rightText); setListItems(listL, leftText); setListItems(listR, rightText); setListBoxSize(listL, leftText, longerLine); setListBoxSize(listR, rightText, longerLine); if (tgv.changed == 'D' || tgv.changed == 'U') { listL.Tag = leftTgv; listL.ContextMenuStrip = contextMenuStrip1; listL.Click += new System.EventHandler(this.TaggedValueListClick); // listL.Click += new System.EventHandler(this.MethodTextClick); } if (tgv.changed == 'C' || tgv.changed == 'U') { listR.Tag = rightTgv; listR.ContextMenuStrip = contextMenuStrip1; listR.Click += new System.EventHandler(this.TaggedValueListClick); // listR.Click += new System.EventHandler(this.MethodTextClick); } tableLayoutPanel1.Controls.Add(listL, 0, rowIndex); tableLayoutPanel1.Controls.Add(listR, 1, rowIndex); return; }
private void addAttributeBox(int rowIndex, ArtifactXmlReader reader, AttributeVO attr) { int longerLine; AttributeVO leftAttr = attr; AttributeVO rightAttr = attr; string leftText = ""; string rightText = ""; ListBox listL = makeNewListBox(); ListBox listR = makeNewListBox(); switch (attr.changed) { case 'U': leftAttr = reader.readAttributeDiffDetail(attr.guid, "L"); rightAttr = reader.readAttributeDiffDetail(attr.guid, "R"); DiffPresenter.getDisagreedAttributeDesc(leftAttr, rightAttr, ref leftText, ref rightText); selectedAttribute = rightAttr; break; case 'C': rightAttr = reader.readAttributeDiffDetail(attr.guid, "R"); DiffPresenter.getMonoAttributeDesc(rightAttr, ref rightText); selectedAttribute = rightAttr; break; case 'D': leftAttr = reader.readAttributeDiffDetail(attr.guid, "L"); DiffPresenter.getMonoAttributeDesc(leftAttr, ref leftText); selectedAttribute = leftAttr; break; default: break; } longerLine = getLongerLine(leftText, rightText); setListItems(listL, leftText); setListItems(listR, rightText); setListBoxSize(listL, leftText, longerLine); setListBoxSize(listR, rightText, longerLine); if (attr.changed == 'D' || attr.changed == 'U') { listL.Tag = leftAttr; listL.ContextMenuStrip = contextMenuStrip1; listL.Click += new System.EventHandler(this.AttributeListClick); // listL.Click += new System.EventHandler(this.AttributeTextClick); } if (attr.changed == 'C' || attr.changed == 'U') { listR.Tag = rightAttr; listR.ContextMenuStrip = contextMenuStrip1; listR.Click += new System.EventHandler(this.AttributeListClick); // listR.Click += new System.EventHandler(this.AttributeTextClick); } tableLayoutPanel1.Controls.Add(listL, 0, rowIndex); tableLayoutPanel1.Controls.Add(listR, 1, rowIndex); return; }
public void CloseOnLoadComplete(string projectPath, string dbfile) { if (!this.loaded) { Int32 count; for (count = 0; count < 1000; count++) { if (this.loaded) { break; } else { System.Threading.Thread.Sleep(100); } } } // このプログラム(.exe)が置かれたフォルダを取得 //string currentDir = System.Windows.Forms.Application.StartupPath ; //ファイルを開いて終わるまで待機する // Process p = Process.Start( currentDir + "\\ElementIndexer.exe", projectPath + " " + dbfile ); // MessageBox.Show("内部データベースを構築します。\n構築処理が完了後、OKボタンを押してください"); try { ProjectSetting.load(projectPath + "\\project.bdprj"); // 全成果物のリストを読み込み string artifactsDir = projectPath + "\\" + ProjectSetting.getVO().artifactsPath; List <ArtifactVO> artifacts = ArtifactsXmlReader.readArtifactList(artifactsDir, ProjectSetting.getVO().artifactsFile); // 全成果物リストの内容を成果物XMLファイルで埋める ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactsDir); foreach (ArtifactVO atf in artifacts) { // 成果物別のXMLファイルの内容読み込み atfReader.readArtifactDesc(atf); } ArtifactsVO allArtifacts = new ArtifactsVO(); allArtifacts.artifactList = artifacts; ConnectorXmlReader connReader = new ConnectorXmlReader(projectPath); List <ConnectorVO> allConnectors = connReader.readConnectorAll(); IndexDbWriter dbWriter = new IndexDbWriter(projectPath, ProjectSetting.getVO().dbName); // 全接続情報をDBに登録 dbWriter.writeAllConnector(allConnectors); // 全要素情報をDBに登録 dbWriter.writeAllElements(allArtifacts); // 全ふるまい情報をDBに登録 dbWriter.writeAllBehaviors(allArtifacts); } catch (Exception ex) { MessageBox.Show(ex.Message); } // サブプロセスが終了後、必要なくなったところでCLOSE // p.WaitForExit(); this.Close(); }
private void addElementLabels(ElementVO elem) { int rowIndex = 0; string leftText, rightText; int longerLine; AttributeVO leftAttr, rightAttr; MethodVO leftMth, rightMth; string artifactsDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath; ArtifactXmlReader reader = new ArtifactXmlReader(artifactsDir); tableLayoutPanel1.RowCount = elem.attributes.Count + elem.methods.Count; foreach (AttributeVO a in elem.attributes) { leftAttr = a; rightAttr = a; leftText = ""; rightText = ""; // TextBox txtL = new TextBox(); // txtL.BackColor = Color.LightCyan; // // TextBox txtR = new TextBox(); // txtR.BackColor = Color.LightYellow; ListBox listL = new ListBox(); listL.DrawMode = DrawMode.OwnerDrawFixed; // EventHandlerの追加 listL.DrawItem += new DrawItemEventHandler(ListBox_DrawItem); ListBox listR = new ListBox(); listR.DrawMode = DrawMode.OwnerDrawFixed; // EventHandlerの追加 listR.DrawItem += new DrawItemEventHandler(ListBox_DrawItem); switch (a.changed) { case 'U': leftAttr = reader.readAttributeDiffDetail(a.guid, "L"); rightAttr = reader.readAttributeDiffDetail(a.guid, "R"); getDisagreedAttributeDesc(leftAttr, rightAttr, ref leftText, ref rightText); break; case 'C': rightAttr = reader.readAttributeDiffDetail(a.guid, "R"); getMonoAttributeDesc(rightAttr, ref rightText); break; case 'D': leftAttr = reader.readAttributeDiffDetail(a.guid, "L"); getMonoAttributeDesc(leftAttr, ref leftText); break; default: break; } longerLine = getLongerLine(leftText, rightText); setListItems(listL, leftText); setListItems(listR, rightText); setListBoxSize(listL, leftText, longerLine); setListBoxSize(listR, rightText, longerLine); // txtR.Text = rightText; // txtL.Text = leftText; // setTextBoxSize(txtL, leftText, longerLine); // setTextBoxSize(txtR, rightText, longerLine); if (a.changed == 'D' || a.changed == 'U') { listL.Tag = leftAttr; listL.ContextMenuStrip = contextMenuStrip1; listL.Click += new System.EventHandler(this.AttributeListClick); // listL.Click += new System.EventHandler(this.AttributeTextClick); } if (a.changed == 'C' || a.changed == 'U') { listR.Tag = rightAttr; listR.ContextMenuStrip = contextMenuStrip1; listR.Click += new System.EventHandler(this.AttributeListClick); // listR.Click += new System.EventHandler(this.AttributeTextClick); } tableLayoutPanel1.Controls.Add(listL, 0, rowIndex); tableLayoutPanel1.Controls.Add(listR, 1, rowIndex); rowIndex++; } foreach (MethodVO m in elem.methods) { leftMth = m; rightMth = m; leftText = ""; rightText = ""; // TextBox txtL = new TextBox(); // txtL.BackColor = Color.White; // // TextBox txtR = new TextBox(); // txtR.BackColor = Color.White; ListBox listL = new ListBox(); listL.DrawMode = DrawMode.OwnerDrawFixed; // EventHandlerの追加 listL.DrawItem += new DrawItemEventHandler(ListBox_DrawItem); ListBox listR = new ListBox(); listR.DrawMode = DrawMode.OwnerDrawFixed; // EventHandlerの追加 listR.DrawItem += new DrawItemEventHandler(ListBox_DrawItem); switch (m.changed) { case 'U': leftMth = reader.readMethodDiffDetail(m.guid, "L"); rightMth = reader.readMethodDiffDetail(m.guid, "R"); getDisagreedMethodDesc(leftMth, rightMth, ref leftText, ref rightText); leftDiffBuffer = new StringBuilder(); rightDiffBuffer = new StringBuilder(); var simpleDiff = new SimpleDiff <string>(leftText.Split('\n'), rightText.Split('\n')); simpleDiff.LineUpdate += new EventHandler <DiffEventArgs <string> > (ElementDiff_LineUpdate); simpleDiff.RunDiff(); leftText = leftDiffBuffer.ToString(); rightText = rightDiffBuffer.ToString(); leftDiffBuffer.Clear(); rightDiffBuffer.Clear(); break; case 'C': rightMth = reader.readMethodDiffDetail(m.guid, "R"); getMonoMethodDesc(rightMth, ref rightText); break; case 'D': leftMth = reader.readMethodDiffDetail(m.guid, "L"); getMonoMethodDesc(leftMth, ref leftText); break; default: break; } longerLine = getLongerLine(leftText, rightText); setListItems(listL, leftText); setListItems(listR, rightText); setListBoxSize(listL, leftText, longerLine); setListBoxSize(listR, rightText, longerLine); // txtL.Text = leftText; // txtR.Text = rightText; // setTextBoxSize(txtL, leftText, longerLine); // setTextBoxSize(txtR, rightText, longerLine); if (m.changed == 'D' || m.changed == 'U') { listL.Tag = leftMth; listL.ContextMenuStrip = contextMenuStrip1; listL.Click += new System.EventHandler(this.MethodListClick); // listL.Click += new System.EventHandler(this.MethodTextClick); } if (m.changed == 'C' || m.changed == 'U') { listR.Tag = rightMth; listR.ContextMenuStrip = contextMenuStrip1; listR.Click += new System.EventHandler(this.MethodListClick); // listR.Click += new System.EventHandler(this.MethodTextClick); } tableLayoutPanel1.Controls.Add(listL, 0, rowIndex); tableLayoutPanel1.Controls.Add(listR, 1, rowIndex); rowIndex++; } }