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 403468
Collapse All | Expand All

(-)plugin.xml (+22 lines)
Lines 805-810 Link Here
805
           </objectClass>
805
           </objectClass>
806
        </enablement>
806
        </enablement>
807
     </decorator>
807
     </decorator>
808
      <decorator
809
            adaptable="true"
810
            class="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.ProjectEMFStoreBranchDecorator"
811
            id="org.eclipse.emf.ecp.emfstore.ui.decorators.EMFStoreBranchDecorator"
812
            label="EMFStoreBranch Decorator"
813
            lightweight="false"
814
            state="true">
815
         <enablement>
816
            <objectClass
817
                  name="org.eclipse.emf.ecp.core.ECPProject">
818
            </objectClass>
819
         </enablement>
820
         <description>
821
            Show branch and version if shared
822
         </description>
823
      </decorator>
808
   </extension>
824
   </extension>
809
   <extension
825
   <extension
810
         point="org.eclipse.core.expressions.propertyTesters">
826
         point="org.eclipse.core.expressions.propertyTesters">
Lines 861-864 Link Here
861
            commitObserver="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.EMFStoreDirtyDecorator">
877
            commitObserver="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.EMFStoreDirtyDecorator">
862
      </observer>
878
      </observer>
863
   </extension>
879
   </extension>
880
                <extension
881
                      point="org.eclipse.emf.emfstore.client.shareObserver">
882
                   <observer
883
                         shareObserver="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.ProjectEMFStoreBranchDecorator">
884
                   </observer>
885
                </extension>
864
</plugin>
886
</plugin>
(-)src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/ProjectEMFStoreBranchDecorator.java (+78 lines)
Added Link Here
1
/**
2
 * 
3
 */
4
package org.eclipse.emf.ecp.emfstore.internal.ui.decorator;
5
6
import org.eclipse.emf.ecp.core.ECPProject;
7
import org.eclipse.emf.ecp.core.ECPProvider;
8
import org.eclipse.emf.ecp.core.ECPProviderRegistry;
9
import org.eclipse.emf.ecp.core.util.ECPUtil;
10
import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
11
import org.eclipse.emf.ecp.spi.core.InternalProject;
12
import org.eclipse.emf.emfstore.client.ESLocalProject;
13
import org.eclipse.emf.emfstore.client.observer.ESShareObserver;
14
import org.eclipse.emf.emfstore.server.model.versionspec.ESPrimaryVersionSpec;
15
16
import org.eclipse.jface.viewers.ILabelDecorator;
17
import org.eclipse.jface.viewers.ILabelProviderListener;
18
import org.eclipse.swt.graphics.Image;
19
20
/**
21
 * @author jfaltermeier
22
 * 
23
 */
24
public class ProjectEMFStoreBranchDecorator implements ILabelDecorator, ESShareObserver {
25
26
	public void addListener(ILabelProviderListener listener) {
27
	}
28
29
	public void dispose() {
30
	}
31
32
	public boolean isLabelProperty(Object element, String property) {
33
		return false;
34
	}
35
36
	public void removeListener(ILabelProviderListener listener) {
37
38
	}
39
40
	public void shareDone(ESLocalProject localProject) {
41
		decorateText(localProject.getProjectName(), localProject);
42
	}
43
44
	public Image decorateImage(Image image, Object element) {
45
		return image;
46
	}
47
48
	public String decorateText(String text, Object element) {
49
		ESLocalProject localProject;
50
		if (element instanceof ESLocalProject) {
51
			localProject = (ESLocalProject) element;
52
		} else if (element instanceof ECPProject) {
53
			ECPProvider ecpProvider = ECPProviderRegistry.INSTANCE.getProvider(EMFStoreProvider.NAME);
54
			EMFStoreProvider provider = (EMFStoreProvider) ECPUtil.getResolvedElement(ecpProvider);
55
			InternalProject project = (InternalProject) element;
56
			localProject = provider.getProjectSpace(project);
57
		} else {
58
			return text;
59
		}
60
61
		if (localProject == null) {
62
			return text;
63
		}
64
65
		if (localProject.isShared()) {
66
			ESPrimaryVersionSpec versSpec;
67
			try {
68
				versSpec = localProject.getBaseVersion();
69
				return text + " [" + versSpec.getBranch() + ", Version " + versSpec.getIdentifier() + "]";
70
			} catch (NullPointerException e) {
71
				// possible npe because share is async. -> shareobserver
72
			}
73
74
		}
75
		return text;
76
	}
77
78
}
(-)src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/RepositoryViewBranchDecorator.java (+61 lines)
Added Link Here
1
/**
2
 * 
3
 */
4
package org.eclipse.emf.ecp.emfstore.internal.ui.decorator;
5
6
import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProjectWrapper;
7
import org.eclipse.emf.emfstore.client.ESRemoteProject;
8
import org.eclipse.emf.emfstore.server.exceptions.ESException;
9
import org.eclipse.emf.emfstore.server.model.ESBranchInfo;
10
import org.eclipse.emf.emfstore.server.model.versionspec.ESPrimaryVersionSpec;
11
12
import org.eclipse.core.runtime.NullProgressMonitor;
13
import org.eclipse.jface.viewers.IDecoration;
14
import org.eclipse.jface.viewers.ILabelProviderListener;
15
import org.eclipse.jface.viewers.ILightweightLabelDecorator;
16
17
import java.util.List;
18
19
/**
20
 * Optional decorator. Not used in extension point
21
 * 
22
 * @author jfaltermeier
23
 * 
24
 */
25
public class RepositoryViewBranchDecorator implements ILightweightLabelDecorator {
26
27
	public void addListener(ILabelProviderListener listener) {
28
	}
29
30
	public void dispose() {
31
	}
32
33
	public boolean isLabelProperty(Object element, String property) {
34
		return false;
35
	}
36
37
	public void removeListener(ILabelProviderListener listener) {
38
	}
39
40
	public void decorate(Object element, IDecoration decoration) {
41
		if (element instanceof EMFStoreProjectWrapper) {
42
			EMFStoreProjectWrapper wrapper = (EMFStoreProjectWrapper) element;
43
			ESRemoteProject remoteProject = wrapper.getCheckoutData();
44
45
			if (remoteProject == null) {
46
				return;
47
			}
48
49
			try {
50
				List<ESBranchInfo> branches = remoteProject.getBranches(new NullProgressMonitor());
51
				for (ESBranchInfo bi : branches) {
52
					ESPrimaryVersionSpec versSpec = bi.getHead();
53
					decoration.addSuffix(" [" + versSpec.getBranch() + ", v" + versSpec.getIdentifier() + "]");
54
				}
55
			} catch (ESException ex) {
56
			}
57
		} else {
58
			return;
59
		}
60
	}
61
}
(-)src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/CreateBranchHandler.java (+1 lines)
Lines 38-43 Link Here
38
		ESLocalProject projectSpace = EMFStoreProvider.INSTANCE.getProjectSpace(project);
38
		ESLocalProject projectSpace = EMFStoreProvider.INSTANCE.getProjectSpace(project);
39
		// TODO EMFStore constructor missing
39
		// TODO EMFStore constructor missing
40
		new UICreateBranchController(HandlerUtil.getActiveShell(event), projectSpace).execute();
40
		new UICreateBranchController(HandlerUtil.getActiveShell(event), projectSpace).execute();
41
		project.notifyObjectsChanged(new Object[] { project }, false);
41
		return null;
42
		return null;
42
	}
43
	}
43
44

Return to bug 403468