|
Lines 13-65
Link Here
|
| 13 |
package org.eclipse.emf.ecp.emfstore.internal.ui.decorator; |
13 |
package org.eclipse.emf.ecp.emfstore.internal.ui.decorator; |
| 14 |
|
14 |
|
| 15 |
import org.eclipse.emf.ecore.EObject; |
15 |
import org.eclipse.emf.ecore.EObject; |
| 16 |
import org.eclipse.emf.ecp.core.ECPProject; |
|
|
| 17 |
import org.eclipse.emf.ecp.core.util.observer.IECPProjectsChangedUIObserver; |
| 18 |
import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider; |
| 19 |
import org.eclipse.emf.ecp.spi.core.InternalProject; |
16 |
import org.eclipse.emf.ecp.spi.core.InternalProject; |
| 20 |
|
17 |
import org.eclipse.emf.emfstore.client.model.ProjectSpace; |
| 21 |
import java.util.HashSet; |
18 |
import org.eclipse.emf.emfstore.client.model.observers.OperationObserver; |
|
|
19 |
import org.eclipse.emf.emfstore.common.model.ModelElementId; |
| 20 |
import org.eclipse.emf.emfstore.common.model.Project; |
| 21 |
import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation; |
| 22 |
|
22 |
|
| 23 |
/** |
23 |
/** |
| 24 |
* Project change observer that marks elements as dirty. |
24 |
* Project change observer that marks elements as dirty. |
| 25 |
*/ |
25 |
*/ |
| 26 |
public class EMFStoreDirtyObserver implements IECPProjectsChangedUIObserver { |
26 |
public class EMFStoreDirtyObserver implements OperationObserver { |
| 27 |
|
27 |
|
| 28 |
private HashSet<Object> excludedObjects; |
28 |
private ProjectSpace projectSpace; |
|
|
29 |
private InternalProject internalProject; |
| 29 |
|
30 |
|
| 30 |
/** |
31 |
/** |
| 31 |
* Default constructor. |
32 |
* Default constructor. |
|
|
33 |
* |
| 34 |
* @param project |
| 32 |
*/ |
35 |
*/ |
| 33 |
public EMFStoreDirtyObserver() { |
36 |
public EMFStoreDirtyObserver(ProjectSpace projectSpace, InternalProject project) { |
| 34 |
|
37 |
this.projectSpace = projectSpace; |
|
|
38 |
internalProject = project; |
| 35 |
} |
39 |
} |
| 36 |
|
40 |
|
| 37 |
// BEGIN SUPRESS CATCH EXCEPTION |
41 |
/* |
| 38 |
public void projectsChanged(ECPProject[] oldProjects, ECPProject[] newProjects) throws Exception { |
42 |
* (non-Javadoc) |
|
|
43 |
* @see |
| 44 |
* org.eclipse.emf.emfstore.client.model.observers.OperationObserver#operationExecuted(org.eclipse.emf.emfstore. |
| 45 |
* server.model.versioning.operations.AbstractOperation) |
| 46 |
*/ |
| 47 |
public void operationExecuted(AbstractOperation operation) { |
| 48 |
for (ModelElementId modelElementId : operation.getAllInvolvedModelElements()) { |
| 49 |
Project project = projectSpace.getProject(); |
| 50 |
EObject element = project.getModelElement(modelElementId); |
| 39 |
|
51 |
|
| 40 |
} |
52 |
EMFStoreDirtyDecoratorCachedTree.getInstance(internalProject).addOperation(element); |
| 41 |
|
|
|
| 42 |
public void projectChanged(ECPProject project, boolean opened) throws Exception { |
| 43 |
|
| 44 |
} |
| 45 |
|
| 46 |
public void objectsChanged(ECPProject project, Object[] objects, boolean structural) throws Exception { |
| 47 |
|
| 48 |
if (EMFStoreProvider.INSTANCE.getProjectSpace((InternalProject) project).isShared()) { |
| 49 |
return; |
| 50 |
} |
53 |
} |
| 51 |
// for all changed objects |
|
|
| 52 |
for (Object object : objects) { |
| 53 |
// not an eobject then do nothing |
| 54 |
if (!(object instanceof EObject)) { |
| 55 |
continue; |
| 56 |
} |
| 57 |
|
54 |
|
| 58 |
EObject eObject = (EObject) object; |
55 |
} |
| 59 |
|
56 |
|
| 60 |
EMFStoreDirtyDecoratorCachedTree.getInstance(project).update(eObject, Boolean.TRUE); |
57 |
/* |
|
|
58 |
* (non-Javadoc) |
| 59 |
* @see |
| 60 |
* org.eclipse.emf.emfstore.client.model.observers.OperationObserver#operationUnDone(org.eclipse.emf.emfstore.server |
| 61 |
* .model.versioning.operations.AbstractOperation) |
| 62 |
*/ |
| 63 |
public void operationUnDone(AbstractOperation operation) { |
| 64 |
for (ModelElementId modelElementId : operation.getAllInvolvedModelElements()) { |
| 65 |
Project project = projectSpace.getProject(); |
| 66 |
EObject element = project.getModelElement(modelElementId); |
| 61 |
|
67 |
|
|
|
68 |
EMFStoreDirtyDecoratorCachedTree.getInstance(internalProject).removeOperation(element); |
| 62 |
} |
69 |
} |
|
|
70 |
|
| 63 |
} |
71 |
} |
| 64 |
|
72 |
|
| 65 |
// END SUPRESS CATCH EXCEPTION |
73 |
// END SUPRESS CATCH EXCEPTION |