Как я могу добавить Crow's Feet в UMLet? - PullRequest
2 голосов
/ 16 ноября 2011

Я использую UMLet для создания диаграмм классов.

UMLet позволяет добавлять пользовательские элементы путем написания собственного кода Java для их отображения. Затем они сохраняются как файлы .java в каталоге программ.

Как добавить отношения "гусиная лапка" в качестве пользовательских элементов?

1 Ответ

1 голос
/ 08 июня 2012

Я хотел то же самое несколько лет назад.В итоге я просто скачал источник и изменил его.Я считаю, что я использовал Umlet 10.0.3 или 10.3.Файл, который я изменил, был com.umlet.element.base.Relation.java .В основном это изменение кода анализатора свойств.Я добавил две новые конечные точки: «m>» и «

В методе setState Я добавил:

else if (s.indexOf(">>") >= 0) {
    endArrow = "<<";

// Glenn Crow Foot Mod Begin
} else if (s.indexOf("m>") >= 0) {
    // Mulitplicity set -> crow's foot for ERD
    endArrow = "crowsFoot";
// Glenn Crow Foot Mod End

}
else if (s.indexOf(">") >= 0) {
    if (endArrow.equals("")) endArrow = "<";
}

и чуть дальше в том жеМетод:

else if (s.indexOf("<<") >= 0) {
    beginArrow = "<<";

// Glenn Crow Foot Mod Begin
} else if (s.indexOf("<m") >= 0) {
    // Mulitplicity set -> crow's foot for ERD
    beginArrow = "crowsFoot";
// Glenn Crow Foot Mod End

}
else if (s.indexOf("<") >= 0) {

В методе paintEntity я добавил следующее:

else if (r instanceof Arrow) {
    Arrow arrow = (Arrow) r;

    // Glenn Crow Foot Mod Begin
    if (arrow.getString().equals("crowsFoot")) {
        g2.drawLine( (int) arrow.getX(), (int) arrow.getY() + arrow.getArrowEndA().y,
                     (int) arrow.getX() + arrow.getArrowEndA().x, (int) arrow.getY()    );
        g2.drawLine( (int) arrow.getX(), (int) arrow.getY() + arrow.getArrowEndB().y,
                     (int) arrow.getX() + arrow.getArrowEndB().x, (int) arrow.getY()    );
    // Glenn Crow Foot Mod End

    // A.Mueller Start
    } else if (!arrow.getString().equals("n")

Я был доволен результатом. НоЯ не хотел вставлять его в каждый выпуск, и он никогда не добавлялся в базу кода (я подозреваю, что он недостаточно uml-ish), поэтому он может устареть.

...