in taverna-workflowmodel-api/src/main/java/org/apache/taverna/utility/TreeModelAdapter.java [77:172]
private <NodeType extends Object> TreeModel removeType(
final TypedTreeModel<NodeType> typedModel) {
return new TreeModel() {
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void addTreeModelListener(final TreeModelListener listener) {
TypedTreeModelListener<NodeType> typedListener = new TypedTreeModelListener<NodeType>() {
@Override
public void treeNodesChanged(TypedTreeModelEvent<NodeType> e) {
listener.treeNodesChanged(unwrapType(e));
}
@Override
public void treeNodesInserted(
TypedTreeModelEvent<NodeType> e) {
listener.treeNodesInserted(unwrapType(e));
}
@Override
public void treeNodesRemoved(TypedTreeModelEvent<NodeType> e) {
listener.treeNodesRemoved(unwrapType(e));
}
@Override
public void treeStructureChanged(
TypedTreeModelEvent<NodeType> e) {
listener.treeStructureChanged(unwrapType(e));
}
private TreeModelEvent unwrapType(
final TypedTreeModelEvent<NodeType> e) {
return new TreeModelEvent(e.getSource(),
e.getTreePath(), e.getChildIndices(),
e.getChildren());
}
};
synchronized (mapping) {
typedModel.addTreeModelListener(typedListener);
mapping.add(new TypedListenerPair(typedListener, listener));
}
}
@Override
@SuppressWarnings("unchecked")
public Object getChild(Object arg0, int arg1) {
return typedModel.getChild((NodeType) arg0, arg1);
}
@Override
@SuppressWarnings("unchecked")
public int getChildCount(Object arg0) {
return typedModel.getChildCount((NodeType) arg0);
}
@Override
@SuppressWarnings("unchecked")
public int getIndexOfChild(Object arg0, Object arg1) {
return typedModel.getIndexOfChild((NodeType) arg0,
(NodeType) arg1);
}
@Override
public Object getRoot() {
return typedModel.getRoot();
}
@Override
@SuppressWarnings("unchecked")
public boolean isLeaf(Object arg0) {
return typedModel.isLeaf((NodeType) arg0);
}
@Override
@SuppressWarnings("unchecked")
public void removeTreeModelListener(TreeModelListener arg0) {
synchronized (mapping) {
TypedListenerPair<NodeType> toRemove = null;
for (TypedListenerPair<Object> tpl : mapping)
if (tpl.untypedListener == arg0) {
toRemove = (TypedListenerPair<NodeType>) tpl;
typedModel
.removeTreeModelListener((TypedTreeModelListener<NodeType>) tpl.typedListener);
break;
}
if (toRemove == null)
return;
mapping.remove(toRemove);
}
}
@Override
public void valueForPathChanged(TreePath arg0, Object arg1) {
typedModel.valueForPathChanged(arg0, arg1);
}
};
}