com.javadude.dependencies.editparts.JavaProjectEditPart.java Source code

Java tutorial

Introduction

Here is the source code for com.javadude.dependencies.editparts.JavaProjectEditPart.java

Source

/*******************************************************************************
 * Copyright (c) 2008 Scott Stanchfield
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *******************************************************************************/
package com.javadude.dependencies.editparts;

import java.util.List;
import java.util.Map;

import org.eclipse.draw2d.ChopboxAnchor;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.draw2d.graph.CompoundDirectedGraph;
import org.eclipse.draw2d.graph.Node;
import org.eclipse.draw2d.graph.Subgraph;
import org.eclipse.gef.ConnectionEditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.NodeEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
import org.eclipse.jdt.core.IJavaProject;

import com.javadude.dependencies.DependenciesPlugin;

public class JavaProjectEditPart extends AbstractGraphicalEditPart implements NodeEditPart, GraphContributor {
    private static final String WHITE = "white";
    private static final String BLUE = "blue";

    /**
     * Constructor of the ProjectEditPart class
     */
    public JavaProjectEditPart() {
        DependenciesPlugin.getDefault().setColor(JavaProjectEditPart.BLUE, 0, 0, 255);
        DependenciesPlugin.getDefault().setColor(JavaProjectEditPart.WHITE, 255, 255, 255);
    }

    @Override
    protected IFigure createFigure() {
        Figure tempFigure = new Label();
        tempFigure.setOpaque(true);
        tempFigure.setBorder(new MyRaisedBorder());
        tempFigure.setBackgroundColor(DependenciesPlugin.getDefault().getColor(JavaProjectEditPart.BLUE));
        tempFigure.setForegroundColor(DependenciesPlugin.getDefault().getColor(JavaProjectEditPart.WHITE));
        return tempFigure;
    }

    @Override
    protected void refreshVisuals() {
        IJavaProject javaProject = (IJavaProject) getModel();
        ((Label) getFigure()).setText(javaProject.getElementName());
    }

    @SuppressWarnings("rawtypes")
    @Override
    protected List getModelSourceConnections() {
        return DependencyManager.findSourceDependencies((IJavaProject) getModel());
    }

    @SuppressWarnings("rawtypes")
    @Override
    protected List getModelTargetConnections() {
        return DependencyManager.findTargetDependencies((IJavaProject) getModel());
    }

    @Override
    protected void createEditPolicies() {
        installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy());
    }

    public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) {
        return new ChopboxAnchor(getFigure());
    }

    public ConnectionAnchor getTargetConnectionAnchor(ConnectionEditPart connection) {
        return new ChopboxAnchor(getFigure());
    }

    public ConnectionAnchor getSourceConnectionAnchor(Request request) {
        return new ChopboxAnchor(getFigure());
    }

    public ConnectionAnchor getTargetConnectionAnchor(Request request) {
        return new ChopboxAnchor(getFigure());
    }

    public void applyGraphResults(CompoundDirectedGraph graph, @SuppressWarnings("rawtypes") Map map) {
        Node n = (Node) map.get(this);
        getFigure().setBounds(new Rectangle(n.x, n.y, n.width, n.height));

        for (int i = 0; i < getSourceConnections().size(); i++) {
            DependencyEditPart trans = (DependencyEditPart) getSourceConnections().get(i);
            trans.applyGraphResults(graph, map);
        }
    }

    public void contributeEdgesToGraph(CompoundDirectedGraph graph, @SuppressWarnings("rawtypes") Map map) {
        @SuppressWarnings("rawtypes")
        List outgoing = getSourceConnections();
        for (int i = 0; i < outgoing.size(); i++) {
            DependencyEditPart part = (DependencyEditPart) getSourceConnections().get(i);
            part.contributeToGraph(graph, map);
        }
        for (int i = 0; i < getChildren().size(); i++) {
            GraphContributor child = (GraphContributor) children.get(i);
            child.contributeEdgesToGraph(graph, map);
        }
    }

    @SuppressWarnings("unchecked")
    public void contributeNodesToGraph(CompoundDirectedGraph graph, Subgraph s,
            @SuppressWarnings("rawtypes") Map map) {
        Node n = new Node(this, s);
        n.outgoingOffset = getAnchorOffset();
        n.incomingOffset = getAnchorOffset();
        n.width = getFigure().getPreferredSize().width;
        n.height = getFigure().getPreferredSize().height;
        n.setPadding(new Insets(10, 8, 10, 12));
        map.put(this, n);
        graph.nodes.add(n);
    }

    int getAnchorOffset() {
        return 9;
    }
}