source: autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/tasktree/filter/EventTargetFilter.java @ 1030

Last change on this file since 1030 was 1030, checked in by adeicke, 11 years ago

Initial commit.

  • Property svn:mime-type set to text/plain
File size: 1.8 KB
Line 
1package de.ugoe.cs.autoquest.usability.tasktree.filter;
2
3import com.google.common.base.Function;
4import com.google.common.base.Predicate;
5import com.google.common.base.Predicates;
6
7import de.ugoe.cs.autoquest.eventcore.IEventTarget;
8import de.ugoe.cs.autoquest.eventcore.guimodel.ITextArea;
9import de.ugoe.cs.autoquest.eventcore.guimodel.ITextField;
10import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask;
11import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
12
13public 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}
Note: See TracBrowser for help on using the repository browser.