-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConsoleTitleModule.cs
More file actions
102 lines (84 loc) · 3.83 KB
/
ConsoleTitleModule.cs
File metadata and controls
102 lines (84 loc) · 3.83 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using PX.Common.Parser;
using PX.Data;
using PX.Web.UI;
namespace AcuShell
{
public class ConsoleTitleModule : ITitleModule
{
public void Initialize(ITitleModuleController controller)
{
if (controller == null) throw new ArgumentNullException("controller");
AppendButton(controller);
AppendPanels(controller);
}
#region Methods
private void AppendButton(ITitleModuleController controller)
{
var btn = new PXToolBarButton { Key = "console", Text = "Console" };
//btn.Images.Normal = Sprite.Main.Design;
btn.PopupPanel = _panelID;
controller.AppendToolbarItem(btn);
}
private void AppendPanels(ITitleModuleController controller)
{
controller.Page.ClientScript.RegisterClientScriptInclude(controller.Page.GetType(), "Console", VirtualPathUtility.ToAbsolute("~/Scripts/console.js"));
PXSmartPanel panel = new PXSmartPanel
{
ID = _panelID,
Width = Unit.Pixel(750),
Height = Unit.Pixel(350),
Caption = "Acumatica Console",
CaptionVisible = true,
AutoRepaint = true,
BlockPage = false,
LoadOnDemand = true, //Needed otherwise ClientEvents.AfterShow won't run on 2nd open of the panel
AutoReload = true,
Position = PanelPosition.Manual,
Overflow = OverflowType.Hidden
};
panel.ClientEvents.BeforeLoad = "BeforeLoadConsolePanel";
panel.ClientEvents.BeforeLoad = "AfterLoadConsolePanel";
panel.ClientEvents.BeforeShow = "BeforeShowConsolePanel";
panel.ClientEvents.AfterShow = "AfterShowConsolePanel";
panel.ClientEvents.BeforeHide = "BeforeHideConsolePanel";
panel.ClientEvents.AfterHide = "AfterHideConsolePanel";
panel.ApplyStyleSheetSkin(controller.Page);
var ds = PXPage.GetDefaultDataSource(controller.Page);
var viewName = ds.DataGraph.PrimaryView;
var form = new PXFormView()
{
ID = "frmAcuShell",
SkinID = "Transparent",
DataSourceID = ds.ID,
DataMember = "ConsoleView",
AutoRepaint = true
};
form.ApplyStyleSheetSkin(controller.Page);
form.AutoSize.Enabled = true;
var cc = form.TemplateContainer.Controls;
var consoleOutput = new PXHtmlView { ID = "pnlConsoleOutput", DataField = nameof(AcuShell.ConsoleFields.Output), Height = Unit.Percentage(100), Width = Unit.Percentage(100), SkinID = "Label" };
consoleOutput.AutoSize.Enabled = true; //TODO: Fix resizing of the console output... doesn't work right now
consoleOutput.AutoSize.MinHeight = 500;
consoleOutput.AutoSize.Container = DockContainer.Parent;
cc.Add(consoleOutput);
cc.Add(new PXTextEdit { ID = "pnlConsoleInput", DataField = nameof(AcuShell.ConsoleFields.Input) });
cc.Add(new PXTextEdit { ID = "pnlGraphType", DataField = nameof(AcuShell.ConsoleFields.GraphType) });
((IParserAccessor)panel).AddParsedSubObject(form);
var editor = new System.Web.UI.WebControls.Panel { ID = "pnlConsoleEditor", Height = Unit.Pixel(150), Width = Unit.Percentage(100) };
((IParserAccessor)panel).AddParsedSubObject(editor);
controller.AppendControl(panel);
}
public bool GetDefaultVisibility()
{
return true;
}
#endregion
#region Fields
private const string _panelID = "pnlConsole";
#endregion
}
}