package be.kuleuven.cs.distrinet.chameleon.eclipse.view.dependency;

import java.util.List;

import be.kuleuven.cs.distrinet.chameleon.core.element.Element;
import be.kuleuven.cs.distrinet.chameleon.ui.widget.PredicateSelector;

import com.google.common.collect.ImmutableList;

public class DependencyConfiguration {

	public DependencyConfiguration(
			List<PredicateSelector<? super Element>> sourceOptions,
			List<PredicateSelector<? super Element>> crossReferenceOptions,
			List<PredicateSelector<? super Element>> targetOptions,
			List<PredicateSelector<? super Element>> dependencyOptions
			) {
		_sourceOptions = ImmutableList.copyOf(sourceOptions);
		_crossReferenceOptions = ImmutableList.copyOf(crossReferenceOptions);
		_targetOptions = ImmutableList.copyOf(targetOptions);
		_dependencyOptions = ImmutableList.copyOf(dependencyOptions);
	}
	
	public List<PredicateSelector<? super Element>> sourceOptions() {
		return _sourceOptions;
	}

	public List<PredicateSelector<? super Element>> targetOptions() {
		return _targetOptions;
	}
	
	public List<PredicateSelector<? super Element>> crossReferenceOptions() {
		return _crossReferenceOptions;
	}
	
	public List<PredicateSelector<? super Element>> dependencyOptions() {
		return _dependencyOptions;
	}


	private ImmutableList<PredicateSelector<? super Element>> _sourceOptions;
	
	private ImmutableList<PredicateSelector<? super Element>> _crossReferenceOptions;

	private ImmutableList<PredicateSelector<? super Element>> _targetOptions;

	private ImmutableList<PredicateSelector<? super Element>> _dependencyOptions;
}

@@ -132,99 +132,431 @@
 eon.
-core.element.Element;%0Aimport be.kuleuven.cs.distrinet.chameleon.ui.widget.PredicateSelector
+analysis.dependency.Dependency;%0Aimport be.kuleuven.cs.distrinet.chameleon.core.declaration.Declaration;%0Aimport be.kuleuven.cs.distrinet.chameleon.core.element.Element;%0Aimport be.kuleuven.cs.distrinet.chameleon.core.reference.CrossReference;%0Aimport be.kuleuven.cs.distrinet.chameleon.ui.widget.PredicateSelector;%0Aimport be.kuleuven.cs.distrinet.rejuse.action.Nothing;%0Aimport be.kuleuven.cs.distrinet.rejuse.function.Function
 ;%0A%0Ai
@@ -899,35 +899,161 @@
 per 
-Element%3E%3E dependencyOptions
+Dependency%3C? super Element, ? super CrossReference, ? super Declaration%3E%3E%3E dependencyOptions,%0A%09%09%09Function%3C? super Element,? super Element,Nothing%3E mapper
 %0A%09%09%09
@@ -1305,17 +1305,197 @@
 ions);%0A%09
-%7D
+%09_mapper = mapper;%0A%09%7D%0A%09%0A%09public Function%3C? super Element,? super Element,Nothing%3E mapper() %7B%0A%09%09return _mapper;%0A%09%7D%0A%09private Function%3C? super Element,? super Element,Nothing%3E _mapper;
 %0A%09%0A%09publ
@@ -1834,23 +1834,88 @@
 ? super 
-Element
+Dependency%3C? super Element, ? super CrossReference, ? super Declaration%3E
 %3E%3E depen
@@ -2247,31 +2247,96 @@
 tor%3C? super 
-Element
+Dependency%3C? super Element, ? super CrossReference, ? super Declaration%3E
 %3E%3E _dependen

add mapper and update dependency options