// Metamodel[Agile Development]

// Generate Metanodes

dojo.declare("KodouguNode40", kodougu.domain.KodouguNode, {
    resizeStyle: 8, 
    nodetype: 'Node', 
	canBreakLine: true, 

    render: function(node, renderer, parentGroup) {
        try {
            var nodeGroup = renderer.begin_render(node, null, parentGroup);
            if (node.imageUrl == "") {
                renderer.draw_round_rect(0, 0, node.width, node.height);
                
                renderer.draw_text(node.element.getName(), 5, 5, "left");
                renderer.draw_text(node.element.getDescription(), 10, 5 + renderer._fontsize + 2, "left");
                
                var testWidth = renderer.calc_text_width(node.element.getWorker());
                renderer.draw_text(node.element.getWorker(), node.width - 5 - testWidth, node.height - (renderer._fontsize + 5), "right");

            }
            else {
                renderer.draw_image(node.imageUrl);
            }
            renderer.end_render();
            node.children.forEach(function(child){
                child.render(child, renderer, nodeGroup);
            });
        }
        catch(err) {
            logError(err, "KodouguNode40::render");
            renderer.begin_render(node);
            renderer.draw_error();
            renderer.end_render();
        }
    }
});

dojo.declare("KodouguNode41", kodougu.domain.KodouguNode, {
    resizeStyle: 8, 
    nodetype: 'Container', 
	canBreakLine: true, 

    render: function(node, renderer, parentGroup) {
        try {
            var nodeGroup = renderer.begin_render(node, null, parentGroup);
            if (node.imageUrl == "") {
                var kanbanType = node.element.getKanban();
                var name = kanbanType == 0 ? "ToDo" : (kanbanType == 1 ? "Doing" : (kanbanType == 2 ? "Done" : ""));
                
                node.height = diagram.getRightBottomPoint().y - 60;
                node.x = 45;
                node.y = 10;
                
                var nodes = diagram.findNodes(function(node) {
                	return node.element._typeName == "かんばん" && node.element.getKanban() == kanbanType - 1;
                });
                
                if (nodes.count > 0) {
                	var prevNode = nodes.item(0);
                	node.x = prevNode.x + prevNode.width;
                }
                
                renderer.draw_round_rect(0, 0, node.width, node.height);
                renderer.draw_text(name , node.width / 2, 10);

            }
            else {
                renderer.draw_image(node.imageUrl);
            }
            renderer.end_render();
            node.children.forEach(function(child){
                child.render(child, renderer, nodeGroup);
            });
        }
        catch(err) {
            logError(err, "KodouguNode41::render");
            renderer.begin_render(node);
            renderer.draw_error();
            renderer.end_render();
        }
    }
});


// Generate Metaelements


dojo.declare("KodouguElement43", kodougu.domain.KodouguElement, {
    _typeName: "かんばん", 
	_generalClasses: [""], 
    _kanban: null, 
    getKanban: function() {
        return this._kanban;
    }, 
    setKanban: function(argv) {
		this._kanban = argv;
    },


    
    
    __kodougu_dummy: null
});


dojo.declare("KodouguElement44", kodougu.domain.KodouguElement, {
    _typeName: "タスク", 
	_generalClasses: [""], 
    _name: null, 
    getName: function() {
        return this._name;
    }, 
    setName: function(argv) {
		this._name = argv;
    },
    _description: null, 
    getDescription: function() {
        return this._description;
    }, 
    setDescription: function(argv) {
		this._description = argv;
    },
    _worker: null, 
    getWorker: function() {
        return this._worker;
    }, 
    setWorker: function(argv) {
		this._worker = argv;
    },


    
    
    __kodougu_dummy: null
});

