smalltalk.addPackage('Helios-Inspector', {});
smalltalk.addClass('HLInspector', smalltalk.HLWidget, ['model', 'variablesWidget', 'displayWidget', 'codeWidget', 'label'], 'Helios-Inspector');
smalltalk.addMethod(
"_codeWidget",
smalltalk.method({
selector: "codeWidget",
fn: function () {
    var self = this;
    var $2, $3, $1;
    if (($receiver = self['@codeWidget']) == nil || $receiver == undefined) {
        $2 = smalltalk.send(smalltalk.HLCodeWidget || HLCodeWidget, "_new", []);
        smalltalk.send($2, "_model_", [smalltalk.send(self['@model'], "_code", [])]);
        smalltalk.send($2, "_receiver_", [smalltalk.send(self['@model'], "_inspectee", [])]);
        $3 = smalltalk.send($2, "_yourself", []);
        self['@codeWidget'] = $3;
        $1 = self['@codeWidget'];
    } else {
        $1 = self['@codeWidget'];
    }
    return $1;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_displayWidget",
smalltalk.method({
selector: "displayWidget",
fn: function () {
    var self = this;
    var $2, $3, $1;
    if (($receiver = self['@displayWidget']) == nil ||
        $receiver == undefined) {
        $2 = smalltalk.send(smalltalk.HLInspectorDisplayWidget || HLInspectorDisplayWidget, "_new", []);
        smalltalk.send($2, "_model_", [smalltalk.send(self, "_model", [])]);
        $3 = smalltalk.send($2, "_yourself", []);
        self['@displayWidget'] = $3;
        $1 = self['@displayWidget'];
    } else {
        $1 = self['@displayWidget'];
    }
    return $1;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_inspect_",
smalltalk.method({
selector: "inspect:",
fn: function (anObject) {
    var self = this;
    var $1;
    smalltalk.send(smalltalk.send(self, "_model", []), "_inspect_on_", [anObject, self]);
    smalltalk.send(self, "_refreshVariablesWidget", []);
    $1 = smalltalk.send(self, "_refreshDisplayWidget", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_inspectee",
smalltalk.method({
selector: "inspectee",
fn: function () {
    var self = this;
    var $1;
    $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_inspectee", []);
    return $1;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_inspectee_",
smalltalk.method({
selector: "inspectee:",
fn: function (anObject) {
    var self = this;
    smalltalk.send(smalltalk.send(self, "_model", []), "_inspectee_", [anObject]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_label",
smalltalk.method({
selector: "label",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@label']) == nil || $receiver == undefined) {
        $1 = smalltalk.send(smalltalk.send(self['@model'], "_inspectee", []), "_printString", []);
    } else {
        $1 = self['@label'];
    }
    return $1;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_model",
smalltalk.method({
selector: "model",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@model']) == nil || $receiver == undefined) {
        smalltalk.send(self, "_model_", [smalltalk.send(smalltalk.HLInspectorModel || HLInspectorModel, "_new", [])]);
        $1 = self['@model'];
    } else {
        $1 = self['@model'];
    }
    return $1;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_model_",
smalltalk.method({
selector: "model:",
fn: function (aModel) {
    var self = this;
    var $1;
    self['@model'] = aModel;
    smalltalk.send(smalltalk.send(self, "_codeWidget", []), "_model_", [smalltalk.send(aModel, "_code", [])]);
    smalltalk.send(self, "_observeCodeWidget", []);
    smalltalk.send(self, "_observeVariablesWidget", []);
    $1 = smalltalk.send(self, "_observeModel", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_observeCodeWidget",
smalltalk.method({
selector: "observeCodeWidget",
fn: function () {
    var self = this;
    smalltalk.send(smalltalk.send(smalltalk.send(self, "_codeWidget", []), "_announcer", []), "_on_do_", [smalltalk.HLDoItExecuted || HLDoItExecuted, function () {return smalltalk.send(self, "_onDoneIt", []);}]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_observeModel",
smalltalk.method({
selector: "observeModel",
fn: function () {
    var self = this;
    smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_announcer", []), "_on_do_", [smalltalk.HLInstanceVariableSelected || HLInstanceVariableSelected, function (ann) {return smalltalk.send(self, "_onInstanceVariableSelected", []);}]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_observeVariablesWidget",
smalltalk.method({
selector: "observeVariablesWidget",
fn: function () {
    var self = this;
    var $1, $2;
    $1 = smalltalk.send(smalltalk.send(self, "_variablesWidget", []), "_announcer", []);
    smalltalk.send($1, "_on_do_", [smalltalk.HLRefreshRequested || HLRefreshRequested, function (ann) {return smalltalk.send(self, "_onRefresh", []);}]);
    $2 = smalltalk.send($1, "_on_do_", [smalltalk.HLDiveRequested || HLDiveRequested, function () {return smalltalk.send(self, "_onDive", []);}]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_onDive",
smalltalk.method({
selector: "onDive",
fn: function () {
    var self = this;
    smalltalk.send(self, "_inspect_", [smalltalk.send(smalltalk.send(self, "_model", []), "_selectedInstVarObject", [])]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_onDoneIt",
smalltalk.method({
selector: "onDoneIt",
fn: function () {
    var self = this;
    smalltalk.send(self, "_refresh", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_onInspectIt",
smalltalk.method({
selector: "onInspectIt",
fn: function () {
    var self = this;
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_onInstanceVariableSelected",
smalltalk.method({
selector: "onInstanceVariableSelected",
fn: function () {
    var self = this;
    smalltalk.send(smalltalk.send(self, "_codeWidget", []), "_receiver_", [smalltalk.send(smalltalk.send(self, "_model", []), "_selectedInstVarObject", [])]);
    smalltalk.send(self, "_refreshDisplayWidget", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_onPrintIt",
smalltalk.method({
selector: "onPrintIt",
fn: function () {
    var self = this;
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_onRefresh",
smalltalk.method({
selector: "onRefresh",
fn: function () {
    var self = this;
    smalltalk.send(self, "_refresh", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_open",
smalltalk.method({
selector: "open",
fn: function () {
    var self = this;
    smalltalk.send(smalltalk.send(smalltalk.HLManager || HLManager, "_current", []), "_addTab_", [smalltalk.send(smalltalk.HLTab || HLTab, "_on_labelled_", [self, smalltalk.send(self, "_tabLabel", [])])]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_refresh",
smalltalk.method({
selector: "refresh",
fn: function () {
    var self = this;
    smalltalk.send(self, "_inspect_", [smalltalk.send(self, "_inspectee", [])]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_refreshDisplayWidget",
smalltalk.method({
selector: "refreshDisplayWidget",
fn: function () {
    var self = this;
    smalltalk.send(smalltalk.send(self, "_displayWidget", []), "_refresh", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_refreshVariablesWidget",
smalltalk.method({
selector: "refreshVariablesWidget",
fn: function () {
    var self = this;
    smalltalk.send(smalltalk.send(self, "_variablesWidget", []), "_refresh", []);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_renderContentOn_",
smalltalk.method({
selector: "renderContentOn:",
fn: function (html) {
    var self = this;
    smalltalk.send(html, "_with_", [smalltalk.send(smalltalk.HLContainer || HLContainer, "_with_", [smalltalk.send(smalltalk.HLHorizontalSplitter || HLHorizontalSplitter, "_with_with_", [smalltalk.send(smalltalk.HLVerticalSplitter || HLVerticalSplitter, "_with_with_", [smalltalk.send(self, "_variablesWidget", []), smalltalk.send(self, "_displayWidget", [])]), smalltalk.send(self, "_codeWidget", [])])])]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_setLabel_",
smalltalk.method({
selector: "setLabel:",
fn: function (aString) {
    var self = this;
    self['@label'] = aString;
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_setVariables_",
smalltalk.method({
selector: "setVariables:",
fn: function (aDictionary) {
    var self = this;
    smalltalk.send(smalltalk.send(self, "_model", []), "_variables_", [aDictionary]);
    return self;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_tabLabel",
smalltalk.method({
selector: "tabLabel",
fn: function () {
    var self = this;
    var $1;
    $1 = smalltalk.send(self, "_label", []);
    return $1;
}
}),
smalltalk.HLInspector);

smalltalk.addMethod(
"_variablesWidget",
smalltalk.method({
selector: "variablesWidget",
fn: function () {
    var self = this;
    var $2, $3, $1;
    if (($receiver = self['@variablesWidget']) == nil ||
        $receiver == undefined) {
        $2 = smalltalk.send(smalltalk.HLInspectorVariablesWidget ||
            HLInspectorVariablesWidget, "_new", []);
        smalltalk.send($2, "_model_", [smalltalk.send(self, "_model", [])]);
        $3 = smalltalk.send($2, "_yourself", []);
        self['@variablesWidget'] = $3;
        $1 = self['@variablesWidget'];
    } else {
        $1 = self['@variablesWidget'];
    }
    return $1;
}
}),
smalltalk.HLInspector);


smalltalk.addMethod(
"_canBeOpenAsTab",
smalltalk.method({
selector: "canBeOpenAsTab",
fn: function () {
    var self = this;
    return false;
}
}),
smalltalk.HLInspector.klass);

smalltalk.addMethod(
"_tabLabel",
smalltalk.method({
selector: "tabLabel",
fn: function () {
    var self = this;
    return "Inspector";
}
}),
smalltalk.HLInspector.klass);

smalltalk.addMethod(
"_tabPriority",
smalltalk.method({
selector: "tabPriority",
fn: function () {
    var self = this;
    return 10;
}
}),
smalltalk.HLInspector.klass);


smalltalk.addClass('HLInspectorDisplayWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-Inspector');
smalltalk.addMethod(
"_model",
smalltalk.method({
selector: "model",
fn: function () {
    var self = this;
    return self['@model'];
}
}),
smalltalk.HLInspectorDisplayWidget);

smalltalk.addMethod(
"_model_",
smalltalk.method({
selector: "model:",
fn: function (aModel) {
    var self = this;
    self['@model'] = aModel;
    return self;
}
}),
smalltalk.HLInspectorDisplayWidget);

smalltalk.addMethod(
"_renderContentOn_",
smalltalk.method({
selector: "renderContentOn:",
fn: function (html) {
    var self = this;
    smalltalk.send(smalltalk.send(html, "_div", []), "_with_", [smalltalk.send(self, "_selectionDisplayString", [])]);
    return self;
}
}),
smalltalk.HLInspectorDisplayWidget);

smalltalk.addMethod(
"_selectionDisplayString",
smalltalk.method({
selector: "selectionDisplayString",
fn: function () {
    var self = this;
    var $2, $1;
    var selection;
    selection = smalltalk.send(self['@model'], "_selection", []);
    $2 = smalltalk.send(smalltalk.send(smalltalk.send(self['@model'], "_variables", []), "_keys", []), "_includes_", [selection]);
    if (smalltalk.assert($2)) {
        $1 = smalltalk.send(smalltalk.send(self['@model'], "_instVarObjectAt_", [selection]), "_printString", []);
    } else {
        $1 = "";
    }
    return $1;
}
}),
smalltalk.HLInspectorDisplayWidget);



smalltalk.addClass('HLInspectorModel', smalltalk.Object, ['announcer', 'environment', 'inspectee', 'code', 'variables', 'selection'], 'Helios-Inspector');
smalltalk.addMethod(
"_announcer",
smalltalk.method({
selector: "announcer",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@announcer']) == nil || $receiver == undefined) {
        self['@announcer'] = smalltalk.send(smalltalk.Announcer || Announcer, "_new", []);
        $1 = self['@announcer'];
    } else {
        $1 = self['@announcer'];
    }
    return $1;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_code",
smalltalk.method({
selector: "code",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@code']) == nil || $receiver == undefined) {
        self['@code'] = smalltalk.send(smalltalk.HLCodeModel || HLCodeModel, "_on_", [smalltalk.send(self, "_environment", [])]);
        $1 = self['@code'];
    } else {
        $1 = self['@code'];
    }
    return $1;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_environment",
smalltalk.method({
selector: "environment",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@environment']) == nil || $receiver == undefined) {
        $1 = smalltalk.send(smalltalk.send(smalltalk.HLManager || HLManager, "_current", []), "_environment", []);
    } else {
        $1 = self['@environment'];
    }
    return $1;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_environment_",
smalltalk.method({
selector: "environment:",
fn: function (anEnvironment) {
    var self = this;
    self['@environment'] = anEnvironment;
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_inspect_on_",
smalltalk.method({
selector: "inspect:on:",
fn: function (anObject, anInspector) {
    var self = this;
    self['@inspectee'] = anObject;
    self['@variables'] = [];
    smalltalk.send(self['@inspectee'], "_inspectOn_", [anInspector]);
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_inspectee",
smalltalk.method({
selector: "inspectee",
fn: function () {
    var self = this;
    return self['@inspectee'];
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_inspectee_",
smalltalk.method({
selector: "inspectee:",
fn: function (anObject) {
    var self = this;
    self['@inspectee'] = anObject;
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_instVarObjectAt_",
smalltalk.method({
selector: "instVarObjectAt:",
fn: function (anInstVarName) {
    var self = this;
    var $1;
    $1 = smalltalk.send(smalltalk.send(self, "_variables", []), "_at_", [anInstVarName]);
    return $1;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_onKeyDown_",
smalltalk.method({
selector: "onKeyDown:",
fn: function (anEvent) {
    var self = this;
    if (anEvent.ctrlKey) {
        if (anEvent.keyCode === 80) {
            self._printIt();
            anEvent.preventDefault();
            return false;
        }
        if (anEvent.keyCode === 68) {
            self._doIt();
            anEvent.preventDefault();
            return false;
        }
        if (anEvent.keyCode === 73) {
            self._inspectIt();
            anEvent.preventDefault();
            return false;
        }
    }
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_selectedInstVar_",
smalltalk.method({
selector: "selectedInstVar:",
fn: function (anInstVarName) {
    var self = this;
    smalltalk.send(self, "_selection_", [anInstVarName]);
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_selectedInstVarObject",
smalltalk.method({
selector: "selectedInstVarObject",
fn: function () {
    var self = this;
    var $1;
    $1 = smalltalk.send(self, "_instVarObjectAt_", [smalltalk.send(self, "_selection", [])]);
    return $1;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_selection",
smalltalk.method({
selector: "selection",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@selection']) == nil || $receiver == undefined) {
        $1 = "";
    } else {
        $1 = self['@selection'];
    }
    return $1;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_selection_",
smalltalk.method({
selector: "selection:",
fn: function (anObject) {
    var self = this;
    self['@selection'] = anObject;
    smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLInstanceVariableSelected || HLInstanceVariableSelected, "_on_", [self['@selection']])]);
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_subscribe_",
smalltalk.method({
selector: "subscribe:",
fn: function (aWidget) {
    var self = this;
    smalltalk.send(aWidget, "_subscribeTo_", [smalltalk.send(self, "_announcer", [])]);
    return self;
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_variables",
smalltalk.method({
selector: "variables",
fn: function () {
    var self = this;
    return self['@variables'];
}
}),
smalltalk.HLInspectorModel);

smalltalk.addMethod(
"_variables_",
smalltalk.method({
selector: "variables:",
fn: function (aCollection) {
    var self = this;
    self['@variables'] = aCollection;
    return self;
}
}),
smalltalk.HLInspectorModel);


smalltalk.addMethod(
"_on_",
smalltalk.method({
selector: "on:",
fn: function (anEnvironment) {
    var self = this;
    var $2, $3, $1;
    $2 = smalltalk.send(self, "_new", []);
    smalltalk.send($2, "_environment_", [anEnvironment]);
    $3 = smalltalk.send($2, "_yourself", []);
    $1 = $3;
    return $1;
}
}),
smalltalk.HLInspectorModel.klass);


smalltalk.addClass('HLInspectorVariablesWidget', smalltalk.HLNavigationListWidget, ['announcer', 'model', 'list', 'diveButton'], 'Helios-Inspector');
smalltalk.addMethod(
"_announcer",
smalltalk.method({
selector: "announcer",
fn: function () {
    var self = this;
    var $1;
    if (($receiver = self['@announcer']) == nil || $receiver == undefined) {
        self['@announcer'] = smalltalk.send(smalltalk.Announcer || Announcer, "_new", []);
        $1 = self['@announcer'];
    } else {
        $1 = self['@announcer'];
    }
    return $1;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_defaultItems",
smalltalk.method({
selector: "defaultItems",
fn: function () {
    var self = this;
    var $1;
    $1 = smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_variables", []), "_keys", []);
    return $1;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_model",
smalltalk.method({
selector: "model",
fn: function () {
    var self = this;
    return self['@model'];
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_model_",
smalltalk.method({
selector: "model:",
fn: function (aModel) {
    var self = this;
    self['@model'] = aModel;
    return self;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_refresh",
smalltalk.method({
selector: "refresh",
fn: function () {
    var self = this;
    smalltalk.send(self, "_resetItems", []);
    smalltalk.send(self, "_refresh", [], smalltalk.HLNavigationListWidget);
    return self;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_renderButtonsOn_",
smalltalk.method({
selector: "renderButtonsOn:",
fn: function (html) {
    var self = this;
    var $1, $2, $3, $4;
    $1 = smalltalk.send(html, "_button", []);
    smalltalk.send($1, "_class_", ["btn"]);
    smalltalk.send($1, "_with_", ["Refresh"]);
    $2 = smalltalk.send($1, "_onClick_", [function () {return smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLRefreshRequested || HLRefreshRequested, "_new", [])]);}]);
    $3 = smalltalk.send(html, "_button", []);
    smalltalk.send($3, "_class_", ["btn"]);
    smalltalk.send($3, "_with_", ["Dive"]);
    $4 = smalltalk.send($3, "_onClick_", [function () {return smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLDiveRequested || HLDiveRequested, "_new", [])]);}]);
    self['@diveButton'] = $4;
    return self;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_resetItems",
smalltalk.method({
selector: "resetItems",
fn: function () {
    var self = this;
    self['@items'] = nil;
    return self;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_selectItem_",
smalltalk.method({
selector: "selectItem:",
fn: function (anObject) {
    var self = this;
    smalltalk.send(self, "_selectItem_", [anObject], smalltalk.HLNavigationListWidget);
    smalltalk.send(smalltalk.send(self, "_model", []), "_selectedInstVar_", [anObject]);
    return self;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_selection",
smalltalk.method({
selector: "selection",
fn: function () {
    var self = this;
    var $1;
    $1 = smalltalk.send(self['@model'], "_selection", []);
    return $1;
}
}),
smalltalk.HLInspectorVariablesWidget);

smalltalk.addMethod(
"_variables",
smalltalk.method({
selector: "variables",
fn: function () {
    var self = this;
    var $1;
    $1 = smalltalk.send(self['@model'], "_variables", []);
    return $1;
}
}),
smalltalk.HLInspectorVariablesWidget);