MODULE MultiLogger; (** AUTHOR "TF"; PURPOSE "Log window with a rich-text enabled TextWriter."; *)

IMPORT
	Streams, TextUtilities,
	WMComponents, WMEditors, WMGraphics, WMStandardComponents,
	WM := WMWindowManager;

TYPE
	LogWindow* = OBJECT (WMComponents.FormWindow)
	VAR
		panel : WMStandardComponents.Panel;
		out- : WMEditors.Editor;
		tw- : TextUtilities.TextWriter;
		open : BOOLEAN;

		PROCEDURE &New*(CONST title : ARRAY OF CHAR; VAR stream : Streams.Writer);
		BEGIN
			NEW(panel); panel.bounds.SetExtents(640, 420); panel.fillColor.Set(WMGraphics.RGBAToColor(255, 255, 255, 255));

			NEW(out); out.alignment.Set(WMComponents.AlignClient);
			out.tv.showBorder.Set(TRUE);
			panel.AddContent(out);

			Init(panel.bounds.GetWidth(), panel.bounds.GetHeight(), FALSE);
			SetContent(panel);
			manager := WM.GetDefaultManager();
			SetTitle(WMComponents.NewString(title));
			WM.DefaultAddWindow(SELF);
			NEW(tw, out.text);
			stream := tw;
			open := TRUE
		END New;

		PROCEDURE Close;
		BEGIN
			open := FALSE;
			Close^
		END Close;

	END LogWindow;

END MultiLogger.