internal string EditExpression(string expr, ExpressionEditorMode mode, bool attachStylizationFunctions)
        {
            var fs = (IFeatureSource)_edsvc.CurrentConnection.ResourceService.GetResource(_vl.ResourceId);

            var cls = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(fs.ResourceID, _vl.FeatureName);

            return(_edsvc.EditExpression(expr, cls, fs.Provider, _vl.ResourceId, mode, attachStylizationFunctions));
        }
Exemple #2
0
        /// <summary>
        /// Initializes the dialog.
        /// </summary>
        /// <param name="edSvc">The editor service.</param>
        /// <param name="caps">The provider capabilities.</param>
        /// <param name="cls">The class definition.</param>
        /// <param name="featureSourceId">The FeatureSource id.</param>
        /// <param name="mode">The editor mode</param>
        /// <param name="attachStylizationFunctions">if set to <c>true</c> stylization functions are also attached</param>
        public void Initialize(IEditorService edSvc, IFdoProviderCapabilities caps, ClassDefinition cls, string featureSourceId, ExpressionEditorMode mode, bool attachStylizationFunctions)
        {
            try
            {
                _mode  = mode;
                _cls   = cls;
                _edSvc = edSvc;
                if (_edSvc != null)
                {
                    _featSvc = _edSvc.CurrentConnection.FeatureService;
                    insertThemeExpressionToolStripMenuItem.Enabled = true;
                }
                else
                {
                    insertThemeExpressionToolStripMenuItem.Enabled = false;
                }
                m_featureSource = featureSourceId;
                _caps           = caps;

                btnTools.Enabled = attachStylizationFunctions;

                SortedList <string, PropertyDefinition> sortedCols = new SortedList <string, PropertyDefinition>();
                foreach (var col in _cls.Properties)
                {
                    sortedCols.Add(col.Name, col);
                }

                ColumnName.Items.Clear();
                ColumnName.Tag = sortedCols;

                foreach (var col in sortedCols.Values)
                {
                    string          name = col.Name;
                    ToolStripButton btn  = new ToolStripButton();
                    btn.Name   = name;
                    btn.Text   = name;
                    btn.Click += delegate
                    {
                        InsertText(name);
                    };
                    btnProperties.DropDown.Items.Add(btn);

                    ColumnName.Items.Add(name);
                }

                if (ColumnName.Items.Count > 0)
                {
                    ColumnName.SelectedIndex = 0;
                }

                LoadFunctions(caps, attachStylizationFunctions);
            }
            catch
            {
            }
        }
Exemple #3
0
        /// <summary>
        /// Initializes the FDO expression editor
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="cls"></param>
        /// <param name="featureSourceId"></param>
        /// <param name="mode"></param>
        public void Initialize(IServerConnection conn, ClassDefinition cls, string featureSourceId, ExpressionEditorMode mode)
        {
            IFeatureSource           fs   = (IFeatureSource)conn.ResourceService.GetResource(featureSourceId);
            IFdoProviderCapabilities caps = conn.FeatureService.GetProviderCapabilities(fs.Provider);

            //This is normally set by the Editor Service, but we don't have that so do it here
            _featSvc = conn.FeatureService;

            this.Initialize(null, caps, cls, featureSourceId, mode, false);
        }
        /// <summary>
        /// Initializes the dialog.
        /// </summary>
        /// <param name="edSvc">The editor service.</param>
        /// <param name="caps">The provider capabilities.</param>
        /// <param name="cls">The class definition.</param>
        /// <param name="featureSourceId">The features source id.</param>
        /// <param name="mode">The editor mode</param>
        /// <param name="attachStylizationFunctions">If true, Stylization FDO functions will be included</param>
        public void Initialize(IEditorService edSvc, IFdoProviderCapabilities caps, ClassDefinition cls, string featureSourceId, ExpressionEditorMode mode, bool attachStylizationFunctions)
        {
            try
            {
                _caps  = caps;
                _mode  = mode;
                _cls   = cls;
                _edSvc = edSvc;
                if (_edSvc != null)
                {
                    _featSvc = _edSvc.CurrentConnection.FeatureService;
                    insertThemeExpressionToolStripMenuItem.Enabled = true;
                }
                else
                {
                    insertThemeExpressionToolStripMenuItem.Enabled = false;
                }
                m_featureSource = featureSourceId;

                insertThemeExpressionToolStripMenuItem.Enabled = attachStylizationFunctions;

                //TODO: Perhaps add column type and indication of primary key
                SortedList <string, PropertyDefinition> sortedCols = new SortedList <string, PropertyDefinition>();
                foreach (var col in _cls.Properties)
                {
                    sortedCols.Add(col.Name, col);
                }

                ColumnName.Items.Clear();
                ColumnName.Tag = sortedCols;

                foreach (var col in sortedCols.Values)
                {
                    string          name = col.Name;
                    ToolStripButton btn  = new ToolStripButton();
                    btn.Name   = name;
                    btn.Text   = name;
                    btn.Click += delegate
                    {
                        InsertText(name);
                    };
                    btnProperties.DropDown.Items.Add(btn);

                    ColumnName.Items.Add(name);
                }

                if (ColumnName.Items.Count > 0)
                {
                    ColumnName.SelectedIndex = 0;
                }

                LoadCompletableProperties(_cls.Properties);

                //TODO: Figure out how to translate the enums into something usefull

                //Functions
                var sortedFuncs = new SortedList <string, IFdoFunctionDefintion>();
                foreach (var func in caps.Expression.SupportedFunctions)
                {
                    sortedFuncs.Add(func.Name, func);
                }

                if (attachStylizationFunctions)
                {
                    foreach (var func in Utility.GetStylizationFunctions())
                    {
                        sortedFuncs.Add(func.Name, func);
                    }
                }

                foreach (var func in sortedFuncs.Values)
                {
                    string name = func.Name;
                    string desc = func.Description;

                    ToolStripItemCollection parent = btnFunctions.DropDown.Items;
                    var sigs = ExpressionEditor.MakeUniqueSignatures(func);
                    if (sigs.Length > 1)
                    {
                        ToolStripMenuItem btn = new ToolStripMenuItem();
                        btn.Name        = string.Format(Strings.MultiSigFunction, name, sigs.Length);
                        btn.Text        = string.Format(Strings.MultiSigFunction, name, sigs.Length);
                        btn.ToolTipText = desc;

                        btnFunctions.DropDown.Items.Add(btn);
                        parent = btn.DropDown.Items;
                    }

                    foreach (var sig in sigs)
                    {
                        ToolStripMenuItem btn = new ToolStripMenuItem();
                        btn.Name        = name;
                        btn.ToolTipText = desc;

                        List <string> args = new List <string>();
                        foreach (var argDef in sig.Arguments)
                        {
                            args.Add(argDef.Name.Trim());
                        }
                        string expr = $"{name}({FdoExpressionCompletionDataProvider.StringifyFunctionArgs(args)})"; //NOXLATE
                        btn.Text   = $"{expr} : {sig.ReturnType}";                                                  //NOXLATE
                        btn.Click += (s, e) =>
                        {
                            InsertText(expr);
                        };
                        parent.Add(btn);
                    }
                }
                LoadCompletableFunctions(caps.Expression.SupportedFunctions);
                if (attachStylizationFunctions)
                {
                    LoadCompletableFunctions(Utility.GetStylizationFunctions());
                }

                //Spatial Operators
                foreach (var op in caps.Filter.SpatialOperations)
                {
                    string          name = op.ToUpper();
                    ToolStripButton btn  = new ToolStripButton();
                    btn.Name   = btn.Text = btn.ToolTipText = op;
                    btn.Click += delegate
                    {
                        InsertFilter(name);
                    };
                    btnSpatial.DropDown.Items.Add(btn);
                }

                //Distance Operators
                foreach (var op in caps.Filter.DistanceOperations)
                {
                    string          name = op.ToUpper();
                    ToolStripButton btn  = new ToolStripButton();
                    btn.Name   = btn.Text = btn.ToolTipText = op;
                    btn.Click += delegate
                    {
                        InsertFilter(name);
                    };
                    btnDistance.DropDown.Items.Add(btn);
                }

                //Conditional Operators
                foreach (var op in caps.Filter.ConditionTypes)
                {
                    string          name = op.ToUpper();
                    ToolStripButton btn  = new ToolStripButton();
                    btn.Name   = btn.Text = btn.ToolTipText = op;
                    btn.Click += delegate
                    {
                        InsertFilter(name);
                    };
                    btnCondition.DropDown.Items.Add(btn);
                }

                /*try
                 * {
                 *  /*FdoProviderCapabilities cap = m_connection.GetProviderCapabilities(m_providername);
                 *  foreach (FdoProviderCapabilitiesFilterType cmd in cap.Filter.Condition)
                 *      FunctionCombo.Items.Add(cmd.ToString());
                 *
                 *  FunctionLabel.Enabled = FunctionCombo.Enabled = true;
                 * }
                 * catch
                 * {
                 *  FunctionLabel.Enabled = FunctionCombo.Enabled = false;
                 * }*/
            }
            catch
            {
            }
        }
Exemple #5
0
        /// <summary>
        /// Edits the expression.
        /// </summary>
        /// <param name="currentExpr">The current expr.</param>
        /// <param name="classDef">The class def.</param>
        /// <param name="providerName">Name of the provider.</param>
        /// <param name="featureSourceId">The feature source id.</param>
        /// <param name="mode">The editor mode</param>
        /// <param name="attachStylizationFunctions">If true, FDO stylization functions are also included in the function list</param>
        /// <returns></returns>
        public string EditExpression(string currentExpr, ClassDefinition classDef, string providerName, string featureSourceId, ExpressionEditorMode mode, bool attachStylizationFunctions)
        {
            var ed   = FdoExpressionEditorFactory.Create();
            var caps = _conn.FeatureService.GetProviderCapabilities(providerName);

            ed.Initialize(this, caps, classDef, featureSourceId, mode, attachStylizationFunctions);
            ed.Expression = currentExpr;
            if (ed.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                return(ed.Expression);
            }
            return(null);
        }
Exemple #6
0
 public string EditExpression(string currentExpr, ClassDefinition schema, string providerName, string featureSourceId, ExpressionEditorMode mode, bool attachStylizationFunctions)
 => _inner.EditExpression(currentExpr, schema, providerName, featureSourceId, mode, attachStylizationFunctions);