瀏覽代碼

- Changed to SynEdit / Added support for XML Response

Simon Grossenbacher 8 年之前
父節點
當前提交
62b75f2254
共有 14 個文件被更改,包括 778 次插入1495 次删除
  1. 0 167
      Colors/Blue.json
  2. 2 2
      Example Config.rdproj
  3. 0 122
      Highlighters/Headers.json
  4. 0 316
      Highlighters/JSON.json
  5. 0 122
      Highlighters/Params.json
  6. 二進制
      RESTDebugger.exe
  7. 3 1
      prj/RESTDebugger.dpr
  8. 209 193
      prj/RESTDebugger.dproj
  9. 二進制
      prj/RESTDebugger.res
  10. 6 6
      prj/RESTDebugger.stat
  11. 49 0
      src/_frmBiggerEditor.dfm
  12. 77 0
      src/_frmBiggerEditor.pas
  13. 198 457
      src/_frmMain.dfm
  14. 234 109
      src/_frmMain.pas

+ 0 - 167
Colors/Blue.json

@@ -1,167 +0,0 @@
-{
-   "Colors": {
-      "Info": {
-         "General": {
-            "Version": "1.9.0",
-            "Date": "07.12.2016"
-         },
-         "Author": {
-            "Name": "Lasse Rautiainen",
-            "Mail": "lasse@bonecode.com"
-         }
-      },
-      "Editor": {
-         "Colors": {
-            "Background": "clWhite",
-            "ActiveLineBackground": "$00E6FAFF",
-            "CodeFoldingActiveLineBackground": "$00E6FAFF",
-            "CodeFoldingBackground": "clWhite",
-            "CodeFoldingCollapsedLine": "$00CC9999",
-            "CodeFoldingFoldingLine": "$00CC9999",
-            "CodeFoldingFoldingLineHighlight": "$00CC9999",
-            "CodeFoldingIndent": "$00CC9999",
-            "CodeFoldingIndentHighlight": "$00CC9999",
-            "CodeFoldingHintBackground": "clWhite",
-            "CodeFoldingHintBorder": "$00CC9999",
-            "CodeFoldingHintText": "clNone",
-            "CodeFoldingHintIndicatorBackground": "clWhite",
-            "CodeFoldingHintIndicatorBorder": "$00CC9999",
-            "CodeFoldingHintIndicatorMark": "$00CC9999",
-            "CompletionProposalBackground": "clWhite",
-            "CompletionProposalForeground": "clBlack",
-            "CompletionProposalSelectedBackground": "clHighlight",
-            "CompletionProposalSelectedText": "clHighlightText",
-            "LeftMarginActiveLineBackground": "$00E6FAFF",
-            "LeftMarginBackground": "clWhite",
-            "LeftMarginBorder": "clWhite",
-            "LeftMarginLineNumberLine": "$00CC9999",
-            "LeftMarginLineNumbers": "$00CC9999",
-            "LeftMarginLineStateModified": "clYellow",
-            "LeftMarginLineStateNormal": "clLime",
-            "LeftMarginBookmarkPanel": "clWhite",
-            "MatchingPairMatched": "clAqua",
-            "MatchingPairUnderline": "$00CC9999",
-            "MatchingPairUnmatched": "clYellow",
-            "MinimapBackground": "clNone",
-            "MinimapBookmark": "$00999999",
-            "MinimapVisibleLines": "$00E6FAFF",
-            "RightMargin": "clSilver",
-            "RightMovingEdge": "clSilver",
-            "SearchHighlighterBackground": "$0078AAFF",
-            "SearchHighlighterForeground": "clBlack",
-            "SearchInSelectionBackground": "$00FCFDCD",
-            "SearchMapActiveLine": "$00F0F0F0",
-            "SearchMapBackground": "$00F4F4F4",
-            "SearchMapForeground": "$0078AAFF",
-            "SelectionBackground": "$00A56D53",
-            "SelectionForeground": "clWhite",
-            "SyncEditBackground": "$00FCFDCD",
-            "SyncEditEditBorder": "$00333333",
-            "SyncEditWordBorder": "$00A56D53",
-            "WordWrapIndicatorArrow": "$00333333",
-            "WordWrapIndicatorLines": "$009f6f2f"
-         },
-         "Fonts": {
-            "LineNumbers": "Consolas",
-            "Text": "Consolas",
-            "Minimap": "Consolas",
-            "CodeFoldingHint": "Consolas",
-            "CompletionProposal": "Consolas"
-         },
-         "FontSizes": {
-            "LineNumbers": "8",
-            "Text": "9",
-            "Minimap": "1",
-            "CodeFoldingHint": "8",
-            "CompletionProposal": "8"
-         }
-      },
-      "Elements": [
-         {
-            "Name": "Editor",
-            "Foreground": "$00333333",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "Comment",
-            "Foreground": "$00999999",
-            "Background": "clWhite",
-            "Style": "Italic"
-         },
-         {
-            "Name": "String",
-            "Foreground": "$005049d4",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "Directive",
-            "Foreground": "$00999900",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "Character",
-            "Foreground": "$00cf9f4f",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "ReservedWord",
-            "Foreground": "$009f6f2f",
-            "Background": "clWhite",
-            "Style": "Bold"
-         },
-         {
-            "Name": "Symbol",
-            "Foreground": "clNavy",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "Number",
-            "Foreground": "$00AAAA33",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "HexNumber",
-            "Foreground": "$00AAAA33",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "HighlightedBlock",
-            "Foreground": "clBlack",
-            "Background": "$00f9f7f7"
-         },
-         {
-            "Name": "HighlightedBlockSymbol",
-            "Foreground": "clNavy",
-            "Background": "$00f9f7f7"
-         },
-         {
-            "Name": "AssemblerComment",
-            "Foreground": "$00999999",
-            "Background": "$00f9f7f7",
-            "Style": "Italic"
-         },
-         {
-            "Name": "AssemblerReservedWord",
-            "Foreground": "$009f6f2f",
-            "Background": "$00f9f7f7",
-            "Style": "Bold"
-         },
-         {
-            "Name": "Attribute",
-            "Foreground": "$00cf9f4f",
-            "Background": "clWhite"
-         },
-         {
-            "Name": "Method",
-            "Foreground": "$009f6f2f",
-            "Background": "clWhite",
-            "Style": "Bold"
-         },
-         {
-            "Name": "MethodName",
-            "Foreground": "$00333333",
-            "Background": "clWhite"
-         }
-      ]
-   }
-}

+ 2 - 2
Example Config.rdproj

@@ -1,7 +1,7 @@
 {
 	"Presets": {
 		"Presets": "GET: Simple GET\r\nGET: GET Extra Headers\r\nGET: Use Basic Auth Example\r\nGET: Example URL Parameters\r\nPOST: Json Post Data\r\nDELETE: Delete Data\r\nPUT: Json Put Data\r\nPATCH: Json Patch Data\r\n",
-		"LastUsed": 5
+		"LastUsed": 4
 	},
 	"Preset_0": {
 		"BaseURL": "https://httpbin.org/get",
@@ -51,7 +51,7 @@
 		"BaseURL": "https://httpbin.org/post",
 		"Method": 1,
 		"URLParams": "",
-		"PostData": "{\r\n\t\"Demo\": \"Demo Data\"\r\n}",
+		"PostData": "{\r\n  \"Demo\": \"Demo Data\",\r\n \"Hurra\": \"ole\"\r\n}\r\n",
 		"ExtraHeaders": "",
 		"PostDataContentType": "application/json",
 		"UseBasicAuth": false,

+ 0 - 122
Highlighters/Headers.json

@@ -1,122 +0,0 @@
-{
-   "Highlighter": {
-      "Info": {
-         "General": {
-            "Version": "1.9.0",
-            "Date": "01.01.2017",
-            "Sample": [
-               "; Comment\r\n",
-               "[Section]\r\n",
-               "Name=Value"
-            ]
-         },
-         "Author": {
-            "Name": "Lasse Rautiainen",
-            "Mail": "lasse@bonecode.com"
-         }
-      },
-      "MainRules": {
-         "Attributes": {
-            "Element": "Editor"
-         },
-         "SubRules": {
-            "Range": [
-               {
-                  "Type": "LineComment",
-                  "Attributes": {
-                     "Element": "Comment"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true,
-                     "OpenBeginningOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": ";"
-                  }
-               },
-               {
-                  "Type": "String",
-                  "Attributes": {
-                     "Element": "ReservedWord"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": "[",
-                     "Close": "]"
-                  }
-               },
-               {
-                  "Type": "String",
-                  "Attributes": {
-                     "Element": "String"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": ":"
-                  }
-               }
-            ],
-            "KeyList": [
-               {
-                  "Type": "Symbol",
-                  "Words": [
-                     ":"
-                  ],
-                  "Attributes": {
-                     "Element": "Symbol"
-                  }
-               }
-            ]
-         }
-      }
-   },
-   "CodeFolding": {
-      "Ranges": [
-         {
-            "Options": {
-               "MatchingPairHighlight": false
-            },
-            "SkipRegion": [
-               {
-                  "OpenToken": ";",
-                  "RegionType": "SingleLine"
-               }
-            ],
-            "FoldRegion": [
-               {
-                  "OpenToken": "[",
-                  "CloseToken": "[",
-                  "Properties": {
-                     "OpenTokenBeginningOfLine": true,
-                     "CloseTokenBeginningOfLine": true,
-                     "OpenIsClose": true,
-                     "TokenEndIsPreviousLine": true,
-                     "OpenTokenEnd": "]",
-                     "BreakCharFollows": false
-                  }
-               }
-            ]
-         }
-      ]
-   },
-   "MatchingPair": {
-      "Pairs": [
-         {
-            "OpenToken": "[",
-            "CloseToken": "]"
-         }
-      ]
-   },
-   "CompletionProposal": {
-      "SkipRegion": [
-         {
-            "OpenToken": ";",
-            "RegionType": "SingleLine"
-         }
-      ]
-   }
-}

+ 0 - 316
Highlighters/JSON.json

@@ -1,316 +0,0 @@
-{
-   "Highlighter": {
-      "Info": {
-         "General": {
-            "Version": "1.9.0",
-            "Date": "01.01.2017",
-            "Sample": [
-               "{\r\n",
-               "  \"firstName\": \"John\",\r\n",
-               "  \"lastName\": \"Smith\",\r\n",
-               "  \"age\": 25,\r\n",
-               "  \"address\":\r\n",
-               "  {\r\n",
-               "    \"streetAddress\": \"21 2nd Street\",\r\n",
-               "    \"city\": \"New York\",\r\n",
-               "    \"state\": \"NY\",\r\n",
-               "    \"postalCode\": \"10021\"\r\n",
-               "  },\r\n",
-               "  \"phoneNumber\":\r\n",
-               "  [\r\n",
-               "    {\r\n",
-               "      \"type\": \"home\",\r\n",
-               "      \"number\": \"212 555-1234\"\r\n",
-               "    },\r\n",
-               "    {\r\n",
-               "      \"type\": \"fax\",\r\n",
-               "      \"number\": \"646 555-4567\"\r\n",
-               "    }\r\n",
-               "  ]\r\n",
-               "}"
-            ]
-         },
-         "Author": {
-            "Name": "Lasse Rautiainen",
-            "Mail": "lasse@bonecode.com"
-         }
-      },
-      "MainRules": {
-         "Attributes": {
-            "Element": "Editor"
-         },
-         "Delimiters": "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~",
-         "SubRules": {
-            "Range": [
-               {
-                  "Type": "String",
-                  "Attributes": {
-                     "Element": "Attribute"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": "\"",
-                     "Close": "\""
-                  },
-                  "SubRules": {
-                     "Range": [
-                        {
-                           "Type": "String",
-                           "Attributes": {
-                              "Element": "Attribute"
-                           },
-                           "Properties": {
-                              "CloseOnEndOfLine": true,
-                              "CloseOnTerm": true
-                           },
-                           "TokenRange": {
-                              "Open": "\\\"",
-                              "Close": "\""
-                           }
-                        },
-                        {
-                           "Type": "String",
-                           "Attributes": {
-                              "Element": "Attribute"
-                           },
-                           "Properties": {
-                              "CloseOnEndOfLine": true,
-                              "CloseOnTerm": true
-                           },
-                           "TokenRange": {
-                              "Open": "\\\\",
-                              "Close": ""
-                           }
-                        }
-                     ]
-                  }
-               },
-               {
-                  "Type": "String",
-                  "Attributes": {
-                     "Element": "Symbol"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": ":"
-                  },
-                  "SubRules": {
-                     "Range": [
-                        {
-                           "Type": "String",
-                           "Attributes": {
-                              "Element": "Symbol"
-                           },
-                           "Properties": {
-                              "AlternativeClose": [
-                                 "{"
-                              ]
-                           },
-                           "TokenRange": {
-                              "Open": "[",
-                              "Close": "]"
-                           },
-                           "SubRules": {
-                              "Range": [
-                                 {
-                                    "Type": "String",
-                                    "Attributes": {
-                                       "Element": "String"
-                                    },
-                                    "Properties": {
-                                       "CloseOnEndOfLine": true
-                                    },
-                                    "TokenRange": {
-                                       "Open": "\"",
-                                       "Close": "\""
-                                    },
-                                    "SubRules": {
-                                       "Range": [
-                                          {
-                                             "Type": "String",
-                                             "Attributes": {
-                                                "Element": "String"
-                                             },
-                                             "Properties": {
-                                                "CloseOnEndOfLine": true,
-                                                "CloseOnTerm": true
-                                             },
-                                             "TokenRange": {
-                                                "Open": "\\\"",
-                                                "Close": "\""
-                                             }
-                                          },
-                                          {
-                                             "Type": "String",
-                                             "Attributes": {
-                                                "Element": "String"
-                                             },
-                                             "Properties": {
-                                                "CloseOnEndOfLine": true,
-                                                "CloseOnTerm": true
-                                             },
-                                             "TokenRange": {
-                                                "Open": "\\\\",
-                                                "Close": ""
-                                             }
-                                          }
-                                       ]
-                                    }
-                                 }
-                              ]
-                           }
-                        },
-                        {
-                           "Type": "String",
-                           "Attributes": {
-                              "Element": "String"
-                           },
-                           "TokenRange": {
-                              "Open": "\"",
-                              "Close": "\""
-                           },
-                           "SubRules": {
-                              "Range": [
-                                 {
-                                    "Type": "String",
-                                    "Attributes": {
-                                       "Element": "String"
-                                    },
-                                    "Properties": {
-                                       "CloseOnEndOfLine": true,
-                                       "CloseOnTerm": true
-                                    },
-                                    "TokenRange": {
-                                       "Open": "\\\"",
-                                       "Close": "\""
-                                    }
-                                 },
-                                 {
-                                    "Type": "String",
-                                    "Attributes": {
-                                       "Element": "String"
-                                    },
-                                    "Properties": {
-                                       "CloseOnEndOfLine": true,
-                                       "CloseOnTerm": true
-                                    },
-                                    "TokenRange": {
-                                       "Open": "\\\\",
-                                       "Close": ""
-                                    }
-                                 }
-                              ]
-                           }
-                        }
-                     ]
-                  }
-               }
-            ],
-            "KeyList": [
-               {
-                  "Type": "Symbol",
-                  "Words": [
-                     ":",
-                     ";",
-                     "<",
-                     ">",
-                     "=",
-                     "/",
-                     "*",
-                     ".",
-                     ",",
-                     "-",
-                     "+",
-                     "(",
-                     ")",
-                     "[",
-                     "]",
-                     "{",
-                     "}"
-                  ],
-                  "Attributes": {
-                     "Element": "Symbol"
-                  }
-               }
-            ],
-            "Set": [
-               {
-                  "Type": "Numbers",
-                  "Symbols": "0123456789",
-                  "Attributes": {
-                     "Element": "Number"
-                  }
-               },
-               {
-                  "Type": "Float",
-                  "Symbols": ".0123456789",
-                  "Attributes": {
-                     "Element": "Number"
-                  }
-               }
-            ]
-         }
-      }
-   },
-   "CodeFolding": {
-      "Ranges": [
-         {
-            "Options": {
-               "StringEscapeChar": "\\"
-            },
-            "SkipRegion": [
-               {
-                  "OpenToken": "\"",
-                  "CloseToken": "\"",
-                  "RegionType": "SingleLineString"
-               }
-            ],
-            "FoldRegion": [
-               {
-                  "OpenToken": "{",
-                  "CloseToken": "}",
-                  "Properties": {
-                     "BreakCharFollows": false
-                  }
-               },
-               {
-                  "OpenToken": "[",
-                  "CloseToken": "]",
-                  "Properties": {
-                     "BreakCharFollows": false
-                  }
-               }
-            ]
-         }
-      ]
-   },
-   "MatchingPair": {
-      "Pairs": [
-         {
-            "OpenToken": "(",
-            "CloseToken": ")"
-         },
-         {
-            "OpenToken": "[",
-            "CloseToken": "]"
-         },
-         {
-            "OpenToken": "{",
-            "CloseToken": "}"
-         }
-      ]
-   },
-   "CompletionProposal": {
-      "SkipRegion": [
-         {
-            "OpenToken": "\"",
-            "CloseToken": "\"",
-            "RegionType": "SingleLineString"
-         }
-      ]
-   }
-}

+ 0 - 122
Highlighters/Params.json

@@ -1,122 +0,0 @@
-{
-   "Highlighter": {
-      "Info": {
-         "General": {
-            "Version": "1.9.0",
-            "Date": "01.01.2017",
-            "Sample": [
-               "; Comment\r\n",
-               "[Section]\r\n",
-               "Name=Value"
-            ]
-         },
-         "Author": {
-            "Name": "Lasse Rautiainen",
-            "Mail": "lasse@bonecode.com"
-         }
-      },
-      "MainRules": {
-         "Attributes": {
-            "Element": "Editor"
-         },
-         "SubRules": {
-            "Range": [
-               {
-                  "Type": "LineComment",
-                  "Attributes": {
-                     "Element": "Comment"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true,
-                     "OpenBeginningOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": ";"
-                  }
-               },
-               {
-                  "Type": "String",
-                  "Attributes": {
-                     "Element": "ReservedWord"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": "[",
-                     "Close": "]"
-                  }
-               },
-               {
-                  "Type": "String",
-                  "Attributes": {
-                     "Element": "String"
-                  },
-                  "Properties": {
-                     "CloseOnEndOfLine": true
-                  },
-                  "TokenRange": {
-                     "Open": "="
-                  }
-               }
-            ],
-            "KeyList": [
-               {
-                  "Type": "Symbol",
-                  "Words": [
-                     "="
-                  ],
-                  "Attributes": {
-                     "Element": "Symbol"
-                  }
-               }
-            ]
-         }
-      }
-   },
-   "CodeFolding": {
-      "Ranges": [
-         {
-            "Options": {
-               "MatchingPairHighlight": false
-            },
-            "SkipRegion": [
-               {
-                  "OpenToken": ";",
-                  "RegionType": "SingleLine"
-               }
-            ],
-            "FoldRegion": [
-               {
-                  "OpenToken": "[",
-                  "CloseToken": "[",
-                  "Properties": {
-                     "OpenTokenBeginningOfLine": true,
-                     "CloseTokenBeginningOfLine": true,
-                     "OpenIsClose": true,
-                     "TokenEndIsPreviousLine": true,
-                     "OpenTokenEnd": "]",
-                     "BreakCharFollows": false
-                  }
-               }
-            ]
-         }
-      ]
-   },
-   "MatchingPair": {
-      "Pairs": [
-         {
-            "OpenToken": "[",
-            "CloseToken": "]"
-         }
-      ]
-   },
-   "CompletionProposal": {
-      "SkipRegion": [
-         {
-            "OpenToken": ";",
-            "RegionType": "SingleLine"
-         }
-      ]
-   }
-}

二進制
RESTDebugger.exe


+ 3 - 1
prj/RESTDebugger.dpr

@@ -3,7 +3,8 @@ program RESTDebugger;
 uses
   FastMM4,
   Vcl.Forms,
-  _frmMain in '..\src\_frmMain.pas' {frmMain};
+  _frmMain in '..\src\_frmMain.pas' {frmMain},
+  _frmBiggerEditor in '..\src\_frmBiggerEditor.pas' {frmBiggerEditor};
 
 {$R *.res}
 
@@ -11,5 +12,6 @@ begin
   Application.Initialize;
   Application.MainFormOnTaskbar := True;
   Application.CreateForm(TfrmMain, frmMain);
+  Application.CreateForm(TfrmBiggerEditor, frmBiggerEditor);
   Application.Run;
 end.

+ 209 - 193
prj/RESTDebugger.dproj

@@ -151,6 +151,10 @@
             <Form>frmMain</Form>
             <FormType>dfm</FormType>
         </DCCReference>
+        <DCCReference Include="..\src\_frmBiggerEditor.pas">
+            <Form>frmBiggerEditor</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
         <BuildConfiguration Include="Release">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -197,62 +201,76 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployClass Name="DependencyModule">
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                        <Extensions>.dll;.bpl</Extensions>
+                <DeployFile LocalName="..\RESTDebugger.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win64">
+                        <RemoteName>RESTDebugger.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
                     </Platform>
-                    <Platform Name="iOSDevice64">
+                </DeployFile>
+                <DeployFile LocalName="..\RESTDebugger.rsm" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win64">
+                        <RemoteName>RESTDebugger.rsm</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployClass Name="AdditionalDebugSymbols">
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
                     </Platform>
                     <Platform Name="OSX32">
                         <RemoteDir>Contents\MacOS</RemoteDir>
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
+                    <Platform Name="Win32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>0</Operation>
                     </Platform>
-                    <Platform Name="iOSSimulator">
+                </DeployClass>
+                <DeployClass Name="AndroidClassesDexFile">
+                    <Platform Name="Android">
+                        <RemoteDir>classes</RemoteDir>
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectOSXResource">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\Resources</RemoteDir>
+                <DeployClass Name="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="AndroidClassesDexFile">
+                <DeployClass Name="AndroidLibnativeArmeabiFile">
                     <Platform Name="Android">
-                        <RemoteDir>classes</RemoteDir>
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="AdditionalDebugSymbols">
-                    <Platform Name="Win32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\mips</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="iPad_Launch768">
-                    <Platform Name="iOSSimulator">
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice64">
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
@@ -262,345 +280,343 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="AndroidLibnativeMipsFile">
+                <DeployClass Name="Android_LauncherIcon36">
                     <Platform Name="Android">
-                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Required="true" Name="ProjectOutput">
-                    <Platform Name="iOSDevice64">
+                <DeployClass Name="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="Linux64">
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-small</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage640">
                     <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <RemoteDir>res\drawable-large</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSSimulator">
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="DependencyFramework">
+                <DeployClass Name="DebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                     </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyFramework">
                     <Platform Name="OSX32">
                         <RemoteDir>Contents\MacOS</RemoteDir>
                         <Operation>1</Operation>
                         <Extensions>.framework</Extensions>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectUWPManifest">
                     <Platform Name="Win32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <Operation>1</Operation>
+                        <Operation>0</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="iPhone_Launch640">
-                    <Platform Name="iOSSimulator">
+                <DeployClass Name="DependencyModule">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
                     <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch1024">
                     <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice64">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.dll;.bpl</Extensions>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectiOSDeviceDebug">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                <DeployClass Required="true" Name="DependencyPackage">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                    <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch320">
                     <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice64">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
                         <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectiOSInfoPList">
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>0</Operation>
                     </Platform>
                     <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
+                        <Operation>0</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
+                    <Platform Name="iOSSimulator">
+                        <Operation>0</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeArmeabiFile">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi</RemoteDir>
-                        <Operation>1</Operation>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="DebugSymbols">
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                     </Platform>
-                    <Platform Name="iOSSimulator">
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1024">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
                 <DeployClass Name="iPad_Launch1536">
-                    <Platform Name="iOSSimulator">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
                     <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="Android_SplashImage470">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-normal</RemoteDir>
+                <DeployClass Name="iPad_Launch2048">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon96">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                    <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage640">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-large</RemoteDir>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="iPhone_Launch640x1136">
-                    <Platform Name="iOSSimulator">
+                <DeployClass Name="iPad_Launch768">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
                     <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="UWP_DelphiLogo44">
-                    <Platform Name="Win32">
-                        <RemoteDir>Assets</RemoteDir>
+                <DeployClass Name="iPhone_Launch320">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="Win64">
-                        <RemoteDir>Assets</RemoteDir>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectiOSEntitlements">
+                <DeployClass Name="iPhone_Launch640">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
                     <Platform Name="iOSDevice64">
-                        <RemoteDir>..\</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
-                        <RemoteDir>..\</RemoteDir>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="Android_LauncherIcon72">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                <DeployClass Name="iPhone_Launch640x1136">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidGDBServer">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                    <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXInfoPList">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents</RemoteDir>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectOSXEntitlements">
-                    <Platform Name="OSX32">
-                        <RemoteDir>..\</RemoteDir>
+                <DeployClass Name="ProjectAndroidManifest">
+                    <Platform Name="Android">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="UWP_DelphiLogo150">
-                    <Platform Name="Win32">
-                        <RemoteDir>Assets</RemoteDir>
+                <DeployClass Name="ProjectiOSDeviceDebug">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="Win64">
-                        <RemoteDir>Assets</RemoteDir>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="iPad_Launch2048">
-                    <Platform Name="iOSSimulator">
+                <DeployClass Name="ProjectiOSDeviceResourceRules">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
                     <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
                     </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSEntitlements">
                     <Platform Name="iOSDevice32">
+                        <RemoteDir>..\</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashStyles">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="Android_SplashImage426">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-small</RemoteDir>
+                <DeployClass Name="ProjectiOSInfoPList">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashImageDef">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable</RemoteDir>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
                 <DeployClass Name="ProjectiOSResource">
-                    <Platform Name="iOSSimulator">
+                    <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
                     <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectAndroidManifest">
-                    <Platform Name="Android">
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="Android_DefaultAppIcon">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable</RemoteDir>
+                <DeployClass Name="ProjectOSXInfoPList">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="File">
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>0</Operation>
-                    </Platform>
+                <DeployClass Name="ProjectOSXResource">
                     <Platform Name="OSX32">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="Android">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>0</Operation>
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="AndroidServiceOutput">
+                <DeployClass Required="true" Name="ProjectOutput">
                     <Platform Name="Android">
                         <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Required="true" Name="DependencyPackage">
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                        <Extensions>.bpl</Extensions>
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
                     </Platform>
                     <Platform Name="iOSDevice64">
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
+                    <Platform Name="iOSSimulator">
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                    <Platform Name="Linux64">
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
                     </Platform>
-                    <Platform Name="iOSSimulator">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
                         <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="Android_LauncherIcon48">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                <DeployClass Name="ProjectUWPManifest">
+                    <Platform Name="Win32">
                         <Operation>1</Operation>
                     </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage960">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                    <Platform Name="Win64">
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="Android_LauncherIcon36">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                <DeployClass Name="UWP_DelphiLogo150">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
-                <DeployClass Name="ProjectiOSDeviceResourceRules">
-                    <Platform Name="iOSDevice64">
+                <DeployClass Name="UWP_DelphiLogo44">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
-                    <Platform Name="iOSDevice32">
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>

二進制
prj/RESTDebugger.res


+ 6 - 6
prj/RESTDebugger.stat

@@ -1,10 +1,10 @@
 [Stats]
-EditorSecs=10827
-DesignerSecs=2995
-InspectorSecs=1811
-CompileSecs=439325
-OtherSecs=3037
+EditorSecs=15041
+DesignerSecs=4293
+InspectorSecs=2497
+CompileSecs=647851
+OtherSecs=4074
 StartTime=27.10.2016 18:27:37
 RealKeys=0
 EffectiveKeys=0
-DebugSecs=9671
+DebugSecs=10960

+ 49 - 0
src/_frmBiggerEditor.dfm

@@ -0,0 +1,49 @@
+object frmBiggerEditor: TfrmBiggerEditor
+  Left = 0
+  Top = 0
+  BorderIcons = [biSystemMenu, biMinimize]
+  Caption = 'Editor'
+  ClientHeight = 927
+  ClientWidth = 1210
+  Color = clBtnFace
+  Constraints.MinHeight = 220
+  Constraints.MinWidth = 370
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDefault
+  OnClose = FormClose
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object EditorBiggerEditor: TSynEdit
+    Left = 0
+    Top = 0
+    Width = 1210
+    Height = 927
+    Align = alClient
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'Courier New'
+    Font.Style = []
+    TabOrder = 0
+    OnMouseUp = EditorBiggerEditorMouseUp
+    Gutter.Font.Charset = DEFAULT_CHARSET
+    Gutter.Font.Color = clWindowText
+    Gutter.Font.Height = -11
+    Gutter.Font.Name = 'Courier New'
+    Gutter.Font.Style = []
+    Options = [eoAutoIndent, eoDragDropEditing, eoEnhanceEndKey, eoGroupUndo, eoHideShowScrollbars, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTabsToSpaces]
+    TabWidth = 2
+    WantTabs = True
+    FontSmoothing = fsmNone
+    ExplicitLeft = 470
+    ExplicitTop = 350
+    ExplicitWidth = 200
+    ExplicitHeight = 150
+  end
+end

+ 77 - 0
src/_frmBiggerEditor.pas

@@ -0,0 +1,77 @@
+unit _frmBiggerEditor;
+
+interface
+
+uses
+  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, SynEdit;
+
+type
+  TfrmBiggerEditor = class(TForm)
+    EditorBiggerEditor: TSynEdit;
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure EditorBiggerEditorMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+  private
+    FMainActiveEditor: TSynEdit;
+  public
+    { Public-Deklarationen }
+  end;
+
+var
+  frmBiggerEditor: TfrmBiggerEditor;
+
+implementation
+
+{$R *.dfm}
+
+uses _frmMain;
+
+procedure TfrmBiggerEditor.EditorBiggerEditorMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = mbRight then
+  begin
+    frmMain.ActiveEditor := EditorBiggerEditor;
+    frmMain.PopupEditor.PopupFromCursorPos;
+  end;
+end;
+
+procedure TfrmBiggerEditor.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  frmMain.MainConfig.WriteInteger('BiggerEditorPos', 'Left', Left);
+  frmMain.MainConfig.WriteInteger('BiggerEditorPos', 'Top', Top);
+  frmMain.MainConfig.WriteInteger('BiggerEditorPos', 'Width', Width);
+  frmMain.MainConfig.WriteInteger('BiggerEditorPos', 'Height', Height);
+
+  frmMain.ActiveEditor := FMainActiveEditor;
+  frmMain.ActiveEditor.Lines.Text := EditorBiggerEditor.Lines.Text;
+end;
+
+procedure TfrmBiggerEditor.FormShow(Sender: TObject);
+begin
+  Left := frmMain.MainConfig.ReadInteger('BiggerEditorPos', 'Left', Round((Screen.Width - Width) div 2));
+
+  if Left >= Screen.Width then
+  begin
+    Left := 10;
+  end;
+
+  Top := frmMain.MainConfig.ReadInteger('BiggerEditorPos', 'Top', Round((Screen.Height - Height) div 2));
+
+  if Top >= Screen.Height then
+  begin
+    Top := 10;
+  end;
+
+  Width := frmMain.MainConfig.ReadInteger('BiggerEditorPos', 'Width', 1212);
+  Height := frmMain.MainConfig.ReadInteger('BiggerEditorPos', 'Height', 920);
+
+  FMainActiveEditor := frmMain.ActiveEditor;
+  EditorBiggerEditor.Highlighter := FMainActiveEditor.Highlighter;
+  EditorBiggerEditor.Lines.Text := FMainActiveEditor.Lines.Text;
+  frmMain.ActiveEditor := EditorBiggerEditor;
+end;
+
+end.

+ 198 - 457
src/_frmMain.dfm

@@ -118,7 +118,7 @@ object frmMain: TfrmMain
     Font.Name = 'Tahoma'
     Font.Style = []
   end
-  object cxPageControl1: TcxPageControl
+  object PageControlResponse: TcxPageControl
     Left = 0
     Top = 448
     Width = 725
@@ -134,196 +134,59 @@ object frmMain: TfrmMain
     object tabContent: TcxTabSheet
       Caption = 'Response Content'
       ImageIndex = 0
-      object EditorContent: TBCEditor
+      object EditorContent: TSynEdit
         Left = 0
         Top = 0
         Width = 721
         Height = 434
-        Cursor = crIBeam
-        ActiveLine.Indicator.Visible = False
         Align = alClient
-        Caret.Options = []
-        CodeFolding.Colors.Indent = clBlack
-        CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
-        CodeFolding.Hint.Font.Color = clWindowText
-        CodeFolding.Hint.Font.Height = -11
-        CodeFolding.Hint.Font.Name = 'Courier New'
-        CodeFolding.Hint.Font.Style = []
-        CodeFolding.Hint.Indicator.Glyph.Visible = False
-        CodeFolding.Width = 16
-        CodeFolding.Visible = True
-        CompletionProposal.CloseChars = '()[]. '
-        CompletionProposal.Columns = <
-          item
-          end>
-        CompletionProposal.Font.Charset = DEFAULT_CHARSET
-        CompletionProposal.Font.Color = clWindowText
-        CompletionProposal.Font.Height = -11
-        CompletionProposal.Font.Name = 'Courier New'
-        CompletionProposal.Font.Style = []
-        CompletionProposal.ShortCut = 16416
-        CompletionProposal.Trigger.Chars = '.'
-        CompletionProposal.Trigger.Enabled = False
-        Directories.Colors = 'Colors'
-        Directories.Highlighters = 'Highlighters'
         Font.Charset = DEFAULT_CHARSET
         Font.Color = clWindowText
         Font.Height = -13
         Font.Name = 'Courier New'
+        Font.Pitch = fpFixed
         Font.Style = []
-        LeftMargin.Bookmarks.Visible = False
-        LeftMargin.Font.Charset = DEFAULT_CHARSET
-        LeftMargin.Font.Color = 13408665
-        LeftMargin.Font.Height = -11
-        LeftMargin.Font.Name = 'Courier New'
-        LeftMargin.Font.Style = []
-        LeftMargin.Marks.Visible = False
-        LeftMargin.MarksPanel.Visible = False
-        LeftMargin.Width = 35
-        Lines.Strings = (
-          'EditorContent')
-        LineSpacing = 0
-        MatchingPair.Enabled = True
-        Minimap.Font.Charset = DEFAULT_CHARSET
-        Minimap.Font.Color = clWindowText
-        Minimap.Font.Height = -1
-        Minimap.Font.Name = 'Courier New'
-        Minimap.Font.Style = []
-        OnMouseUp = EditorContentMouseUp
-        RightMargin.Visible = False
-        Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
-        Search.Enabled = False
-        SpecialChars.Style = scsDot
-        SyncEdit.ShortCut = 24650
         TabOrder = 0
-        WordWrap.Indicator.Bitmap.Data = {
-          7E030000424D7E0300000000000036000000280000000F0000000E0000000100
-          2000000000004803000000000000000000000000000000000000FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
-          000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000
-          0000FF00FF00FF00FF00FF00FF00FF00FF008000000080000000FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF008000000080000000800000008000000080000000FF00
-          FF00FF00FF00FF00FF00FF00FF00000000000000000000000000FF00FF00FF00
-          FF00FF00FF00FF00FF008000000080000000FF00FF00FF00FF0080000000FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF0080000000FF00FF00FF00FF0080000000FF00FF00FF00
-          FF00FF00FF000000000000000000000000000000000000000000FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00800000008000000080000000800000008000
-          00008000000080000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00}
-        WordWrap.Indicator.MaskColor = clFuchsia
+        OnMouseUp = EditorContentMouseUp
+        Gutter.Font.Charset = DEFAULT_CHARSET
+        Gutter.Font.Color = clWindowText
+        Gutter.Font.Height = -11
+        Gutter.Font.Name = 'Courier New'
+        Gutter.Font.Style = []
+        Gutter.ShowLineNumbers = True
+        Options = [eoAutoIndent, eoDragDropEditing, eoEnhanceEndKey, eoGroupUndo, eoHideShowScrollbars, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTabsToSpaces]
+        TabWidth = 2
+        WantTabs = True
+        FontSmoothing = fsmNone
       end
     end
     object tabHeaders: TcxTabSheet
       Caption = 'Response Headers'
       ImageIndex = 1
-      object EditorResponseHeaders: TBCEditor
+      object EditorResponseHeaders: TSynEdit
         Left = 0
         Top = 0
         Width = 721
         Height = 434
-        Cursor = crIBeam
-        ActiveLine.Indicator.Visible = False
         Align = alClient
-        Caret.Options = []
-        CodeFolding.Colors.Indent = clBlack
-        CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
-        CodeFolding.Hint.Font.Color = clWindowText
-        CodeFolding.Hint.Font.Height = -11
-        CodeFolding.Hint.Font.Name = 'Courier New'
-        CodeFolding.Hint.Font.Style = []
-        CodeFolding.Hint.Indicator.Glyph.Visible = False
-        CodeFolding.Width = 16
-        CompletionProposal.CloseChars = '()[]. '
-        CompletionProposal.Columns = <
-          item
-          end>
-        CompletionProposal.Enabled = False
-        CompletionProposal.Font.Charset = DEFAULT_CHARSET
-        CompletionProposal.Font.Color = clWindowText
-        CompletionProposal.Font.Height = -11
-        CompletionProposal.Font.Name = 'Courier New'
-        CompletionProposal.Font.Style = []
-        CompletionProposal.ShortCut = 16416
-        CompletionProposal.Trigger.Chars = '.'
-        CompletionProposal.Trigger.Enabled = False
-        Directories.Colors = 'Colors'
-        Directories.Highlighters = 'Highlighters'
         Font.Charset = DEFAULT_CHARSET
         Font.Color = clWindowText
         Font.Height = -13
         Font.Name = 'Courier New'
+        Font.Pitch = fpFixed
         Font.Style = []
-        LeftMargin.Bookmarks.Visible = False
-        LeftMargin.Font.Charset = DEFAULT_CHARSET
-        LeftMargin.Font.Color = 13408665
-        LeftMargin.Font.Height = -11
-        LeftMargin.Font.Name = 'Courier New'
-        LeftMargin.Font.Style = []
-        LeftMargin.Marks.Visible = False
-        LeftMargin.MarksPanel.Visible = False
-        LeftMargin.Width = 35
-        Lines.Strings = (
-          'EditorResponseHeaders')
-        LineSpacing = 0
-        MatchingPair.Enabled = True
-        Minimap.Font.Charset = DEFAULT_CHARSET
-        Minimap.Font.Color = clWindowText
-        Minimap.Font.Height = -1
-        Minimap.Font.Name = 'Courier New'
-        Minimap.Font.Style = []
-        OnMouseUp = EditorResponseHeadersMouseUp
-        RightMargin.Visible = False
-        Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
-        SpecialChars.Style = scsDot
-        SyncEdit.ShortCut = 24650
         TabOrder = 0
-        WordWrap.Indicator.Bitmap.Data = {
-          7E030000424D7E0300000000000036000000280000000F0000000E0000000100
-          2000000000004803000000000000000000000000000000000000FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
-          000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000
-          0000FF00FF00FF00FF00FF00FF00FF00FF008000000080000000FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF008000000080000000800000008000000080000000FF00
-          FF00FF00FF00FF00FF00FF00FF00000000000000000000000000FF00FF00FF00
-          FF00FF00FF00FF00FF008000000080000000FF00FF00FF00FF0080000000FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF0080000000FF00FF00FF00FF0080000000FF00FF00FF00
-          FF00FF00FF000000000000000000000000000000000000000000FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00800000008000000080000000800000008000
-          00008000000080000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-          FF00}
-        WordWrap.Indicator.MaskColor = clFuchsia
+        OnMouseUp = EditorResponseHeadersMouseUp
+        Gutter.Font.Charset = DEFAULT_CHARSET
+        Gutter.Font.Color = clWindowText
+        Gutter.Font.Height = -11
+        Gutter.Font.Name = 'Courier New'
+        Gutter.Font.Style = []
+        Gutter.ShowLineNumbers = True
+        Options = [eoAutoIndent, eoDragDropEditing, eoEnhanceEndKey, eoGroupUndo, eoHideShowScrollbars, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTabsToSpaces]
+        TabWidth = 2
+        WantTabs = True
+        FontSmoothing = fsmNone
       end
     end
   end
@@ -335,7 +198,6 @@ object frmMain: TfrmMain
     Align = alTop
     BevelOuter = bvNone
     TabOrder = 0
-    ExplicitTop = 57
     object Label2: TLabel
       Left = 8
       Top = 16
@@ -478,103 +340,6 @@ object frmMain: TfrmMain
       object tabURLParams: TcxTabSheet
         Caption = 'URL Parameters'
         ImageIndex = 0
-        object EditorURLParams: TBCEditor
-          Left = 0
-          Top = 31
-          Width = 583
-          Height = 134
-          Cursor = crIBeam
-          ActiveLine.Indicator.Visible = False
-          Align = alClient
-          Caret.Options = []
-          CodeFolding.Colors.Indent = clBlack
-          CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
-          CodeFolding.Hint.Font.Color = clWindowText
-          CodeFolding.Hint.Font.Height = -11
-          CodeFolding.Hint.Font.Name = 'Courier New'
-          CodeFolding.Hint.Font.Style = []
-          CodeFolding.Hint.Indicator.Glyph.Visible = False
-          CodeFolding.Width = 16
-          CodeFolding.Visible = True
-          CompletionProposal.CloseChars = '()[]. '
-          CompletionProposal.Columns = <
-            item
-            end>
-          CompletionProposal.Font.Charset = DEFAULT_CHARSET
-          CompletionProposal.Font.Color = clWindowText
-          CompletionProposal.Font.Height = -11
-          CompletionProposal.Font.Name = 'Courier New'
-          CompletionProposal.Font.Style = []
-          CompletionProposal.ShortCut = 16416
-          CompletionProposal.Trigger.Chars = '.'
-          CompletionProposal.Trigger.Enabled = False
-          Directories.Colors = 'Colors'
-          Directories.Highlighters = 'Highlighters'
-          Font.Charset = DEFAULT_CHARSET
-          Font.Color = clWindowText
-          Font.Height = -13
-          Font.Name = 'Courier New'
-          Font.Style = []
-          LeftMargin.Bookmarks.Visible = False
-          LeftMargin.Font.Charset = DEFAULT_CHARSET
-          LeftMargin.Font.Color = 13408665
-          LeftMargin.Font.Height = -11
-          LeftMargin.Font.Name = 'Courier New'
-          LeftMargin.Font.Style = []
-          LeftMargin.Marks.Visible = False
-          LeftMargin.MarksPanel.Visible = False
-          LeftMargin.Width = 35
-          Lines.Strings = (
-            '')
-          LineSpacing = 0
-          MatchingPair.Enabled = True
-          Minimap.Font.Charset = DEFAULT_CHARSET
-          Minimap.Font.Color = clWindowText
-          Minimap.Font.Height = -1
-          Minimap.Font.Name = 'Courier New'
-          Minimap.Font.Style = []
-          OnChange = EditorURLParamsChange
-          OnMouseUp = EditorURLParamsMouseUp
-          Options = [eoAutoIndent, eoDragDropEditing, eoTrimTrailingSpaces]
-          RightMargin.Visible = False
-          Scroll.Bars = ssVertical
-          Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
-          SpecialChars.Style = scsDot
-          SyncEdit.Enabled = False
-          SyncEdit.ShortCut = 24650
-          TabOrder = 1
-          WordWrap.Indicator.Bitmap.Data = {
-            7E030000424D7E0300000000000036000000280000000F0000000E0000000100
-            2000000000004803000000000000000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
-            000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000
-            0000FF00FF00FF00FF00FF00FF00FF00FF008000000080000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF008000000080000000800000008000000080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF008000000080000000FF00FF00FF00FF0080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF0080000000FF00FF00FF00FF0080000000FF00FF00FF00
-            FF00FF00FF000000000000000000000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00800000008000000080000000800000008000
-            00008000000080000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00}
-          WordWrap.Indicator.MaskColor = clFuchsia
-        end
         object Panel3: TPanel
           Left = 0
           Top = 0
@@ -591,107 +356,36 @@ object frmMain: TfrmMain
             Caption = 'URL Parameters (One per line name=value):'
           end
         end
-      end
-      object cxTabSheet2: TcxTabSheet
-        Caption = 'Extra Headers'
-        ImageIndex = 1
-        object EditorExtraHeaders: TBCEditor
+        object EditorURLParams: TSynEdit
           Left = 0
-          Top = 31
+          Top = 27
           Width = 583
-          Height = 134
-          Cursor = crIBeam
-          ActiveLine.Indicator.Visible = False
-          Align = alClient
-          Caret.Options = []
-          CodeFolding.Colors.Indent = clBlack
-          CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
-          CodeFolding.Hint.Font.Color = clWindowText
-          CodeFolding.Hint.Font.Height = -11
-          CodeFolding.Hint.Font.Name = 'Courier New'
-          CodeFolding.Hint.Font.Style = []
-          CodeFolding.Hint.Indicator.Glyph.Visible = False
-          CodeFolding.Width = 16
-          CodeFolding.Visible = True
-          CompletionProposal.CloseChars = '()[]. '
-          CompletionProposal.Columns = <
-            item
-            end>
-          CompletionProposal.Font.Charset = DEFAULT_CHARSET
-          CompletionProposal.Font.Color = clWindowText
-          CompletionProposal.Font.Height = -11
-          CompletionProposal.Font.Name = 'Courier New'
-          CompletionProposal.Font.Style = []
-          CompletionProposal.ShortCut = 16416
-          CompletionProposal.Trigger.Chars = '.'
-          CompletionProposal.Trigger.Enabled = False
-          Directories.Colors = 'Colors'
-          Directories.Highlighters = 'Highlighters'
+          Height = 138
+          Align = alBottom
           Font.Charset = DEFAULT_CHARSET
           Font.Color = clWindowText
           Font.Height = -13
           Font.Name = 'Courier New'
+          Font.Pitch = fpFixed
           Font.Style = []
-          LeftMargin.Bookmarks.Visible = False
-          LeftMargin.Font.Charset = DEFAULT_CHARSET
-          LeftMargin.Font.Color = 13408665
-          LeftMargin.Font.Height = -11
-          LeftMargin.Font.Name = 'Courier New'
-          LeftMargin.Font.Style = []
-          LeftMargin.Marks.Visible = False
-          LeftMargin.MarksPanel.Visible = False
-          LeftMargin.Width = 35
-          Lines.Strings = (
-            '')
-          LineSpacing = 0
-          MatchingPair.Enabled = True
-          Minimap.Font.Charset = DEFAULT_CHARSET
-          Minimap.Font.Color = clWindowText
-          Minimap.Font.Height = -1
-          Minimap.Font.Name = 'Courier New'
-          Minimap.Font.Style = []
-          OnChange = EditorURLParamsChange
-          OnMouseUp = EditorExtraHeadersMouseUp
-          Options = [eoAutoIndent, eoDragDropEditing, eoTrimTrailingSpaces]
-          RightMargin.Visible = False
-          Scroll.Bars = ssVertical
-          Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
-          SpecialChars.Style = scsDot
-          SyncEdit.Enabled = False
-          SyncEdit.ShortCut = 24650
           TabOrder = 1
-          WordWrap.Indicator.Bitmap.Data = {
-            7E030000424D7E0300000000000036000000280000000F0000000E0000000100
-            2000000000004803000000000000000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
-            000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000
-            0000FF00FF00FF00FF00FF00FF00FF00FF008000000080000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF008000000080000000800000008000000080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF008000000080000000FF00FF00FF00FF0080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF0080000000FF00FF00FF00FF0080000000FF00FF00FF00
-            FF00FF00FF000000000000000000000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00800000008000000080000000800000008000
-            00008000000080000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00}
-          WordWrap.Indicator.MaskColor = clFuchsia
+          OnMouseUp = EditorURLParamsMouseUp
+          Gutter.Font.Charset = DEFAULT_CHARSET
+          Gutter.Font.Color = clWindowText
+          Gutter.Font.Height = -11
+          Gutter.Font.Name = 'Courier New'
+          Gutter.Font.Style = []
+          Gutter.ShowLineNumbers = True
+          Highlighter = SynIniSyn
+          Options = [eoAutoIndent, eoDragDropEditing, eoEnhanceEndKey, eoGroupUndo, eoHideShowScrollbars, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTabsToSpaces]
+          TabWidth = 2
+          WantTabs = True
+          FontSmoothing = fsmNone
         end
+      end
+      object cxTabSheet2: TcxTabSheet
+        Caption = 'Extra Headers'
+        ImageIndex = 1
         object Panel4: TPanel
           Left = 0
           Top = 0
@@ -708,6 +402,32 @@ object frmMain: TfrmMain
             Caption = 'Extra Headers (One per line name=value):'
           end
         end
+        object EditorExtraHeaders: TSynEdit
+          Left = 0
+          Top = 27
+          Width = 583
+          Height = 138
+          Align = alBottom
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -13
+          Font.Name = 'Courier New'
+          Font.Pitch = fpFixed
+          Font.Style = []
+          TabOrder = 1
+          OnMouseUp = EditorExtraHeadersMouseUp
+          Gutter.Font.Charset = DEFAULT_CHARSET
+          Gutter.Font.Color = clWindowText
+          Gutter.Font.Height = -11
+          Gutter.Font.Name = 'Courier New'
+          Gutter.Font.Style = []
+          Gutter.ShowLineNumbers = True
+          Highlighter = SynIniSyn
+          Options = [eoAutoIndent, eoDragDropEditing, eoEnhanceEndKey, eoGroupUndo, eoHideShowScrollbars, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTabsToSpaces]
+          TabWidth = 2
+          WantTabs = True
+          FontSmoothing = fsmNone
+        end
       end
       object cxTabSheet3: TcxTabSheet
         Caption = 'Authentication'
@@ -731,6 +451,7 @@ object frmMain: TfrmMain
           Top = 11
           Caption = 'Use basic authentication'
           TabOrder = 0
+          Width = 139
         end
         object edtAuthUsername: TcxTextEdit
           Left = 15
@@ -748,103 +469,6 @@ object frmMain: TfrmMain
       object tabPostData: TcxTabSheet
         Caption = 'Post Data'
         ImageIndex = 2
-        object EditorPostData: TBCEditor
-          Left = 0
-          Top = 46
-          Width = 583
-          Height = 119
-          Cursor = crIBeam
-          ActiveLine.Indicator.Visible = False
-          Align = alClient
-          Caret.Options = []
-          CodeFolding.Colors.Indent = clBlack
-          CodeFolding.Hint.Font.Charset = DEFAULT_CHARSET
-          CodeFolding.Hint.Font.Color = clWindowText
-          CodeFolding.Hint.Font.Height = -11
-          CodeFolding.Hint.Font.Name = 'Courier New'
-          CodeFolding.Hint.Font.Style = []
-          CodeFolding.Hint.Indicator.Glyph.Visible = False
-          CodeFolding.Width = 16
-          CodeFolding.Visible = True
-          CompletionProposal.CloseChars = '()[]. '
-          CompletionProposal.Columns = <
-            item
-            end>
-          CompletionProposal.Font.Charset = DEFAULT_CHARSET
-          CompletionProposal.Font.Color = clWindowText
-          CompletionProposal.Font.Height = -11
-          CompletionProposal.Font.Name = 'Courier New'
-          CompletionProposal.Font.Style = []
-          CompletionProposal.ShortCut = 16416
-          CompletionProposal.Trigger.Chars = '.'
-          CompletionProposal.Trigger.Enabled = False
-          Directories.Colors = 'Colors'
-          Directories.Highlighters = 'Highlighters'
-          Font.Charset = DEFAULT_CHARSET
-          Font.Color = clWindowText
-          Font.Height = -13
-          Font.Name = 'Courier New'
-          Font.Style = []
-          LeftMargin.Bookmarks.Visible = False
-          LeftMargin.Font.Charset = DEFAULT_CHARSET
-          LeftMargin.Font.Color = 13408665
-          LeftMargin.Font.Height = -11
-          LeftMargin.Font.Name = 'Courier New'
-          LeftMargin.Font.Style = []
-          LeftMargin.Marks.Visible = False
-          LeftMargin.MarksPanel.Visible = False
-          LeftMargin.Width = 35
-          Lines.Strings = (
-            '')
-          LineSpacing = 0
-          MatchingPair.Enabled = True
-          Minimap.Font.Charset = DEFAULT_CHARSET
-          Minimap.Font.Color = clWindowText
-          Minimap.Font.Height = -1
-          Minimap.Font.Name = 'Courier New'
-          Minimap.Font.Style = []
-          OnChange = EditorURLParamsChange
-          OnMouseUp = EditorPostDataMouseUp
-          Options = [eoAutoIndent, eoDragDropEditing, eoTrimTrailingSpaces]
-          RightMargin.Visible = False
-          Scroll.Bars = ssVertical
-          Scroll.Options = [soShowVerticalScrollHint, soWheelClickMove]
-          SpecialChars.Style = scsDot
-          SyncEdit.Enabled = False
-          SyncEdit.ShortCut = 24650
-          TabOrder = 1
-          WordWrap.Indicator.Bitmap.Data = {
-            7E030000424D7E0300000000000036000000280000000F0000000E0000000100
-            2000000000004803000000000000000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
-            000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000
-            0000FF00FF00FF00FF00FF00FF00FF00FF008000000080000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF008000000080000000800000008000000080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF008000000080000000FF00FF00FF00FF0080000000FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF0080000000FF00FF00FF00FF0080000000FF00FF00FF00
-            FF00FF00FF000000000000000000000000000000000000000000FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF0080000000FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00800000008000000080000000800000008000
-            00008000000080000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
-            FF00}
-          WordWrap.Indicator.MaskColor = clFuchsia
-        end
         object Panel5: TPanel
           Left = 0
           Top = 0
@@ -865,11 +489,40 @@ object frmMain: TfrmMain
             Top = 24
             Properties.Items.Strings = (
               'application/json'
+              'text/xml'
+              'text/plain'
               'application/x-www-form-urlencoded')
+            Properties.OnChange = comboPostContentTypePropertiesChange
             TabOrder = 0
             Width = 391
           end
         end
+        object EditorPostData: TSynEdit
+          Left = 0
+          Top = 52
+          Width = 583
+          Height = 113
+          Align = alBottom
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -13
+          Font.Name = 'Courier New'
+          Font.Pitch = fpFixed
+          Font.Style = []
+          TabOrder = 1
+          OnMouseUp = EditorPostDataMouseUp
+          Gutter.Font.Charset = DEFAULT_CHARSET
+          Gutter.Font.Color = clWindowText
+          Gutter.Font.Height = -11
+          Gutter.Font.Name = 'Courier New'
+          Gutter.Font.Style = []
+          Gutter.ShowLineNumbers = True
+          Highlighter = SynJSONSyn
+          Options = [eoAutoIndent, eoDragDropEditing, eoEnhanceEndKey, eoGroupUndo, eoHideShowScrollbars, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTabsToSpaces]
+          TabWidth = 2
+          WantTabs = True
+          FontSmoothing = fsmNone
+        end
       end
     end
     object btnCopyFullURL: TcxButton
@@ -959,6 +612,7 @@ object frmMain: TfrmMain
     UseSystemFont = True
     Left = 135
     Top = 35
+    PixelsPerInch = 96
     object dxBarManagerBar1: TdxBar
       AllowClose = False
       AllowCustomizing = False
@@ -1143,6 +797,31 @@ object frmMain: TfrmMain
       ShortCut = 16462
       OnClick = dxBarButton2Click
     end
+    object pmnuFormatXML: TdxBarButton
+      Caption = 'Format XML'
+      Category = 0
+      Hint = 'Format XML'
+      Visible = ivAlways
+      ImageIndex = 16
+      OnClick = pmnuFormatXMLClick
+    end
+    object pmnuCompactXML: TdxBarButton
+      Caption = 'Compact XML'
+      Category = 0
+      Hint = 'Compact XML'
+      Visible = ivAlways
+      ImageIndex = 17
+      OnClick = pmnuCompactXMLClick
+    end
+    object pmnuBiggerEditor: TdxBarButton
+      Caption = 'Bigger Editor'
+      Category = 0
+      Hint = 'Bigger Editor'
+      Visible = ivAlways
+      ImageIndex = 18
+      ShortCut = 16454
+      OnClick = pmnuBiggerEditorClick
+    end
     object pmnuCutJsonContent: TdxBarButton
       Caption = 'Cut'
       Category = 1
@@ -1167,12 +846,13 @@ object frmMain: TfrmMain
       ShortCut = 16470
       OnClick = pmnuPasteJsonContentClick
     end
-    object pmnuFormatCodeJsonContent: TdxBarButton
-      Caption = 'Format Code && Syntax check'
+    object pmnuFormatJsonContent: TdxBarButton
+      Caption = 'Format JSON && Syntax check'
       Category = 1
+      Hint = 'Format JSON & Syntax check'
       Visible = ivAlways
       ImageIndex = 16
-      OnClick = pmnuFormatCodeJsonContentClick
+      OnClick = pmnuFormatJsonContentClick
     end
     object pmnuUndoJsonContent: TdxBarButton
       Caption = 'Undo'
@@ -1219,6 +899,7 @@ object frmMain: TfrmMain
     end
   end
   object cxImageList: TcxImageList
+    SourceDPI = 96
     FormatVersion = 1
     DesignInfo = 9175265
     ImageInfo = <
@@ -1887,9 +1568,31 @@ object frmMain: TfrmMain
           0003000000040000000400000004000000030000000200000001000000000000
           0000000000000000000000000000000000000000000000000000000000000000
           0000000000000000000000000000000000000000000000000000}
+      end
+      item
+        ImageClass = 'TdxPNGImage'
+        Image.Data = {
+          89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+          610000001974455874536F6674776172650041646F626520496D616765526561
+          647971C9653C0000000B744558745469746C65004C696E653BCCD9237D000001
+          BC49444154785E8D92316B14411886BFEFF6C805F23F525C7390228D55207045
+          B0136C44D02324162236A2927869028985470E57161B1149AA20FA13AE4882E8
+          BF502C428860B83D5DF6FBBEECECBCCCB095BEB0F7CECC1ECF3CC36C9B889888
+          12B48B55255685FE236DF73CDF7B5F981A99F9677FEB7EE7D69D270590316EC1
+          8C98FD2EC71F5ED680647635A3CD8DDBF562FAE690DC9AAAB879D4C28431668E
+          06AD699ED3AFAB3F74F97B4AF974466EAD14F102C098C1211203C02ECECF697F
+          77448A23ACAEDD1BA8946342C068C638008A8F877B0B18D34AFFEE606E7EFE99
+          48591071461608BE198DB4CD4CFA37D773E3603B52D1A2EA21FE9731C338E8A3
+          6140A596500A491D8D9987AE8D3863731DD2048808B14100BB5595C26A17D00C
+          F61EC41C015A8A376B5E93EB143DAC3A21F350702240B574486F80B32A20EA8E
+          E3B3652AADB3C97116EE818F0447D0E0DEC06B98A42265D25BBE31EEF696C786
+          EB7EF7FA6907060A2984394ED9D7D7934F6F17BB4B072FB61FD6C8E1CE2B074E
+          3CC094D8E0E5060A11F61660B4F27C1ABED819BED81A60AA717F43C59FB0F4F3
+          C7777AF4E0B1D30F2F6BC0B7D3CFF4AF3073F16572842FB68E54F5F71A30DEF7
+          01965B5A410000000049454E44AE426082}
       end>
   end
-  object PopupJsonContent: TdxBarPopupMenu
+  object PopupEditor: TdxBarPopupMenu
     BarManager = dxBarManager
     ItemLinks = <
       item
@@ -1920,15 +1623,53 @@ object frmMain: TfrmMain
       item
         BeginGroup = True
         Visible = True
-        ItemName = 'pmnuFormatCodeJsonContent'
+        ItemName = 'pmnuBiggerEditor'
+      end
+      item
+        BeginGroup = True
+        Visible = True
+        ItemName = 'pmnuFormatJsonContent'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuFormatXML'
       end
       item
         Visible = True
         ItemName = 'pmnuCompactJson'
+      end
+      item
+        Visible = True
+        ItemName = 'pmnuCompactXML'
       end>
     UseOwnFont = False
-    OnPopup = PopupJsonContentPopup
+    OnPopup = PopupEditorPopup
     Left = 445
     Top = 546
+    PixelsPerInch = 96
+  end
+  object SynIniSyn: TSynIniSyn
+    Options.AutoDetectEnabled = False
+    Options.AutoDetectLineLimit = 0
+    Options.Visible = False
+    KeyAttri.Style = [fsBold]
+    SymbolAttri.Foreground = clRed
+    Left = 645
+    Top = 190
+  end
+  object SynJSONSyn: TSynJSONSyn
+    Options.AutoDetectEnabled = False
+    Options.AutoDetectLineLimit = 0
+    Options.Visible = False
+    Left = 650
+    Top = 131
+  end
+  object SynXMLSyn: TSynXMLSyn
+    Options.AutoDetectEnabled = False
+    Options.AutoDetectLineLimit = 0
+    Options.Visible = False
+    WantBracesParsed = False
+    Left = 640
+    Top = 256
   end
 end

+ 234 - 109
src/_frmMain.pas

@@ -11,8 +11,10 @@ uses
   IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent,
   IdTCPConnection, IdTCPClient, IdHTTP, _JSONConfig, dxSkinsdxBarPainter, dxBar,
   cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, Vcl.Menus,
-  cxButtons, BCEditor.Editor.Base, BCEditor.Editor, dxSkinscxPCPainter,
-  dxBarBuiltInMenu, cxPC, System.ImageList, Vcl.ImgList, cxCheckBox;
+  cxButtons, dxSkinscxPCPainter,
+  dxBarBuiltInMenu, cxPC, System.ImageList, Vcl.ImgList, cxCheckBox, cxImageList,
+  SynEdit, SynHighlighterJSON, SynEditHighlighter, SynHighlighterIni,
+  SynHighlighterXML;
 
 type
   TMethodType = (mtGET, mtPOST, mtPATCH, mtPUT, mtDELETE);
@@ -42,11 +44,9 @@ type
     Label2: TLabel;
     edtFullURL: TcxTextEdit;
     btnRun: TcxButton;
-    EditorContent: TBCEditor;
-    cxPageControl1: TcxPageControl;
+    PageControlResponse: TcxPageControl;
     tabContent: TcxTabSheet;
     tabHeaders: TcxTabSheet;
-    EditorResponseHeaders: TBCEditor;
     Panel2: TPanel;
     dxBarSubItem4: TdxBarSubItem;
     tbbtnStayOnTop: TdxBarButton;
@@ -60,18 +60,15 @@ type
     btnEdit: TcxButton;
     btnCopyPreset: TcxButton;
     Label5: TLabel;
-    EditorURLParams: TBCEditor;
     Label6: TLabel;
     comboMethod: TcxComboBox;
     PageControlParams: TcxPageControl;
     tabURLParams: TcxTabSheet;
     cxTabSheet2: TcxTabSheet;
     Panel3: TPanel;
-    EditorExtraHeaders: TBCEditor;
     Panel4: TPanel;
     Label7: TLabel;
     tabPostData: TcxTabSheet;
-    EditorPostData: TBCEditor;
     tbbtnAutoOpenLastUsed: TdxBarButton;
     Label8: TLabel;
     Panel5: TPanel;
@@ -84,17 +81,28 @@ type
     Label10: TLabel;
     dxBarButton2: TdxBarButton;
     tbbtnAutoSaveProject: TdxBarButton;
-    PopupJsonContent: TdxBarPopupMenu;
+    PopupEditor: TdxBarPopupMenu;
     pmnuCutJsonContent: TdxBarButton;
     pmnuCopyJsonContent: TdxBarButton;
     pmnuPasteJsonContent: TdxBarButton;
-    pmnuFormatCodeJsonContent: TdxBarButton;
+    pmnuFormatJsonContent: TdxBarButton;
     pmnuUndoJsonContent: TdxBarButton;
     pmnuRedoJsonContent: TdxBarButton;
     pmnuSelectAll: TdxBarButton;
     pmnuCompactJson: TdxBarButton;
     btnCopyFullURL: TcxButton;
     dxBarDockControl1: TdxBarDockControl;
+    SynIniSyn: TSynIniSyn;
+    SynJSONSyn: TSynJSONSyn;
+    EditorContent: TSynEdit;
+    EditorResponseHeaders: TSynEdit;
+    EditorURLParams: TSynEdit;
+    EditorExtraHeaders: TSynEdit;
+    EditorPostData: TSynEdit;
+    SynXMLSyn: TSynXMLSyn;
+    pmnuFormatXML: TdxBarButton;
+    pmnuCompactXML: TdxBarButton;
+    pmnuBiggerEditor: TdxBarButton;
     procedure FormShow(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
@@ -123,31 +131,33 @@ type
     procedure tbbtnAutoOpenLastUsedClick(Sender: TObject);
     procedure dxBarButton2Click(Sender: TObject);
     procedure tbbtnAutoSaveProjectClick(Sender: TObject);
-    procedure pmnuFormatCodeJsonContentClick(Sender: TObject);
+    procedure pmnuFormatJsonContentClick(Sender: TObject);
     procedure EditorContentMouseUp(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
     procedure EditorPostDataMouseUp(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
-    procedure PopupJsonContentPopup(Sender: TObject);
+    procedure PopupEditorPopup(Sender: TObject);
     procedure pmnuUndoJsonContentClick(Sender: TObject);
     procedure pmnuRedoJsonContentClick(Sender: TObject);
     procedure pmnuSelectAllClick(Sender: TObject);
     procedure pmnuCompactJsonClick(Sender: TObject);
     procedure EditorResponseHeadersMouseUp(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
-    procedure EditorURLParamsMouseUp(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
     procedure EditorExtraHeadersMouseUp(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
     procedure btnCopyFullURLClick(Sender: TObject);
+    procedure EditorURLParamsMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pmnuFormatXMLClick(Sender: TObject);
+    procedure pmnuCompactXMLClick(Sender: TObject);
+    procedure comboPostContentTypePropertiesChange(Sender: TObject);
+    procedure pmnuBiggerEditorClick(Sender: TObject);
   private
-    FMainConfig: TJSONConfig;
     FProjectConfig: TJSONConfig;
     FActiveProject: string;
     FActivePreset: string;
     FIsTempProjectLoaded: Boolean;
     FTempProjectFile: string;
-    FActiveEditor: TBCEditor;
     FRoamingSavePath: string;
     function GetTempProjectFile: string;
     function GetAppVersion: string;
@@ -163,8 +173,10 @@ type
     procedure ShowError(const AErrorText: string);
     procedure DoGETRequest(const AMethodType: TMethodType);
     procedure DoPOSTRequest(const AMethodType: TMethodType);
+    procedure UpdateEditor(const AText: string);
   public
-    { Public-Deklarationen }
+    MainConfig: TJSONConfig;
+    ActiveEditor: TSynEdit;
   end;
 
 var
@@ -174,7 +186,8 @@ implementation
 
 {$R *.dfm}
 
-uses System.NetEncoding, System.UITypes, _EncryptStr, JsonDataObjects, Clipbrd, IdGlobal, System.IOUtils;
+uses System.NetEncoding, System.UITypes, _EncryptStr, JsonDataObjects, Clipbrd, IdGlobal, System.IOUtils, uRwXmlDOM,
+  _frmBiggerEditor;
 
 procedure TfrmMain.tbbtnRunClick(Sender: TObject);
 begin
@@ -193,6 +206,64 @@ begin
   end;
 end;
 
+procedure TfrmMain.UpdateEditor(const AText: string);
+begin
+  if ActiveEditor = EditorContent then
+  begin
+    if Pos('application/json', HTTP.Response.ContentType) > 0 then
+    begin
+      ActiveEditor.Highlighter := SynJSONSyn;
+    end
+    else
+    if Pos('text/xml', HTTP.Response.ContentType) > 0 then
+    begin
+      ActiveEditor.Highlighter := SynXMLSyn;
+    end
+    else
+    begin
+      ActiveEditor.Highlighter := nil;
+    end;
+  end
+  else
+  if ActiveEditor = EditorURLParams then
+  begin
+    ActiveEditor.Highlighter := SynIniSyn;
+  end
+  else
+  if ActiveEditor = EditorExtraHeaders then
+  begin
+    ActiveEditor.Highlighter := SynIniSyn;
+  end
+  else
+  if ActiveEditor = EditorPostData then
+  begin
+    if Pos('application/json', comboPostContentType.Text) > 0 then
+    begin
+      ActiveEditor.Highlighter := SynJSONSyn;
+    end
+    else
+    if Pos('text/xml', comboPostContentType.Text) > 0 then
+    begin
+      ActiveEditor.Highlighter := SynXMLSyn;
+    end
+    else
+    begin
+      ActiveEditor.Highlighter := nil;
+    end;
+  end
+  else
+  if ActiveEditor = EditorResponseHeaders then
+  begin
+    ActiveEditor.Highlighter := nil;
+  end
+  else
+  begin
+    ActiveEditor.Highlighter := nil;
+  end;
+
+  ActiveEditor.Lines.Text := AText;
+end;
+
 procedure TfrmMain.UpdateFullURL;
 var
   i: Integer;
@@ -224,12 +295,12 @@ end;
 
 procedure TfrmMain.tbbtnAutoOpenLastUsedClick(Sender: TObject);
 begin
-  FMainConfig.WriteBool('Project', 'AutoOpenLastUsed', tbbtnAutoOpenLastUsed.Down);
+  MainConfig.WriteBool('Project', 'AutoOpenLastUsed', tbbtnAutoOpenLastUsed.Down);
 end;
 
 procedure TfrmMain.tbbtnAutoSaveProjectClick(Sender: TObject);
 begin
-  FMainConfig.WriteBool('Project', 'AutoSaveProject', tbbtnAutoSaveProject.Down);
+  MainConfig.WriteBool('Project', 'AutoSaveProject', tbbtnAutoSaveProject.Down);
 end;
 
 procedure TfrmMain.dxBarButton2Click(Sender: TObject);
@@ -241,10 +312,10 @@ end;
 
 procedure TfrmMain.dxBarButton3Click(Sender: TObject);
 begin
-  OpenDialog.InitialDir := FMainConfig.ReadString('Dialogs', 'LastOpenDir', ExtractFilePath(ParamStr(0)));
+  OpenDialog.InitialDir := MainConfig.ReadString('Dialogs', 'LastOpenDir', ExtractFilePath(ParamStr(0)));
   if OpenDialog.Execute then
   begin
-    FMainConfig.WriteString('Dialogs', 'LastOpenDir', ExtractFilePath(OpenDialog.FileName));
+    MainConfig.WriteString('Dialogs', 'LastOpenDir', ExtractFilePath(OpenDialog.FileName));
     FActiveProject := OpenDialog.FileName;
     FIsTempProjectLoaded := False;
     LoadProject;
@@ -349,6 +420,12 @@ begin
   end;
 end;
 
+procedure TfrmMain.comboPostContentTypePropertiesChange(Sender: TObject);
+begin
+  ActiveEditor := EditorPostData;
+  UpdateEditor(EditorPostData.Lines.Text);
+end;
+
 procedure TfrmMain.comboPresetsPropertiesChange(Sender: TObject);
 begin
   if FActivePreset <> '' then
@@ -360,48 +437,51 @@ begin
   LoadPreset;
 end;
 
+procedure TfrmMain.pmnuBiggerEditorClick(Sender: TObject);
+begin
+  frmBiggerEditor.ShowModal;
+end;
+
 procedure TfrmMain.pmnuCompactJsonClick(Sender: TObject);
 var
   ja: TJsonArray;
   jo: TJsonObject;
 begin
-  if FActiveEditor.Lines.Count > 0 then
+  if ActiveEditor.Lines.Count > 0 then
   begin
-    if Length(FActiveEditor.Lines[0]) > 0 then
+    if Length(ActiveEditor.Lines[0]) > 0 then
     begin
-      if FActiveEditor.Lines[0][1] = '{' then
+      if ActiveEditor.Lines[0][1] = '{' then
       begin
         jo := TJsonObject.Create;
         try
           try
-            jo.FromJSON(FActiveEditor.Lines.Text);
+            jo.FromJSON(ActiveEditor.Lines.Text);
           except
             on E: Exception do
             begin
               ShowError(E.Message);
             end;
           end;
-          FActiveEditor.Lines.Clear;
-          FActiveEditor.Lines.Text := jo.ToJSON(True);
+          UpdateEditor(jo.ToJSON(True));
         finally
           jo.Free;
         end;
       end
       else
-      if FActiveEditor.Lines[0][1] = '[' then
+      if ActiveEditor.Lines[0][1] = '[' then
       begin
         ja := TJsonArray.Create;
         try
           try
-            ja.FromJSON(FActiveEditor.Lines.Text);
+            ja.FromJSON(ActiveEditor.Lines.Text);
           except
             on E: Exception do
             begin
               ShowError(E.Message);
             end;
           end;
-          FActiveEditor.Lines.Clear;
-          FActiveEditor.Lines.Text := ja.ToJSON(True);
+          UpdateEditor(ja.ToJSON(True));
         finally
           ja.Free;
         end;
@@ -410,14 +490,29 @@ begin
   end;
 end;
 
+procedure TfrmMain.pmnuCompactXMLClick(Sender: TObject);
+var
+  xml: TRwDomDocument;
+begin
+  xml := TRwDOMDocument.Create;
+  Screen.Cursor := crHourGlass;
+  try
+    xml.LoadXML(ActiveEditor.Lines.Text);
+    UpdateEditor(xml.XML);
+  finally
+    xml.Free;
+    Screen.Cursor := crDefault;
+  end;
+end;
+
 procedure TfrmMain.pmnuCopyJsonContentClick(Sender: TObject);
 begin
-  FActiveEditor.CopyToClipboard;
+  ActiveEditor.CopyToClipboard;
 end;
 
 procedure TfrmMain.pmnuCutJsonContentClick(Sender: TObject);
 begin
-  FActiveEditor.CutToClipboard;
+  ActiveEditor.CutToClipboard;
 end;
 
 procedure TfrmMain.DeletePreset(const AID: Integer);
@@ -449,8 +544,10 @@ begin
     end;
   end;
 
-  EditorContent.Lines.Text := dmy;
-  EditorResponseHeaders.Lines.Text := HTTP.Response.RawHeaders.Text;
+  ActiveEditor := EditorContent;
+  UpdateEditor(dmy);
+  ActiveEditor := EditorResponseHeaders;
+  UpdateEditor(HTTP.Response.RawHeaders.Text);
 end;
 
 procedure TfrmMain.DoPOSTRequest(const AMethodType: TMethodType);
@@ -482,8 +579,10 @@ begin
     strstream.Free;
   end;
 
-  EditorContent.Lines.Text := dmy;
-  EditorResponseHeaders.Lines.Text := HTTP.Response.RawHeaders.Text;
+  ActiveEditor := EditorContent;
+  UpdateEditor(dmy);
+  ActiveEditor := EditorResponseHeaders;
+  UpdateEditor(HTTP.Response.RawHeaders.Text);
 end;
 
 procedure TfrmMain.dxBarButton6Click(Sender: TObject);
@@ -506,8 +605,8 @@ procedure TfrmMain.EditorContentMouseUp(Sender: TObject; Button: TMouseButton;
 begin
   if Button = mbRight then
   begin
-    FActiveEditor := EditorContent;
-    PopupJsonContent.PopupFromCursorPos;
+    ActiveEditor := EditorContent;
+    PopupEditor.PopupFromCursorPos;
   end;
 end;
 
@@ -516,8 +615,8 @@ procedure TfrmMain.EditorExtraHeadersMouseUp(Sender: TObject;
 begin
   if Button = mbRight then
   begin
-    FActiveEditor := EditorExtraHeaders;
-    PopupJsonContent.PopupFromCursorPos;
+    ActiveEditor := EditorExtraHeaders;
+    PopupEditor.PopupFromCursorPos;
   end;
 end;
 
@@ -526,8 +625,8 @@ procedure TfrmMain.EditorResponseHeadersMouseUp(Sender: TObject; Button: TMouseB
 begin
   if Button = mbRight then
   begin
-    FActiveEditor := EditorResponseHeaders;
-    PopupJsonContent.PopupFromCursorPos;
+    ActiveEditor := EditorResponseHeaders;
+    PopupEditor.PopupFromCursorPos;
   end;
 end;
 
@@ -536,8 +635,8 @@ procedure TfrmMain.EditorPostDataMouseUp(Sender: TObject; Button: TMouseButton;
 begin
   if Button = mbRight then
   begin
-    FActiveEditor := EditorPostData;
-    PopupJsonContent.PopupFromCursorPos;
+    ActiveEditor := EditorPostData;
+    PopupEditor.PopupFromCursorPos;
   end;
 end;
 
@@ -551,8 +650,8 @@ procedure TfrmMain.EditorURLParamsMouseUp(Sender: TObject; Button: TMouseButton;
 begin
   if Button = mbRight then
   begin
-    FActiveEditor := EditorURLParams;
-    PopupJsonContent.PopupFromCursorPos;
+    ActiveEditor := EditorURLParams;
+    PopupEditor.PopupFromCursorPos;
   end;
 end;
 
@@ -563,11 +662,11 @@ end;
 
 procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
-  FMainConfig.WriteInteger('MainWindowPos', 'Left', Left);
-  FMainConfig.WriteInteger('MainWindowPos', 'Top', Top);
-  FMainConfig.WriteInteger('MainWindowPos', 'Width', Width);
-  FMainConfig.WriteInteger('MainWindowPos', 'Height', Height);
-  FMainConfig.WriteBool('MainWindowPos', 'StayOnTop', FormStyle = fsStayOnTop);
+  MainConfig.WriteInteger('MainWindowPos', 'Left', Left);
+  MainConfig.WriteInteger('MainWindowPos', 'Top', Top);
+  MainConfig.WriteInteger('MainWindowPos', 'Width', Width);
+  MainConfig.WriteInteger('MainWindowPos', 'Height', Height);
+  MainConfig.WriteBool('MainWindowPos', 'StayOnTop', FormStyle = fsStayOnTop);
 
   SavePreset;
 
@@ -604,35 +703,20 @@ begin
   FRoamingSavePath := IncludeTrailingPathDelimiter(TPath.GetHomePath) + 'Simnet\RESTDebugger\';
   ForceDirectories(FRoamingSavePath);
 
-  FMainConfig := TJSONConfig.Create(FRoamingSavePath + 'AppConfig.json');
+  MainConfig := TJSONConfig.Create(FRoamingSavePath + 'AppConfig.json');
   FActiveProject := '';
   FActivePreset := '';
 
-  EditorContent.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\JSON.json');
-  EditorContent.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
-
-  EditorResponseHeaders.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Headers.json');
-  EditorResponseHeaders.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
-
-  EditorURLParams.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Params.json');
-  EditorURLParams.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
-
-  EditorExtraHeaders.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\Params.json');
-  EditorExtraHeaders.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
-
-  EditorPostData.Highlighter.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Highlighters\JSON.json');
-  EditorPostData.Highlighter.Colors.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Colors\Blue.json');
-
-  FActiveEditor := nil;
+  ActiveEditor := nil;
 
   HTTP.Request.UserAgent := 'Simnet REST Debugger/' + GetAppVersion;
 
-  if (not FMainConfig.ReadBool('Main', 'FirstStartShown')) and (FileExists(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Example Config.rdproj')) then
+  if (not MainConfig.ReadBool('Main', 'FirstStartShown')) and (FileExists(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Example Config.rdproj')) then
   begin
     FActiveProject := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Example Config.rdproj';
     FIsTempProjectLoaded := False;
-    FMainConfig.WriteBool('Main', 'FirstStartShown', True);
-    FMainConfig.WriteString('Project', 'LastUsed', FActiveProject);
+    MainConfig.WriteBool('Main', 'FirstStartShown', True);
+    MainConfig.WriteString('Project', 'LastUsed', FActiveProject);
   end
   else
   begin
@@ -643,9 +727,9 @@ begin
     end
     else
     begin
-      if (FMainConfig.ReadBool('Project', 'AutoOpenLastUsed', True)) and (FileExists(FMainConfig.ReadString('Project', 'LastUsed'))) then
+      if (MainConfig.ReadBool('Project', 'AutoOpenLastUsed', True)) and (FileExists(MainConfig.ReadString('Project', 'LastUsed'))) then
       begin
-        FActiveProject := FMainConfig.ReadString('Project', 'LastUsed');
+        FActiveProject := MainConfig.ReadString('Project', 'LastUsed');
         FIsTempProjectLoaded := False;
       end
       else
@@ -662,7 +746,7 @@ end;
 procedure TfrmMain.FormDestroy(Sender: TObject);
 begin
   FProjectConfig.Free;
-  FMainConfig.Free;
+  MainConfig.Free;
 end;
 
 procedure TfrmMain.FormResize(Sender: TObject);
@@ -674,11 +758,24 @@ procedure TfrmMain.FormShow(Sender: TObject);
 begin
   dxStatusBar.Panels[0].Text := 'Copyright © by Simnet ' + FormatDateTime('yyyy', now);
 
-  Left := FMainConfig.ReadInteger('MainWindowPos', 'Left', Round((Screen.Width - Width) div 2));
-  Top := FMainConfig.ReadInteger('MainWindowPos', 'Top', Round((Screen.Height - Height) div 2));
-  Width := FMainConfig.ReadInteger('MainWindowPos', 'Width', 720);
-  Height := FMainConfig.ReadInteger('MainWindowPos', 'Height', 930);
-  if FMainConfig.ReadBool('MainWindowPos', 'StayOnTop') then
+  Left := MainConfig.ReadInteger('MainWindowPos', 'Left', Round((Screen.Width - Width) div 2));
+
+  if Left >= Screen.Width then
+  begin
+    Left := 10;
+  end;
+
+  Top := MainConfig.ReadInteger('MainWindowPos', 'Top', Round((Screen.Height - Height) div 2));
+
+  if Top >= Screen.Height then
+  begin
+    Top := 10;
+  end;
+
+
+  Width := MainConfig.ReadInteger('MainWindowPos', 'Width', 720);
+  Height := MainConfig.ReadInteger('MainWindowPos', 'Height', 930);
+  if MainConfig.ReadBool('MainWindowPos', 'StayOnTop') then
   begin
     FormStyle := fsStayOnTop;
     tbbtnStayOnTop.Down := True;
@@ -689,8 +786,8 @@ begin
     tbbtnStayOnTop.Down := False;
   end;
 
-  tbbtnAutoOpenLastUsed.Down := FMainConfig.ReadBool('Project', 'AutoOpenLastUsed', True);
-  tbbtnAutoSaveProject.Down := FMainConfig.ReadBool('Project', 'AutoSaveProject', True);
+  tbbtnAutoOpenLastUsed.Down := MainConfig.ReadBool('Project', 'AutoOpenLastUsed', True);
+  tbbtnAutoSaveProject.Down := MainConfig.ReadBool('Project', 'AutoSaveProject', True);
 
   EditorContent.Lines.Clear;
   EditorResponseHeaders.Lines.Clear;
@@ -776,7 +873,7 @@ begin
   else
   begin
     dxStatusBar.Panels[3].Text := 'Loaded project: ' + FActiveProject;
-    FMainConfig.WriteString('Project', 'LastUsed', FActiveProject);
+    MainConfig.WriteString('Project', 'LastUsed', FActiveProject);
   end;
 
   if Assigned(FProjectConfig) then
@@ -797,87 +894,100 @@ begin
   begin
     comboPresets.ItemIndex := FProjectConfig.ReadInteger('Presets', 'LastUsed', 0);
   end;
+
+  PageControlParams.ActivePage := tabURLParams;
+  PageControlResponse.ActivePage := tabContent;
 end;
 
 procedure TfrmMain.pmnuPasteJsonContentClick(Sender: TObject);
 begin
-  FActiveEditor.PasteFromClipboard;
+  ActiveEditor.PasteFromClipboard;
 end;
 
 procedure TfrmMain.pmnuRedoJsonContentClick(Sender: TObject);
 begin
-  FActiveEditor.DoRedo;
+  ActiveEditor.Redo;
 end;
 
 procedure TfrmMain.pmnuSelectAllClick(Sender: TObject);
 begin
-  FActiveEditor.SelectAll;
+  ActiveEditor.SelectAll;
 end;
 
 procedure TfrmMain.pmnuUndoJsonContentClick(Sender: TObject);
 begin
-  FActiveEditor.DoUndo;
+  ActiveEditor.Undo;
 end;
 
-procedure TfrmMain.PopupJsonContentPopup(Sender: TObject);
+procedure TfrmMain.PopupEditorPopup(Sender: TObject);
 begin
-  pmnuPasteJsonContent.Enabled := FActiveEditor.CanPaste;
-  pmnuUndoJsonContent.Enabled := FActiveEditor.CanUndo;
-  pmnuRedoJsonContent.Enabled := FActiveEditor.CanRedo;
-  if FActiveEditor.Highlighter.Name = 'JSON' then
+  pmnuPasteJsonContent.Enabled := ActiveEditor.CanPaste;
+  pmnuUndoJsonContent.Enabled := ActiveEditor.CanUndo;
+  pmnuRedoJsonContent.Enabled := ActiveEditor.CanRedo;
+  if ActiveEditor.Highlighter = SynJSONSyn then
   begin
-    pmnuFormatCodeJsonContent.Visible := ivAlways;
+    pmnuFormatJsonContent.Visible := ivAlways;
     pmnuCompactJson.Visible := ivAlways;
+    pmnuFormatXML.Visible := ivNever;
+    pmnuCompactXML.Visible := ivNever;
+  end
+  else
+  if ActiveEditor.Highlighter = SynXMLSyn then
+  begin
+    pmnuFormatJsonContent.Visible := ivNever;
+    pmnuCompactJson.Visible := ivNever;
+    pmnuFormatXML.Visible := ivAlways;
+    pmnuCompactXML.Visible := ivAlways;
   end
   else
   begin
-    pmnuFormatCodeJsonContent.Visible := ivNever;
-    pmnuCompactJson.Visible := ivNever
+    pmnuFormatJsonContent.Visible := ivNever;
+    pmnuCompactJson.Visible := ivNever;
+    pmnuFormatXML.Visible := ivNever;
+    pmnuCompactXML.Visible := ivNever;
   end;
 end;
 
-procedure TfrmMain.pmnuFormatCodeJsonContentClick(Sender: TObject);
+procedure TfrmMain.pmnuFormatJsonContentClick(Sender: TObject);
 var
   ja: TJsonArray;
   jo: TJsonObject;
 begin
-  if FActiveEditor.Lines.Count > 0 then
+  if ActiveEditor.Lines.Count > 0 then
   begin
-    if Length(FActiveEditor.Lines[0]) > 0 then
+    if Length(ActiveEditor.Lines[0]) > 0 then
     begin
-      if FActiveEditor.Lines[0][1] = '{' then
+      if ActiveEditor.Lines[0][1] = '{' then
       begin
         jo := TJsonObject.Create;
         try
           try
-            jo.FromJSON(FActiveEditor.Lines.Text);
+            jo.FromJSON(ActiveEditor.Lines.Text);
           except
             on E: Exception do
             begin
               ShowError(E.Message);
             end;
           end;
-          FActiveEditor.Lines.Clear;
-          FActiveEditor.Lines.Text := jo.ToJSON(False);
+          UpdateEditor(jo.ToJSON(False));
         finally
           jo.Free;
         end;
       end
       else
-      if FActiveEditor.Lines[0][1] = '[' then
+      if ActiveEditor.Lines[0][1] = '[' then
       begin
         ja := TJsonArray.Create;
         try
           try
-            ja.FromJSON(FActiveEditor.Lines.Text);
+            ja.FromJSON(ActiveEditor.Lines.Text);
           except
             on E: Exception do
             begin
               ShowError(E.Message);
             end;
           end;
-          FActiveEditor.Lines.Clear;
-          FActiveEditor.Lines.Text := ja.ToJSON(False);
+          UpdateEditor(ja.ToJSON(False));
         finally
           ja.Free;
         end;
@@ -886,6 +996,21 @@ begin
   end;
 end;
 
+procedure TfrmMain.pmnuFormatXMLClick(Sender: TObject);
+var
+  xml: TRwDomDocument;
+begin
+  xml := TRwDOMDocument.Create;
+  try
+    Screen.Cursor := crHourGlass;
+    xml.LoadXML(ActiveEditor.Lines.Text);
+    UpdateEditor(xml.FormattedXML);
+  finally
+    xml.Free;
+    Screen.Cursor := crDefault;
+  end;
+end;
+
 procedure TfrmMain.Run;
 var
   tick: Cardinal;
@@ -982,11 +1107,11 @@ procedure TfrmMain.SaveProjectAs(const LoadAfterSave: Boolean);
 var
   fname: string;
 begin
-  SaveDialog.InitialDir := FMainConfig.ReadString('Dialogs', 'LastSaveDir', ExtractFilePath(ParamStr(0)));
+  SaveDialog.InitialDir := MainConfig.ReadString('Dialogs', 'LastSaveDir', ExtractFilePath(ParamStr(0)));
   if SaveDialog.Execute then
   begin
     fname := SaveDialog.FileName;
-    FMainConfig.WriteString('Dialogs', 'LastSaveDir', ExtractFilePath(fname));
+    MainConfig.WriteString('Dialogs', 'LastSaveDir', ExtractFilePath(fname));
 
     fname := ChangeFileExt(fname, '');
     fname := fname + '.rdproj';