Example #1
0
        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, "エラー発生");
            }
        }
Example #3
0
        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);
        }
Example #5
0
        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();
        }
Example #6
0
        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();
        }