Пример #1
0
        private void btnGo_Click(object sender, EventArgs e)
        {
            var sb = getMissingDependencyString();

            if (sb.Length > 0)
            {
                MessageBox.Show(sb.ToString(), "Dependencies");
                return;
            }


            var workspaces = getSortedWorkspaces((gridTables.DataSource as BindingList <TableWorkspace>)
                                                 .Where(t => t.AddRowCount > 0 || t.Truncate || t.Delete).ToList());

            var changes = workspaces.Select(t => t.Table.TableName).ToList();

            if (changes.Count() > 15)
            {
                changes = changes.Take(15).ToList();
                changes.Add("...");
            }

            if (ScrollableMessageBox.ShowDialog(string.Format("{0} - {1} will be populated:\r\n\r\n{2}\r\n\r\nContinue?", _generatorHelper.DataSource.DataSourceName,
                                                              _generatorHelper.DataSource.CurrentDatabase.DatabaseName,
                                                              string.Join("\r\n", changes.ToArray())), "Proceed", ScrollableMessageBoxButtons.Yes, ScrollableMessageBoxButtons.No) != Common.PromptResult.Yes)
            {
                return;
            }


            if (!workspaces.Any())
            {
                MessageBox.Show("Nothing to populate.");
                return;
            }

            bool success = false;
            var  worker  = new BackgroundWorker();

            worker.WorkerReportsProgress      = true;
            worker.WorkerSupportsCancellation = true;
            worker.DoWork += delegate(object sender2, DoWorkEventArgs e2)
            {
                if (workspaces.Any() && !_generatorHelper.Generate(worker, workspaces))
                {
                    return;
                }

                success = true;
            };

            PaJaMa.WinControls.WinProgressBox.ShowProgress(worker, allowCancel: true);

            if (success)
            {
                MessageBox.Show("Done");
                refreshPage(true);
            }
        }
Пример #2
0
        private void btnGo_Click(object sender, EventArgs e)
        {
            var dataSpaces = (gridTables.DataSource as BindingList <TableWorkspace>)
                             .Where(t => t.SelectTableForData).ToList();

            var truncDelete = (gridTables.DataSource as BindingList <TableWorkspace>)
                              .Where(t => t.Truncate || t.Delete).ToList();

            var changes = dataSpaces.Select(t => (t.TargetObject == null ? t.SourceObject : t.TargetObject) + " - Data").Union(
                truncDelete.Select(t => (t.TargetObject == null ? t.SourceObject : t.TargetObject) + " - Truncate/Delete")
                ).ToList();

            if (ScrollableMessageBox.ShowDialog(string.Format("{0} - {1} data will be changed, continue?:\r\n \r\n{2}", _compareHelper.ToDataSource.DataSourceName,
                                                              _compareHelper.ToDataSource.CurrentDatabase.DatabaseName,
                                                              string.Join("\r\n", changes.ToArray())), "Proceed", ScrollableMessageBoxButtons.Yes, ScrollableMessageBoxButtons.No) != Common.PromptResult.Yes)
            {
                return;
            }


            if (!dataSpaces.Any() && !truncDelete.Any())
            {
                MessageBox.Show("Nothing to synchronize.");
                return;
            }

            List <WorkspaceBase> workspaces = new List <WorkspaceBase>();

            bool success = false;
            var  worker  = new BackgroundWorker();

            worker.WorkerReportsProgress      = true;
            worker.WorkerSupportsCancellation = true;
            worker.DoWork += delegate(object sender2, DoWorkEventArgs e2)
            {
                success = synchronize(worker, workspaces, dataSpaces, truncDelete);
            };

            PaJaMa.WinControls.WinProgressBox.ShowProgress(worker, allowCancel: true, progressBarStyle: ProgressBarStyle.Marquee);

            if (success)
            {
                MessageBox.Show("Done");
            }
        }
        private void ShowMessageBox(Exception exception)
        {
            var message = new StringBuilder();
            FormatMessage(message, exception);
            var messageBox = new ScrollableMessageBox
            {
                Buttons = MessageBoxButton.YesNo,
                Title = "Application Error",
                Caption =
            @"An application error occurred. If this error occurs again there may be a more serious malfunction in the application, and it should be closed.

            Do you want to exit the application?
            (Warning: If you click Yes the application will close, if you click No the application will continue)",
                Message = message.ToString()
            };

            messageBox.ShowDialog();
            if (messageBox.DialogResult.HasValue && messageBox.DialogResult.Value)
                _application.Shutdown();
        }
Пример #4
0
        private void ShowMessageBox(Exception exception)
        {
            var message = new StringBuilder();

            FormatMessage(message, exception);
            var messageBox = new ScrollableMessageBox
            {
                Buttons = MessageBoxButton.YesNo,
                Title   = "Application Error",
                Caption =
                    @"An application error occurred. If this error occurs again there may be a more serious malfunction in the application, and it should be closed.

Do you want to exit the application?
(Warning: If you click Yes the application will close, if you click No the application will continue)",
                Message = message.ToString()
            };

            messageBox.ShowDialog();
            if (messageBox.DialogResult.HasValue && messageBox.DialogResult.Value)
            {
                _application.Shutdown();
            }
        }
        private void ButRunSignatureClick(object sender, RoutedEventArgs e)
        {
            try
            {
                if (this.cbFocusLayer.Text == null || this.cbFocusLayer.Text == "")
                {
                    MessageBox.Show("You must select a layer");
                    return;
                }
                var layers = this.GetFeatureLayersFromToc(this.GetActiveViewFromArcMap(ArcMap.Application));
                var layerWithSelection = this.GetLayerByName(layers, this.cbFocusLayer.Text);
                if (layerWithSelection == null)
                {
                    MessageBox.Show("Layer does not exist");
                    return;
                }
                this.pbarChangeDet.Minimum = 0;
                this.pbarChangeDet.Maximum = layerWithSelection.FeatureClass.FeatureCount(null);
                this.pbarChangeDet.Value = 0;
                Application.DoEvents();

                var outPut = this.GetSelectedFeatureFromLayerByName(layers, this.cbFocusLayer.Text);
                var cols = new List<string>();
                var outputCols = new Dictionary<string, string>();
                if (outPut.Count == 0)
                {
                    MessageBox.Show("No features in focus layer are selected. Make a selection");
                    return;
                }

                var signature = this.FeaturesToPivotTable(outPut, "GeoHash", null);
                var ignoreCols = new List<string> { "OBJECTID", "SHAPE", "SHAPE_Length", "SHAPE_Area" };

                var analyzer = new PivotTableAnalyzer(this.UpdatePBar, this.SetPBarProperties);
                this.UpdateStatusLabel("Preparing and caching AOI layer");
                Application.DoEvents();

                var aoiPivotTable = this.FeatureLayerToPivotTable(layerWithSelection, "GeoHash", null);

                this.UpdateStatusLabel("Processing Signature");

                Application.DoEvents();

                if (signature.Count > 1)
                {
                    var res =
                        MessageBox.Show(
                            "You have multiple cells selected. Would you like to use an average of the selected features as the signature? If NO is selected, a new layer will be generated for every selected cell. If YES is selected an average will be generated as the signature, one layer will be generated, and typically the resulting similarity distribution may be narrower. Also, diff columns are based on the averages.",
                            "Multiple Selected Cells",
                            MessageBoxButtons.YesNo);
                    if (res == DialogResult.Yes)
                    {
                        var graph = analyzer.GetSimilarityGraph(signature);

                        foreach (var key in graph.Keys)
                        {
                            var formattedGraph = "Graph for rowkey: " + key + "\n";
                            foreach (var innerKey in graph[key].Keys)
                            {
                                var sim = graph[key][innerKey];
                                formattedGraph += "\t" + innerKey + " :: " + sim + "\n";
                            }
                            var box = new ScrollableMessageBox();
                            box.Show(formattedGraph);
                        }
                        var resGraph = MessageBox.Show("Continue?", "Graph", MessageBoxButtons.YesNoCancel);
                        if (resGraph == DialogResult.No || resGraph == DialogResult.Cancel)
                        {
                            this.UpdatePBar(0);
                            this.UpdateStatusLabel("Status");
                            return;
                        }
                        signature = analyzer.GenerateAverageVector(signature);
                    }
                }

                foreach (var entry in signature)
                {
                    var res = analyzer.GetSparseSimilarites(entry, aoiPivotTable, true, false);
                    foreach (var colName in res[0].Data.Keys)
                    {
                        if (!outputCols.ContainsKey(colName))
                        {
                            if (!ignoreCols.Contains(colName))
                            {
                                outputCols.Add(colName, colName);
                            }
                        }
                    }
                    var ws = Jarvis.OpenWorkspace(Settings.Default.geoDatabase);

                    var fcName = "mlt_" + entry.RowKey + "_" + DateTime.Now.Millisecond;
                    var featureClass = Jarvis.CreateStandaloneFeatureClass(ws, fcName, outputCols, false, 0);
                    this.UpdateStatusLabel("Loading Feature Class");
                    Application.DoEvents();

                    this.InsertPivoTableRowsToFeatureClass(featureClass, res, outputCols);
                    this.AddLayerToArcMap(fcName);

                    this.lblPbarStatus.Content = "Done";
                    this.pbarChangeDet.Value = 0;
                    Application.DoEvents();
                }
            }
            catch (Exception ex)
            {
                Jarvis.Logger.Error(ex);
                MessageBox.Show("An unhandled exception occurred");
            }
        }
Пример #6
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            string fromConnString     = cboSource.Text;
            string toConnString       = cboTarget.Text;
            Type   fromDataSourceType = cboSourceDriver.SelectedItem as Type;
            Type   toDataSourceType   = cboTargetDriver.SelectedItem as Type;

            Exception exception = null;

            DataSource fromDataSource = null;
            DataSource toDataSource   = null;

            var worker = new BackgroundWorker();

            worker.DoWork += delegate(object sender2, DoWorkEventArgs e2)
            {
                _differencedTabs = new List <TabPage>();
                try
                {
                    fromDataSource = Activator.CreateInstance(fromDataSourceType, new object[] { fromConnString }) as DataSource;
                    fromDataSource.NamedConstraints = chkNamedConstraints.Checked;
                }
                catch (Exception ex)
                {
                    exception = new Exception("Error opening source connection: " +
                                              (ex is TargetInvocationException && ex.InnerException != null ? ex.InnerException.Message : ex.Message));
                    return;
                }

                try
                {
                    toDataSource = Activator.CreateInstance(toDataSourceType, new object[] { toConnString }) as DataSource;
                    toDataSource.NamedConstraints = chkNamedConstraints.Checked;
                }
                catch (Exception ex)
                {
                    exception = new Exception("Error opening target connection: " +
                                              (ex is TargetInvocationException && ex.InnerException != null ? ex.InnerException.Message : ex.Message));
                    return;
                }

                try
                {
                    _compareHelper = new CompareHelper(fromDataSource, toDataSource, false, worker);
                }
                catch (Exception ex)
                {
                    exception = ex;
                }

                if (_compareHelper != null)
                {
                    _compareHelper.Prompt += delegate(object s3, Common.PromptEventArgs e3)
                    {
                        e3.Result = ScrollableMessageBox.ShowDialog(e3.Message, "Error!", ScrollableMessageBoxButtons.YesToAll, ScrollableMessageBoxButtons.Yes, ScrollableMessageBoxButtons.No);
                        //switch (dlgResult)
                        //{
                        //	case WinControls.YesNoMessageDialogResult.No:
                        //		e3.Result = Common.YesYesToAllNo.No;
                        //		break;
                        //	case WinControls.YesNoMessageDialogResult.Yes:
                        //		e3.Result = Common.YesYesToAllNo.Yes;
                        //		break;
                        //	case WinControls.YesNoMessageDialogResult.YesToAll:
                        //		e3.Result = Common.YesYesToAllNo.YesToAll;
                        //		break;
                        //}
                    };
                }
            };

            if (WinControls.WinProgressBox.ShowProgress(worker, allowCancel: true, progressBarStyle: ProgressBarStyle.Marquee) != DialogResult.OK)
            {
                return;
            }

            if (exception != null)
            {
                MessageBox.Show(exception.Message);
            }
            else
            {
                var sbUnsupported = new StringBuilder();
                if (fromDataSource.UnsupportedTypes.Count > 0)
                {
                    sbUnsupported.AppendLine("Source does not support types:");
                    fromDataSource.UnsupportedTypes.ForEach(u => sbUnsupported.AppendLine(u));
                    sbUnsupported.AppendLine();
                }

                if (toDataSource.UnsupportedTypes.Count > 0)
                {
                    sbUnsupported.AppendLine("Target does not support types:");
                    toDataSource.UnsupportedTypes.ForEach(u => sbUnsupported.AppendLine(u));
                    sbUnsupported.AppendLine();
                }

                if (sbUnsupported.Length > 0)
                {
                    MessageBox.Show(sbUnsupported.ToString());
                }

                refreshPage(false);

                var settings = PaJaMa.Common.SettingsHelper.GetUserSettings <DatabaseStudioSettings>();
                if (string.IsNullOrEmpty(settings.ConnectionStrings))
                {
                    settings.ConnectionStrings = string.Empty;
                }
                List <string> connStrings = settings.ConnectionStrings.Split('|').ToList();
                if (!connStrings.Any(s => s == cboSource.Text))
                {
                    connStrings.Add(cboSource.Text);
                }
                if (!connStrings.Any(s => s == cboTarget.Text))
                {
                    connStrings.Add(cboTarget.Text);
                }

                settings.ConnectionStrings           = string.Join("|", connStrings.ToArray());
                settings.LastCompareSourceConnString = cboSource.Text;
                settings.LastCompareTargetConnString = cboTarget.Text;
                settings.LastCompareSourceDriver     = (cboSourceDriver.SelectedItem as Type).AssemblyQualifiedName;
                settings.LastCompareTargetDriver     = (cboTargetDriver.SelectedItem as Type).AssemblyQualifiedName;
                PaJaMa.Common.SettingsHelper.SaveUserSettings <DatabaseStudioSettings>(settings);

                _lockDbChange = true;
                cboSourceDatabase.Items.Clear();
                cboSourceDatabase.Items.AddRange(fromDataSource.Databases.ToArray());
                cboSourceDatabase.SelectedItem = fromDataSource.CurrentDatabase;

                cboTargetDatabase.Items.Clear();
                cboTargetDatabase.Items.AddRange(toDataSource.Databases.ToArray());
                cboTargetDatabase.SelectedItem = toDataSource.CurrentDatabase;
                _lockDbChange = false;

                btnConnect.Visible        = btnRemoveSourceConnString.Visible = btnRemoveTargetConnString.Visible = false;
                btnDisconnect.Visible     = true;
                cboSource.SelectionLength = 0;
                cboTarget.SelectionLength = 0;
                cboTarget.Enabled         = cboSource.Enabled = chkNamedConstraints.Enabled = false;
                cboSourceDatabase.Visible = cboTargetDatabase.Visible = true;
                btnSourceQuery.Enabled    = btnTargetQuery.Enabled = true;
                btnGo.Enabled             = btnRefresh.Enabled = btnViewMissingDependencies.Enabled = btnSelectAll.Enabled = true;
            }
        }
Пример #7
0
        private void btnGo_Click(object sender, EventArgs e)
        {
            var sb = getMissingDependencyString();

            if (sb.Length > 0)
            {
                ScrollableMessageBox.Show(sb.ToString(), "Dependencies");
                return;
            }


            var dropSpaces = (gridDropObjects.DataSource as BindingList <DropWorkspace>)
                             .Where(t => t.Select).ToList();

            var structureSpaces = (gridTables.DataSource as BindingList <TableWorkspace>)
                                  .Where(t => t.Select).ToList();

            var dataSpaces = (gridTables.DataSource as BindingList <TableWorkspace>)
                             .Where(t => t.SelectTableForData).ToList();

            var truncDelete = (gridTables.DataSource as BindingList <TableWorkspace>)
                              .Where(t => t.Truncate || t.Delete).ToList();

            var objSpaces = gridObjects.DataSource == null ? new List <ObjectWorkspace>() : (gridObjects.DataSource as BindingList <ObjectWorkspace>)
                            .Where(p => p.Select).ToList();

            var changes = dropSpaces.Select(t => t.TargetObject.Description + " - Drop").Union(
                structureSpaces.Where(t => t.TargetObject != null).Select(t => t.TargetObject + " - Alter")
                ).Union(
                structureSpaces.Where(t => t.TargetObject == null).Select(t => t.SourceObject + " - Create")
                ).Union(
                dataSpaces.Select(t => (t.TargetObject == null ? t.SourceObject : t.TargetObject) + " - Data")
                ).Union(
                truncDelete.Select(t => (t.TargetObject == null ? t.SourceObject : t.TargetObject) + " - Truncate/Delete")
                ).Union(
                objSpaces.Select(t => t.SourceObject + " - " + t.SourceObject.ObjectType)
                ).ToList();

            if (ScrollableMessageBox.ShowDialog(string.Format("{0} - {1} will be changed, continue?:\r\n \r\n{2}", _compareHelper.ToDataSource.DataSourceName,
                                                              _compareHelper.ToDataSource.CurrentDatabase.DatabaseName,
                                                              string.Join("\r\n", changes.ToArray())), "Proceed", ScrollableMessageBoxButtons.Yes, ScrollableMessageBoxButtons.No) != Common.PromptResult.Yes)
            {
                return;
            }


            if (!dropSpaces.Any() && !structureSpaces.Any() && !dataSpaces.Any() && !objSpaces.Any() && !truncDelete.Any())
            {
                MessageBox.Show("Nothing to synchronize.");
                return;
            }

            List <WorkspaceBase> workspaces = new List <WorkspaceBase>();

            if (structureSpaces.Any())
            {
                workspaces.AddRange(structureSpaces);
            }

            if (objSpaces.Any())
            {
                workspaces.AddRange(objSpaces);
            }

            if (dropSpaces.Any())
            {
                workspaces.AddRange(dropSpaces);
            }

            bool success = false;
            var  worker  = new BackgroundWorker();

            worker.WorkerReportsProgress      = true;
            worker.WorkerSupportsCancellation = true;
            worker.DoWork += delegate(object sender2, DoWorkEventArgs e2)
            {
                success = synchronize(worker, workspaces, dataSpaces, truncDelete);
            };

            PaJaMa.WinControls.WinProgressBox.ShowProgress(worker, allowCancel: true, progressBarStyle: ProgressBarStyle.Marquee);

            if (success)
            {
                MessageBox.Show("Done");
                refreshPage(true);
            }
        }
Пример #8
0
        //Called when user makes a selection in the menu.
        //This is your main exit point to the rest of your Add-in
        public void EA_MenuClick(EA.Repository Repository, string Location, string MenuName, string ItemName)
        {
            m_eaRepo = Repository;
            switch (ItemName)
            {
            case "&Menu1":
            {
                String     writerString = "";
                EA.Package aPackage     = Repository.GetTreeSelectedPackage();
                foreach (EA.Package thePackage in aPackage.Packages)
                {
                    writerString = writerString + thePackage.Name.ToString() + "," + thePackage.ObjectType.ToString() + "\n";
                }
                MessageBox.Show(writerString);
            }
            break;

            case "&Menu2":
                // Read sample data from CSV file
                using (CsvReader csv = new CsvReader(new StreamReader("C:\\Users\\trehamaljy\\Downloads\\req.csv"), true, ';', '"'))
                {
                    EA.Package aPackage = Repository.GetTreeSelectedPackage();

                    Dictionary <String, EA.Element> polToGuid = new Dictionary <String, EA.Element>();

                    this.collectPolarionToGuidMap(aPackage.Packages, polToGuid, "pkg");
                    this.collectPolarionToGuidMap(aPackage.Elements, polToGuid, "ele");


                    EA.Element level1 = aPackage.Element;
                    EA.Element level2 = aPackage.Element;
                    EA.Element level3 = aPackage.Element;

                    //String writerString = "";
                    int fieldCount = csv.FieldCount;

                    string[] headers = csv.GetFieldHeaders();
                    //writerString = writerString + String.Join(" ### ", headers) + "\n";
                    while (csv.ReadNextRecord())
                    {
                        if (csv["ID1"] != "")
                        {
                            level1 = this.CreateChildElement(csv, aPackage, csv["ID1"], polToGuid);
                        }
                        else if (csv["ID2"] != "")
                        {
                            level2 = this.CreateChildElement(csv, level1, csv["ID2"], polToGuid);
                        }
                        else if (csv["ID3"] != "")
                        {
                            level3 = this.CreateChildElement(csv, level2, csv["ID3"], polToGuid);
                        }
                        else if (csv["ID4"] != "")
                        {
                            this.CreateChildElement(csv, level3, csv["ID4"], polToGuid);
                        }
                    }

                    // Clean up requirements that did not have any references anymore
                    foreach (KeyValuePair <string, EA.Element> kvp in polToGuid)
                    {
                        EA.Element elem = kvp.Value;

                        if (elem.ParentID == 0)
                        {
                            EA.Package parent = Repository.GetPackageByID(elem.PackageID);
                            MessageBox.Show("Deleting " + elem.Name + " from package " + parent.Name);
                            for (short i = 0; i < parent.Elements.Count; i++)
                            {
                                EA.Element elem_i = (EA.Element)parent.Elements.GetAt(i);
                                if (elem_i.ElementID == elem.ElementID)
                                {
                                    MessageBox.Show("Match found");
                                    parent.Elements.DeleteAt(i, true);
                                    break;
                                }
                            }
                            parent.Update();
                            parent.Elements.Refresh();
                        }
                        else
                        {
                            EA.Element parent = Repository.GetElementByID(elem.ParentID);
                            MessageBox.Show("Deleting " + elem.Name + " from element " + parent.Name);
                            for (short i = 0; i < parent.Elements.Count; i++)
                            {
                                EA.Element elem_i = (EA.Element)parent.Elements.GetAt(i);
                                if (elem_i.ElementID == elem.ElementID)
                                {
                                    MessageBox.Show("Match found");
                                    parent.Elements.DeleteAt(i, true);
                                    break;
                                }
                            }
                            parent.Update();
                            parent.Elements.Refresh();
                        }
                    }

                    aPackage.Elements.Refresh();
                    //MessageBox.Show(writerString);
                }
                break;

            case "&Menu3":
            {
                ScrollableMessageBox box      = new ScrollableMessageBox();
                EA.Package           aPackage = Repository.GetTreeSelectedPackage();

                Dictionary <String, EA.Element> polToGuid = new Dictionary <String, EA.Element>();

                String msg = "";
                msg = msg + this.collectPolarionToGuidMap(aPackage.Packages, polToGuid, "pkg");
                msg = msg + this.collectPolarionToGuidMap(aPackage.Elements, polToGuid, "ele");
                box.Show(msg, "Map");

                msg = "";
                foreach (KeyValuePair <string, EA.Element> kvp in polToGuid)
                {
                    EA.Element elem = kvp.Value;
                    msg = msg + kvp.Key + " -> " + elem.Name + "\r\n";
                }
                box.Show(msg, "Map");
            }
            break;

            case "About...":
                Form1 anAbout = new Form1();
                anAbout.ShowDialog();
                break;
            }
        }
Пример #9
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            string connString = cboConnectionString.Text;

            Exception exception = null;

            DataTable schema   = null;
            string    database = string.Empty;

            var worker = new BackgroundWorker();

            worker.DoWork += delegate(object sender2, DoWorkEventArgs e2)
            {
                try
                {
                    using (var conn = new SqlConnection(connString))
                    {
                        conn.Open();
                        schema   = conn.GetSchema("Databases");
                        database = conn.Database;
                        conn.Close();
                        SqlConnection.ClearPool(conn);
                    }
                }
                catch (Exception ex)
                {
                    exception = new Exception("Error opening source connection: " + ex.Message);
                    return;
                }

                // TODO:
                _generatorHelper         = new GeneratorHelper(typeof(SqlConnection), connString, worker);
                _generatorHelper.Prompt += delegate(object s3, PromptEventArgs e3)
                {
                    e3.Result = ScrollableMessageBox.ShowDialog(e3.Message, "Error", ScrollableMessageBoxButtons.Yes, ScrollableMessageBoxButtons.No);
                };
            };

            WinControls.WinProgressBox.ShowProgress(worker, progressBarStyle: ProgressBarStyle.Marquee);
            if (exception != null)
            {
                MessageBox.Show(exception.Message);
            }
            else
            {
                refreshPage(false);

                var           settings    = PaJaMa.Common.SettingsHelper.GetUserSettings <DatabaseStudioSettings>();
                List <string> connStrings = settings.ConnectionStrings.Split('|').ToList();
                if (!connStrings.Any(s => s == cboConnectionString.Text))
                {
                    connStrings.Add(cboConnectionString.Text);
                }

                settings.ConnectionStrings         = string.Join("|", connStrings.ToArray());
                settings.LastQueryConnectionString = cboConnectionString.Text;
                PaJaMa.Common.SettingsHelper.SaveUserSettings <DatabaseStudioSettings>(settings);

                _lockDbChange = true;
                cboDatabase.Items.Clear();
                foreach (var dr in schema.Rows.OfType <DataRow>())
                {
                    cboDatabase.Items.Add(dr["database_name"].ToString());
                }
                cboDatabase.Text = database;

                _lockDbChange = false;

                btnConnect.Visible    = btnRemoveConnString.Visible = false;
                btnDisconnect.Visible = true;
                cboConnectionString.SelectionLength = 0;
                cboConnectionString.Enabled         = false;
                cboDatabase.Visible = true;
                btnGo.Enabled       = btnRefresh.Enabled = btnViewMissingDependencies.Enabled = btnAdd10.Enabled = btnAddNRows.Enabled = btnQuery.Enabled = true;
            }
        }
Пример #10
0
        void ScheduleDesigner_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (schedule.HasChanges())
            {
                String        pending_changes = "";
                bool          real_changes    = false;
                DataSet       ds     = schedule.GetChanges();
                StringBuilder detail = new StringBuilder();
                foreach (DataTable table in ds.Tables)
                {
                    foreach (Attribute attr in table.GetType().GetCustomAttributes(true))
                    {
                        SchedulePersistantTable persist = attr as SchedulePersistantTable;
                        if (null != persist)
                        {
                            if (table.Rows.Count > 0)
                            {
                                pending_changes += table.TableName + "(" + table.Rows.Count + ")\n";
                                detail.Append("Table ");
                                detail.Append(table.TableName);
                                detail.Append(" has ");
                                detail.Append(table.Rows.Count.ToString());
                                detail.Append(" Changes...\n");

                                foreach (DataRow row in table.Rows)
                                {
                                    bool added_row_header = false;
                                    bool first            = true;
                                    if (row.RowState == DataRowState.Deleted)
                                    {
                                        detail.Append("Row " + table.Rows.IndexOf(row) + " : ");
                                        detail.Append("(deleted)\n");
                                        real_changes = true;
                                        continue;
                                    }
                                    if (row.RowState == DataRowState.Added)
                                    {
                                        detail.Append("Row " + table.Rows.IndexOf(row) + " : ");
                                        detail.Append("(new)");
                                        real_changes = true;
                                    }

                                    foreach (DataColumn col in table.Columns)
                                    {
                                        if (row.RowState == DataRowState.Added)
                                        {
                                            if (!added_row_header)
                                            {
                                                detail.Append("Row " + table.Rows.IndexOf(row) + " : ");
                                                added_row_header = true;
                                            }
                                            if (!first)
                                            {
                                                detail.Append(", ");
                                            }
                                            first = false;
                                            detail.Append(col.ColumnName + "=" + row[col].ToString());
                                            continue;
                                        }
                                        object a;
                                        object b;
                                        if (!DsnSQLUtil.Compare(col.DataType, a = row[col, DataRowVersion.Original], b = row[col, DataRowVersion.Current]))
                                        {
                                            if (!added_row_header)
                                            {
                                                detail.Append("Row " + table.Rows.IndexOf(row) + " : ");
                                                added_row_header = true;
                                            }
                                            if (!first)
                                            {
                                                detail.Append(" and ");
                                            }
                                            first = false;
                                            detail.Append(col.ColumnName + "changed from [" + a.ToString() + "] to [" + b.ToString() + "]");
                                            real_changes = true;
                                        }
                                    }
                                    if (added_row_header)
                                    {
                                        detail.Append("\n");
                                    }
                                }
                                detail.Append("\n===============================================\n");
                            }
                        }
                    }
                }
                if (real_changes)
                {
                    DialogResult r;
                    if ((r = MessageBox.Show("There are unsaved changes to the schedule.\nDo you want to save now?\nCancel will show details." + pending_changes, "Unsaved Changes", MessageBoxButtons.YesNoCancel)) == System.Windows.Forms.DialogResult.Yes)
                    {
                        schedule.Commit();
                    }
                    if (r == System.Windows.Forms.DialogResult.Cancel)
                    {
                        detail.Append("\nYes will save these changes, no will not commit.");
                        if (ScrollableMessageBox.Show(detail.ToString(), "Unsaved Changes", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                        {
                            schedule.Commit();
                        }
                    }
                }
            }
        }