source: Dev/branches/rest-dojo-ui/client/rft/ui/ObjectBox.js @ 407

Last change on this file since 407 was 407, checked in by hendrikvanantwerpen, 13 years ago

Added build infrastructure and reorganised code to match it.

Page navigation is now done by the rft/app/Controller class. pages
inherit generally from rft/app/Page, which is a BorderContainer?. The
Page uses normal widget mechanism like templateString, all data-rft-*
are obsolete, use normal data-dojo-* options again in templates.
This is done so the pages of the app can be included in the build.
URLs are linked to pages through registration, which is done in
run.js. The routes are defined in the routes.js file. Page class names
and URLs are now independent.

Reduced includes in index.html to one CSS file and two JS files. Dojo
stylesheets are now included thorugh externals.css.

Dojo 1.8 doesn't require the dotted names in declares anymore. All these
are now removed (redundant with module path and JS filename anyway)
and in templates a module id is used, so iso 'dijit.form.Form' use
'dijit/form/Form' now. This is more consistent with requires in the JS
code and they are picked up by the build system.

Removed any old-style dojo.<function> code and use loaded modules
everywhere.

Lots of whitespace unification.

File size: 2.8 KB
Line 
1define([
2    'dojo/_base/declare',
3    'dojo/_base/lang',
4    'dijit/_WidgetBase',
5    'dijit/_TemplatedMixin',
6    'dijit/_WidgetsInTemplateMixin',
7    'rft/ui/LineWithActionsWidget',
8    'dojo/text!./templates/ObjectBox.html'
9], function(declare, lang, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, LineWithActionsWidget, template){
10    return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
11        baseClass: "rftObjectBox",
12        templateString: template,
13        value: null,
14        actions: null,
15        startup: function() {
16            if ( this._started ){ return; }
17            this.inherited(arguments);
18            this.line1 = new LineWithActionsWidget({
19                actions: {
20                    "inspectIcon": {
21                        callback: lang.hitch(this, this._showInfoBox),
22                        properties: {
23                            blockButton: false,
24                            icon: "Inspect"
25                        }
26                    }
27                }
28            }).placeAt(this.line1Node);
29            this.line2 = new LineWithActionsWidget({
30            }).placeAt(this.line1Node);
31            var line3Actions = this._createLine3Actions();
32            this.line3 = new LineWithActionsWidget({
33                actions: line3Actions
34            }).placeAt(this.line1Node);
35            this.line1.startup();
36            this.line2.startup();
37            this.line3.startup();
38            this.inherited(arguments);
39        },
40        _createLine3Actions: function() {
41            var line3Actions = {};
42            for (var action in this.actions) {
43                line3Actions[action] = {
44                    callback: lang.hitch(this, function(callback){
45                        this.value && callback(this.value);
46                    }, this.actions[action]),
47                    properties: {
48                        blockButton: true,
49                        label: action,
50                        icon: action.charAt(0).toUpperCase()+action.slice(1)
51                    }
52                };
53            }
54            return line3Actions;
55        },
56        _showInfoBox: function() {
57            alert(this.value.description);
58        },
59        _setValueAttr: function(value) {
60            this.value = value;
61            this._refresh();
62        },
63        _getValueAttr: function(value) {
64            this.value = value;
65        },
66        _refresh: function() {
67            if ( this.value !== null ) {
68                this.iconNode.className = "rftIcon typeIcon rftIcon"+(this.value.type || '');
69                this.line1.set('title', this.value.title || '');
70                this.line2.set('title', this.value.subTitle || '');
71                this.line3.set('title', this.value.lowerTitle || '');
72            }
73        }
74    });
75});
Note: See TracBrowser for help on using the repository browser.