コード例 #1
0
        /// <summary>
        /// Botão "Validate" clicado, este código é chamado em resposta ao "click"
        /// </summary>
        /// <param name="resourceData">Dados do recurso</param>
        /// <param name="errorMsg"></param>
        /// <returns></returns>
        public bool ValidateResource(IReadOnlyResourceConfiguration resourceData, out string errorMsg)
        {
            //errorMsg should be set to null in case there is no error
            errorMsg = null;

            //This method receives read-only copy of the Resource.
            //String myProperty = serviceData.GetPropertyValue("ServicePropertyName");
            //You should open your own dialog here with the success/failure message
            String cUrlRemoteSite = resourceData.GetPropertyValue(CUrlConfigData.CURL_RSRC_KEY_NAME);

            // Validação básica, para fins didáticos apenas
            if (string.IsNullOrEmpty(cUrlRemoteSite))
            {
                errorMsg = @"Site Url/Uri must be set";
            }
            else if (cUrlRemoteSite.Trim().StartsWith(@"/") || cUrlRemoteSite.Trim().EndsWith(@"/"))
            {
                errorMsg = "Site Url/Uri must not start or end with \"/\"";
            }

            if (string.IsNullOrEmpty(errorMsg))
            {
                MessageBox.Show("Resource Url is OK!", "Resource Validation", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            //Method should return true for success and false for failure
            return(string.IsNullOrEmpty(errorMsg));
        }
コード例 #2
0
        /// <summary>
        /// Chamado pelo Studio quando é necessário "configurar" o componente
        /// </summary>
        /// <param name="dataObject">Deve ser atualizado com uma instância do objetoi de "configuração"</param>
        /// <param name="utils">Recebe um objeto do xpi Studio com diversas ferramentas disponíveis para uso nesta interface (UI)</param>
        /// <param name="resourceData">Recebe um objeto do xpi Studio com dados do recurso associado ao componente</param>
        /// <param name="navigateTo">Quando <> de NULL, indica que foi ativado pelo "Finder" do xpi Studio</param>
        /// <param name="configurationChanged">Deve ser atualizado com TRUE/FALSE para avisar se alguma configuração foi alterada</param>
        /// <returns></returns>
        public bool?Configure(ref object dataObject, ISDKStudioUtils utils, IReadOnlyResourceConfiguration resourceData, object navigateTo, out bool configurationChanged)
        {
            bool?confirmed = new bool?(false);

            // Guarda a instância destes utilitários/ferramentas, para uso em outros métodos (se necessário)
            _utils    = utils;
            _rsrcData = resourceData;

            // Handling dataObject null situation (1st config for example)
            if (!(dataObject is CUrlConfigData))
            {
                dataObject = CreateDataObject();
            }

            CUrlConfigData adaptorData = dataObject as CUrlConfigData;

            // Cópia de trabalho do objeto
            CUrlConfigData adaptorDataWorkObject = new CUrlConfigData {
                additionalCurlFlags = adaptorData.additionalCurlFlags,
                dataToSend          = adaptorData.dataToSend,
                exitCodeCUrl        = adaptorData.exitCodeCUrl,
                finalCUrlCmd        = adaptorData.finalCUrlCmd,
                finalSiteUrl        = adaptorData.finalSiteUrl,
                headersToSend       = adaptorData.headersToSend,
                httpResultCode      = adaptorData.httpResultCode,
                httpResultText      = adaptorData.httpResultText,
                httpVerb            = adaptorData.httpVerb,
                keepWorkingFiles    = adaptorData.keepWorkingFiles,
                outputCUrl          = adaptorData.outputCUrl,
                outputData          = adaptorData.outputData,
                outputHeaders       = adaptorData.outputHeaders,
                urlDynAddition      = adaptorData.urlDynAddition,
                isConfigured        = adaptorData.isConfigured
            };

            configurationChanged = false; //Indicate a change in configuration resulting in dirty state

            // Abre e exibe a tela de configuração
            uiForm frm = new uiForm();

            frm.ConfigurationChanged = !adaptorDataWorkObject.isConfigured.GetLogical(); // Se nunca fez a configuração antes, a 1a vez é considerada: configuração alterada
            confirmed = new bool?(frm.Configure(ref adaptorDataWorkObject, utils, resourceData, navigateTo) == DialogResult.OK);

            if (confirmed.HasValue && confirmed.Value)
            {
                // Fechou pelo botão OK
                configurationChanged = frm.ConfigurationChanged;

                if (configurationChanged)
                {
                    // Atualiza o objeto de configuração de retorno

                    #region
                    adaptorData.additionalCurlFlags = adaptorDataWorkObject.additionalCurlFlags;
                    adaptorData.dataToSend          = adaptorDataWorkObject.dataToSend;
                    adaptorData.exitCodeCUrl        = adaptorDataWorkObject.exitCodeCUrl;
                    adaptorData.finalCUrlCmd        = adaptorDataWorkObject.finalCUrlCmd;
                    adaptorData.finalSiteUrl        = adaptorDataWorkObject.finalSiteUrl;
                    adaptorData.headersToSend       = adaptorDataWorkObject.headersToSend;
                    adaptorData.httpResultCode      = adaptorDataWorkObject.httpResultCode;
                    adaptorData.httpResultText      = adaptorDataWorkObject.httpResultText;
                    adaptorData.httpVerb            = adaptorDataWorkObject.httpVerb;
                    adaptorData.keepWorkingFiles    = adaptorDataWorkObject.keepWorkingFiles;
                    adaptorData.outputCUrl          = adaptorDataWorkObject.outputCUrl;
                    adaptorData.outputData          = adaptorDataWorkObject.outputData;
                    adaptorData.outputHeaders       = adaptorDataWorkObject.outputHeaders;
                    adaptorData.urlDynAddition      = adaptorDataWorkObject.urlDynAddition;
                    adaptorData.isConfigured.SetLogical(true);
                    #endregion

                    //
                    dataObject = adaptorData;
                }
            }

            //
            return(confirmed); // confirmed; //se retornar TRUE, o Studio abre o "DataMapper" interno para continuar a configuração. Se retornar FALSE, não abre.
        }
コード例 #3
0
 /// <summary>
 /// Não usaremos, mas aqui podemos adicionar código extra para usar no "Checker", quando ele estiver validando o nosso componente
 /// Retornando NULL, o checker terá o comportamnto padrão
 /// </summary>
 /// <param name="data"></param>
 /// <param name="resourceData"></param>
 /// <returns></returns>
 public ICheckerResult Check(ref object data, IReadOnlyResourceConfiguration resourceData)
 {
     //
     return(null); // can be used to return additional results o the builds in checker mechanism
 }
コード例 #4
0
        /// <summary>
        /// Inicializa o "form" com os dados das propriedades que devem ser exibidas/editadas
        /// E exibe-o, para permitir a edição
        /// </summary>
        /// <param name="dataObject"></param>
        /// <param name="utils"></param>
        /// <param name="resourceData"></param>
        /// <param name="navigateTo"></param>
        public DialogResult Configure(ref CUrlConfigData cfgData, ISDKStudioUtils utils, IReadOnlyResourceConfiguration resourceData, object navigateTo)
        {
            DialogResult result = DialogResult.Cancel;
            string       sysPropStudioDesignMode = utils.GetSystemProperty("IsStudioInDesignMode");

            _cfgData        = cfgData;
            _cfgDataDetails = _cfgData.GetDetails();
            _utils          = utils;
            _resourceData   = resourceData;
            _isDesigning    = sysPropStudioDesignMode.ToUpper().StartsWith("Y") || sysPropStudioDesignMode.ToUpper().StartsWith("T") || sysPropStudioDesignMode.ToUpper().StartsWith("1");

            // Adiciona as colunas (6: Id, Property, Description, Type, Direction, Value)
            DoubleBufferedDataGridView(dataGridViewEditProperties, true);
            dataGridViewEditProperties.Columns.Clear();
            dataGridViewEditProperties.ColumnHeadersDefaultCellStyle.BackColor = Color.FromKnownColor(KnownColor.Control);
            dataGridViewEditProperties.EnableHeadersVisualStyles = false;
            for (int i = 0; i <= COLUMN_MAX; i++)
            {
                if (!(i == COLUMN_BUTTON))
                {
                    DataColumn column = new DataColumn();

                    column.DataType      = System.Type.GetType("System.String");
                    column.AutoIncrement = false;
                    column.ReadOnly      = false;

                    // Coluna da tabela
                    if (i == COLUMN_ID)
                    {
                        // Coluna #1

                        column.ColumnName    = "Id";
                        column.Caption       = column.ColumnName;
                        column.AutoIncrement = false;
                        column.Unique        = true;
                    }
                    else if (i == COLUMN_NAME)
                    {
                        // Coluna #2

                        column.ColumnName    = "Property";
                        column.Caption       = column.ColumnName;
                        column.AutoIncrement = false;
                        column.Unique        = true;
                    }
                    else if (i == COLUMN_DESCRIPTION)
                    {
                        // Coluna #3

                        column.ColumnName    = "Description";
                        column.Caption       = column.ColumnName;
                        column.AutoIncrement = false;
                        column.Unique        = false;
                    }
                    else if (i == COLUMN_TYPE)
                    {
                        // Coluna #4

                        column.ColumnName    = "Type";
                        column.Caption       = column.ColumnName;
                        column.AutoIncrement = false;
                        column.Unique        = false;
                    }
                    else if (i == COLUMN_DIRECTION)
                    {
                        // Coluna #5

                        column.ColumnName    = "Direction";
                        column.Caption       = column.ColumnName;
                        column.AutoIncrement = false;
                        column.Unique        = false;
                    }
                    else if (i == COLUMN_BUTTON)
                    {
                        // Coluna #7
                    }
                    else
                    {
                        // Coluna #6

                        column.ColumnName    = "Value";
                        column.Caption       = column.ColumnName;
                        column.AutoIncrement = false;
                        column.Unique        = false;
                    }

                    //
                    _editTable.Columns.Add(column);
                }
            }

            // "Liga" a tabela ao Grid
            dataGridViewEditProperties.DataSource = _editTable;

            // Ajusta a aparência e comportamento (default) das colunas
            for (int i = 0; i <= COLUMN_MAX; i++)
            {
                DataGridViewColumn gCol = dataGridViewEditProperties.Columns[i];

                // Coluna da tabela
                if (i == COLUMN_ID)
                {
                    // Coluna #1

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 30;
                }
                else if (i == COLUMN_NAME)
                {
                    // Coluna #2

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 170;
                }
                else if (i == COLUMN_DESCRIPTION)
                {
                    // Coluna #3

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 300;
                }
                else if (i == COLUMN_TYPE)
                {
                    // Coluna #4

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 80;
                }
                else if (i == COLUMN_DIRECTION)
                {
                    // Coluna #5

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 60;
                }
                else if (i == COLUMN_BUTTON)
                {
                    // Coluna #7

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 30;
                    gCol.HeaderText   = string.Empty;
                }
                else
                {
                    // Coluna #6

                    gCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    gCol.ReadOnly     = true;
                    gCol.Frozen       = true;
                    gCol.Width        = 410;

                    // Adiciona o botão (7a coluna)
                    DataGridViewButtonColumn gNewCol = new DataGridViewButtonColumn();
                    gNewCol.SortMode     = DataGridViewColumnSortMode.NotSortable;
                    gNewCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                    gNewCol.ReadOnly     = true;
                    gNewCol.Frozen       = true;
                    gNewCol.Width        = 30;
                    gNewCol.Text         = "...";
                    gNewCol.HeaderText   = string.Empty;
                    gNewCol.UseColumnTextForButtonValue = true;
                    dataGridViewEditProperties.Columns.Insert(i + 1, gNewCol);
                }
            }

            // Adiciona as linhas (Uma para cada propriedade)
            // São 6 colunas: Id, Property, Description, Type, Direction e Value
            foreach (CUrlConfigDataDetail propDet in _cfgDataDetails)
            {
                if (propDet.PropertyAcceptExpressionEditor || propDet.PropertyAcceptVariablesSelector)
                {
                    DataRow row = _editTable.NewRow();
                    row[COLUMN_ID]          = propDet.PropertyId.ToString();
                    row[COLUMN_NAME]        = propDet.PropertyDisplayText;
                    row[COLUMN_DESCRIPTION] = propDet.PropertyHint;
                    row[COLUMN_TYPE]        = propDet.PropertyMagicType.ToUpper();
                    row[COLUMN_DIRECTION]   = (propDet.PropertyIsInput && propDet.PropertyIsOutput) ? "[In/Out]" : ((propDet.PropertyIsInput) ? "[In]" : ((propDet.PropertyIsOutput) ? "[Out]" : string.Empty));
                    row[COLUMN_VALUE]       = (propDet.PropertyValue == null) ? string.Empty : propDet.PropertyValue.ToString();

                    //
                    _editTable.Rows.Add(row);
                }
            }

            // Completar algumas informações
            string iconFile = _utils.GetSystemProperty("ConnectorPath") + "\\icons\\curl.gif";

            if (File.Exists(iconFile))
            {
                pictureBoxLogo.ImageLocation = iconFile;
            }
            new ToolTip().SetToolTip(pictureBoxLogo, iconFile);

            // Cehcar se a ação é "normal" ou veio de um "MoveTo"
            if (!(navigateTo == null))
            {
                if (Int32.TryParse(navigateTo.ToString(), out _initialSelectedRow))
                {
                    _initialSelectedRow--;
                    lblNavigateTo.Text = "Direct \"Move To\" to property id: #" + navigateTo.ToString();
                }
            }
            lblRsrcInfo.Text = resourceData.ResourceName + GetResourceValue(resourceData.ResourceName, Path.Combine(_utils.GetSystemProperty("ProjectPath"), "Resources.xml"));

            // Só permite confirmar a edição, qdo o Studio está em "Design Mode"
            btnOk.Enabled = _isDesigning;

            // Exibir o FORM
            result = this.ShowDialog();

            //
            return(result);
        }