/// <summary>
        /// スクリプトのインポートを開始する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void BeginImportScript(KeyValueMap parameters)
        {
            if (String.IsNullOrEmpty(Project.ScriptFolderPath))
            {
                ProvideMessage("Script.Import.ScriptPath.Blank.Error");

                return;
            }
            else if (String.IsNullOrEmpty(Project.ScriptFileName))
            {
                ProvideMessage("Script.Import.ScriptFileName.Blank.Error");

                return;
            }
            else if (!Project.ExistsScriptFile())
            {
                ProvideMessage("Script.Import.ScriptFileName.NotFound.Error");

                return;
            }

            if (Project.ScriptDefinitions.Count > 0)
            {
                if (ProvideMessage("Script.Import.Confirm") != DialogResult.Yes)
                {
                    return;
                }
            }

            ImportScript();
        }
        public void GivenCreateKeyValueMap_WhenEnvironmentSpecified_CreatesAKeyValueMapForTheSpecifiedEnvironment()
        {
            // Arrange
            // TODO: move this setup into the fixture
            Uri baseUri = new Uri("https://api.enterprise.apigee.com");
            var fixture = new ApigeeAliasesFixture(this.output);

            ApigeeAliases.ApigeeProxyManagementService = fixture.ApigeeProxyManagementService;
            fixture.FakeResponseHandler.AddFakeResponse(
                new Uri(baseUri, $"v1/organizations/org/environments/myenvironment/keyvaluemaps"),
                HttpStatusCode.Created,
                ResourceHelper.GetResourceAsString("CreateKeyValueMapForEnvironmentResponse.json"));

            var keyValueMap = new KeyValueMap
            {
                Name      = "myMap",
                Encrypted = false,
                Entry     = new[]
                {
                    new KeyValueMapEntry {
                        Name = "myKey", Value = "myValue"
                    }
                }
            };

            var settings = new CreateKeyValueMapSettings {
                Environment = "myenvironment"
            };

            ApigeeAliases.CreateKeyValueMap(fixture.ContextMock.Object, "org", keyValueMap, settings);
        }
        /// <summary>
        /// データベースプロパティ変更時処理。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void ChangeDatabaseProperty(KeyValueMap parameters)
        {
            DatabaseDefinition definition = parameters["Definition"];
            String name = parameters["Name"];
            dynamic value = parameters["Value"];
            dynamic oldValue = parameters["oldValue"];

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

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

                        return;
                    }

                    definition.Name = value;

                    break;
                default:
                    throw new NotImplementedException();
            }

            if (!SaveProject()) return;
            RefreshDatabaseNode(definition);
        }
        /// <summary>
        /// 定義エディタをコントローラへ登録し、開く。
        /// </summary>
        /// <param name="editorType">登録する定義エディタの型。</param>
        /// <param name="definition">対象定義のインスタンス。</param>
        /// <param name="parameters">固有パラメータ。</param>
        private void RegisterDefinitionEditor(
            Type editorType,
            dynamic definition = null,
            KeyValueMap parameters = null)
        {
            DefinitionEditorTab tab = null;
            tab = FindDefinitionEditor(definition);

            if (tab != null)
            {
                tab.Activate();

                return;
            }

            tab = (DefinitionEditorTab)editorType.InvokeMember(
                null,
                BindingFlags.CreateInstance,
                null, null, null
            );

            tab.Definition = definition;
            tab.Parameters = parameters;
            tab.FormClosed += DefinitionEditor_FormClosed;
            tab.Apply += DefinitionEditor_Apply;

            MainForm.ShowContent(tab, DockState.Document);
        }
        /// <summary>
        /// 表示中コンテントを閉じる。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void CloseContent(KeyValueMap parameters)
        {
            var tab = MainForm.ActivateContent as IEditorTab;
            if (tab == null) return;

            tab.Close(force: false);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// コンストラクタ。
        /// </summary>
        /// <param name="item">メッセージ定義のKeyValueMap。</param>
        /// <param name="arguments">メッセージパラメータ。</param>
        public ProvidedMessage(
            KeyValueMap item,
            dynamic[] arguments)
        {
            _Id = item["Id"];
            _MessageLevel = item["Level"];
            Message = item["Message"];

            Arguments = arguments;
        }
        /// <summary>
        /// プロジェクトを閉じる処理を開始する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void BeginCloseProject(KeyValueMap parameters)
        {
            parameters["Result"] = false;

            if (!CloseProject()) return;
            Console.Clear();

            OnChangeProject();

            if (!(parameters["OnQuit"] ?? false)) {
                Settings.Default.LastOpenProject = null;
            }

            parameters["Result"] = true;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// アプリケーションコマンドを発行する。
        /// </summary>
        /// <param name="command">アプリケーションコマンドのKeyValueMap。</param>
        protected CommonEventArgs InvokeCommand(KeyValueMap command)
        {
            var e = new CommonEventArgs()
            {
                Parameter = new KeyValueMap()
            };

            foreach (var commandParameter in command)
            {
                e.Parameter[commandParameter.Key] = commandParameter.Value;
            }

            OnCommand(e);

            return e;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// コンストラクタ。
        /// </summary>
        /// <param name="item">メッセージ定義のKeyValueMap。</param>
        /// <param name="arguments">メッセージパラメータ。</param>
        internal ProvidedDialogMessage(
            KeyValueMap item,
            dynamic[] arguments)
            : base(item, arguments)
        {
            switch (MessageLevel)
            {
                case MessageLevel.Information:
                    if (Confirm == MessageBoxButtons.OK)
                    {
                        _Icon = MessageBoxIcon.Information;
                    }
                    else
                    {
                        _Icon = MessageBoxIcon.Question;
                    }

                    break;
                case MessageLevel.Warning:
                    _Icon = MessageBoxIcon.Warning;

                    break;
                case MessageLevel.Error:
                case MessageLevel.Fatal:
                    _Icon = MessageBoxIcon.Error;

                    break;
            }

            _Confirm = item["Confirm"];
            switch (Confirm)
            {
                case MessageBoxButtons.OKCancel:
                case MessageBoxButtons.YesNo:
                    _DefaultButton = MessageBoxDefaultButton.Button2;

                    break;
                case MessageBoxButtons.YesNoCancel:
                    _DefaultButton = MessageBoxDefaultButton.Button3;

                    break;
                default:
                    _DefaultButton = MessageBoxDefaultButton.Button1;

                    break;
            }
        }
        /// <summary>
        /// データベース定義のリネーム可否チェックを行う。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void CheckDatabaseDefinitionRenamable(KeyValueMap parameters)
        {
            parameters["Result"] = false;
            DatabaseDefinition definition = parameters["Definition"];

            // 該当データベースを参照しているデータベースエディタを開いている場合はエラー
            var edittingTab = FindEdittingDatabaseEditors(definition).FirstOrDefault();
            if (edittingTab != null)
            {
                edittingTab.Activate();
                ProvideMessage("Default.Editor.Using.Relation.Error", "データベース", "データベース定義", "名前変更");

                return;
            }

            parameters["Result"] = true;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// アプリケーションコマンドを発行する。
        /// </summary>
        /// <param name="commandName">コマンド名。</param>
        /// <param name="parameters">パラメータのKeyValueMap。</param>
        protected CommonEventArgs InvokeCommand(
            string commandName,
            KeyValueMap parameters = null)
        {
            var command = new KeyValueMap()
            {
                {"CommandName", commandName}
            };

            if (parameters != null)
            {
                foreach (var parameter in parameters)
                {
                    command[parameter.Key] = parameter.Value;
                }
            }

            return InvokeCommand(command);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// XMLをロードする。
        /// </summary>
        /// <param name="xml">メッセージリソースのXML。</param>
        public void Load(string xml)
        {
            if (Items == null)
            {
                Items = new KeyValueMap();
            }

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            // ルートノード検索
            var rootNode = doc.SelectSingleNode("/MessageResource");
            if (rootNode == null)
            {
                throw new FormatException("ルートノードが見つかりません。");
            }

            LoadRecursive("", rootNode.ChildNodes);
        }
Ejemplo n.º 13
0
        private async Task <string> ReceiveString(string resource, KeyValueMap parameters = null)
        {
            var urlBuilder = new StringBuilder($"https://www.tistory.com/apis/{resource}?");

            urlBuilder.Append($"access_token={Token}");
            urlBuilder.Append("&output=json");

            if (parameters != null)
            {
                foreach (var kv in parameters)
                {
                    urlBuilder.Append($"&{kv.Key}={kv.Value}");
                }
            }


            var req = WebRequest.CreateHttp(urlBuilder.ToString());

            req.Method  = "GET";
            req.Timeout = 30 * 1000;

            try
            {
                using (var res = await req.GetResponseAsync())
                {
                    using (var sr = new StreamReader(res.GetResponseStream()))
                    {
                        return(await sr.ReadToEndAsync());
                    }
                }
            }
            catch (WebException e)
            {
                using (var res = e.Response)
                {
                    using (var sr = new StreamReader(res.GetResponseStream()))
                    {
                        return(await sr.ReadToEndAsync());
                    }
                }
            }
        }
Ejemplo n.º 14
0
        private async Task <JToken> ReceiveJToken(string resource, KeyValueMap parameters = null)
        {
            var json = await ReceiveJson(resource, parameters);

            var tistory = json["tistory"];
            var status  = tistory.Value <string>("status");

            if (status != "200")
            {
                var error = tistory.Value <string>("error_message");
                throw new Exception(string.Format("({0}) {1}", status, error));
            }

            var item = tistory["item"];

            if (item == null)
            {
                throw new InvalidDataException("API 응답이 올바르지 않습니다.");
            }

            return(item);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// アプリケーションコマンドを発行する。
        /// </summary>
        /// <param name="commandName">コマンド名。</param>
        /// <param name="parameters">パラメータのKeyValueMap。</param>
        private void InvokeCommand(
            string commandName,
            KeyValueMap parameters = null)
        {
            var e = new CommonEventArgs()
            {
                Parameter = new KeyValueMap()
                {
                    {"CommandName", commandName}
                }
            };

            if (parameters != null)
            {
                foreach (var parameter in parameters)
                {
                    e.Parameter[parameter.Key] = parameter.Value;
                }
            }

            Command(this, e);
        }
        /// <summary>
        /// スクリプトのエクスポートを開始する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void BeginExportScript(KeyValueMap parameters)
        {
            if (String.IsNullOrEmpty(Project.ScriptFolderPath))
            {
                ProvideMessage("Script.Export.ScriptPath.Blank.Error");

                return;
            }
            else if (String.IsNullOrEmpty(Project.ScriptFileName))
            {
                ProvideMessage("Script.Export.ScriptFileName.Blank.Error");

                return;
            }
            else if (Project.ScriptDefinitions.Count == 0)
            {
                ProvideMessage("Script.Export.ScriptDefinition.Empty.Error");

                return;
            }

            ExportScript();
        }
Ejemplo n.º 17
0
        public void AddValue <T>(string name, T value)
        {
            if (value == null)
            {
                return;
            }

            Serializable serializableValue = value as Serializable;

            if (null != serializableValue)
            {
                serializableValue.Serialize(AddChild(name));
            }
            else
            {
                if (KeyValueMap.ContainsKey(name))
                {
                    throw new System.Exception("A value has already been associated with name.");
                }

                KeyValueMap.Add(name, new Value(value, typeof(T)));
            }
        }
 /// <summary>
 /// オブジェクト定義情報をリフレッシュする。
 /// </summary>
 /// <param name="parameters">パラメータ。</param>
 private void RefreshObjectDefinition(KeyValueMap parameters)
 {
     RefreshObjectDefinition();
 }
        /// <summary>
        /// スクリプトを開く。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void OpenScript(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];

            RegisterScriptEditor(definition);
        }
        /// <summary>
        /// スクリプトのインポートを行う。
        /// </summary>
        /// <param name="parameter">パラメータ。</param>
        private void ImportScriptDefinition(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];

            using (var dialog = new OpenFileDialog())
            {
                dialog.Filter = ApplicationConstants.ScriptFileFilterString;

                if (dialog.ShowDialog(MainForm) != DialogResult.OK) return;

                ScriptDefinition newDefinition;
                string fileName = Path.GetFileName(dialog.FileName);
                string newPath = Project.GetScriptFullPath(fileName);
                int i = 2;
                while (File.Exists(newPath))
                {
                    string newFileName = String.Format(
                        "{0}_{1}.rb",
                        Path.GetFileNameWithoutExtension(fileName),
                        i++
                    );
                    newPath = Project.GetScriptFullPath(newFileName);
                }

                try
                {
                    File.Copy(dialog.FileName, newPath);

                    newDefinition = new ScriptDefinition()
                    {
                        FileName = newPath,
                        DisplayName = Path.GetFileNameWithoutExtension(dialog.FileName),
                        Guid = Project.NewScriptGuid()
                    };

                    if (definition == null)
                    {
                        Project.ScriptDefinitions.Add(newDefinition);
                        RefreshScriptNode(newDefinition);
                    }
                    else
                    {
                        definition.Children.Add(newDefinition);
                        RefreshScriptNode(definition);
                    }
                }
                catch (Exception ex)
                {
                    ProvideMessage("Default.Exception.Error", "スクリプトのコピー", ex.Message);

                    return;
                }

                RefreshSelectedNodeProperty();

                if (!SaveProject()) return;

                RefreshObjectDefinition();
            }
        }
        /// <summary>
        /// スクリプト定義を削除する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void DeleteScriptDefinition(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];

            // 該当クラスを参照しているデータベースエディタを開いている場合はエラー
            var edittingTab = FindEdittingScriptEditors(definition).FirstOrDefault();
            if (edittingTab != null)
            {
                edittingTab.Activate();
                ProvideMessage("Default.Editor.Using.Error", "スクリプト", "削除");

                return;
            }

            if (ProvideMessage("Default.Delete.Confirm", "スクリプト") != DialogResult.Yes) return;

            var parent = Project.FindParentScriptDefinition(definition);
            if (parent == null)
            {
                Project.ScriptDefinitions.Remove(definition);
            }
            else
            {
                parent.Children.Remove(definition);
            }

            // スクリプトファイルを削除する再帰処理
            Func<ScriptDefinition, bool> deleteScriptFile = (scriptDefinition) =>
            {
                if (scriptDefinition.IsFolder) return true;

                try
                {
                    var scriptFullPath = Project.GetScriptFullPath(scriptDefinition.FileName);

                    if (File.Exists(scriptFullPath))
                    {
                        File.Delete(scriptFullPath);
                    }

                    return true;
                }
                catch (Exception ex)
                {
                    ProvideMessage("Default.Exception.Error", "スクリプトファイルの削除", ex.Message);

                    return false;
                }
            };

            Func<ScriptDefinition, bool> deleteScriptFileRecursive = null;
            deleteScriptFileRecursive = (scriptDefinition) =>
            {
                if (!deleteScriptFile(scriptDefinition)) return false;
                foreach (var child in scriptDefinition.Children)
                {
                    if (!deleteScriptFileRecursive(child)) return false;
                }

                return true;
            };

            deleteScriptFileRecursive(definition);

            RefreshScriptNodes();
            RefreshSelectedNodeProperty();

            if (!SaveProject()) return;

            RefreshObjectDefinition();
        }
        /// <summary>
        /// スクリプトフォルダを作成する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void CreateScriptFolder(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];

            var newDefinition = new ScriptDefinition()
            {
                DisplayName = ApplicationConstants.DefaultScriptFolderName,
                Guid = Project.NewScriptGuid()
            };

            if (definition == null)
            {
                Project.ScriptDefinitions.Add(newDefinition);
                RefreshScriptNode(newDefinition);
            }
            else
            {
                definition.Children.Add(newDefinition);
                RefreshScriptNode(definition);
            }

            if (!SaveProject()) return;
        }
Ejemplo n.º 23
0
 private async Task <JObject> ReceiveJson(string resource, KeyValueMap parameters = null)
 {
     return(JObject.Parse(await ReceiveString(resource, parameters)));
 }
        /// <summary>
        /// スクリプト定義のリネーム可否チェックを行う。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void CheckScriptDefinitionRenamable(KeyValueMap parameters)
        {
            parameters["Result"] = false;
            ScriptDefinition definition = parameters["Definition"];

            parameters["Result"] = true;
        }
Ejemplo n.º 25
0
        public async Task <CreateKeyValueMapResult> CreateKeyValueMap(ICakeContext ctx, string orgName, KeyValueMap keyValueMap, IEnvironmentSettings settings)
        {
            ctx.Log.Information("Creating a KeyValueMap in Apigee");
            var url = ConstructKeyValueMapUrl(orgName, settings);

            using (HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Post, url))
            {
                if (!string.IsNullOrEmpty(settings?.Credentials?.Username))
                {
                    AddAuthorization(settings.Credentials, message);
                }

                message.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var json = JsonConvert.SerializeObject(keyValueMap, Formatting.None, ApigeeJsonSettings);
                message.Content = new StringContent(json, Encoding.UTF8, "application/json");
                return(await SendMessage <CreateKeyValueMapResult>(ctx, message, settings));
            }
        }
        /// <summary>
        /// スクリプト設定ダイアログを開く。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void ShowScriptOptionDialog(KeyValueMap parameters)
        {
            using (var dialog = new ScriptSettingDialog())
            {
                dialog.Project = Project;

                dialog.Command += CommandHandler;
                dialog.FormClosed += ScriptSettingDialog_FormClosed;

                if (dialog.ShowDialog() != DialogResult.OK) return;

                RefreshScriptNodes();

                if (!SaveProject()) return;

                RefreshObjectDefinition();
            }
        }
        /// <summary>
        /// スクリプトノードの名称変更を行う。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void RenameScriptNode(KeyValueMap parameters)
        {
            parameters["Result"] = false;
            ScriptTreeNode node = parameters["Node"];
            string label = parameters["Label"];

            if (label == null) return;

            label = label.TrimEnd();

            ScriptDefinition definition = (ScriptDefinition)node.Tag;
            string oldName = definition.DisplayName;

            if (label == oldName) return;

            definition.DisplayName = label;

            RenameScriptDefinition(
                new KeyValueMap()
                {
                    {"Definition", definition},
                    {"OldName", oldName}
                }
            );

            if (!SaveProject()) return;

            RefreshObjectDefinition();
            parameters["Result"] = true;
        }
        /// <summary>
        /// スクリプトプロパティ変更時処理。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void ChangeScriptProperty(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];
            String name = parameters["Name"];
            dynamic value = parameters["Value"];
            dynamic oldValue = parameters["oldValue"];

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

            switch (name)
            {
                case "Name":
                    definition.DisplayName = value;

                    break;
                case "SourceFile":
                    result = validator.ValidateFileName(value);
                    if (result != null)
                    {
                        InvokeMessage(result);

                        return;
                    }

                    try
                    {
                        File.Move(Project.GetScriptFullPath(definition.FileName), Project.GetScriptFullPath(value));
                    }
                    catch (Exception ex)
                    {
                        ProvideMessage("Default.Exception.Error", "スクリプトファイルのリネーム", ex.Message);

                        return;
                    }

                    definition.FileName = value;

                    break;
                default:
                    throw new NotImplementedException();
            }

            if (!SaveProject()) return;
            RefreshScriptNode(definition);
        }
        /// <summary>
        /// スクリプト定義の名称変更を行う。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void RenameScriptDefinition(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];
            string oldName = parameters["OldName"];

            // エディタが開かれている場合はエディタへ反映
            var tab = FindScriptEditor(definition);
            if (tab != null)
            {
                tab.RenameOuter(definition.DisplayName, oldName);
            }

            RefreshSelectedNodeProperty();
        }
        /// <summary>
        /// スクリプト定義を作成する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void CreateScriptDefinition(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];

            using (var dialog = new SaveFileDialog())
            {
                dialog.InitialDirectory = Project.ScriptFolderFullPath;
                dialog.Filter = ApplicationConstants.ScriptFileFilterString;
                dialog.OverwritePrompt = false;

                if (dialog.ShowDialog(MainForm) != DialogResult.OK) return;

                var validator = new ScriptDefinitionValidator(Message, Project, definition);
                ProvidedMessage result;
                string newPath = null;

                result = validator.ValidateFileFullPath(dialog.FileName, ref newPath);
                if (result != null)
                {
                    InvokeMessage(result);

                    return;
                }

                result = validator.ValidateFileName(newPath);
                if (result != null)
                {
                    InvokeMessage(result);

                    return;
                }

                var newDefinition = new ScriptDefinition()
                {
                    FileName = newPath,
                    DisplayName = ApplicationConstants.DefaultScriptName,
                    Guid = Project.NewScriptGuid()
                };

                if (definition == null)
                {
                    Project.ScriptDefinitions.Add(newDefinition);
                    RefreshScriptNode(newDefinition);
                }
                else
                {
                    definition.Children.Add(newDefinition);
                    RefreshScriptNode(definition);
                }

                if (!SaveProject()) return;

                if (!File.Exists(Project.GetScriptFullPath(newDefinition.FileName)))
                {
                    try
                    {
                        using (var fs = File.Create(Project.GetScriptFullPath(newDefinition.FileName))) { }
                    }
                    catch (Exception ex)
                    {
                        ProvideMessage("Default.Exception.Error", "スクリプトファイルの作成", ex.Message);

                        return;
                    }
                }

                RefreshObjectDefinition();

                RegisterScriptEditor(newDefinition);
            }
        }
        /// <summary>
        /// スクリプトファイル名を変更する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void RenameScriptFileName(KeyValueMap parameters)
        {
            ScriptDefinition definition = parameters["Definition"];

            using (var dialog = new SaveFileDialog())
            {
                dialog.InitialDirectory = Project.ScriptFolderFullPath;
                dialog.FileName = definition.FileName;
                dialog.Filter = ApplicationConstants.ScriptFileFilterString;
                dialog.OverwritePrompt = false;
                dialog.Title = "ファイル名の変更";

                if (dialog.ShowDialog(MainForm) != DialogResult.OK) return;

                var validator = new ScriptDefinitionValidator(Message, Project, definition);
                ProvidedMessage result;
                string newPath = null;

                result = validator.ValidateFileFullPath(dialog.FileName, ref newPath);
                if (result != null)
                {
                    InvokeMessage(result);

                    return;
                }

                if (definition.FileName.ToLower() == newPath.ToLower()) return;

                result = validator.ValidateFileName(newPath);
                if (result != null)
                {
                    InvokeMessage(result);

                    return;
                }

                try
                {
                    File.Move(Project.GetScriptFullPath(definition.FileName), Project.GetScriptFullPath(newPath));
                }
                catch (Exception ex)
                {
                    ProvideMessage("Default.Exception.Error", "スクリプトファイルのリネーム", ex.Message);

                    return;
                }

                definition.FileName = newPath;

                RefreshSelectedNodeProperty();

                if (!SaveProject()) return;

                RefreshObjectDefinition();
            }
        }
Ejemplo n.º 32
0
        public T GetValue <T>(string name, T defaultValue)
        {
            if (typeof(Serializable).IsAssignableFrom(typeof(T)))
            {
                SerializeTable table;
                if (TryGetChild(name, out table))
                {
                    Serializable v3 = Activator.CreateInstance <T>() as Serializable;
                    v3.Deserialize(table);
                    return((T)v3);
                }
                else
                {
                    //					Debug.LogWarning(string.Format("Can't find key value(serializable): {0}.{1}", this.Name, name));
                }

                return(defaultValue);
            }

            Value value;

            if (!KeyValueMap.TryGetValue(name, out value))
            {
                //				Debug.LogWarning(string.Format("Can't find key value: {0}.{1}", this.Name, name));
                return(defaultValue);
            }

            if (value.type == typeof(string))
            {
                T convertedValue;

                if (StringConverter.TryConvert <T>((string)value.obj, out convertedValue))
                {
                    return(convertedValue);
                }
            }

            //if (typeof(System.Enum).IsAssignableFrom(typeof(T)))
            //{
            //    int convertedValue;
            //    StringConverter.TryConvert<int>((string)value.obj, out convertedValue);
            //    return (T)System.Enum.ToObject(typeof(T), convertedValue);
            //}

            object numberic = value.obj;

            if (value.obj is System.Single)
            {
                numberic = System.Convert.ToSingle(value.obj);
            }

            if (value.obj is System.Double)
            {
                numberic = System.Convert.ToDouble(value.obj);
            }

            if (value.obj is System.Int16 || value.obj is System.UInt16 ||
                value.obj is System.Int32 || value.obj is System.UInt32)
            {
                numberic = System.Convert.ToInt32(value.obj);
            }

            if (value.obj is System.Boolean)
            {
                numberic = System.Convert.ToBoolean(value.obj);
            }

            if (value.obj is System.Int64 || value.obj is System.UInt64)
            {
                numberic = System.Convert.ToInt64(value.obj);
            }

            return((T)numberic);
        }
        /// <summary>
        /// クラスリンク変更ダイアログを表示する。
        /// </summary>
        /// <param name="parameters">パラメータ。</param>
        private void ShowClassLinkSettingDialog(KeyValueMap parameters)
        {
            using (var dialog = new ClassLinkSettingDialog())
            {
                dialog.Project = Project;
                dialog.Definition = parameters["Definition"];

                dialog.Command += CommandHandler;
                dialog.FormClosed += ClassLinkSettingDialog_FormClosed;

                if (dialog.ShowDialog(MainForm) != DialogResult.OK) return;

                RefreshObjectDefinition();

                RefreshSelectedNodeProperty();
            }
        }
Ejemplo n.º 34
0
        /// <summary>
        /// コンテクストメニューを追加する。
        /// </summary>
        /// <param name="menu">コンテクストメニューのインスタンス。</param>
        public override void SetContextMenu(ContextMenuStrip menu)
        {
            base.SetContextMenu(menu);

            var definition = (ClassDefinition)Tag;
            var parameters = new KeyValueMap()
            {
                {"Definition", this.Tag}
            };

            menu.Items.Add(
                CreateContextMenuItem(
                    "開く(&O)",
                    "OpenClassDefinition",
                    parameters,
                    bold: true
                )
            );

            menu.Items.Add(new ToolStripSeparator());
            menu.Items.Add(
                CreateContextMenuItem(
                    "定義のエクスポート(&E)",
                    "ExportClassDefinition",
                    parameters
                )
            );
            menu.Items.Add(
                CreateContextMenuItem(
                    "スクリプトのエクスポート(&S)",
                    "ExportClassScript",
                    parameters
                )
            );

            menu.Items.Add(new ToolStripSeparator());

            menu.Items.Add(
                CreateContextMenuItem(
                    "削除(&D)",
                    "DeleteClassDefinition",
                    parameters,
                    shortcutKeys: Keys.Delete
                )
            );

            menu.Items.Add(
                CreateContextMenuItem(
                    "名前の変更(&M)",
                    "BeginRenameNode",
                    new KeyValueMap()
                    {
                        {"Node", this}
                    }
                )
            );

            menu.Items.Add(new ToolStripSeparator());

            menu.Items.Add(CreateContextMenuItem(
                "プロパティ",
                "ShowProperty",
                parameters: new KeyValueMap()
                {
                    {"Target", Tag},
                },
                shortcutKeys: Keys.Alt | Keys.Enter)
            );
        }
Ejemplo n.º 35
0
 /// <summary>
 /// メッセージを新規にロードする。
 /// </summary>
 /// <param name="parameters">パラメータ。</param>
 private void LoadMessage(KeyValueMap parameters)
 {
     Message.Load(parameters["Xml"]);
 }
Ejemplo n.º 36
0
 private async Task <T> ReceiveObject <T>(string resource, KeyValueMap parameters = null)
 {
     return((await ReceiveJToken(resource, parameters)).ToObject <T>());
 }
Ejemplo n.º 37
0
        /// <summary>
        /// コンテクストメニューを追加する。
        /// </summary>
        /// <param name="menu">コンテクストメニューのインスタンス。</param>
        public override void SetContextMenu(ContextMenuStrip menu)
        {
            base.SetContextMenu(menu);

            var definition = (ScriptDefinition)Tag;
            var parameters = new KeyValueMap()
            {
                {"Definition", definition}
            };

            if (!definition.IsFolder)
            {
                menu.Items.Add(
                    CreateContextMenuItem(
                        "開く(&O)",
                        "OpenScript",
                        parameters,
                        bold:true
                    )
                );

                menu.Items.Add(new ToolStripSeparator());
            }
            else
            {
                var addItem = new ToolStripMenuItem()
                {
                    Text = "追加(&D)"
                };

                addItem.DropDownItems.Add(CreateContextMenuItem("新しいスクリプトフォルダ", "CreateScriptFolder", parameters));
                addItem.DropDownItems.Add(CreateContextMenuItem("新しいスクリプト", "CreateScriptDefinition", parameters));
                addItem.DropDownItems.Add(CreateContextMenuItem("既存のスクリプト", "ImportScriptDefinition", parameters));

                menu.Items.Add(addItem);

                menu.Items.Add(new ToolStripSeparator());
            }

            menu.Items.Add(
                CreateContextMenuItem(
                    "削除(&D)",
                    "DeleteScriptDefinition",
                    parameters,
                    shortcutKeys:Keys.Delete
                )
            );

            menu.Items.Add(
                CreateContextMenuItem(
                    "名前の変更(&M)",
                    "BeginRenameNode",
                    new KeyValueMap()
                    {
                        {"Definition", definition},
                        {"Node", this}
                    }
                )
            );
            if (!definition.IsFolder)
            {
                menu.Items.Add(
                    CreateContextMenuItem(
                        "ファイル名の変更(&R)",
                        "RenameScriptFileName",
                        parameters
                    )
                );

                menu.Items.Add(new ToolStripSeparator());
                menu.Items.Add(
                    CreateContextMenuItem(
                        "クラス定義とのリンクを変更する(&L)",
                        "ShowClassLinkSettingDialog",
                        parameters: parameters
                    )
                );
            }

            menu.Items.Add(new ToolStripSeparator());
            menu.Items.Add(CreateContextMenuItem(
                "プロパティ",
                "ShowProperty",
                parameters: new KeyValueMap()
                {
                    {"Target", Tag},
                },
                shortcutKeys: Keys.Alt | Keys.Enter)
            );
        }
Ejemplo n.º 38
0
 /// <summary>
 /// メッセージプロバイダを取得する。
 /// </summary>
 /// <param name="parameters">パラメータ。</param>
 private void GetMessageProvider(KeyValueMap parameters)
 {
     parameters["MessageProvider"] = Message;
 }