package org.incha.ui.dependency;
import java.util.Collection;
import java.util.Set;
import javax.swing.JLabel;
import javax.swing.table.TableCellRenderer;
import org.incha.core.JavaProject;
import org.incha.core.jswingripples.eig.JSwingRipplesEIG;
import org.incha.core.jswingripples.eig.JSwingRipplesEIGEdge;
import org.incha.core.jswingripples.eig.JSwingRipplesEIGNode;
import org.incha.ui.classview.ClassTreeDataModel;
import org.incha.ui.classview.ClassTreeRenderer;
import org.incha.ui.classview.ClassTreeView;
import org.incha.ui.classview.HeaderRenderer;
import org.incha.ui.jripples.JRipplesViewsConstants;
@SuppressWarnings("serial")
public class ClassDependencyView extends ClassTreeView {
private JSwingRipplesEIGNode node;
private final int callingDirection;
/**
* @param project
*/
public ClassDependencyView(final JavaProject project, final int callingDirection) {
super(project);
this.callingDirection = callingDirection;
}
/* (non-Javadoc)
* @see org.incha.ui.classview.ClassTreeView#createCellRenderer()
*/
@Override
protected ClassTreeRenderer createCellRenderer() {
return new ClassTreeRenderer() {
/* (non-Javadoc)
* @see org.incha.ui.classview.ClassTreeRenderer#renderOtherColumn(javax.swing.JLabel, org.incha.core.jswingripples.eig.JSwingRipplesEIGNode, int)
*/
@Override
protected void renderOtherColumn(final JLabel label,
final JSwingRipplesEIGNode neighborNode, final int column) {
if (column == 2) {
label.setIcon(null);
final JSwingRipplesEIG eig = node.getEig();
JSwingRipplesEIGEdge edge=null;
JSwingRipplesEIGEdge edge1=null;
if (callingDirection==1) edge=eig.getEdge(node, neighborNode);
else if (callingDirection==0) edge=eig.getEdge(neighborNode,node);
else if (callingDirection==2) {
edge=eig.getEdge(neighborNode,node);
edge1=eig.getEdge(node,neighborNode);
}
if (edge==null && edge1==null) {
label.setText("Transitive dependency");
} else if (edge!=null && "Custom".equals(edge.getMark())) {
label.setText("Custom dependency");
} else if (edge1!=null && "Custom".equals(edge1.getMark())) {
label.setText("Custom dependency");
}
} else {
super.renderOtherColumn(label, node, column);
};
}
};
}
/* (non-Javadoc)
* @see org.incha.ui.classview.ClassTreeView#createModel()
*/
@Override
protected ClassTreeDataModel createModel() {
return new ClassTreeDataModel(
JRipplesViewsConstants.SHORT_NAME_COLUMN_TITLE,
JRipplesViewsConstants.MARK_COLUMN_TITLE,
"Dependency notes",
JRipplesViewsConstants.FULL_NAME_COLUMN_TITLE
);
}
/* (non-Javadoc)
* @see org.incha.ui.classview.AbstractHierarchicalView#createHeaderRenderer()
*/
@Override
protected TableCellRenderer createHeaderRenderer() {
return new HeaderRenderer(this);
}
/* (non-Javadoc)
* @see org.incha.ui.classview.AbstractHierarchicalView#setData(java.util.Collection)
*/
@Override
public void setData(final Collection<JSwingRipplesEIGNode> members) {
throw new IllegalStateException("Illegal method access, please use setDependencies() instead");
}
/**
* @param node
* @param set
*/
public void setDependencies(final JSwingRipplesEIGNode node,
final Set<JSwingRipplesEIGNode> set) {
this.node = node;
super.setData(set);
}
}