⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generalizationedge.java

📁 UML设计测试工具
💻 JAVA
字号:
/*
 * USE - UML based specification environment
 * Copyright (C) 1999-2004 Mark Richters, University of Bremen
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

/* $ProjectHeader: use 2-3-0-release.1 Mon, 12 Sep 2005 20:18:33 +0200 green $ */

package org.tzi.use.gui.views.diagrams;

import java.awt.FontMetrics;
import java.awt.Graphics;
import java.util.Iterator;

import org.tzi.use.gui.views.diagrams.edges.DirectedEdgeFactory;

/**
 * An Edge representing the generalisation between to nodes.
 * 
 * @version $ProjectVersion: 2-3-0-release.1 $
 * @author Fabian Gutsche
 */
public final class GeneralizationEdge extends EdgeBase {

    public GeneralizationEdge( Object source, Object target, 
                               DiagramView diagram ) {
        super( source, target, "Inheritance", diagram, null );
    }

    /**
     * Draws a straightline edge between source and target node.
     */
    public void draw( Graphics g, FontMetrics fm ) {
        g.setColor( fOpt.getEDGE_COLOR() );
    
        NodeOnEdge n1 = null;
        NodeOnEdge n2 = null;
        
        // draw all line segments
        if ( !fNodesOnEdge.isEmpty() ) {
            Iterator it = fNodesOnEdge.iterator();
            int counter = 0;
            if ( it.hasNext() ) {
                n1 = (NodeOnEdge) it.next();
                counter++;
            }
            while( it.hasNext() ) {
                n2 = (NodeOnEdge) it.next();
                counter++;
                n2.draw( g, g.getFontMetrics() );
                try {
                    if ( counter < fNodesOnEdge.size() ) {
                        DirectedEdgeFactory.drawAssociation( g,
                                                             (int) n1.x(),
                                                             (int) n1.y(),
                                                             (int) n2.x(),
                                                             (int) n2.y() );
                        n1 = n2;
                    }
                    
                } catch ( Exception e ) {
                    //ignore
                }
            }
        }
        
        // draw the last line segment, as an inheritance
        try {
            DirectedEdgeFactory.drawInheritance( g, (int) n1.x(), 
                                                 (int) n1.y(), 
                                                 (int) n2.x(), 
                                                 (int) n2.y() );
        } catch ( Exception ex ) {
            //ignore
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -