private TreeModel removeType()

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);
			}
		};
	}