private void CreateWebCatalog(object parameter)
        {
            if (!(parameter is TreeNodeViewModel parentNode)) return;

            // ask for catalog name
            InputStringDialog dialog = new InputStringDialog()
            {
                Title = "Catalog name"
            };
            _ = dialog.ShowDialog();
            if (dialog.Result == null) return;

            string catalogName = (string)dialog.Result;
            string catalogPath;
            if (parentNode.NodePayload is WebServerSettings)
            {
                catalogPath = Path.Combine(parentNode.NodeText, catalogName);
            }
            else
            {
                catalogPath = Path.Combine((string)parentNode.NodePayload, catalogName);
            }
            string catalogFullName = Path.Combine(Module.WebServersCatalogPath, catalogPath);
            if (Directory.Exists(catalogFullName))
            {
                MessageBox.Show($"Catalog \"{catalogPath}\" already exists !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }
            // create direcitory on the disk
            _ = Directory.CreateDirectory(catalogFullName);

            TreeNodeViewModel treeNode = CreateCatalogNode(parentNode, catalogName);
            treeNode.IsExpanded = true;
            parentNode.IsExpanded = true;
        }
        private void AttachWebServer(object parameter)
        {
            if (!(parameter is TreeNodeViewModel parentNode)) return;

            InputStringDialog dialog = new InputStringDialog()
            {
                Title = "Web server name"
            };
            _ = dialog.ShowDialog();
            if (dialog.Result == null) return;

            string catalogName = Path.Combine(Module.WebServersCatalogPath, (string)dialog.Result);
            DirectoryInfo catalog = new DirectoryInfo(catalogName);
            if (catalog.Exists)
            {
                MessageBox.Show($"Catalog \"{catalogName}\" already exists !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }
            catalog.Create();

            WebServerSettings settings = new WebServerSettings()
            {
                Name = catalog.Name
            };
            string settingsFilePath = Path.Combine(catalog.FullName, SETTINGS_FILE_NAME);
            SaveWebServerSettings(settings, settingsFilePath);

            TreeNodeViewModel treeNode = CreateWebServerNode(parentNode, settings);
            treeNode.IsExpanded = true;
        }
Exemplo n.º 3
0
        private void AttachServer(object parameter)
        {
            if (!(parameter is TreeNodeViewModel parentNode))
            {
                return;
            }

            // ask for catalog name
            InputStringDialog dialog = new InputStringDialog()
            {
                Title = "Server name"
            };

            _ = dialog.ShowDialog();
            if (dialog.Result == null)
            {
                return;
            }

            string         serverName = (string)dialog.Result;
            DatabaseServer server     = Module.Metadata.Settings.Servers.Where(s => s.Name == serverName).FirstOrDefault();

            if (server != null)
            {
                MessageBox.Show($"Server \"{serverName}\" is already attached !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }
            else
            {
                server = new DatabaseServer()
                {
                    Name = serverName
                };
            }

            string catalogPath = Path.Combine(Module.ModuleCatalogPath, MODULE_NAME, serverName);

            if (!Directory.Exists(catalogPath))
            {
                _ = Directory.CreateDirectory(catalogPath);
            }

            Module.Metadata.Settings.Servers.Add(server);
            Module.SaveMetadataSettings(Module.Metadata.Settings);

            CreateServerNode(server, out TreeNodeViewModel serverNode);
            serverNode.IsExpanded = true;
            parentNode.IsExpanded = true;
            parentNode.TreeNodes.Add(serverNode);
        }
        private void CreateWebScript(object parameter)
        {
            if (!(parameter is TreeNodeViewModel parentNode)) return;

            WebServerSettings settings = GetWebServerSettingsForScriptNode(parentNode);
            if (settings == null)
            {
                MessageBox.Show("Web server settings not found!", "1C#", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            // ask for query file name
            InputStringDialog dialog = new InputStringDialog()
            {
                Title = "Script name"
            };
            _ = dialog.ShowDialog();
            if (dialog.Result == null) return;

            string scriptName = (string)dialog.Result;
            string catalogPath;
            if (parentNode.NodePayload is WebServerSettings)
            {
                catalogPath = parentNode.NodeText;
            }
            else
            {
                catalogPath = (string)parentNode.NodePayload;
            }
            string scriptFullName = Path.Combine(Module.WebServersCatalogPath, catalogPath, $"{scriptName}.qry");
            if (File.Exists(scriptFullName))
            {
                MessageBox.Show($"Script \"{scriptFullName}\" already exists !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }
            // create query file on the disk
            _ = File.Create(scriptFullName);

            CreateScriptNode(parentNode, $"{scriptName}.qry");

            // open script for editing
            QueryEditorView view = new QueryEditorView()
            {
                DataContext = new QueryEditorViewModel(Module.Shell, settings, scriptFullName, MetadataService, ScriptingService) { QueryScript = "" }
            };
            Module.Shell.AddTabItem($"{scriptName}.qry", view);
        }
Exemplo n.º 5
0
        private string PromptTextInput(string msg, string def)
        {
            InputStringDialog dlg = new InputStringDialog();

            dlg.Message = msg;

            dlg.InputString = def;

            bool?dlgRet = dlg.ShowDialog();

            if (!dlgRet.Value)
            {
                return(null);
            }

            return(dlg.InputString);
        }
Exemplo n.º 6
0
        private void ConnectToServer(object parameter)
        {
            InputStringDialog dialog = new InputStringDialog();

            _ = dialog.ShowDialog();
            if (dialog.Result == null)
            {
                return;
            }

            IMetadataReader metadataProvider = _shell.GetService <IMetadataReader>();

            string serverName = (string)dialog.Result;
            Server server     = new Server()
            {
                Address = serverName
            };

            if (!metadataProvider.CheckServerConnection(server))
            {
                _ = MessageBox.Show(
                    "Unable to connect server!",
                    ONE_C_SHARP,
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            var treeNode = new TreeNodeViewModel()
            {
                NodeText    = server.Address,
                NodeIcon    = new BitmapImage(new Uri(LOCAL_SERVER)),
                NodePayload = server
            };

            treeNode.ContextMenuItems.Add(new MenuItemViewModel()
            {
                MenuItemHeader  = "Connect to database...",
                MenuItemIcon    = new BitmapImage(new Uri(CONNECT_TO_DATABASE)),
                MenuItemCommand = new AsyncCommand(ConnectToInfoBase, CanExecuteConnectToInfoBase),
                MenuItemPayload = treeNode
            });

            _shell.AddTreeNode(treeNode);
        }
Exemplo n.º 7
0
        private void AttachDatabase(object parameter)
        {
            if (!(parameter is TreeNodeViewModel parentNode))
            {
                return;
            }

            InputStringDialog input = new InputStringDialog()
            {
                Title = "Database name"
            };

            _ = input.ShowDialog();
            if (input.Result == null)
            {
                return;
            }

            string serverName       = parentNode.NodeText;
            string databaseName     = (string)input.Result;
            string metadataFilePath = Path.Combine(Module.ModuleCatalogPath, MODULE_NAME, serverName, $"{databaseName}.xml");

            DatabaseServer server   = Module.Metadata.Settings.Servers.Where(s => s.Name == serverName).FirstOrDefault();
            InfoBase       database = server.Databases.Where(d => d.Name == databaseName).FirstOrDefault();

            if (database != null)
            {
                MessageBox.Show($"Database \"{databaseName}\" is already attached !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            OpenFileDialog dialog = new OpenFileDialog()
            {
                Filter           = "XML files (*.xml)|*.xml",
                Multiselect      = false,
                InitialDirectory = Module.ModuleCatalogPath
            };

            if (dialog.ShowDialog() == false)
            {
                return;
            }
            try
            {
                File.Copy(dialog.FileName, metadataFilePath, true);
                Module.Metadata.UseServer(serverName);
                Module.Metadata.UseDatabase(databaseName);
                Module.SaveMetadataSettings(Module.Metadata.Settings);
            }
            catch (Exception ex)
            {
                //TODO: File.Delete(metadataFilePath); ???
                MessageBox.Show(ex.Message, "1C#", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            CreateDatabaseNode(Module.Metadata.CurrentDatabase, out TreeNodeViewModel databaseNode);
            databaseNode.IsExpanded = true;
            parentNode.IsExpanded   = true;
            parentNode.TreeNodes.Add(databaseNode);
        }