Inheritance: System.Windows.Forms.Form
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                setContext(context);
                if (_restriction != null && _restriction.IsEnum)
                {
                    MultipleSelectForm frm = new MultipleSelectForm("Please restriction values", _restriction.EnumRE.Values, "Val");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (_restriction.EnumValues.Contains(((MetaEV)frm.checkedListBox.Items[i]).Id)) frm.checkedListBox.SetItemChecked(i, true); 
                    }

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        _restriction.EnumValues = new List<string>();
                        foreach (object item in frm.CheckedItems)
                        {
                            _restriction.EnumValues.Add(((MetaEV) item).Id);
                        }
                        value = ""; //indicates a modification
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return value;
        }
Exemple #2
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            var svc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

            if (svc != null)
            {
                MetaColumn    column = context.Instance as MetaColumn;
                List <string> vals   = value as List <string>;
                if (column != null && vals != null)
                {
                    List <MetaColumn> cols = new List <MetaColumn>();
                    foreach (var table in column.Source.MetaData.Tables)
                    {
                        foreach (var col in table.Columns.Where(i => i != column))
                        {
                            if (!context.PropertyDescriptor.IsReadOnly || vals.Contains(col.GUID))
                            {
                                cols.Add(col);
                            }
                        }
                    }

                    var frm = new MultipleSelectForm("Select the child columns", cols, "FullDisplayName");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (vals.Contains(((MetaColumn)frm.checkedListBox.Items[i]).GUID))
                        {
                            frm.checkedListBox.SetItemChecked(i, true);
                        }
                    }

                    if (context.PropertyDescriptor.IsReadOnly)
                    {
                        frm.Text = "Child Columns defined for Drill";
                        frm.okToolStripButton.Visible        = false;
                        frm.cancelToolStripButton.Text       = "Close";
                        frm.checkedListBox.Enabled           = false;
                        frm.selectAllToolStripButton.Visible = false;
                    }

                    if (svc.ShowDialog(frm) == DialogResult.OK)
                    {
                        vals.Clear();
                        foreach (object item in frm.CheckedItems)
                        {
                            vals.Add(((MetaColumn)item).GUID);
                        }
                        column.UpdateEditor();

                        if (HelperEditor.HandlerInterface != null)
                        {
                            HelperEditor.HandlerInterface.SetModified();
                        }
                    }
                }
            }
            return(value);
        }
Exemple #3
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            var svc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
            if (svc != null)
            {
                MetaColumn column = context.Instance as MetaColumn;
                List<string> vals = value as List<string>;
                if (column != null && vals != null)
                {
                    List<MetaColumn> cols = new List<MetaColumn>();
                    foreach (var table in column.Source.MetaData.Tables)
                    {
                        foreach (var col in table.Columns.Where(i => i != column))
                        {
                            if (!context.PropertyDescriptor.IsReadOnly || vals.Contains(col.GUID)) cols.Add(col);
                        }
                    }

                    var frm = new MultipleSelectForm("Select the child columns", cols, "FullDisplayName");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (vals.Contains(((MetaColumn)frm.checkedListBox.Items[i]).GUID)) frm.checkedListBox.SetItemChecked(i, true);
                    }

                    if (context.PropertyDescriptor.IsReadOnly)
                    {
                        frm.Text = "Child Columns defined for Drill";
                        frm.okToolStripButton.Visible = false;
                        frm.cancelToolStripButton.Text = "Close";
                        frm.checkedListBox.Enabled = false;
                        frm.selectAllToolStripButton.Visible = false;
                    }

                    if (svc.ShowDialog(frm) == DialogResult.OK)
                    {
                        vals.Clear();
                        foreach (object item in frm.CheckedItems)
                        {
                            vals.Add(((MetaColumn)item).GUID);
                        }
                        column.UpdateEditor();

                        if (HelperEditor.HandlerInterface != null) HelperEditor.HandlerInterface.SetModified();
                    }
                }
            }
            return value;
        }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                if (context.Instance != null)
                {
                    var config = (SealServerConfiguration)context.Instance;

                    var displaySource = new List <StringDisplay>();
                    foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures).OrderBy(i => i.EnglishName))
                    {
                        displaySource.Add(new StringDisplay()
                        {
                            Id = culture.EnglishName, Display = string.Format("{0} ({1})", culture.EnglishName, culture.NativeName)
                        });
                    }


                    MultipleSelectForm frm = new MultipleSelectForm("Please select the values", displaySource, "Display");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (config.WebCultures.Exists(j => j == ((StringDisplay)frm.checkedListBox.Items[i]).Id))
                        {
                            frm.checkedListBox.SetItemChecked(i, true);
                        }
                    }

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        var result = new List <string>();
                        foreach (object item in frm.CheckedItems)
                        {
                            result.Add(((StringDisplay)item).Id);
                        }
                        value = result;
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return(value);
        }
Exemple #5
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                setContext(context);
                if (_view != null)
                {
                    foreach (var model in _view.Report.Models)
                    {
                        model.InitCommonRestrictions();
                    }
                    var restrictions       = _view.Report.AllRestrictions.ToList();
                    MultipleSelectForm frm = new MultipleSelectForm("Please select the Restrictions", restrictions, "DisplayNameWithModel");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (_view.RestrictionsGUID.Contains(((ReportRestriction)frm.checkedListBox.Items[i]).GUID))
                        {
                            frm.checkedListBox.SetItemChecked(i, true);
                        }
                    }

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        _view.RestrictionsGUID = new List <string>();
                        foreach (object item in frm.CheckedItems)
                        {
                            _view.RestrictionsGUID.Add(((ReportRestriction)item).GUID);
                        }
                        value = ""; //indicates a modification
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return(value);
        }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                setContext(context);
                if (_model != null && _model.Source != null)
                {
                    var joins = _model.Source.MetaData.Joins.OrderBy(i => i.Name).ToList();
                    MultipleSelectForm frm = new MultipleSelectForm("Please select the Joins", joins, "Name");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (_model.JoinsToUse.Contains(((MetaJoin)frm.checkedListBox.Items[i]).GUID))
                        {
                            frm.checkedListBox.SetItemChecked(i, true);
                        }
                    }

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        _model.JoinsToUse = new List <string>();
                        foreach (object item in frm.CheckedItems)
                        {
                            _model.JoinsToUse.Add(((MetaJoin)item).GUID);
                        }
                        value = ""; //indicates a modification
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return(value);
        }
Exemple #7
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                setContext(context);
                if (_restriction != null && _restriction.IsEnum)
                {
                    MultipleSelectForm frm = new MultipleSelectForm("Please select the restriction values", _restriction.MetaEnumValuesRE, "DisplayRestriction");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (_restriction.EnumValues.Contains(((MetaEV)frm.checkedListBox.Items[i]).Id))
                        {
                            frm.checkedListBox.SetItemChecked(i, true);
                        }
                    }

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        _restriction.EnumValues = new List <string>();
                        foreach (object item in frm.CheckedItems)
                        {
                            _restriction.EnumValues.Add(((MetaEV)item).Id);
                        }
                        value = ""; //indicates a modification
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return(value);
        }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                setContext(context);
                if (_emailDevice != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperTestEmail")
                    {
                        _emailDevice.SendTestEmail();
                    }
                }
                else if (_fileServerDevice != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperTestConnection")
                    {
                        _fileServerDevice.TestConnection();
                    }
                }
                else if (_metaConnection != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperCheckConnection")
                    {
                        _metaConnection.CheckConnection();
                    }
                    if (context.PropertyDescriptor.Name == "HelperCreateFromExcelAccess")
                    {
                        string accessDriver = "Microsoft Access Driver (*.mdb)";
                        string excelDriver  = "Microsoft Excel Driver (*.xls)";
                        try
                        {
                            List <string> drivers       = Helper.GetSystemDriverList();
                            string        accessDriver2 = "Microsoft Access Driver (*.mdb, *.accdb)";
                            if (drivers.Contains(accessDriver2))
                            {
                                accessDriver = accessDriver2;
                            }
                            string excelDriver2 = "Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)";
                            if (drivers.Contains(excelDriver2))
                            {
                                excelDriver = excelDriver2;
                            }
                        }
                        catch { }

                        OpenFileDialog dlg = new OpenFileDialog();
                        dlg.Title            = "Open an Excel or an MS Access File";
                        dlg.CheckFileExists  = true;
                        dlg.CheckPathExists  = true;
                        dlg.InitialDirectory = _metaConnection.Source.Repository.RepositoryPath;
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            string ext    = Path.GetExtension(dlg.FileName);
                            string driver = "";
                            if (ext == ".xls" || ext == ".xlsx" || ext == ".xlsm" || ext == ".xlsb")
                            {
                                _metaConnection.DatabaseType = DatabaseType.MSExcel;
                                driver = excelDriver;
                            }
                            else if (ext == ".mdb" || ext == ".accdb")
                            {
                                _metaConnection.DatabaseType = DatabaseType.MSAccess;
                                driver = accessDriver;
                            }
                            else
                            {
                                throw new Exception("Please select an Excel or MS Access file");
                            }

                            string path = dlg.FileName.Replace(_metaConnection.Source.Repository.RepositoryPath, Repository.SealRepositoryKeyword);
                            _metaConnection.ConnectionString = string.Format(@"Provider=MSDASQL.1;Extended Properties=""DBQ={0};Driver={{{1}}};""", path, driver);
                            setModified();
                            MessageBox.Show("The connection has been created successfully", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                }
                else if (_metaTable != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperRefreshColumns")
                    {
                        _metaTable.Refresh();
                        setModified();
                        initEntity(_metaTable);
                    }
                    if (context.PropertyDescriptor.Name == "HelperCheckTable")
                    {
                        _metaTable.CheckTable(null);
                    }
                }
                else if (_metaEnum != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperRefreshEnum")
                    {
                        _metaEnum.RefreshEnum();
                        setModified();
                    }
                }
                else if (_metaColumn != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperCheckColumn")
                    {
                        _metaColumn.MetaTable.CheckTable(_metaColumn);
                    }
                    else if (context.PropertyDescriptor.Name == "HelperCreateEnum")
                    {
                        MetaEnum result = _metaColumn.Source.CreateEnumFromColumn(_metaColumn);
                        _metaColumn.EnumGUID = result.GUID;
                        initEntity(result);
                        setModified();
                    }
                    else if (context.PropertyDescriptor.Name == "HelperShowValues")
                    {
                        try
                        {
                            Cursor.Current = Cursors.WaitCursor;
                            string        result = _metaColumn.MetaTable.ShowValues(_metaColumn);
                            ExecutionForm frm    = new ExecutionForm(null);
                            frm.Text = "Show values";
                            frm.cancelToolStripButton.Visible = false;
                            frm.pauseToolStripButton.Visible  = false;
                            frm.logTextBox.Text            = result;
                            frm.logTextBox.SelectionStart  = 0;
                            frm.logTextBox.SelectionLength = 0;
                            frm.ShowDialog();
                        }
                        finally
                        {
                            Cursor.Current = Cursors.Default;
                        }
                    }
                    else if (context.PropertyDescriptor.Name == "HelperCreateDrillDates")
                    {
                        var year = _metaColumn.MetaTable.Source.AddColumn(_metaColumn.MetaTable);
                        year.DisplayName            = _metaColumn.DisplayName + " Year";
                        year.Type                   = ColumnType.DateTime;
                        year.DateTimeStandardFormat = DateTimeStandardFormat.Custom;
                        year.Format                 = "yyyy";
                        var month = _metaColumn.MetaTable.Source.AddColumn(_metaColumn.MetaTable);
                        month.DisplayName            = _metaColumn.DisplayName + " Month";
                        month.Type                   = ColumnType.DateTime;
                        month.DateTimeStandardFormat = DateTimeStandardFormat.Custom;
                        month.Format                 = "MM/yyyy";
                        if (_metaColumn.MetaTable.Source.Connection.DatabaseType == DatabaseType.Oracle)
                        {
                            year.Name  = string.Format("trunc({0},'year')", _metaColumn.Name);
                            month.Name = string.Format("trunc({0},'month')", _metaColumn.Name);
                        }
                        else if (_metaColumn.MetaTable.Source.Connection.DatabaseType == DatabaseType.MSSQLServer)
                        {
                            year.Name  = string.Format("DATETIME2FROMPARTS(year({0}),1,1,0,0,0,0,0)", _metaColumn.Name);
                            month.Name = string.Format("DATETIME2FROMPARTS(year({0}),month({0}),1,0,0,0,0,0)", _metaColumn.Name);
                        }
                        else if (_metaColumn.MetaTable.Source.Connection.DatabaseType == DatabaseType.MSAccess)
                        {
                            year.Name  = string.Format("DateSerial(DatePart('yyyy',{0}), 1, 1)", _metaColumn.Name);
                            month.Name = string.Format("DateSerial(DatePart('yyyy',{0}), DatePart('m',{0}), 1)", _metaColumn.Name);
                        }
                        year.DrillChildren.Add(month.GUID);
                        month.DrillChildren.Add(_metaColumn.GUID);
                        initEntity(_metaColumn.MetaTable);
                        setModified();
                        MessageBox.Show("A 'Year' column and a 'Month' column have been added to the table with a drill hierarchy.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else if (context.PropertyDescriptor.Name == "HelperCreateSubReport")
                    {
                        Report report = Report.Create(Repository.Create());
                        //Only on detail view
                        report.Views.Clear();
                        report.AddView(ReportViewTemplate.ModelDetailName);
                        report.Views[0].InitParameters(true);
                        report.Views[0].Parameters.First(i => i.Name == "restriction_button").BoolValue = false;

                        report.Sources.RemoveAll(i => i.MetaSourceGUID != _metaColumn.Source.GUID);

                        if (report.Sources.Count == 0)
                        {
                            throw new Exception("Unable to create the detail report. Please save the Data Source first...");
                        }

                        //And one model
                        ReportModel model = report.Models[0];
                        model.SourceGUID = _metaColumn.Source.GUID;
                        //Add all the element of the table
                        foreach (var el in _metaColumn.MetaTable.Columns.OrderBy(i => i.DisplayOrder))
                        {
                            ReportElement element = ReportElement.Create();
                            element.MetaColumnGUID = el.GUID;
                            element.Name           = el.Name;
                            element.PivotPosition  = (el == _metaColumn ? PivotPosition.Page : PivotPosition.Row);
                            model.Elements.Add(element);
                        }

                        string entityName = _metaColumn.MetaTable.Name;
                        if (entityName.EndsWith("s"))
                        {
                            entityName = entityName.Substring(0, entityName.Length - 1);
                        }
                        string path = Path.Combine(_metaColumn.MetaTable.Source.Repository.SubReportsFolder, Helper.CleanFileName(entityName + " Detail.") + Repository.SealReportFileExtension);
                        path = FileHelper.GetUniqueFileName(path);

                        var sr = new SubReport()
                        {
                            Path = path.Replace(_metaColumn.Source.Repository.RepositoryPath, Repository.SealRepositoryKeyword), Name = entityName + " Detail"
                        };
                        //And the restriction, try to find out the table primary keys
                        try
                        {
                            DataTable schemaTables = ((OleDbConnection)_metaColumn.Source.GetOpenConnection()).GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null);
                            Helper.DisplayDataTable(schemaTables);
                            foreach (DataRow row in schemaTables.Rows)
                            {
                                string schema = "";
                                if (schemaTables.Columns.Contains("TABLE_SCHEMA"))
                                {
                                    schema = row["TABLE_SCHEMA"].ToString();
                                }
                                else if (schemaTables.Columns.Contains("TABLE_SCHEM"))
                                {
                                    schema = row["TABLE_SCHEM"].ToString();
                                }
                                string fullName = (!string.IsNullOrEmpty(schema) ? _metaColumn.Source.GetTableName(schema) + "." : "") + _metaColumn.Source.GetTableName(row["TABLE_NAME"].ToString());
                                if (row["TABLE_NAME"].ToString() == _metaColumn.MetaTable.Name || fullName == _metaColumn.MetaTable.Name)
                                {
                                    var col = _metaColumn.MetaTable.Columns.FirstOrDefault(i => i.Name.ToLower() == row["COLUMN_NAME"].ToString().ToLower() || i.Name.ToLower().EndsWith("." + row["COLUMN_NAME"].ToString().ToLower()));
                                    if (col != null)
                                    {
                                        sr.Restrictions.Add(col.GUID);
                                    }
                                    else
                                    {
                                        //not all pk available....
                                        sr.Restrictions.Clear();
                                        break;
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }

                        string message = "";
                        if (sr.Restrictions.Count == 0)
                        {
                            //no PK found, we add the value itself...
                            sr.Restrictions.Add(_metaColumn.GUID);
                            message = "The Sub-Report restriction is based on the Column.";
                        }
                        else
                        {
                            message = "The Sub-Report restrictions are based on the table Primary Keys.";
                        }

                        foreach (var guid in sr.Restrictions)
                        {
                            ReportRestriction restriction = ReportRestriction.CreateReportRestriction();
                            restriction.MetaColumnGUID = guid;
                            restriction.PivotPosition  = PivotPosition.Row;
                            restriction.Prompt         = PromptType.Prompt;
                            restriction.Operator       = Operator.Equal;
                            model.Restrictions.Add(restriction);
                            if (!string.IsNullOrEmpty(model.Restriction))
                            {
                                model.Restriction += "\r\nAND ";
                            }
                            model.Restriction += ReportRestriction.kStartRestrictionChar + restriction.GUID + ReportRestriction.kStopRestrictionChar;
                        }
                        model.InitReferences();

                        report.SaveToFile(path);
                        _metaColumn.SubReports.Add(sr);

                        if (MessageBox.Show(string.Format("A Sub-Report named '{0}' has been created in the dedicated Repository folder.\r\n{1}\r\nDo you want to edit it using a new Report Designer ?", Path.GetFileName(path), message), "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                        {
                            Process.Start(path);
                        }
                        ;

                        _metaColumn.UpdateEditor();
                        setModified();
                    }
                    else if (context.PropertyDescriptor.Name == "HelperAddSubReport")
                    {
                        OpenFileDialog dlg = new OpenFileDialog();
                        dlg.Filter           = string.Format(Repository.SealRootProductName + " Reports files (*.{0})|*.{0}|All files (*.*)|*.*", Repository.SealReportFileExtension);
                        dlg.Title            = "Select a Sub-Report having prompted restrictions";
                        dlg.CheckFileExists  = true;
                        dlg.CheckPathExists  = true;
                        dlg.InitialDirectory = _metaColumn.Source.Repository.SubReportsFolder;
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            Report report = Report.LoadFromFile(dlg.FileName, _metaColumn.Source.Repository, false);
                            var    sr     = new SubReport()
                            {
                                Path = report.FilePath.Replace(_metaColumn.Source.Repository.RepositoryPath, Repository.SealRepositoryKeyword), Name = Path.GetFileNameWithoutExtension(dlg.FileName)
                            };

                            bool tableOk   = false;
                            var  restrList = new List <ReportRestriction>();
                            foreach (var model in report.Models.Where(i => i.Source.MetaSourceGUID == _metaColumn.Source.GUID))
                            {
                                foreach (var restriction in model.Restrictions)
                                {
                                    foreach (var table in _metaColumn.MetaTable.Source.MetaData.Tables)
                                    {
                                        var col = table.Columns.FirstOrDefault(i => i.GUID == restriction.MetaColumnGUID);
                                        if (col != null)
                                        {
                                            tableOk = true;
                                            if (!restrList.Exists(i => i.MetaColumnGUID == restriction.MetaColumnGUID))
                                            {
                                                restrList.Add(restriction);
                                            }
                                        }
                                    }
                                }
                            }

                            if (!tableOk)
                            {
                                throw new Exception("Unable to add this Sub-Report:\r\nThe report does not contain any restriction...");
                            }

                            var frm = new MultipleSelectForm("Select the restrictions to include", restrList, "DisplayNameEl");
                            //select all by default
                            for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                            {
                                frm.checkedListBox.SetItemChecked(i, true);
                            }
                            if (frm.ShowDialog() == DialogResult.OK)
                            {
                                foreach (object item in frm.CheckedItems)
                                {
                                    sr.Restrictions.Add(((ReportRestriction)item).MetaColumnGUID);
                                }
                                _metaColumn.SubReports.Add(sr);
                                MessageBox.Show(string.Format("The Sub-Report named '{0}' has been added with {1} restriction(s).", Path.GetFileName(dlg.FileName), sr.Restrictions.Count), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                _metaColumn.UpdateEditor();
                                setModified();
                            }
                        }
                    }
                    else if (context.PropertyDescriptor.Name == "HelperOpenSubReportFolder")
                    {
                        Process.Start(_metaColumn.Source.Repository.SubReportsFolder);
                    }
                }
                else if (_metaJoin != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperCheckJoin")
                    {
                        _metaJoin.CheckJoin();
                    }
                }
                else if (_model != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperViewJoins")
                    {
                        try
                        {
                            _model.JoinPaths = new StringBuilder();
                            _model.BuildQuery();

                            var frm = new ExecutionForm(null);
                            frm.Text = "List of Joins";
                            frm.cancelToolStripButton.Visible = false;
                            frm.pauseToolStripButton.Visible  = false;
                            frm.logTextBox.Text            = _model.JoinPaths.ToString();
                            frm.logTextBox.SelectionStart  = 0;
                            frm.logTextBox.SelectionLength = 0;
                            frm.ShowDialog();
                        }
                        finally
                        {
                            _model.JoinPaths = null;
                        }
                    }
                }
                else if (_reportView != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperReloadConfiguration")
                    {
                        _reportView.ReloadConfiguration();
                    }
                    else if (context.PropertyDescriptor.Name == "HelperResetParameters")
                    {
                        _reportView.InitParameters(true);
                        setModified();
                    }
                    else if (context.PropertyDescriptor.Name == "HelperResetPDFConfigurations")
                    {
                        _reportView.PdfConfigurations = new List <string>();
                        _reportView.PdfConverter      = null;
                        _reportView.Information       = Helper.FormatMessage("The PDF configuration values have been reset");
                        setModified();
                    }
                    else if (context.PropertyDescriptor.Name == "HelperResetExcelConfigurations")
                    {
                        _reportView.ExcelConfigurations = new List <string>();
                        _reportView.ExcelConverter      = null;
                        _reportView.Information         = Helper.FormatMessage("The Excel configuration values have been reset");
                        setModified();
                    }
                }
                else if (_configuration != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperResetPDFConfigurations")
                    {
                        _configuration.PdfConfigurations = new List <string>();
                        _configuration.PdfConverter      = null;
                    }
                    else if (context.PropertyDescriptor.Name == "HelperResetExcelConfigurations")
                    {
                        _configuration.ExcelConfigurations = new List <string>();
                        _configuration.ExcelConverter      = null;
                    }
                }
                else if (_reportSchedule != null)
                {
                    if (HandlerInterface != null && context.PropertyDescriptor.Name == "HelperEditProperties")
                    {
                        HandlerInterface.EditSchedule(_reportSchedule);
                    }
                    else if (context.PropertyDescriptor.Name == "HelperRunTaskScheduler")
                    {
                        Process.Start(Path.Combine(Environment.SystemDirectory, "taskschd.msc"), "/s");
                    }
                }
                else if (_parameter != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperResetParameterValue")
                    {
                        _parameter.Value = _parameter.ConfigValue;
                        setModified();
                    }
                }
                else if (_security != null)
                {
                    if (context.PropertyDescriptor.Name == "HelperSimulateLogin")
                    {
                        SecurityUser user = new SecurityUser(_security);
                        user.WebUserName = _security.TestUserName;
                        user.WebPassword = _security.TestPassword;
                        if (_security.TestCurrentWindowsUser)
                        {
                            user.WebPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
                        }
                        user.Authenticate();
                        try
                        {
                            Cursor.Current = Cursors.WaitCursor;
                            ExecutionForm frm = new ExecutionForm(null);
                            frm.Text = "Test a login";
                            frm.cancelToolStripButton.Visible = false;
                            frm.pauseToolStripButton.Visible  = false;
                            frm.logTextBox.Text            = user.AuthenticationSummary;
                            frm.logTextBox.SelectionStart  = 0;
                            frm.logTextBox.SelectionLength = 0;
                            frm.ShowDialog();
                        }
                        finally
                        {
                            Cursor.Current = Cursors.Default;
                        }
                    }
                }
                else if (_widget != null)
                {
                    if (context.PropertyDescriptor.Name == "ExecReportPath")
                    {
                        OpenFileDialog dlg = new OpenFileDialog();
                        dlg.Filter           = string.Format(Repository.SealRootProductName + " Reports files (*.{0})|*.{0}|All files (*.*)|*.*", Repository.SealReportFileExtension);
                        dlg.Title            = "Select report to execute from the Widget";
                        dlg.CheckFileExists  = true;
                        dlg.CheckPathExists  = true;
                        dlg.InitialDirectory = Repository.Instance.ReportsFolder;
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            Report report = Report.LoadFromFile(dlg.FileName, Repository.Instance, false);
                            if (report.ExecutionView == null)
                            {
                                throw new Exception("This report has no view to execute...");
                            }
                            _widget.ExecReportPath = report.FilePath.Replace(Repository.Instance.ReportsFolder, "");
                            _widget.ExecViewGUID   = report.ExecutionView.GUID;
                            _widget.UpdateEditor();
                        }
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return(value);
        }
Exemple #9
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                setContext(context);
                if (context.Instance != null)
                {
                    var        displaySource = new List <IntDisplay>();
                    List <int> source        = null;
                    int        startIndex    = 0;

                    var      culture = new CultureInfo("en");
                    string[] names   = new string[] { };
                    if (context.PropertyDescriptor.Name == "SealWeekdays")
                    {
                        names      = culture.DateTimeFormat.DayNames;
                        startIndex = 0;
                        source     = _schedule.Weekdays;
                    }
                    else if (context.PropertyDescriptor.Name == "SealMonths")
                    {
                        names      = new List <string>(culture.DateTimeFormat.MonthNames).Take(12).ToArray();
                        startIndex = 1;
                        source     = _schedule.Months;
                    }
                    else if (context.PropertyDescriptor.Name == "SealDays")
                    {
                        List <string> names2 = new List <string>();
                        for (int i = 1; i <= 31; i++)
                        {
                            names2.Add(i.ToString());
                        }
                        names2.Add("Last");
                        names      = names2.ToArray();
                        startIndex = 1;
                        source     = _schedule.Days;
                    }

                    for (int i = 0; i < names.Length; i++)
                    {
                        displaySource.Add(new IntDisplay()
                        {
                            Id = startIndex + i, Display = names[i]
                        });
                    }

                    MultipleSelectForm frm = new MultipleSelectForm("Please select the values", displaySource, "Display");
                    //select existing values
                    for (int i = 0; i < frm.checkedListBox.Items.Count; i++)
                    {
                        if (source.Contains(((IntDisplay)frm.checkedListBox.Items[i]).Id))
                        {
                            frm.checkedListBox.SetItemChecked(i, true);
                        }
                    }

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        var result = new List <int>();
                        foreach (object item in frm.CheckedItems)
                        {
                            result.Add(((IntDisplay)item).Id);
                        }
                        _schedule.CalculateNextExecution();
                        value = result;
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return(value);
        }
        public bool addFromToolStripMenuItem_Click(object sender, EventArgs e)
        {
            bool isModified = false;
            object entity = mainTreeView.SelectedNode.Tag;
            MetaSource source = GetSource(mainTreeView.SelectedNode);
            if (source == null) return isModified;

            DbConnection connection = source.GetOpenConnection();

            object selectSource = null;
            string name = "";
            List<CheckBox> options = new List<CheckBox>();
            CheckBox autoCreateColumns = new CheckBox() { Text = "Auto create table columns", Checked = true, AutoSize = true };
            CheckBox autoCreateJoins = new CheckBox() { Text = "Auto create joins", Checked = true, AutoSize = true };
            CheckBox useTableSchemaName = new CheckBox() { Text = "Use schema name", Checked = false, AutoSize = true };
            CheckBox keepColumnNames = new CheckBox() { Text = "Keep column names", Checked = false, AutoSize = true };

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                if (entity is TableFolder)
                {
                    DataTable schemaTables = connection.GetSchema("Tables");
                    List<MetaTable> tables = new List<MetaTable>();
                    addSchemaTables(connection.GetSchema("Tables"), tables, source);
                    if (connection is OdbcConnection)
                    {
                        //Add views for odbc connections..
                        addSchemaTables(connection.GetSchema("Views"), tables, source);
                    }

                    selectSource = tables.OrderBy(i => i.AliasName).ToList();
                    name = "DisplayName";

                    options.Add(autoCreateColumns);
                    options.Add(autoCreateJoins);

                    if (tables.Count > 0 && tables[0].Name.Contains(".")) options.Add(useTableSchemaName);
                    if (tables.Count > 0 ) options.Add(keepColumnNames);
                }
                else if (entity is MetaTable)
                {
                    List<MetaColumn> columns = new List<MetaColumn>();
                    source.AddColumnsFromCatalog(columns, connection, ((MetaTable)entity));
                    selectSource = columns.OrderBy(i => i.Name).ToList();
                    name = "Name";
                }
                else if (entity is JoinFolder)
                {
                    List<MetaJoin> joins = GetJoins(connection, source);
                    if (joins.Count == 0)
                    {
                        MessageBox.Show(connection is OleDbConnection ? "All Joins have been defined for the existing tables" : "Joins cannot be read from the database for 'Microsoft OleDB provider for ODBC drivers'...\r\nIf possible, use another OleDB provider for your connection.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return isModified;
                    }
                    selectSource = joins.OrderBy(i => i.Name).ToList();
                    name = "Name";
                }

                if (source != null && selectSource != null)
                {
                    MultipleSelectForm frm = new MultipleSelectForm("Please select objects to add", selectSource, name);

                    int index = 10;
                    foreach (var checkbox in options)
                    {
                        checkbox.Location = new Point(index, 5);
                        frm.optionPanel.Controls.Add(checkbox);
                        index += checkbox.Width + 10;
                        frm.Width = Math.Max(index + 5, frm.Width);
                    }
                    frm.optionPanel.Visible = (options.Count > 0);

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        Cursor.Current = Cursors.WaitCursor;
                        isModified = true;
                        foreach (var item in frm.CheckedItems)
                        {
                            if (item is MetaTable)
                            {
                                MetaTable table = (MetaTable)item;
                                if (!useTableSchemaName.Checked)
                                {
                                    string[] names = table.Name.Split('.');
                                    if (names.Length == 2) table.Name = names[1];
                                }

                                if (source.MetaData.Tables.Exists(i => i.AliasName == table.AliasName))
                                {
                                    table.Alias = Helper.GetUniqueName(table.Name, (from i in source.MetaData.Tables select i.AliasName).ToList());
                                }

                                if (keepColumnNames.Checked)
                                {
                                    table.KeepColumnNames = true;
                                }

                                if (autoCreateColumns.Checked)
                                {
                                    source.AddColumnsFromCatalog(table.Columns, connection, table);
                                }


                                source.MetaData.Tables.Add(table);
                            }
                            else if (item is MetaColumn)
                            {
                                MetaColumn column = (MetaColumn)item;
                                ((MetaTable)entity).Columns.Add(column);
                            }
                            else if (item is MetaJoin)
                            {
                                MetaJoin join = (MetaJoin)item;
                                join.Name = Helper.GetUniqueName(join.Name, (from i in source.MetaData.Joins select i.Name).ToList());
                                source.MetaData.Joins.Add(join);
                            }
                        }

                        if (autoCreateJoins.Checked)
                        {
                            foreach (var join in GetJoins(connection, source))
                            {
                                join.Name = Helper.GetUniqueName(join.Name, (from i in source.MetaData.Joins select i.Name).ToList());
                                source.MetaData.Joins.Add(join);
                            }
                        }

                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return isModified;
        }
        public bool removeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            bool isModified = false;
            string displayName = "";
            IList selectSource = getRemoveSource(ref displayName);

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                if (selectSource != null)
                {
                    MultipleSelectForm frm = new MultipleSelectForm("Please select objects to remove", selectSource, displayName);

                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        object entity = mainTreeView.SelectedNode.Tag;
                        MetaSource source = GetSource(mainTreeView.SelectedNode);

                        Cursor.Current = Cursors.WaitCursor;
                        isModified = true;
                        foreach (var item in frm.CheckedItems)
                        {
                            if (item is ReportSource)
                            {
                                Report.RemoveSource((ReportSource)item);
                            }
                            else if (item is MetaConnection)
                            {
                                source.RemoveConnection((MetaConnection)item);
                            }
                            else if (item is MetaTable)
                            {
                                source.RemoveTable((MetaTable)item);
                            }
                            else if (item is MetaJoin)
                            {
                                source.RemoveJoin((MetaJoin)item);
                            }
                            else if (item is MetaColumn)
                            {
                                ((MetaTable)entity).Columns.Remove((MetaColumn)item);
                            }
                            else if (item is MetaEnum)
                            {
                                source.RemoveEnum((MetaEnum)item);
                            }
                            else if (item is ReportModel)
                            {
                                Report.RemoveModel((ReportModel)item);
                            }
                            else if (entity is ViewFolder && item is ReportView)
                            {
                                Report.RemoveView(null, (ReportView)item);
                            }
                            else if (item is ReportView)
                            {
                                Report.RemoveView(((ReportView)entity), (ReportView)item);
                            }
                            else if (item is ReportTask)
                            {
                                Report.RemoveTask((ReportTask)item);
                            }
                            else if (item is ReportOutput)
                            {
                                Report.RemoveOutput((ReportOutput)item);
                            }
                            else if (item is ReportSchedule)
                            {
                                Report.RemoveSchedule((ReportSchedule)item);
                            }
                        }
                    }
                }
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }

            return isModified;
        }