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)); }
/// <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 { } }
/// <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 { } }
/// <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); }
public string EditExpression(string currentExpr, ClassDefinition schema, string providerName, string featureSourceId, ExpressionEditorMode mode, bool attachStylizationFunctions) => _inner.EditExpression(currentExpr, schema, providerName, featureSourceId, mode, attachStylizationFunctions);