demoview.pas 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. unit demoview;
  2. {$mode objfpc}
  3. interface
  4. uses
  5. Classes, SysUtils, JS, web;
  6. Type
  7. // TAtomWorkspaceItem interface
  8. TAtomView = Class(TObject)
  9. Public
  10. constructor create(aState : TJSObject); virtual; abstract;
  11. function getElement : TJSHTMLElement; virtual; abstract;
  12. function getTitle : string; virtual;abstract;
  13. function serialize : TJSObject; virtual;abstract;
  14. end;
  15. { TPas2jsdemopackageView }
  16. TPas2jsdemopackageView = class (TAtomView)
  17. Private
  18. FMyElement : TJSHTMlElement;
  19. FButton: TJSHTMLButtonElement;
  20. FOnDismiss: TNotifyEvent;
  21. function DoDismiss(aEvent: TJSMouseEvent): boolean;
  22. Public
  23. constructor create(aState : TJSObject); override;
  24. destructor destroy; override;
  25. function getElement : TJSHTMLElement; override;
  26. function getTitle : string; override;
  27. function serialize : TJSObject; override;
  28. property onDismiss : TNotifyEvent Read FOnDismiss Write FonDismiss;
  29. end;
  30. implementation
  31. { TPas2jsdemopackageView }
  32. function TPas2jsdemopackageView.DoDismiss(aEvent: TJSMouseEvent): boolean;
  33. begin
  34. if assigned(FOnDismiss) then
  35. FOnDismiss(Self);
  36. end;
  37. constructor TPas2jsdemopackageView.create(aState: TJSObject);
  38. begin
  39. FButton:=TJSHTMLButtonElement(document.CreateElement('button'));
  40. FButton.innerText:='dismiss';
  41. FButton.onclick:=@DoDismiss;
  42. FMyElement:=TJSHTMLElement(document.CreateElement('div'));
  43. FMyElement.innerText:='The Pas2jsdemopackage package is Alive! It''s ALIVE!';
  44. FMyElement.classList.add('message');
  45. FMyElement.AppendChild(FButton);
  46. end;
  47. destructor TPas2jsdemopackageView.destroy;
  48. begin
  49. FMyElement.parentElement.removeChild(FMyElement);
  50. FMyElement:=Nil;
  51. inherited destroy;
  52. end;
  53. function TPas2jsdemopackageView.getElement: TJSHTMLElement;
  54. begin
  55. Result:=FMyElement;
  56. end;
  57. function TPas2jsdemopackageView.getTitle: string;
  58. begin
  59. Result:='';
  60. end;
  61. function TPas2jsdemopackageView.serialize: TJSObject;
  62. begin
  63. Result:=TJSObject.New;
  64. end;
  65. end.