Skip to content

Package: DefaultMenuProvider

DefaultMenuProvider

nameinstructionbranchcomplexitylinemethod
DefaultMenuProvider()
M: 0 C: 22
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
DefaultMenuProvider(ChildrenDescriptorCollector, Collection, CreateElementCallback, DeleteActionBuilder)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%
getMenu(TreeViewer, EditingDomain)
M: 0 C: 30
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
setCreateElementCallback(CreateElementCallback)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
setDeleteAction(DeleteActionBuilder)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
setRightClickAction(Collection)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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: * Johannes Faltermeier - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.swt.treemasterdetail.defaultprovider;
15:
16: import java.util.Collection;
17: import java.util.Collections;
18:
19: import org.eclipse.emf.ecore.EObject;
20: import org.eclipse.emf.ecore.EReference;
21: import org.eclipse.emf.ecp.common.spi.ChildrenDescriptorCollector;
22: import org.eclipse.emf.edit.domain.EditingDomain;
23: import org.eclipse.emfforms.spi.swt.treemasterdetail.DeleteActionBuilder;
24: import org.eclipse.emfforms.spi.swt.treemasterdetail.MenuProvider;
25: import org.eclipse.emfforms.spi.swt.treemasterdetail.TreeMasterDetailMenuListener;
26: import org.eclipse.emfforms.spi.swt.treemasterdetail.actions.MasterDetailAction;
27: import org.eclipse.emfforms.spi.swt.treemasterdetail.util.CreateElementCallback;
28: import org.eclipse.jface.action.MenuManager;
29: import org.eclipse.jface.viewers.TreeViewer;
30: import org.eclipse.swt.widgets.Menu;
31:
32: /**
33: * The default menu provider.
34: *
35: * @author Johannes Faltermeier
36: *
37: */
38: public final class DefaultMenuProvider implements MenuProvider {
39:
40:         private ChildrenDescriptorCollector childrenDescriptorCollector;
41:         private Collection<MasterDetailAction> rightClickActions;
42:         private CreateElementCallback createElementCallback;
43:         private DeleteActionBuilder deleteActionBuilder;
44:
45:         /**
46:          * Default constructor.
47:          */
48:         public DefaultMenuProvider() {
49:                 childrenDescriptorCollector = new ChildrenDescriptorCollector();
50:                 rightClickActions = Collections.<MasterDetailAction> emptySet();
51:                 createElementCallback = new CreateElementCallback() {
52:                         @Override
53:                         public boolean beforeCreateElement(Object newElement) {
54:                                 return true;
55:                         }
56:
57:                         @Override
58:                         public void initElement(EObject parent, EReference reference, EObject newObject) {
59:                                 /* no op */
60:                         }
61:
62:                         @Override
63:                         public void afterCreateElement(Object newElement) {
64:                                 /* no op */
65:                         }
66:                 };
67:                 deleteActionBuilder = new DefaultDeleteActionBuilder();
68:         }
69:
70:         /**
71:          * Constructor.
72:          *
73:          * @param childrenDescriptorCollector the child description collector to use
74:          * @param rightClickActions the right click actions to use
75:          * @param createElementCallback the create element callback
76:          * @param deleteActionBuilder the delete action which will be added to the context menu
77:          */
78:         public DefaultMenuProvider(ChildrenDescriptorCollector childrenDescriptorCollector,
79:                 Collection<MasterDetailAction> rightClickActions,
80:                 CreateElementCallback createElementCallback,
81:                 DeleteActionBuilder deleteActionBuilder) {
82:                 this.childrenDescriptorCollector = childrenDescriptorCollector;
83:                 this.rightClickActions = rightClickActions;
84:                 this.createElementCallback = createElementCallback;
85:                 this.deleteActionBuilder = deleteActionBuilder;
86:         }
87:
88:         @Override
89:         public Menu getMenu(TreeViewer treeViewer, EditingDomain editingDomain) {
90:                 final MenuManager menuMgr = new MenuManager();
91:                 menuMgr.setRemoveAllWhenShown(true);
92:                 menuMgr
93:                         .addMenuListener(new TreeMasterDetailMenuListener(childrenDescriptorCollector, menuMgr, treeViewer,
94:                                 editingDomain, rightClickActions, createElementCallback, deleteActionBuilder));
95:                 final Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
96:                 return menu;
97:         }
98:
99:         /**
100:          *
101:          * @param deleteActionBuilder the {@link DeleteActionBuilder}
102:          */
103:         public void setDeleteAction(DeleteActionBuilder deleteActionBuilder) {
104:                 this.deleteActionBuilder = deleteActionBuilder;
105:         }
106:
107:         /**
108:          *
109:          * @param createElementCallback the {@link CreateElementCallback}
110:          */
111:         public void setCreateElementCallback(CreateElementCallback createElementCallback) {
112:                 this.createElementCallback = createElementCallback;
113:         }
114:
115:         /**
116:          *
117:          * @param rightClickActions the {@link MasterDetailAction actions}
118:          */
119:         public void setRightClickAction(Collection<MasterDetailAction> rightClickActions) {
120:                 this.rightClickActions = rightClickActions;
121:         }
122: }