Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 374089
Collapse All | Expand All

(-)a/ECP2/org.eclipse.emf.ecp.cdo.core/src/org/eclipse/emf/ecp/cdo/internal/core/CDOProvider.java (-1 / +2 lines)
Lines 29-34 Link Here
29
import org.eclipse.net4j.util.UUIDGenerator;
29
import org.eclipse.net4j.util.UUIDGenerator;
30
import org.eclipse.net4j.util.io.IOUtil;
30
import org.eclipse.net4j.util.io.IOUtil;
31
31
32
import org.eclipse.emf.common.util.EList;
32
import org.eclipse.emf.ecore.EObject;
33
import org.eclipse.emf.ecore.EObject;
33
import org.eclipse.emf.ecp.core.ECPProject;
34
import org.eclipse.emf.ecp.core.ECPProject;
34
import org.eclipse.emf.ecp.core.ECPRepository;
35
import org.eclipse.emf.ecp.core.ECPRepository;
Lines 174-180 Link Here
174
    throw new UnsupportedOperationException();
175
    throw new UnsupportedOperationException();
175
  }
176
  }
176
177
177
  public void addRootElement(ECPProject project, EObject rootElement)
178
  public EList<EObject> getElements(ECPProject ecpProject)
178
  {
179
  {
179
    // TODO: implement CDOProvider.addRootElement(project, rootElement)
180
    // TODO: implement CDOProvider.addRootElement(project, rootElement)
180
    throw new UnsupportedOperationException();
181
    throw new UnsupportedOperationException();
(-)a/ECP2/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/core/ECPProject.java (-1 / +2 lines)
Lines 10-15 Link Here
10
 */
10
 */
11
package org.eclipse.emf.ecp.core;
11
package org.eclipse.emf.ecp.core;
12
12
13
import org.eclipse.emf.common.util.EList;
13
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecp.core.util.ECPCloseable;
15
import org.eclipse.emf.ecp.core.util.ECPCloseable;
15
import org.eclipse.emf.ecp.core.util.ECPDeletable;
16
import org.eclipse.emf.ecp.core.util.ECPDeletable;
Lines 34-40 Link Here
34
   */
35
   */
35
  public ECPMetamodelContext getMetamodelContext();
36
  public ECPMetamodelContext getMetamodelContext();
36
37
37
  public void addRootElement(EObject rootElement);
38
  public EList<EObject> getElements();
38
39
39
  /**
40
  /**
40
   * Returns <code>true</code> if this project is shared with a {@link ECPRepository repository}, <code>false</code>
41
   * Returns <code>true</code> if this project is shared with a {@link ECPRepository repository}, <code>false</code>
(-)a/ECP2/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPProjectImpl.java (-2 / +9 lines)
Lines 10-15 Link Here
10
 */
10
 */
11
package org.eclipse.emf.ecp.internal.core;
11
package org.eclipse.emf.ecp.internal.core;
12
12
13
import org.eclipse.emf.common.util.EList;
13
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecp.core.ECPMetamodelContext;
15
import org.eclipse.emf.ecp.core.ECPMetamodelContext;
15
import org.eclipse.emf.ecp.core.ECPProject;
16
import org.eclipse.emf.ecp.core.ECPProject;
Lines 56-61 Link Here
56
    super(name, properties);
57
    super(name, properties);
57
    this.provider = provider;
58
    this.provider = provider;
58
    open = true;
59
    open = true;
60
    notifyProvider(LifecycleEvent.INIT);
59
  }
61
  }
60
62
61
  public ECPProjectImpl(ECPRepository repository, String name, ECPProperties properties)
63
  public ECPProjectImpl(ECPRepository repository, String name, ECPProperties properties)
Lines 69-74 Link Here
69
71
70
    setRepository((InternalRepository)repository);
72
    setRepository((InternalRepository)repository);
71
    open = true;
73
    open = true;
74
    notifyProvider(LifecycleEvent.INIT);
72
  }
75
  }
73
76
74
  public ECPProjectImpl(ObjectInput in) throws IOException
77
  public ECPProjectImpl(ObjectInput in) throws IOException
Lines 99-104 Link Here
99
    }
102
    }
100
103
101
    open = in.readBoolean();
104
    open = in.readBoolean();
105
    if (open)
106
    {
107
      notifyProvider(LifecycleEvent.INIT);
108
    }
102
  }
109
  }
103
110
104
  @Override
111
  @Override
Lines 491-498 Link Here
491
    return provider.getMetamodelContext(this);
498
    return provider.getMetamodelContext(this);
492
  }
499
  }
493
500
494
  public void addRootElement(EObject rootElement)
501
  public EList<EObject> getElements()
495
  {
502
  {
496
    provider.addRootElement(this, rootElement);
503
    return provider.getElements(this);
497
  }
504
  }
498
}
505
}
(-)a/ECP2/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPProviderRegistryImpl.java (-5 / +4 lines)
Lines 12-17 Link Here
12
12
13
import org.eclipse.net4j.util.AdapterUtil;
13
import org.eclipse.net4j.util.AdapterUtil;
14
14
15
import org.eclipse.emf.common.util.EList;
15
import org.eclipse.emf.ecore.EObject;
16
import org.eclipse.emf.ecore.EObject;
16
import org.eclipse.emf.ecp.core.ECPMetamodelContext;
17
import org.eclipse.emf.ecp.core.ECPMetamodelContext;
17
import org.eclipse.emf.ecp.core.ECPProject;
18
import org.eclipse.emf.ecp.core.ECPProject;
Lines 274-287 Link Here
274
275
275
    /*
276
    /*
276
     * (non-Javadoc)
277
     * (non-Javadoc)
277
     * @see org.eclipse.emf.ecp.spi.core.InternalProvider#addToRoot(org.eclipse.emf.ecore.EObject,
278
     * @see org.eclipse.emf.ecp.spi.core.InternalProvider#getElements(org.eclipse.emf.ecp.internal.core.ECPProjectImpl)
278
     * org.eclipse.emf.ecp.core.ECPProject)
279
     */
279
     */
280
    public void addRootElement(ECPProject ecpProject, EObject newMEInstance)
280
    public EList<EObject> getElements(ECPProject ecpProject)
281
    {
281
    {
282
      // TODO Auto-generated method stub
282
      // TODO Auto-generated method stub
283
      getResolvedElement().addRootElement(ecpProject, newMEInstance);
283
      return getResolvedElement().getElements(ecpProject);
284
285
    }
284
    }
286
  }
285
  }
287
}
286
}
(-)a/ECP2/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/spi/core/InternalProvider.java (-2 / +7 lines)
Lines 10-15 Link Here
10
 */
10
 */
11
package org.eclipse.emf.ecp.spi.core;
11
package org.eclipse.emf.ecp.spi.core;
12
12
13
import org.eclipse.emf.common.util.EList;
13
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecp.core.ECPMetamodelContext;
15
import org.eclipse.emf.ecp.core.ECPMetamodelContext;
15
import org.eclipse.emf.ecp.core.ECPProject;
16
import org.eclipse.emf.ecp.core.ECPProject;
Lines 52-63 Link Here
52
    CREATE, INIT, DISPOSE, REMOVE;
53
    CREATE, INIT, DISPOSE, REMOVE;
53
  }
54
  }
54
55
55
  public void addRootElement(ECPProject project, EObject rootElement);
56
57
  /**
56
  /**
58
   * @param project
57
   * @param project
59
   *          the project to retrieve the meta context for
58
   *          the project to retrieve the meta context for
60
   * @return the meta model context
59
   * @return the meta model context
61
   */
60
   */
62
  public ECPMetamodelContext getMetamodelContext(ECPProject project);
61
  public ECPMetamodelContext getMetamodelContext(ECPProject project);
62
63
  /**
64
   * @param ecpProject
65
   * @return list of Elements of this project
66
   */
67
  public EList<EObject> getElements(ECPProject ecpProject);
63
}
68
}
(-)a/ECP2/org.eclipse.emf.ecp.emfstore.core/src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java (-15 / +97 lines)
Lines 1-5 Link Here
1
package org.eclipse.emf.ecp.emfstore.core.internal;
1
package org.eclipse.emf.ecp.emfstore.core.internal;
2
2
3
import org.eclipse.emf.common.notify.Notification;
4
import org.eclipse.emf.common.notify.NotifyingList;
5
import org.eclipse.emf.common.notify.impl.AdapterImpl;
3
import org.eclipse.emf.common.util.EList;
6
import org.eclipse.emf.common.util.EList;
4
import org.eclipse.emf.ecore.EObject;
7
import org.eclipse.emf.ecore.EObject;
5
import org.eclipse.emf.ecp.core.ECPProject;
8
import org.eclipse.emf.ecp.core.ECPProject;
Lines 14-19 Link Here
14
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
17
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
15
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
18
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
16
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
19
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
20
21
import java.util.HashMap;
22
import java.util.Map;
17
23
18
public class EMFStoreProvider extends DefaultProvider
24
public class EMFStoreProvider extends DefaultProvider
19
{
25
{
Lines 46-60 Link Here
46
    if (parent instanceof InternalProject)
52
    if (parent instanceof InternalProject)
47
    {
53
    {
48
      InternalProject project = (InternalProject)parent;
54
      InternalProject project = (InternalProject)parent;
49
      String projectSpaceID = project.getProperties().getValue(EMFStoreProvider.PROP_PROJECTSPACEID);
55
      ProjectSpace projectSpace = getProjectSpace(project);
50
      EList<ProjectSpace> projectSpaces = WorkspaceManager.getInstance().getCurrentWorkspace().getProjectSpaces();
56
51
      for (ProjectSpace projectSpace : projectSpaces)
57
      childrenList.addChildren(projectSpace.getProject().getModelElements());
52
      {
58
      // TODO: provide interface at emfstore
53
        if (projectSpace.getIdentifier().equals(projectSpaceID))
59
      NotifyingList<EObject> modelElements = (NotifyingList<EObject>)projectSpace.getProject().getModelElements();
54
        {
60
      modelElements.getNotifier();
55
          childrenList.addChildren(projectSpace.getProject().getModelElements());
56
        }
57
      }
58
61
59
    }
62
    }
60
    if (parent instanceof InternalRepository)
63
    if (parent instanceof InternalRepository)
Lines 91-106 Link Here
91
    throw new UnsupportedOperationException();
94
    throw new UnsupportedOperationException();
92
  }
95
  }
93
96
94
  public void addRootElement(ECPProject project, EObject rootElement)
97
  public EList<EObject> getElements(ECPProject ecpProject)
95
  {
98
  {
96
    String id = project.getProperties().getValue(EMFStoreProvider.PROP_PROJECTSPACEID);
99
    ProjectSpace projectSpace = getProjectSpace(ecpProject);
97
    EList<ProjectSpace> projectSpaces = WorkspaceManager.getInstance().getCurrentWorkspace().getProjectSpaces();
100
    return projectSpace.getProject().getModelElements();
98
    for (ProjectSpace projectSpace : projectSpaces)
101
  }
102
103
  private Map<ECPProject, ProjectSpace> cachedProjectSpaces = new HashMap<ECPProject, ProjectSpace>();
104
105
  private AdapterImpl adapter;
106
107
  /**
108
   * Method for caching the loading of {@link ProjectSpace}
109
   * 
110
   * @return {@link EList} of {@link ProjectSpace}
111
   */
112
  private ProjectSpace getProjectSpace(ECPProject ecpProject)
113
  {
114
    if (!cachedProjectSpaces.containsKey(ecpProject))
99
    {
115
    {
100
      if (projectSpace.getIdentifier().equals(id))
116
117
      EList<ProjectSpace> projectSpaces = WorkspaceManager.getInstance().getCurrentWorkspace().getProjectSpaces();
118
      for (ProjectSpace projectSpace : projectSpaces)
101
      {
119
      {
102
        projectSpace.getProject().addModelElement(rootElement);
120
        String projectSpaceID = ecpProject.getProperties().getValue(EMFStoreProvider.PROP_PROJECTSPACEID);
121
        if (projectSpace.getIdentifier().equals(projectSpaceID))
122
        {
123
          cachedProjectSpaces.put(ecpProject, projectSpace);
124
        }
103
      }
125
      }
104
    }
126
    }
127
    return cachedProjectSpaces.get(ecpProject);
128
129
  }
130
131
  @Override
132
  public void handleLifecycle(ECPModelContext context, LifecycleEvent event)
133
  {
134
    switch (event)
135
    {
136
    case INIT:
137
      handleInit(context);
138
      break;
139
    case DISPOSE:
140
      handelDispose(context);
141
    default:
142
      break;
143
    }
144
    // TODO Trace properly
145
    String providerClass = getClass().getSimpleName();
146
    String contextClass = context.getClass().getSimpleName();
147
    System.out.println(providerClass + " received " + event + " for " + contextClass + " " + context);
148
  }
149
150
  /**
151
   * @param context
152
   */
153
  private void handelDispose(ECPModelContext context)
154
  {
155
    if (context instanceof InternalProject)
156
    {
157
      ProjectSpace projectSpace = getProjectSpace((ECPProject)context);
158
159
      projectSpace.getProject().eAdapters().remove(adapter);
160
161
    }
162
163
  }
164
165
  /**
166
   * @param context
167
   */
168
  private void handleInit(final ECPModelContext context)
169
  {
170
    if (context instanceof InternalProject)
171
    {
172
      ProjectSpace projectSpace = getProjectSpace((ECPProject)context);
173
174
      adapter = new AdapterImpl()
175
      {
176
        @Override
177
        public void notifyChanged(Notification notification)
178
        {
179
          ((InternalProject)context).notifyObjectsChanged(new Object[] { context });
180
        }
181
      };
182
183
      projectSpace.getProject().eAdapters().add(adapter);
184
185
    }
186
105
  }
187
  }
106
}
188
}
(-)a/ECP2/org.eclipse.emf.ecp.ui/src/org/eclipse/emf/ecp/wizards/ModelTreePage.java (-1 / +1 lines)
Lines 112-118 Link Here
112
    treeViewer = new TreeViewer(tree);
112
    treeViewer = new TreeViewer(tree);
113
    GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).minSize(0, 150).span(2, 1)
113
    GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).minSize(0, 150).span(2, 1)
114
        .applyTo(treeViewer.getControl());
114
        .applyTo(treeViewer.getControl());
115
    treeViewer.setContentProvider(new ModelTreeContentProvider(project.getMetamodelContext()));
115
    treeViewer.setContentProvider(new ModelTreeContentProvider(metaContext));
116
    treeViewer.setLabelProvider(new MEClassLabelProvider());
116
    treeViewer.setLabelProvider(new MEClassLabelProvider());
117
    treeViewer.setComparator(new ViewerComparator());
117
    treeViewer.setComparator(new ViewerComparator());
118
    treeViewer.addFilter(filter);
118
    treeViewer.addFilter(filter);
(-)a/ECP2/org.eclipse.emf.ecp.ui/src/org/eclipse/emf/ecp/wizards/NewModelElementWizard.java (-1 / +1 lines)
Lines 71-77 Link Here
71
      EPackage ePackage = newMEType.getEPackage();
71
      EPackage ePackage = newMEType.getEPackage();
72
      newMEInstance = ePackage.getEFactoryInstance().create(newMEType);
72
      newMEInstance = ePackage.getEFactoryInstance().create(newMEType);
73
73
74
      ecpProject.addRootElement(newMEInstance);
74
      ecpProject.getElements().add(newMEInstance);
75
75
76
      // 3.open the newly created ME
76
      // 3.open the newly created ME
77
      ActionHelper.openModelElement(newMEInstance, this.getClass().getName());
77
      ActionHelper.openModelElement(newMEInstance, this.getClass().getName());
(-)a/ECP2/org.eclipse.emf.ecp.workspace.core/src/org/eclipse/emf/ecp/workspace/internal/core/WorkspaceProvider.java (-1 / +2 lines)
Lines 10-15 Link Here
10
 */
10
 */
11
package org.eclipse.emf.ecp.workspace.internal.core;
11
package org.eclipse.emf.ecp.workspace.internal.core;
12
12
13
import org.eclipse.emf.common.util.EList;
13
import org.eclipse.emf.common.util.URI;
14
import org.eclipse.emf.common.util.URI;
14
import org.eclipse.emf.ecore.EObject;
15
import org.eclipse.emf.ecore.EObject;
15
import org.eclipse.emf.ecore.resource.Resource;
16
import org.eclipse.emf.ecore.resource.Resource;
Lines 149-155 Link Here
149
    throw new UnsupportedOperationException();
150
    throw new UnsupportedOperationException();
150
  }
151
  }
151
152
152
  public void addRootElement(ECPProject project, EObject rootElement)
153
  public EList<EObject> getElements(ECPProject ecpProject)
153
  {
154
  {
154
    // TODO: implement WorkspaceProvider.addRootElement(project, rootElement)
155
    // TODO: implement WorkspaceProvider.addRootElement(project, rootElement)
155
    throw new UnsupportedOperationException();
156
    throw new UnsupportedOperationException();

Return to bug 374089