|
@@ -5,14 +5,20 @@ using Astralis;
|
|
|
|
|
|
|
|
namespace Spry {
|
|
namespace Spry {
|
|
|
|
|
|
|
|
- public abstract class Component : Object {
|
|
|
|
|
|
|
+ public abstract class Component : Object, Renderable {
|
|
|
|
|
|
|
|
private static Dictionary<Type, ComponentTemplate> templates;
|
|
private static Dictionary<Type, ComponentTemplate> templates;
|
|
|
private static Mutex templates_lock = Mutex();
|
|
private static Mutex templates_lock = Mutex();
|
|
|
|
|
|
|
|
public abstract string markup { get; }
|
|
public abstract string markup { get; }
|
|
|
|
|
+ public virtual StatusCode get_status() {
|
|
|
|
|
+ return StatusCode.OK;
|
|
|
|
|
+ }
|
|
|
|
|
+ public virtual async void populate(Properties properties) throws Error {
|
|
|
|
|
+ // No-op default
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- private Catalogue<string, Component> _children = new Catalogue<string, Component>();
|
|
|
|
|
|
|
+ private Catalogue<string, Renderable> _children = new Catalogue<string, Renderable>();
|
|
|
private MarkupDocument _instance;
|
|
private MarkupDocument _instance;
|
|
|
|
|
|
|
|
private MarkupDocument instance { get {
|
|
private MarkupDocument instance { get {
|
|
@@ -117,8 +123,8 @@ namespace Spry {
|
|
|
return final_instance;
|
|
return final_instance;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public HttpResult to_result(StatusCode status = StatusCode.OK) throws Error {
|
|
|
|
|
- return to_document().to_result(status);
|
|
|
|
|
|
|
+ public HttpResult to_result() throws Error {
|
|
|
|
|
+ return to_document().to_result(get_status());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private class ComponentTemplate : MarkupTemplate {
|
|
private class ComponentTemplate : MarkupTemplate {
|