Esempio n. 1
0
        /// <summary>
        /// 画面項目の入力チェックを行う。
        /// </summary>
        /// <returns>入力チェックOK時はtrue。</returns>
        private bool ValidateInput()
        {
            ctlName.Text = ctlName.Text.TrimEnd();
            ctlDataFolderPath.Text = ctlDataFolderPath.Text.TrimEnd();
            ctlScriptFolderPath.Text = ctlScriptFolderPath.Text.TrimEnd();
            ctlScriptFileName.Text = ctlScriptFileName.Text.TrimEnd();

            var validator = new ProjectValidator(GetMessageProvider(), Project);
            ProvidedMessage result;

            // プロジェクト名
            result = validator.ValidateName(ctlName.Text);
            if (result != null)
            {
                ActiveControl = ctlName;
                InvokeMessage(result);

                return false;
            }

            // データフォルダ
            result = validator.ValidateDataFolderPath(ctlDataFolderPath.Text);
            if (result != null)
            {
                ActiveControl = ctlDataFolderPath;
                InvokeMessage(result);

                return false;
            }

            // スクリプトフォルダ
            result = validator.ValidateScriptFolderPath(ctlScriptFolderPath.Text);
            if (result != null)
            {
                ActiveControl = ctlScriptFolderPath;
                InvokeMessage(result);

                return false;
            }

            // スクリプトファイル
            result = validator.ValidateScriptFileName(ctlScriptFileName.Text);
            if (result != null)
            {
                ActiveControl = ctlScriptFileName;
                InvokeMessage(result);

                return false;
            }

            return true;
        }
        /// <summary>
        /// プロジェクトプロパティ変更時処理。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void ChangeProjectProperty(KeyValueMap parameters)
        {
            String name = parameters["Name"];
            dynamic value = parameters["Value"];
            dynamic oldValue = parameters["oldValue"];

            var validator = new ProjectValidator(Message, Project);
            ProvidedMessage result;
            if (value != null) value = ((string)value).Trim();

            switch (name)
            {
                case "Name":
                    result = validator.ValidateName(value);
                    if (result != null)
                    {
                        InvokeMessage(result);

                        return;
                    }

                    Project.Name = value;

                    break;
                case "ProjectFileName":
                    string newPath = null;
                    result = validator.ValidateProjectFileName(
                        value,
                        allowChangeDirectory: false,
                        newPath: ref newPath
                    );
                    if (result != null)
                    {
                        InvokeMessage(result);

                        return;
                    }

                    if (newPath.ToLower() != Project.FileName.ToLower())
                    {
                        try
                        {
                            File.Move(Project.FileName, newPath);
                        }
                        catch (Exception ex)
                        {
                            ProvideMessage("Default.Exception.Error", "プロジェクトファイルのリネーム", ex.Message);

                            return;
                        }

                        Project.FileName = newPath;
                    }

                    break;
                default:
                    throw new NotImplementedException();
            }

            if (!SaveProject()) return;
            RefreshProjectNode();

            MainForm.RefreshCaption(Project);
        }