[1030] | 1 | package de.ugoe.cs.autoquest.usability.tasktree.filter;
|
---|
| 2 |
|
---|
| 3 | import com.google.common.base.Function;
|
---|
| 4 | import com.google.common.base.Predicate;
|
---|
| 5 | import com.google.common.base.Predicates;
|
---|
| 6 |
|
---|
| 7 | import de.ugoe.cs.autoquest.eventcore.IEventTarget;
|
---|
| 8 | import de.ugoe.cs.autoquest.eventcore.guimodel.ITextArea;
|
---|
| 9 | import de.ugoe.cs.autoquest.eventcore.guimodel.ITextField;
|
---|
| 10 | import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
|
---|
| 11 | import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
|
---|
| 12 |
|
---|
| 13 | public enum EventTargetFilter implements TaskTreeNodeFilter<IEventTarget> {
|
---|
| 14 |
|
---|
| 15 | TEXT_FIELD(ITextField.class),
|
---|
| 16 |
|
---|
| 17 | TEXT_AREA(ITextArea.class);
|
---|
| 18 |
|
---|
| 19 | private Class<? extends IEventTarget> eventTargetClazz;
|
---|
| 20 |
|
---|
| 21 | private EventTargetFilter(Class<? extends IEventTarget> eventTargetClazz) {
|
---|
| 22 | this.eventTargetClazz = eventTargetClazz;
|
---|
| 23 | }
|
---|
| 24 |
|
---|
| 25 | @SuppressWarnings("unchecked")
|
---|
| 26 | @Override
|
---|
| 27 | public Class<IEventTarget> clazz() {
|
---|
| 28 | return (Class<IEventTarget>) eventTargetClazz;
|
---|
| 29 | }
|
---|
| 30 |
|
---|
| 31 | @SuppressWarnings("rawtypes")
|
---|
| 32 | @Override
|
---|
| 33 | public Predicate filterPredicate() {
|
---|
| 34 | Predicate<Object> instanceOfIEventTaskPredicate = Predicates.instanceOf(IEventTask.class);
|
---|
| 35 | Predicate<ITaskTreeNode> nodeHoldsInstanceOfFilterArgument =
|
---|
| 36 | Predicates.compose(Predicates.instanceOf(eventTargetClazz), nodeExtractionFunction());
|
---|
| 37 | return Predicates.and(instanceOfIEventTaskPredicate, nodeHoldsInstanceOfFilterArgument);
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | private Function<ITaskTreeNode, IEventTarget> nodeExtractionFunction() {
|
---|
| 41 | return new Function<ITaskTreeNode, IEventTarget>() {
|
---|
| 42 |
|
---|
| 43 | @Override
|
---|
| 44 | public IEventTarget apply(ITaskTreeNode treeNode) {
|
---|
| 45 | return ((IEventTask) treeNode).getEventTarget();
|
---|
| 46 | }
|
---|
| 47 | };
|
---|
| 48 | }
|
---|
| 49 |
|
---|
| 50 | }
|
---|