Skip to content

Package: GroupExpansionViewModelService$1

GroupExpansionViewModelService$1

nameinstructionbranchcomplexitylinemethod
notifyChange(ModelChangeNotification)
M: 8 C: 27
77%
M: 3 C: 5
63%
M: 2 C: 3
60%
M: 1 C: 8
89%
M: 0 C: 1
100%
{...}
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2016 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: * Lucas Koehler - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.editor.ecore;
15:
16: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
17: import org.eclipse.emf.ecp.view.spi.context.ViewModelService;
18: import org.eclipse.emf.ecp.view.spi.group.model.VGroup;
19: import org.eclipse.emf.ecp.view.spi.model.ModelChangeListener;
20: import org.eclipse.emf.ecp.view.spi.model.ModelChangeNotification;
21: import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
22: import org.eclipse.emf.ecp.view.spi.model.VElement;
23: import org.eclipse.emf.ecp.view.spi.model.VView;
24:
25: /**
26: * This ViewModelService listens on the {@link ViewModelContext} and statically saves the collapsed statuses for certain
27: * groups used in the view models of the ecore editor.
28: *
29: * @author Lucas Koehler
30: *
31: */
32: public class GroupExpansionViewModelService implements ViewModelService {
33:
34:         private static final String STANDARD = "Standard";
35:         private static final String ADVANCED = "Advanced";
36:         private static final String ADVANCED_ANNOTATION = "Advanced (Use With Caution)";
37:
38:         private static boolean isStandardGroupCollapsed;
39:         private static boolean isAdvancedGroupCollapsed = true;
40:         private static boolean isAdvancedAnnotationGroupCollapsed = true;
41:
42:         private ModelChangeListener modelChangeListener;
43:         private ViewModelContext viewModelContext;
44:
45:         /**
46:          * {@inheritDoc}
47:          *
48:          * @see org.eclipse.emf.ecp.view.spi.context.ViewModelService#instantiate(org.eclipse.emf.ecp.view.spi.context.ViewModelContext)
49:          */
50:         @Override
51:         public void instantiate(ViewModelContext context) {
52:                 viewModelContext = context;
53:
54:                 final VElement viewModel = context.getViewModel();
55:                 VView view = null;
56:                 if (viewModel instanceof VView) {
57:                         view = (VView) viewModel;
58:                 } else {
59:                         // If the view model is no VView this service does nothing
60:                         return;
61:                 }
62:
63:                 // Set the groups' collapsed states to the statically saved values
64:                 for (final VContainedElement element : view.getChildren()) {
65:                         if (element instanceof VGroup) {
66:                                 final VGroup group = (VGroup) element;
67:                                 if (STANDARD.equals(group.getName())) {
68:                                         group.setCollapsed(isStandardGroupCollapsed);
69:                                 } else if (ADVANCED.equals(group.getName())) {
70:                                         group.setCollapsed(isAdvancedGroupCollapsed);
71:                                 } else if (ADVANCED_ANNOTATION.equals(group.getName())) {
72:                                         group.setCollapsed(isAdvancedAnnotationGroupCollapsed);
73:                                 }
74:                         }
75:                 }
76:
77:                 // Define a model change listener that updates the statically saved collapsed statuses of the groups.
78:                 modelChangeListener = new ModelChangeListener() {
79:
80:                         @Override
81:                         public void notifyChange(ModelChangeNotification notification) {
82:•                                if (notification.getNotifier() instanceof VGroup) {
83:                                         final VGroup group = (VGroup) notification.getNotifier();
84:•                                        if (STANDARD.equals(group.getName())) {
85:                                                 isStandardGroupCollapsed = group.isCollapsed();
86:•                                        } else if (ADVANCED.equals(group.getName())) {
87:                                                 isAdvancedGroupCollapsed = group.isCollapsed();
88:•                                        } else if (ADVANCED_ANNOTATION.equals(group.getName())) {
89:                                                 isAdvancedAnnotationGroupCollapsed = group.isCollapsed();
90:                                         }
91:                                 }
92:                         }
93:                 };
94:
95:                 context.registerViewChangeListener(modelChangeListener);
96:         }
97:
98:         /**
99:          * {@inheritDoc}
100:          *
101:          * @see org.eclipse.emf.ecp.view.spi.context.ViewModelService#dispose()
102:          */
103:         @Override
104:         public void dispose() {
105:                 viewModelContext.unregisterViewChangeListener(modelChangeListener);
106:
107:         }
108:
109:         /**
110:          * {@inheritDoc}
111:          *
112:          * @see org.eclipse.emf.ecp.view.spi.context.ViewModelService#getPriority()
113:          */
114:         @Override
115:         public int getPriority() {
116:                 return 0;
117:         }
118:
119: }