pas2js/demo/atom/demoview.pas
2020-12-22 10:52:30 +00:00

85 lines
1.9 KiB
ObjectPascal

unit demoview;
{$mode objfpc}
interface
uses
Classes, SysUtils, JS, web;
Type
// TAtomWorkspaceItem interface
TAtomView = Class(TObject)
Public
constructor create(aState : TJSObject); virtual; abstract;
function getElement : TJSHTMLElement; virtual; abstract;
function getTitle : string; virtual;abstract;
function serialize : TJSObject; virtual;abstract;
end;
{ TPas2jsdemopackageView }
TPas2jsdemopackageView = class (TAtomView)
Private
FMyElement : TJSHTMlElement;
FButton: TJSHTMLButtonElement;
FOnDismiss: TNotifyEvent;
function DoDismiss(aEvent: TJSMouseEvent): boolean;
Public
constructor create(aState : TJSObject); override;
destructor destroy; override;
function getElement : TJSHTMLElement; override;
function getTitle : string; override;
function serialize : TJSObject; override;
property onDismiss : TNotifyEvent Read FOnDismiss Write FonDismiss;
end;
implementation
{ TPas2jsdemopackageView }
function TPas2jsdemopackageView.DoDismiss(aEvent: TJSMouseEvent): boolean;
begin
if assigned(FOnDismiss) then
FOnDismiss(Self);
end;
constructor TPas2jsdemopackageView.create(aState: TJSObject);
begin
FButton:=TJSHTMLButtonElement(document.CreateElement('button'));
FButton.innerText:='dismiss';
FButton.onclick:=@DoDismiss;
FMyElement:=TJSHTMLElement(document.CreateElement('div'));
FMyElement.innerText:='The Pas2jsdemopackage package is Alive! It''s ALIVE!';
FMyElement.classList.add('message');
FMyElement.AppendChild(FButton);
end;
destructor TPas2jsdemopackageView.destroy;
begin
FMyElement.parentElement.removeChild(FMyElement);
FMyElement:=Nil;
inherited destroy;
end;
function TPas2jsdemopackageView.getElement: TJSHTMLElement;
begin
Result:=FMyElement;
end;
function TPas2jsdemopackageView.getTitle: string;
begin
Result:='';
end;
function TPas2jsdemopackageView.serialize: TJSObject;
begin
Result:=TJSObject.New;
end;
end.