/*******************************************************************************
* Copyright 2005, CHISEL Group, University of Victoria, Victoria, BC, Canada.
* 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
*
* Contributors:
* The Chisel Group, University of Victoria
*******************************************************************************/
package org.eclipse.zest.layouts.dataStructures;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.zest.layouts.LayoutBendPoint;
import org.eclipse.zest.layouts.LayoutEntity;
import org.eclipse.zest.layouts.LayoutRelationship;
import org.eclipse.zest.layouts.constraints.BasicEdgeConstraints;
import org.eclipse.zest.layouts.constraints.LayoutConstraint;
/**
* @author Ian Bull
*/
public class InternalRelationship implements LayoutRelationship{
private LayoutRelationship externalRelationship;
private InternalNode source;
private InternalNode destination;
private Object layoutInfo;
private List bendPoints = new LinkedList();
BasicEdgeConstraints basicEdgeConstraints = new BasicEdgeConstraints();
public InternalRelationship( LayoutRelationship externalRelationship, InternalNode source, InternalNode destination) {
this.externalRelationship = externalRelationship;
this.externalRelationship.setLayoutInformation(this);
this.source = source;
this.destination = destination;
this.externalRelationship.populateLayoutConstraint(basicEdgeConstraints);
}
public LayoutRelationship getLayoutRelationship() {
return externalRelationship;
}
public InternalNode getSource() {
if ( this.source == null ) {
throw new RuntimeException("Source is null");
}
return this.source;
}
public InternalNode getDestination() {
if ( this.destination == null ) {
throw new RuntimeException("Dest is null");
}
return this.destination;
}
public double getWeight() {
return this.basicEdgeConstraints.weight;
}
public boolean isBidirectional() {
return this.basicEdgeConstraints.isBiDirectional;
}
/**
* Ensure this is called in order of source to target node position.
* @param x
* @param y
*/
public void addBendPoint(double x, double y) {
bendPoints.add(new BendPoint(x, y));
}
/**
* Ensure this is called in order of source to target node position.
* Specifies if the bendpoint is a curve control point
* @param x
* @param y
* @param isControlPoint
*/
public void addBendPoint(double x, double y, boolean isControlPoint) {
bendPoints.add(new BendPoint(x, y, isControlPoint));
}
public List getBendPoints() {
return this.bendPoints;
}
public void clearBendPoints() {
// TODO Auto-generated method stub
}
public LayoutEntity getDestinationInLayout() {
// TODO Auto-generated method stub
return destination;
}
public Object getLayoutInformation() {
// TODO Auto-generated method stub
return layoutInfo;
}
public LayoutEntity getSourceInLayout() {
// TODO Auto-generated method stub
return source;
}
public void populateLayoutConstraint(LayoutConstraint constraint) {
// TODO Auto-generated method stub
}
public void setBendPoints(LayoutBendPoint[] bendPoints) {
// TODO Auto-generated method stub
}
public void setLayoutInformation(Object layoutInformation) {
this.layoutInfo = layoutInformation;
}
public Object getGraphData() {
return null;
}
public void setGraphData(Object o) {
}
}