|
@@ -8,7 +8,7 @@
|
|
|
>
|
|
>
|
|
|
<fx:Style source="MXFTEText.css"/>
|
|
<fx:Style source="MXFTEText.css"/>
|
|
|
<fx:Style source="Main.css"/>
|
|
<fx:Style source="Main.css"/>
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
<fx:Script>
|
|
<fx:Script>
|
|
|
|
|
|
|
|
<![CDATA[
|
|
<![CDATA[
|
|
@@ -19,26 +19,43 @@
|
|
|
import mx.events.FlexEvent;
|
|
import mx.events.FlexEvent;
|
|
|
import mx.events.MenuEvent;
|
|
import mx.events.MenuEvent;
|
|
|
|
|
|
|
|
|
|
+ import spark.components.TextSelectionHighlighting;
|
|
|
import spark.events.IndexChangeEvent;
|
|
import spark.events.IndexChangeEvent;
|
|
|
import spark.events.TextOperationEvent;
|
|
import spark.events.TextOperationEvent;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
[Bindable]
|
|
[Bindable]
|
|
|
public var menuBarCollection:XMLListCollection;
|
|
public var menuBarCollection:XMLListCollection;
|
|
|
|
|
|
|
|
|
|
+ [Bindable][Embed (source="assets/stepin.gif" )] public var stepin:Class;
|
|
|
|
|
+ [Bindable][Embed (source="assets/stepout.gif" )] public var stepout:Class;
|
|
|
|
|
+ [Bindable][Embed (source="assets/stepover.gif" )] public var stepover:Class;
|
|
|
|
|
+
|
|
|
|
|
+ [Bindable][Embed (source="assets/run.gif" )] public var run:Class;
|
|
|
|
|
+ [Bindable][Embed (source="assets/pause.gif" )] public var pause:Class;
|
|
|
|
|
+
|
|
|
|
|
+ [Bindable][Embed (source="assets/add.gif" )] public var add:Class;
|
|
|
|
|
+ [Bindable][Embed (source="assets/breakpoint.gif" )] public var breakpoint:Class;
|
|
|
|
|
+ [Bindable][Embed (source="assets/remove.gif" )] public var remove:Class;
|
|
|
|
|
+ [Bindable][Embed (source="assets/step_current.gif" )] public var step_current:Class;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
private var menubarXML:XMLList =
|
|
private var menubarXML:XMLList =
|
|
|
<>
|
|
<>
|
|
|
<menuitem label="Debug" data="top">
|
|
<menuitem label="Debug" data="top">
|
|
|
- <menuitem label="Step In - F11" data="1A" icon="@Embed('assets/stepin.gif')"/>
|
|
|
|
|
- <menuitem label="Step Over" data="1B"/>
|
|
|
|
|
|
|
+ <menuitem label="(I) - Step In" data="stepin" icon="stepin"/>
|
|
|
|
|
+ <menuitem label="(O) - Step Over" data="stepover" icon="stepover"/>
|
|
|
|
|
+ <menuitem label="(U) - Step Out" data="stepout" icon="stepout"/>
|
|
|
|
|
+ <menuitem type="separator"/>
|
|
|
|
|
+ <menuitem label="(R) - Run" data="run" icon="run" />
|
|
|
|
|
+ <menuitem label="(P) - Pause" data="pause" icon="pause" />
|
|
|
<menuitem type="separator"/>
|
|
<menuitem type="separator"/>
|
|
|
- <menuitem label="Run" data="1B"/>
|
|
|
|
|
- <menuitem label="Pause" data="1B"/>
|
|
|
|
|
|
|
+ <menuitem label="(B) - Toggle breakpoint" data="breakpoint" icon="breakpoint" />
|
|
|
<menuitem type="separator"/>
|
|
<menuitem type="separator"/>
|
|
|
- <menuitem label="Toggle breakpoint" data="1B"/>
|
|
|
|
|
|
|
+ <menuitem label="(G) - Go to current" data="step_current" icon="step_current" />
|
|
|
</menuitem>
|
|
</menuitem>
|
|
|
<menuitem label="Watches" data="top">
|
|
<menuitem label="Watches" data="top">
|
|
|
- <menuitem label="Add..." data="1A"/>
|
|
|
|
|
- <menuitem label="Remove" data="1B"/>
|
|
|
|
|
|
|
+ <menuitem label="(Ins) - Add..." data="add" icon="add" />
|
|
|
|
|
+ <menuitem label="(Del) - Remove" data="remove" icon="remove" />
|
|
|
</menuitem>
|
|
</menuitem>
|
|
|
<menuitem label="Help" data="top">
|
|
<menuitem label="Help" data="top">
|
|
|
<menuitem label="About..." data="about"/>
|
|
<menuitem label="About..." data="about"/>
|
|
@@ -53,8 +70,7 @@
|
|
|
{
|
|
{
|
|
|
var cmd : String = evt.item.@data;
|
|
var cmd : String = evt.item.@data;
|
|
|
|
|
|
|
|
- if (cmd == "top") return;
|
|
|
|
|
- else if (cmd == "about") AboutBox.show(this);
|
|
|
|
|
|
|
+ if (cmd != "top") exec(cmd);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -63,6 +79,43 @@
|
|
|
protected function application_creationCompleteHandler(event:FlexEvent):void
|
|
protected function application_creationCompleteHandler(event:FlexEvent):void
|
|
|
{
|
|
{
|
|
|
m_Debugger = new DebuggerViewLogic(this);
|
|
m_Debugger = new DebuggerViewLogic(this);
|
|
|
|
|
+ systemManager.addEventListener(KeyboardEvent.KEY_UP, shortcutListener, true);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private function shortcutListener(e:KeyboardEvent):void
|
|
|
|
|
+ {
|
|
|
|
|
+ switch(e.keyCode)
|
|
|
|
|
+ {
|
|
|
|
|
+ case 73:
|
|
|
|
|
+ exec("stepin");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 79:
|
|
|
|
|
+ exec("stepover");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 85:
|
|
|
|
|
+ exec("stepout");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 82:
|
|
|
|
|
+ exec("run");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 80:
|
|
|
|
|
+ exec("pause");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 66:
|
|
|
|
|
+ exec("breakpoint");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 71:
|
|
|
|
|
+ exec("step_current");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 45:
|
|
|
|
|
+ exec("add");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 46:
|
|
|
|
|
+ exec("remove");
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function refreshSourceCode(s : SourceCode, l : ArrayList) : void
|
|
public function refreshSourceCode(s : SourceCode, l : ArrayList) : void
|
|
@@ -103,6 +156,26 @@
|
|
|
tlf2.backgroundColor = 0xb1aefa;
|
|
tlf2.backgroundColor = 0xb1aefa;
|
|
|
|
|
|
|
|
txtCode.setFormatOfRange(tlf2, hl.From, hl.To);
|
|
txtCode.setFormatOfRange(tlf2, hl.From, hl.To);
|
|
|
|
|
+ moveCaret(hl.To);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function refreshBreakpoints() : void
|
|
|
|
|
+ {
|
|
|
|
|
+ if (m_CurrentSrc == null) return;
|
|
|
|
|
+
|
|
|
|
|
+ var tlf:TextLayoutFormat = new TextLayoutFormat();
|
|
|
|
|
+ tlf.color = 0xEEEEEE;
|
|
|
|
|
+
|
|
|
|
|
+ txtCode.setFormatOfRange(tlf, 0, txtCode.text.length - 1);
|
|
|
|
|
+
|
|
|
|
|
+ var tlf2:TextLayoutFormat = new TextLayoutFormat();
|
|
|
|
|
+ tlf2.color = 0xff0000;
|
|
|
|
|
+
|
|
|
|
|
+ for(var i:int = 0; i < m_CurrentSrc.Breakpoints.length; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ var hl:Highlight = m_CurrentSrc.Breakpoints[i];
|
|
|
|
|
+ txtCode.setFormatOfRange(tlf2, hl.From, hl.To);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -130,6 +203,8 @@
|
|
|
txtCode.text = S.getText();
|
|
txtCode.text = S.getText();
|
|
|
m_CurrentSrc = S;
|
|
m_CurrentSrc = S;
|
|
|
refreshInstructionPtrHighlight(false);
|
|
refreshInstructionPtrHighlight(false);
|
|
|
|
|
+ refreshBreakpoints();
|
|
|
|
|
+ updateCaretLabel();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
protected function getSourceName(o : Object) : String
|
|
protected function getSourceName(o : Object) : String
|
|
@@ -143,131 +218,196 @@
|
|
|
titleBar.text = "MoonSharp Remote Debugger - [" + appName + "] - v" + ver;
|
|
titleBar.text = "MoonSharp Remote Debugger - [" + appName + "] - v" + ver;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- protected function btnRemoveWatch_clickHandler(event:MouseEvent):void
|
|
|
|
|
|
|
+ public function appendMessage(text : String) : void
|
|
|
{
|
|
{
|
|
|
- var str:String = "";
|
|
|
|
|
|
|
+ textOutput.text += text + "\n";
|
|
|
|
|
+ textOutput.scrollToRange(int.MAX_VALUE, int.MAX_VALUE);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ protected function txtCode_changingHandler(event:TextOperationEvent):void
|
|
|
|
|
+ {
|
|
|
|
|
+ event.preventDefault();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ protected function toggleBreakpoint() : void
|
|
|
|
|
+ {
|
|
|
|
|
+ if (m_CurrentSrc == null) return;
|
|
|
|
|
|
|
|
- for each(var wi:WatchItem in gridWatches.selectedItems)
|
|
|
|
|
- {
|
|
|
|
|
- if (str.length > 0)
|
|
|
|
|
- str += ",";
|
|
|
|
|
-
|
|
|
|
|
- str += wi.Name;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ var cursor:int = txtCode.selectionActivePosition;
|
|
|
|
|
+ var line:int = m_CurrentSrc.inflateLocationLine(cursor);
|
|
|
|
|
+ var col:int = m_CurrentSrc.inflateLocationColumn(cursor, line);
|
|
|
|
|
|
|
|
- if (str.length > 0)
|
|
|
|
|
- m_Debugger.removeWatch(str);
|
|
|
|
|
|
|
+ m_Debugger.toggleBreakpoint(m_CurrentSrc.getId(), line, col);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- protected function btnAddWatch_clickHandler(event:MouseEvent):void
|
|
|
|
|
|
|
+ protected function moveCaret(where : int) : void
|
|
|
{
|
|
{
|
|
|
- InputBox.show(this, "Add watch...", "Enter the name of the variables you want to watch, separated by ',' if more than one is desired", "", function(str:String):void
|
|
|
|
|
- {
|
|
|
|
|
- if (str !== null && str !== "")
|
|
|
|
|
- m_Debugger.addWatch(str);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ txtCode.setFocus();
|
|
|
|
|
+ txtCode.selectRange(where, where);
|
|
|
|
|
+ updateCaretLabel();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function appendMessage(text : String) : void
|
|
|
|
|
|
|
+ protected function updateCaretLabel() : void
|
|
|
{
|
|
{
|
|
|
- textOutput.text += text + "\n";
|
|
|
|
|
- textOutput.scrollToRange(int.MAX_VALUE, int.MAX_VALUE);
|
|
|
|
|
|
|
+ if (m_CurrentSrc == null) return;
|
|
|
|
|
+
|
|
|
|
|
+ var cursor:int = txtCode.selectionActivePosition;
|
|
|
|
|
+ var line:int = m_CurrentSrc.inflateLocationLine(cursor);
|
|
|
|
|
+ var col:int = m_CurrentSrc.inflateLocationColumn(cursor, line);
|
|
|
|
|
+
|
|
|
|
|
+ txtCaret.text = m_CurrentSrc.getName() + ":" + line.toString() + ","+col.toString();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- protected function txtCode_changingHandler(event:TextOperationEvent):void
|
|
|
|
|
|
|
+ private function deepWatch() : void
|
|
|
{
|
|
{
|
|
|
- event.preventDefault();
|
|
|
|
|
|
|
+ var wi:WatchItem = gridWatches.selectedItem as WatchItem;
|
|
|
|
|
+
|
|
|
|
|
+ if (wi != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ Alert.show("Value = " + wi.Value + "\n" +
|
|
|
|
|
+ "Type = " + wi.Type + "\n" +
|
|
|
|
|
+ "Scope = " + wi.LValue, wi.Name);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- protected function toggleBreakpoint() : void
|
|
|
|
|
|
|
+
|
|
|
|
|
+ public function exec(cmd:String) : void
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
|
|
+ if (cmd == "about") AboutBox.show(this);
|
|
|
|
|
+ else if (cmd == "stepin") m_Debugger.stepIn();
|
|
|
|
|
+ else if (cmd == "stepout") m_Debugger.stepOut();
|
|
|
|
|
+ else if (cmd == "stepover") m_Debugger.stepOver();
|
|
|
|
|
+ else if (cmd == "run") m_Debugger.run();
|
|
|
|
|
+ else if (cmd == "pause") m_Debugger.pause();
|
|
|
|
|
+ else if (cmd == "step_current") refreshInstructionPtrHighlight(true);
|
|
|
|
|
+ else if (cmd == "breakpoint") toggleBreakpoint();
|
|
|
|
|
+ else if (cmd == "expand") deepWatch();
|
|
|
|
|
+ else if (cmd == "add")
|
|
|
|
|
+ {
|
|
|
|
|
+ InputBox.show(this, "Add watch...", "Enter the name of the variables you want to watch, separated by ',' if more than one is desired", "", function(str:String):void
|
|
|
|
|
+ {
|
|
|
|
|
+ if (str !== null && str !== "")
|
|
|
|
|
+ m_Debugger.addWatch(str);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (cmd == "remove")
|
|
|
|
|
+ {
|
|
|
|
|
+ var str:String = "";
|
|
|
|
|
+
|
|
|
|
|
+ for each(var wi:WatchItem in gridWatches.selectedItems)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (str.length > 0)
|
|
|
|
|
+ str += ",";
|
|
|
|
|
+
|
|
|
|
|
+ str += wi.Name;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (str.length > 0)
|
|
|
|
|
+ m_Debugger.removeWatch(str);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ Alert.show("Unknown command " + cmd, "Error", Alert.OK, this);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
]]>
|
|
]]>
|
|
|
</fx:Script>
|
|
</fx:Script>
|
|
|
|
|
|
|
|
<fx:Declarations>
|
|
<fx:Declarations>
|
|
|
<!-- Place non-visual elements (e.g., services, value objects) here -->
|
|
<!-- Place non-visual elements (e.g., services, value objects) here -->
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
</fx:Declarations>
|
|
</fx:Declarations>
|
|
|
- <mx:VBox width="100%" height="100%">
|
|
|
|
|
-
|
|
|
|
|
- <s:Label width="100%" id="titleBar" height="24" text="MoonSharp Remote Debugger - Connecting..."
|
|
|
|
|
- verticalAlign="middle"
|
|
|
|
|
- textAlign="center"
|
|
|
|
|
- fontSize="14"
|
|
|
|
|
- fontWeight="bold"
|
|
|
|
|
- paddingTop="8"
|
|
|
|
|
- color="0xFFFFFF"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- <mx:MenuBar labelField="@label" iconField="@icon" itemClick="menuHandler(event);" dataProvider="{menuBarCollection}" width="100%"
|
|
|
|
|
- cornerRadius="0"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <mx:HBox width="100%" paddingTop="0" paddingLeft="4">
|
|
|
|
|
- <s:Button height="20" label="Step in" click="m_Debugger.stepIn();" icon="@Embed('assets/stepin.gif')"/>
|
|
|
|
|
- <s:Button height="20" label="Step out" click="m_Debugger.stepOut();" icon="@Embed('assets/stepout.gif')"/>
|
|
|
|
|
- <s:Button height="20" label="Step over" click="m_Debugger.stepOver();" icon="@Embed('assets/stepover.gif')"/>
|
|
|
|
|
- <s:Button height="20" label="Run" click="m_Debugger.run();" icon="@Embed('assets/run.gif')"/>
|
|
|
|
|
- <s:Button height="20" label="Pause" click="m_Debugger.run();" icon="@Embed('assets/pause.gif')"/>
|
|
|
|
|
- <s:Button height="20" label="Go to current" click="refreshInstructionPtrHighlight(true);" icon="@Embed('assets/step_current.gif')"/>
|
|
|
|
|
- <s:Button height="20" label="Toggle breakpoint" icon="@Embed('assets/breakpoint.gif')" click="toggleBreakpoint();"/>
|
|
|
|
|
- </mx:HBox>
|
|
|
|
|
-
|
|
|
|
|
- <mx:HDividedBox width="100%" height="100%" liveDragging="true">
|
|
|
|
|
- <mx:VDividedBox width="30%" height="100%">
|
|
|
|
|
- <s:Panel title="Watches" width="100%" height="50%">
|
|
|
|
|
- <mx:VBox width="100%" height="100%">
|
|
|
|
|
- <mx:HBox width="100%" paddingTop="4" paddingLeft="4">
|
|
|
|
|
- <s:Button height="20" id="btnAddWatch" label="Add" click="btnAddWatch_clickHandler(event)" icon="@Embed('assets/add.gif')"/>
|
|
|
|
|
- <s:Button height="20" id="btnRemoveWatch" label="Remove" click="btnRemoveWatch_clickHandler(event)" icon="@Embed('assets/remove.gif')"/>
|
|
|
|
|
- </mx:HBox>
|
|
|
|
|
- <s:DataGrid id="gridWatches" width="100%" height="100%" selectionMode="multipleRows">
|
|
|
|
|
- <s:columns>
|
|
|
|
|
- <s:ArrayList>
|
|
|
|
|
- <s:GridColumn dataField="Name" headerText="Name" ></s:GridColumn>
|
|
|
|
|
- <s:GridColumn dataField="Value" headerText="Value" ></s:GridColumn>
|
|
|
|
|
- <s:GridColumn dataField="Type" headerText="Type" ></s:GridColumn>
|
|
|
|
|
- <s:GridColumn dataField="LValue" headerText="Scope" ></s:GridColumn>
|
|
|
|
|
- </s:ArrayList>
|
|
|
|
|
- </s:columns>
|
|
|
|
|
- </s:DataGrid>
|
|
|
|
|
- </mx:VBox>
|
|
|
|
|
- </s:Panel>
|
|
|
|
|
- <s:Panel title="Stack" width="100%" height="50%">
|
|
|
|
|
- <s:DataGrid id="gridStack" width="100%" height="100%" sortableColumns="false">
|
|
|
|
|
|
|
+ <mx:VBox width="100%" height="100%">
|
|
|
|
|
+
|
|
|
|
|
+ <s:Label width="100%" id="titleBar" height="24" text="MoonSharp Remote Debugger - Connecting..."
|
|
|
|
|
+ verticalAlign="middle"
|
|
|
|
|
+ textAlign="center"
|
|
|
|
|
+ fontSize="14"
|
|
|
|
|
+ fontWeight="bold"
|
|
|
|
|
+ paddingTop="8"
|
|
|
|
|
+ color="0xFFFFFF"
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <mx:MenuBar labelField="@label" iconField="@icon" itemClick="menuHandler(event);" dataProvider="{menuBarCollection}" width="100%"
|
|
|
|
|
+ cornerRadius="0"
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+ <mx:HBox width="100%" paddingTop="0" paddingLeft="4">
|
|
|
|
|
+ <s:Button height="20" label="Step in" click="exec('stepin');" icon="{stepin}"/>
|
|
|
|
|
+ <s:Button height="20" label="Step out" click="exec('stepout');" icon="{stepout}"/>
|
|
|
|
|
+ <s:Button height="20" label="Step over" click="exec('stepover');" icon="{stepover}"/>
|
|
|
|
|
+ <s:Button height="20" label="Run" click="exec('run');" icon="{run}"/>
|
|
|
|
|
+ <s:Button height="20" label="Pause" click="exec('pause');" icon="{pause}"/>
|
|
|
|
|
+ <s:Button height="20" label="Go to current" click="exec('step_current');" icon="{step_current}"/>
|
|
|
|
|
+ <s:Button height="20" label="Toggle breakpoint" icon="{breakpoint}" click="exec('breakpoint');"/>
|
|
|
|
|
+ </mx:HBox>
|
|
|
|
|
+
|
|
|
|
|
+ <mx:HDividedBox width="100%" height="100%" liveDragging="true">
|
|
|
|
|
+ <mx:VDividedBox width="30%" height="100%">
|
|
|
|
|
+ <s:Panel title="Watches" width="100%" height="50%">
|
|
|
|
|
+ <mx:VBox width="100%" height="100%">
|
|
|
|
|
+ <mx:HBox width="100%" paddingTop="4" paddingLeft="4">
|
|
|
|
|
+ <s:Button height="20" id="btnAddWatch" label="Add" click="exec('add');" icon="{add}"/>
|
|
|
|
|
+ <s:Button height="20" id="btnRemoveWatch" label="Remove" click="exec('remove');" icon="{remove}"/>
|
|
|
|
|
+ <s:Button height="20" id="btnExpand" label="Expand" click="exec('expand');" />
|
|
|
|
|
+ </mx:HBox>
|
|
|
|
|
+ <s:DataGrid id="gridWatches" width="100%" height="100%" selectionMode="multipleRows">
|
|
|
<s:columns>
|
|
<s:columns>
|
|
|
<s:ArrayList>
|
|
<s:ArrayList>
|
|
|
- <s:GridColumn dataField="Address" headerText="Address" ></s:GridColumn>
|
|
|
|
|
<s:GridColumn dataField="Name" headerText="Name" ></s:GridColumn>
|
|
<s:GridColumn dataField="Name" headerText="Name" ></s:GridColumn>
|
|
|
- <s:GridColumn dataField="RetAddress" headerText="Return" ></s:GridColumn>
|
|
|
|
|
- <s:GridColumn dataField="BasePtr" headerText="Base Ptr" ></s:GridColumn>
|
|
|
|
|
|
|
+ <s:GridColumn dataField="Value" headerText="Value" ></s:GridColumn>
|
|
|
|
|
+ <s:GridColumn dataField="Type" headerText="Type" ></s:GridColumn>
|
|
|
|
|
+ <s:GridColumn dataField="LValue" headerText="Scope" ></s:GridColumn>
|
|
|
</s:ArrayList>
|
|
</s:ArrayList>
|
|
|
</s:columns>
|
|
</s:columns>
|
|
|
</s:DataGrid>
|
|
</s:DataGrid>
|
|
|
- </s:Panel>
|
|
|
|
|
- </mx:VDividedBox>
|
|
|
|
|
- <mx:VDividedBox width="70%" height="100%">
|
|
|
|
|
- <s:Panel id="codeBox" width="100%" height="70%" title="Code">
|
|
|
|
|
- <mx:VBox width="100%" height="100%">
|
|
|
|
|
- <mx:HBox width="100%">
|
|
|
|
|
- <s:DropDownList width="100%" id="lstSources" change="lstSources_changeHandler(event)" labelFunction="getSourceName" />
|
|
|
|
|
- </mx:HBox>
|
|
|
|
|
-
|
|
|
|
|
- <s:Scroller width="100%" height="100%">
|
|
|
|
|
- <s:RichEditableText id="txtCode" width="100%" backgroundColor="0x444444" height="100%" fontFamily="UbuntuMono" fontSize="14" editable="true" changing="txtCode_changingHandler(event)" />
|
|
|
|
|
- </s:Scroller>
|
|
|
|
|
- </mx:VBox>
|
|
|
|
|
- </s:Panel>
|
|
|
|
|
- <s:Panel id="outputBox" width="100%" height="30%" title="Output">
|
|
|
|
|
- <s:TextArea id="textOutput" width="100%" height="100%" editable="false" />
|
|
|
|
|
- </s:Panel>
|
|
|
|
|
|
|
+ </mx:VBox>
|
|
|
|
|
+ </s:Panel>
|
|
|
|
|
+ <s:Panel title="Stack" width="100%" height="50%">
|
|
|
|
|
+ <s:DataGrid id="gridStack" width="100%" height="100%" sortableColumns="false">
|
|
|
|
|
+ <s:columns>
|
|
|
|
|
+ <s:ArrayList>
|
|
|
|
|
+ <s:GridColumn dataField="Address" headerText="Address" ></s:GridColumn>
|
|
|
|
|
+ <s:GridColumn dataField="Name" headerText="Name" ></s:GridColumn>
|
|
|
|
|
+ <s:GridColumn dataField="RetAddress" headerText="Return" ></s:GridColumn>
|
|
|
|
|
+ <s:GridColumn dataField="BasePtr" headerText="Base Ptr" ></s:GridColumn>
|
|
|
|
|
+ </s:ArrayList>
|
|
|
|
|
+ </s:columns>
|
|
|
|
|
+ </s:DataGrid>
|
|
|
|
|
+ </s:Panel>
|
|
|
|
|
+ </mx:VDividedBox>
|
|
|
|
|
+ <mx:VDividedBox width="70%" height="100%">
|
|
|
|
|
+ <s:Panel id="codeBox" width="100%" height="70%" title="Code">
|
|
|
|
|
+ <mx:VBox width="100%" height="100%">
|
|
|
|
|
+ <mx:HBox width="100%">
|
|
|
|
|
+ <s:DropDownList width="100%" id="lstSources" change="lstSources_changeHandler(event)" labelFunction="getSourceName" />
|
|
|
|
|
+ </mx:HBox>
|
|
|
|
|
+
|
|
|
|
|
+ <s:Scroller width="100%" height="100%">
|
|
|
|
|
+ <s:RichEditableText id="txtCode" width="100%" backgroundColor="0x444444" height="100%"
|
|
|
|
|
+ fontFamily="UbuntuMono" fontSize="14" editable="true"
|
|
|
|
|
+ selectionHighlighting="always"
|
|
|
|
|
+ selectionChange="updateCaretLabel();"
|
|
|
|
|
+ changing="txtCode_changingHandler(event)" />
|
|
|
|
|
+ </s:Scroller>
|
|
|
|
|
+ </mx:VBox>
|
|
|
|
|
+ </s:Panel>
|
|
|
|
|
+ <s:Panel id="outputBox" width="100%" height="30%" title="Output">
|
|
|
|
|
+ <s:TextArea id="textOutput" width="100%" height="100%" editable="false" />
|
|
|
|
|
+ </s:Panel>
|
|
|
</mx:VDividedBox>
|
|
</mx:VDividedBox>
|
|
|
-
|
|
|
|
|
- </mx:HDividedBox>
|
|
|
|
|
|
|
|
|
|
- </mx:VBox>
|
|
|
|
|
|
|
+ </mx:HDividedBox>
|
|
|
|
|
+
|
|
|
|
|
+ <mx:HBox height="24" paddingTop="4" paddingLeft="8">
|
|
|
|
|
+ <s:Label id="txtCaret" verticalAlign="middle" />
|
|
|
|
|
+ </mx:HBox>
|
|
|
|
|
+
|
|
|
|
|
+ </mx:VBox>
|
|
|
</s:Application>
|
|
</s:Application>
|