在 JAVA 中将自定义节点添加到 Alloyui DiagramBuilder

Add custom node to Alloyui DiagramBuilder in JAVA

我一直在用this example用Alloyui做图,但是在JAVA中找不到制作自定义节点的方法.

我试过将它简单地添加到 AvaliableFields 中,但似乎不起作用:

diagramBuilder.setAvailableFields(
    new NodeType(
         "diagram-node-custom-icon",
         "Custom",
         "custom"
     ));

我已经在另一个示例中直接在 java 脚本中完成了此操作并且有效:

 Y.DiagramNodeCustom = Y.Component.create({
        NAME: 'diagram-node',

        ATTRS: {
            type: {
                value: 'custom'
            },
            myAtt: {
                validator: Y.Lang.isString,
                value: ''
            },
            myAtt2: {
                validator: Y.Lang.isString,
                value: ''
            }
        },

        EXTENDS: Y.DiagramNodeTask,

        prototype: {
            getPropertyModel: function () {
                var instance = this;

                var model = Y.DiagramNodeTask.superclass.getPropertyModel.apply(instance, arguments);

                model.push({
                    attributeName: 'myAtt',
                    name: '123'
                });

                model.push({
                    attributeName: 'myAtt2',
                    name: '456'
                });

                return model;
            }
        }
    });

但我只想触摸 java 部分。有任何想法吗?

好像这个附加组件不接受自定义节点,所以我正在使用 Javascript。

这里是an example,希望对你有帮助:

var Y = YUI().use(
    'aui-diagram-builder',

function (Y) {

    Y.DiagramNodeCustom = Y.Component.create({
        NAME: 'diagram-node',

        ATTRS: {
            type: {
                value: 'custom'
            },
            customAttr: {
                validator: Y.Lang.isString,
                value: 'A Custom default'
            }
        },

        EXTENDS: Y.DiagramNodeTask,

        prototype: {
            getPropertyModel: function () {
                var instance = this;

                var model = Y.DiagramNodeTask.superclass.getPropertyModel.apply(instance, arguments);

                model.push({
                    attributeName: 'customAttr',
                    name: 'Custom Attribute'
                });

                return model;
            }
        }
    });

    Y.DiagramBuilder.types['custom'] = Y.DiagramNodeCustom;

    var availableFields = [{
        iconClass: 'diagram-node-start-icon',
        label: 'Start',
        type: 'start'
    }, {
        iconClass: 'diagram-node-task-icon',
        label: 'Task',
        type: 'task'
    }, {
        iconClass: 'diagram-node-custom-icon',
        label: 'Custom',
        type: 'custom'
    }, {
        iconClass: 'diagram-node-end-icon',
        label: 'End',
        type: 'end'
    }];

    diagram = new Y.DiagramBuilder({
        availableFields: availableFields,
        boundingBox: '#myDiagramContainer',
        srcNode: '#myDiagramBuilder'
    }).render();
});
.diagram-node-custom .diagram-node-content {
    background: url(http://a.deviantart.net/avatars/m/e/mercedes77.gif?5) no-repeat scroll center transparent;
}
.diagram-node-custom-icon {
    background: url(http://dribbble.s3.amazonaws.com/users/1266/screenshots/213334/emoticon-0188-nyancat.gif) no-repeat scroll center transparent;
}
<div id="myDiagramContainer">
    <div id="myDiagramBuilder" width=100></div>
</div>
<button id="myButton"></button>

另见 https://github.com/mstahv/diagram-builder