unit Myc.Fmx.AstEditor.Handlers.Lists; interface uses Myc.Ast.Nodes, Myc.Fmx.AstEditor.Render, Myc.Fmx.AstEditor.Node, Myc.Fmx.AstEditor.Handlers; type TParameterListHandler = class(TNodeListHandler) protected function GetOrientation: TLayoutOrientation; override; public function ReconstructAst(OwnerNode: TAstViewNode): IAstNode; override; end; TArgumentListHandler = class(TNodeListHandler) protected function GetOrientation: TLayoutOrientation; override; public function ReconstructAst(OwnerNode: TAstViewNode): IAstNode; override; end; TExpressionListHandler = class(TNodeListHandler) protected function GetOrientation: TLayoutOrientation; override; function GetAlignment: TLayoutAlignment; override; public function ReconstructAst(OwnerNode: TAstViewNode): IAstNode; override; end; TRecordFieldListHandler = class(TNodeListHandler) protected function GetOrientation: TLayoutOrientation; override; function GetAlignment: TLayoutAlignment; override; public function ReconstructAst(OwnerNode: TAstViewNode): IAstNode; override; end; implementation { TParameterListHandler } function TParameterListHandler.GetOrientation: TLayoutOrientation; begin Result := loHorizontal; end; function TParameterListHandler.ReconstructAst(OwnerNode: TAstViewNode): IAstNode; var arr: TArray; i: Integer; begin SetLength(arr, FChildNodes.Count); for i := 0 to FChildNodes.Count - 1 do arr[i] := FChildNodes[i].CreateAst.AsIdentifier; Result := TParameterList.Create(arr, FNode.Identity); end; { TArgumentListHandler } function TArgumentListHandler.GetOrientation: TLayoutOrientation; begin Result := loHorizontal; end; function TArgumentListHandler.ReconstructAst(OwnerNode: TAstViewNode): IAstNode; var arr: TArray; i: Integer; begin SetLength(arr, FChildNodes.Count); for i := 0 to FChildNodes.Count - 1 do arr[i] := FChildNodes[i].CreateAst; Result := TArgumentList.Create(arr, FNode.Identity); end; { TExpressionListHandler } function TExpressionListHandler.GetOrientation: TLayoutOrientation; begin Result := loVertical; end; function TExpressionListHandler.GetAlignment: TLayoutAlignment; begin Result := laFlush; end; function TExpressionListHandler.ReconstructAst(OwnerNode: TAstViewNode): IAstNode; var arr: TArray; i: Integer; begin SetLength(arr, FChildNodes.Count); for i := 0 to FChildNodes.Count - 1 do arr[i] := FChildNodes[i].CreateAst; Result := TExpressionList.Create(arr, FNode.Identity); end; { TRecordFieldListHandler } function TRecordFieldListHandler.GetOrientation: TLayoutOrientation; begin Result := loVertical; end; function TRecordFieldListHandler.GetAlignment: TLayoutAlignment; begin Result := laFlush; end; function TRecordFieldListHandler.ReconstructAst(OwnerNode: TAstViewNode): IAstNode; var arr: TArray; i: Integer; begin SetLength(arr, FChildNodes.Count); for i := 0 to FChildNodes.Count - 1 do arr[i] := FChildNodes[i].CreateAst.AsRecordField; Result := TRecordFieldList.Create(arr, FNode.Identity); end; end.