This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
/
UnboundExpressionPanel.cs
73 lines (71 loc) · 3.08 KB
/
UnboundExpressionPanel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using DevExpress.Data;
using DevExpress.Data.ExpressionEditor;
using DevExpress.DataAccess.UI.ExpressionEditor;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.ExpressionEditor;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Internal;
using DevExpress.XtraTreeList.Columns;
using System;
using System.ComponentModel;
using System.Linq;
namespace Standalone_ExpressionEditor
{
[ToolboxItem(true)]
[DesignerCategory("")]
public class UnboundExpressionPanel : PanelControl
{
ExpressionEditorView view;
object column;
IDataColumnInfo columnContext;
public UnboundExpressionPanel() : base() {
BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
}
void DestroyExpressionControls() {
if (view != null) {
Controls.Remove(view);
view.Dispose();
}
}
ExpressionEditorView CreateExpressionControl() {
ExpressionEditorControl control = new ExpressionEditorControl();
if (column is GridColumn)
columnContext = new GridColumnIDataColumnInfoWrapper(column as GridColumn, GridColumnIDataColumnInfoWrapperEnum.ExpressionEditor);
if (column is TreeListColumn)
columnContext = column as IDataColumnInfo;
control.Context = ExpressionEditorHelper.GetExpressionEditorContext(LookAndFeel, columnContext);
ExpressionEditorView expressionView = new ExpressionEditorView(control.LookAndFeel, control);
expressionView.Dock = System.Windows.Forms.DockStyle.Fill;
expressionView.TopLevel = false;
expressionView.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
expressionView.Ok += ExpressionView_Ok;
expressionView.Cancel += ExpressionView_Cancel;
expressionView.Visible = true;
return expressionView;
}
public void StartEdit(object columnObject) {
SuspendLayout();
column = columnObject;
DestroyExpressionControls();
view = CreateExpressionControl();
Controls.Add(view);
string expression = string.Empty;
if (column is GridColumn)
expression = (column as GridColumn).UnboundExpression;
if (column is TreeListColumn)
expression = (column as TreeListColumn).UnboundExpression;
view.ExpressionString = UnboundExpressionConvertHelper.ConvertToCaption(columnContext, expression);
ResumeLayout();
}
private void ExpressionView_Ok(object sender, EventArgs e) {
string expression = UnboundExpressionConvertHelper.ConvertToFields(columnContext, view.ExpressionString);
if (column is GridColumn)
(column as GridColumn).UnboundExpression = expression;
if (column is TreeListColumn)
(column as TreeListColumn).UnboundExpression = expression;
}
private void ExpressionView_Cancel(object sender, EventArgs e) {
// TO DO
}
}
}