Skip to content

Package: SimplePostSelectionProvider

SimplePostSelectionProvider

nameinstructionbranchcomplexitylinemethod
SimplePostSelectionProvider()
M: 0 C: 15
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
addPostSelectionChangedListener(ISelectionChangedListener)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
addSelectionChangedListener(ISelectionChangedListener)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
firePostSelection()
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
fireSelection()
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getSelection()
M: 0 C: 11
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$0(SelectionChangedEvent, ISelectionChangedListener)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$1(SelectionChangedEvent, ISelectionChangedListener)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
removePostSelectionChangedListener(ISelectionChangedListener)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
removeSelectionChangedListener(ISelectionChangedListener)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
select(Object)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
select(Object, boolean, boolean)
M: 0 C: 12
100%
M: 2 C: 2
50%
M: 2 C: 1
33%
M: 0 C: 6
100%
M: 0 C: 1
100%
setSelection(ISelection)
M: 0 C: 21
100%
M: 3 C: 3
50%
M: 3 C: 1
25%
M: 0 C: 6
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2019 Christian W. Damus and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * Christian W. Damus - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.ui.view.spi.swt.selection.test;
15:
16: import java.util.ArrayList;
17: import java.util.List;
18: import java.util.Objects;
19:
20: import org.eclipse.jface.viewers.IPostSelectionProvider;
21: import org.eclipse.jface.viewers.ISelection;
22: import org.eclipse.jface.viewers.ISelectionChangedListener;
23: import org.eclipse.jface.viewers.IStructuredSelection;
24: import org.eclipse.jface.viewers.SelectionChangedEvent;
25: import org.eclipse.jface.viewers.StructuredSelection;
26:
27: /**
28: * A simple selection-provider to drive tests that need a selection provider.
29: */
30: class SimplePostSelectionProvider implements IPostSelectionProvider {
31:
32:         private Object selection;
33:
34:         private final List<ISelectionChangedListener> listeners = new ArrayList<ISelectionChangedListener>(3);
35:         private final List<ISelectionChangedListener> postListeners = new ArrayList<ISelectionChangedListener>(3);
36:
37:         /**
38:          * Initializes me.
39:          */
40:         SimplePostSelectionProvider() {
41:                 super();
42:         }
43:
44:         @Override
45:         public ISelection getSelection() {
46:•                return selection == null ? StructuredSelection.EMPTY : new StructuredSelection(selection);
47:         }
48:
49:         @Override
50:         public void setSelection(ISelection selection) {
51:                 Object newSelection = null;
52:
53:•                if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
54:                         newSelection = ((IStructuredSelection) selection).getFirstElement();
55:                 }
56:
57:•                if (!Objects.equals(newSelection, this.selection)) {
58:                         select(newSelection);
59:                 }
60:         }
61:
62:         void select(Object selection) {
63:                 select(selection, true, true);
64:         }
65:
66:         void select(Object selection, boolean notify, boolean notifyPost) {
67:                 this.selection = selection;
68:
69:•                if (notify) {
70:                         fireSelection();
71:                 }
72:•                if (notifyPost) {
73:                         firePostSelection();
74:                 }
75:         }
76:
77:         @Override
78:         public void addSelectionChangedListener(ISelectionChangedListener listener) {
79:                 listeners.add(listener);
80:         }
81:
82:         @Override
83:         public void removeSelectionChangedListener(ISelectionChangedListener listener) {
84:                 listeners.remove(listener);
85:         }
86:
87:         @Override
88:         public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
89:                 postListeners.add(listener);
90:         }
91:
92:         @Override
93:         public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
94:                 postListeners.remove(listener);
95:         }
96:
97:         private void fireSelection() {
98:                 final SelectionChangedEvent event = new SelectionChangedEvent(this, getSelection());
99:                 listeners.forEach(l -> l.selectionChanged(event));
100:         }
101:
102:         private void firePostSelection() {
103:                 final SelectionChangedEvent event = new SelectionChangedEvent(this, getSelection());
104:                 postListeners.forEach(l -> l.selectionChanged(event));
105:         }
106:
107: }