ovuse
Version:
WPF-inspired Web UI framework
107 lines (106 loc) • 3.68 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
const _2 = require("../.");
let UserControl = class UserControl extends _1.FrameworkElement {
constructor() {
super(...arguments);
this._content = null;
this._container = null;
}
initializeComponent() {
return null;
}
tryLoadChildFromServer() {
var req = new XMLHttpRequest();
req.onreadystatechange = (ev) => {
if (req.readyState == 4 && req.status == 200) {
let loader = new _1.XamlReader();
this.setupChild(loader.Parse(req.responseText));
}
};
//req.open("GET", "data/records.txt", true);
//app.views.CustomView
req.open("GET", _2.getObjectTypeId(this).replace(/\./gi, '/') + ".xml", true);
req.send();
}
attachVisualOverride(elementContainer) {
this._container = elementContainer;
this.setupChild(this.initializeComponent());
super.attachVisualOverride(elementContainer);
}
setupChild(content) {
var child = this._content;
if (child == null) {
this._content = child = content;
if (child != null)
child.parent = this;
}
child = this._content;
if (child != null) {
child.attachVisual(this._container);
}
else {
this.tryLoadChildFromServer();
}
}
invalidateMeasure() {
super.invalidateMeasure();
var child = this._content;
if (child != null) {
child.invalidateMeasure();
}
}
invalidateArrange() {
super.invalidateArrange();
var child = this._content;
if (child != null) {
child.invalidateArrange();
}
}
invalidateLayout() {
super.invalidateLayout();
var child = this._content;
if (child != null) {
child.invalidateLayout();
}
}
measureOverride(constraint) {
var child = this._content;
if (child != null &&
child.desiredSize != null) {
child.measure(constraint);
return child.desiredSize;
}
return new _1.Size();
}
arrangeOverride(finalSize) {
var child = this._content;
if (child != null) {
child.arrange(finalSize.toRect());
}
this.invalidateLayout();
return finalSize;
}
layoutOverride() {
super.layoutOverride();
var child = this._content;
if (child != null) {
var childOffset = this.visualOffset;
if (this.relativeOffset != null &&
childOffset != null)
childOffset = childOffset.add(this.relativeOffset);
child.layout(childOffset);
}
}
};
UserControl = __decorate([
_2.TypeId("ovuse.controls.UserControl")
], UserControl);
exports.UserControl = UserControl;