Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikaël Barbero2013-01-25 10:42:29 +0000
committerMikaël Barbero2013-01-25 14:18:30 +0000
commit3b3cc11b29023569eac50ef33d750478b51354f7 (patch)
treeca1b009ab3101fade9935aaccee29a8790a86874
parentf6caf2ba9692c90ab40eaa64e2696a2c0839d011 (diff)
downloadorg.eclipse.emf.compare-3b3cc11b29023569eac50ef33d750478b51354f7.tar.gz
org.eclipse.emf.compare-3b3cc11b29023569eac50ef33d750478b51354f7.tar.xz
org.eclipse.emf.compare-3b3cc11b29023569eac50ef33d750478b51354f7.zip
Simplify handling of adaptation of Comparison EObject to Node for
StructureMergeViewer - move all label and content provider logic to .edit plugins - adapters do not implement IDiffElement and IDiffContainer anymore (no need). - change merge diff icon
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/add_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/add_ov.gif)bin186 -> 186 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/chg_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/chg_ov.gif)bin187 -> 187 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confadd_ov.png (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confadd_ov.png)bin215 -> 215 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confchg_ov.png (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confchg_ov.png)bin205 -> 205 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confdel_ov.png (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confdel_ov.png)bin207 -> 207 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_add_ov.png (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_add_ov.png)bin222 -> 222 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_chg_ov.png (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_chg_ov.png)bin204 -> 204 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_del_ov.png (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_del_ov.png)bin211 -> 211 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/del_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/del_ov.gif)bin184 -> 184 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/error_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/error_ov.gif)bin339 -> 339 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inadd_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/inadd_ov.gif)bin194 -> 194 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inchg_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/inchg_ov.gif)bin191 -> 191 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/indel_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/indel_ov.gif)bin190 -> 190 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inoutchg_ov.gifbin0 -> 299 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/merged_ov.gifbin0 -> 185 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outadd_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outadd_ov.gif)bin190 -> 190 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outchg_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outchg_ov.gif)bin194 -> 194 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outdel_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outdel_ov.gif)bin188 -> 188 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inadd_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_inadd_ov.gif)bin194 -> 194 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inchg_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_inchg_ov.gif)bin190 -> 190 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_indel_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_indel_ov.gif)bin190 -> 190 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inoutchg_ov.gifbin0 -> 300 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outadd_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outadd_ov.gif)bin190 -> 190 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outchg_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outchg_ov.gif)bin196 -> 196 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outdel_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outdel_ov.gif)bin188 -> 188 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/removed_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/removed_ov.gif)bin131 -> 131 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/warning_ov.gif (renamed from plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/warning_ov.gif)bin324 -> 324 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/AttributeChangeItemProviderSpec.java13
-rw-r--r--plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/MatchItemProviderSpec.java6
-rw-r--r--plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/OverlayImageProvider.java342
-rw-r--r--plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/ReferenceChangeItemProviderSpec.java11
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/merged_ov.gifbin176 -> 0 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/plugin.xml6
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/accessor/AbstractAccessorFactory.java16
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewerContentProvider.java2
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewerContentProvider.java7
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffContainer.java120
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffElement.java157
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffNode.java60
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/DiffNodeComparer.java11
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java7
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java91
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerLabelProvider.java103
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/AttributeChangeNode.java11
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/CompareNodeAdapterFactory.java9
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/ConflictNode.java11
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/MatchNode.java11
47 files changed, 547 insertions, 447 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/add_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/add_ov.gif
index c123a2b13..c123a2b13 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/add_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/add_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/chg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/chg_ov.gif
index 2b1b8d677..2b1b8d677 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/chg_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/chg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confadd_ov.png b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confadd_ov.png
index f7834e57e..f7834e57e 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confadd_ov.png
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confadd_ov.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confchg_ov.png b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confchg_ov.png
index 6be0f6725..6be0f6725 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confchg_ov.png
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confchg_ov.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confdel_ov.png b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confdel_ov.png
index dac7e135d..dac7e135d 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confdel_ov.png
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confdel_ov.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_add_ov.png b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_add_ov.png
index ffed135d2..ffed135d2 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_add_ov.png
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_add_ov.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_chg_ov.png b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_chg_ov.png
index b5d33e535..b5d33e535 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_chg_ov.png
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_chg_ov.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_del_ov.png b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_del_ov.png
index 2bff268e6..2bff268e6 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/confr_del_ov.png
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/confr_del_ov.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/del_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/del_ov.gif
index ef0207c62..ef0207c62 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/del_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/del_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/error_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/error_ov.gif
index 0bc60689c..0bc60689c 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/error_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/error_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/inadd_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inadd_ov.gif
index 05a9f5a68..05a9f5a68 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/inadd_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inadd_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/inchg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inchg_ov.gif
index 12d4a9732..12d4a9732 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/inchg_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inchg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/indel_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/indel_ov.gif
index 373a68f14..373a68f14 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/indel_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/indel_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inoutchg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inoutchg_ov.gif
new file mode 100644
index 000000000..453497689
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/inoutchg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/merged_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/merged_ov.gif
new file mode 100644
index 000000000..603a9e124
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/merged_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outadd_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outadd_ov.gif
index 63fb2967c..63fb2967c 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outadd_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outadd_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outchg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outchg_ov.gif
index 78321d74d..78321d74d 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outchg_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outchg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outdel_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outdel_ov.gif
index 7182e5596..7182e5596 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/outdel_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/outdel_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_inadd_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inadd_ov.gif
index 0ac0cea9e..0ac0cea9e 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_inadd_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inadd_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_inchg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inchg_ov.gif
index c330c0c9f..c330c0c9f 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_inchg_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inchg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_indel_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_indel_ov.gif
index 5acab6778..5acab6778 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_indel_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_indel_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inoutchg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inoutchg_ov.gif
new file mode 100644
index 000000000..ca8c6f4a4
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_inoutchg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outadd_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outadd_ov.gif
index 69607651f..69607651f 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outadd_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outadd_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outchg_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outchg_ov.gif
index 17ba1af4f..17ba1af4f 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outchg_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outchg_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outdel_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outdel_ov.gif
index ef6b8b745..ef6b8b745 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/r_outdel_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/r_outdel_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/removed_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/removed_ov.gif
index 045d88f09..045d88f09 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/removed_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/removed_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/warning_ov.gif b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/warning_ov.gif
index 2b2e50fe7..2b2e50fe7 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/warning_ov.gif
+++ b/plugins/org.eclipse.emf.compare.edit/icons/full/ovr16/warning_ov.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/AttributeChangeItemProviderSpec.java b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/AttributeChangeItemProviderSpec.java
index 8c80e662a..8f70267aa 100644
--- a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/AttributeChangeItemProviderSpec.java
+++ b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/AttributeChangeItemProviderSpec.java
@@ -33,11 +33,14 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
*/
public class AttributeChangeItemProviderSpec extends AttributeChangeItemProvider implements IItemStyledLabelProvider {
+ private final OverlayImageProvider overlayProvider;
+
/**
* @param adapterFactory
*/
public AttributeChangeItemProviderSpec(AdapterFactory adapterFactory) {
super(adapterFactory);
+ overlayProvider = new OverlayImageProvider(getResourceLocator(), true);
}
/**
@@ -48,12 +51,16 @@ public class AttributeChangeItemProviderSpec extends AttributeChangeItemProvider
@Override
public Object getImage(Object object) {
AttributeChange attributeChange = (AttributeChange)object;
- Object ret = AdapterFactoryUtil.getImage(getRootAdapterFactory(), attributeChange.getValue());
+ Object attributeChangeValueImage = AdapterFactoryUtil.getImage(getRootAdapterFactory(),
+ attributeChange.getValue());
- if (ret == null) {
- ret = super.getImage(object);
+ if (attributeChangeValueImage == null) {
+ attributeChangeValueImage = super.getImage(object);
}
+ Object diffImage = overlayProvider.getComposedImage(attributeChange, attributeChangeValueImage);
+ Object ret = overlayImage(object, diffImage);
+
return ret;
}
diff --git a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/MatchItemProviderSpec.java b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/MatchItemProviderSpec.java
index 15f954ee6..7fd6d7397 100644
--- a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/MatchItemProviderSpec.java
+++ b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/MatchItemProviderSpec.java
@@ -59,6 +59,8 @@ public class MatchItemProviderSpec extends MatchItemProvider implements IItemSty
}
};
+ private final OverlayImageProvider overlayProvider;
+
/**
* Constructor calling super {@link #MatchItemProvider(AdapterFactory)}.
*
@@ -67,6 +69,7 @@ public class MatchItemProviderSpec extends MatchItemProvider implements IItemSty
*/
public MatchItemProviderSpec(AdapterFactory adapterFactory) {
super(adapterFactory);
+ overlayProvider = new OverlayImageProvider(getResourceLocator(), true);
}
/**
@@ -91,6 +94,9 @@ public class MatchItemProviderSpec extends MatchItemProvider implements IItemSty
ret = super.getImage(object);
}
+ Object matchImage = overlayProvider.getComposedImage(match, ret);
+ ret = overlayImage(object, matchImage);
+
return ret;
}
diff --git a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/OverlayImageProvider.java b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/OverlayImageProvider.java
new file mode 100644
index 000000000..b5ba7a103
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/OverlayImageProvider.java
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.provider.spec;
+
+import static com.google.common.collect.Iterables.any;
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.isEmpty;
+import static com.google.common.collect.Lists.newArrayList;
+import static org.eclipse.emf.compare.utils.EMFComparePredicates.hasConflict;
+
+import com.google.common.base.Predicate;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Conflict;
+import org.eclipse.emf.compare.ConflictKind;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.DifferenceKind;
+import org.eclipse.emf.compare.DifferenceSource;
+import org.eclipse.emf.compare.DifferenceState;
+import org.eclipse.emf.compare.Match;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.provider.ComposedImage;
+
+/**
+ * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
+ */
+public class OverlayImageProvider {
+
+ private final boolean fLeftIsLocal;
+
+ private final ResourceLocator fResourceLocator;
+
+ /**
+ *
+ */
+ public OverlayImageProvider(ResourceLocator resourceLocator, boolean leftIsLocal) {
+ this.fResourceLocator = resourceLocator;
+ this.fLeftIsLocal = leftIsLocal;
+ }
+
+ public Object getComposedImage(Diff diff, Object imageToCompose) {
+ String overlay = getImageOverlay(diff);
+ return getComposedImage(imageToCompose, overlay);
+ }
+
+ public Object getComposedImage(Match match, Object imageToCompose) {
+ String overlay = getImageOverlay(match);
+ return getComposedImage(imageToCompose, overlay);
+ }
+
+ private Object getComposedImage(Object imageToCompose, String overlay) {
+ Collection<Object> images = newArrayList();
+ images.add(imageToCompose);
+ if (overlay != null) {
+ Object image = fResourceLocator.getImage(overlay);
+ images.add(image);
+ }
+ return new ComposedImageExtension(images);
+ }
+
+ private String getImageOverlay(Diff diff) {
+ final DifferenceSource source = diff.getSource();
+ final Match match = diff.getMatch();
+ final Conflict conflict = diff.getConflict();
+ final DifferenceKind diffKind = diff.getKind();
+ final Comparison c = match.getComparison();
+ String path = "full/ovr16/";
+
+ if (diff.getState() == DifferenceState.MERGED) {
+ path += "merged_ov";
+ } else if (diff.getState() == DifferenceState.DISCARDED) {
+ path += "removed_ov";
+ } else if (c.isThreeWay()) {
+ String filext = "";
+ if (conflict != null) {
+ if (conflict.getKind() == ConflictKind.REAL) {
+ filext = ".png";
+ path += "conf";
+ path += getConflictWay(source);
+ }
+ // if (conflict.getKind() == ConflictKind.PSEUDO) {
+ // path += "pconf";
+ // }
+ } else {
+ switch (source) {
+ case LEFT:
+ if (fLeftIsLocal) {
+ path += "r_out";
+ } else {
+ path += "out";
+ }
+ break;
+ case RIGHT:
+ if (fLeftIsLocal) {
+ path += "r_in";
+ } else {
+ path += "in";
+ }
+ break;
+ default:
+ // Cannot happen ... for now
+ break;
+ }
+ }
+
+ switch (diffKind) {
+ case ADD:
+ path += "add_ov";
+ break;
+ case DELETE:
+ path += "del_ov";
+ break;
+ case CHANGE:
+ // fallthrough
+ case MOVE:
+ path += "chg_ov";
+ break;
+ default:
+ // Cannot happen ... for now
+ break;
+ }
+ path += filext;
+ } else {
+ path += getPathForTwoWayDiff(diffKind);
+ }
+ return path;
+ }
+
+ private String getPathForTwoWayDiff(final DifferenceKind diffKind) {
+ final String path;
+ switch (diffKind) {
+ case ADD:
+ if (fLeftIsLocal) {
+ path = "add_ov";
+ } else {
+ path = "del_ov";
+ }
+ break;
+ case DELETE:
+ if (fLeftIsLocal) {
+ path = "del_ov";
+ } else {
+ path = "add_ov";
+ }
+ break;
+ case CHANGE:
+ // fallthrough
+ case MOVE:
+ path = "chg_ov";
+ break;
+ default:
+ path = "";
+ break;
+ }
+ return path;
+ }
+
+ private String getConflictWay(final DifferenceSource source) {
+ final String path;
+ if (source == DifferenceSource.LEFT && !fLeftIsLocal) {
+ path = "r_";
+ } else if (source == DifferenceSource.RIGHT && fLeftIsLocal) {
+ path = "r_";
+ } else {
+ path = "";
+ }
+ return path;
+ }
+
+ private String getImageOverlay(Match match) {
+ String path = null;
+ final EObject ancestor = match.getOrigin();
+ final EObject left = match.getLeft();
+ final EObject right = match.getRight();
+
+ final Iterable<Diff> differences = match.getAllDifferences();
+
+ if (match.getComparison().isThreeWay()) {
+ boolean hasConflicts = any(differences, hasConflict(ConflictKind.REAL, ConflictKind.PSEUDO));
+
+ if (ancestor == null) {
+ if (left == null) {
+ if (right != null) {
+ if (fLeftIsLocal) {
+ path = "r_inadd_ov";
+ } else {
+ path = "inadd_ov";
+ }
+ }
+ } else if (right == null) {
+ if (fLeftIsLocal) {
+ path = "r_outadd_ov";
+ } else {
+ path = "outadd_ov";
+ }
+ } else if (hasConflicts && any(differences, hasConflict(ConflictKind.REAL))) {
+ path = "confadd_ov.png";
+ }
+ } else if (left == null) {
+ if (right == null) {
+ // path = Differencer.CONFLICTING | Differencer.DELETION |
+ // Differencer.PSEUDO_CONFLICT;
+ } else if (!hasConflicts) {
+ if (fLeftIsLocal) {
+ path = "r_outdel_ov";
+ } else {
+ path = "outdel_ov";
+ }
+ } else if (any(differences, hasConflict(ConflictKind.REAL))) {
+ path = "confdel_ov.png";
+ }
+ } else if (right == null) {
+ if (!hasConflicts) {
+ if (fLeftIsLocal) {
+ path = "r_indel_ov";
+ } else {
+ path = "indel_ov";
+ }
+ } else if (any(differences, hasConflict(ConflictKind.REAL))) {
+ path = "confchg_ov.png";
+ }
+ } else {
+ boolean ay = isEmpty(filter(differences, LEFT_DIFF));
+ boolean am = isEmpty(filter(differences, RIGHT_DIFF));
+
+ if (isEmpty(differences)) {
+ // empty
+ } else if (ay && !am) {
+ if (fLeftIsLocal) {
+ path = "r_inchg_ov";
+ } else {
+ path = "inchg_ov";
+ }
+ } else if (!ay && am) {
+ if (fLeftIsLocal) {
+ path = "r_outchg_ov";
+ } else {
+ path = "outchg_ov";
+ }
+ } else {
+ if (hasConflicts && any(differences, hasConflict(ConflictKind.REAL))) {
+ path = "confchg_ov.png";
+ } else {
+ path = "r_inoutchg_ov.gif";
+ }
+ }
+ }
+ } else if (left == null) {
+ if (right != null) {
+ if (fLeftIsLocal) {
+ path = "add_ov";
+ } else {
+ path = "del_ov";
+ }
+ }
+ } else if (right == null) {
+ if (fLeftIsLocal) {
+ path = "del_ov";
+ } else {
+ path = "add_ov";
+ }
+ } else if (!isEmpty(differences)) {
+ path = "chg_ov";
+ }
+
+ String ret = null;
+ if (path != null) {
+ ret = "full/ovr16/" + path;
+ }
+ return ret;
+ }
+
+ private static final Predicate<Diff> LEFT_DIFF = new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ return input != null && input.getSource() == DifferenceSource.LEFT;
+ }
+ };
+
+ private static final Predicate<Diff> RIGHT_DIFF = new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ return input != null && input.getSource() == DifferenceSource.RIGHT;
+ }
+ };
+
+ private final class ComposedImageExtension extends ComposedImage {
+
+ /**
+ * @param images
+ */
+ ComposedImageExtension(Collection<?> images) {
+ super(images);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.edit.provider.ComposedImage#getDrawPoints(org.eclipse.emf.edit.provider.ComposedImage.Size)
+ */
+ @Override
+ public List<Point> getDrawPoints(Size size) {
+ List<ComposedImage.Point> result = super.getDrawPoints(size);
+ if (result.size() > 1) {
+ result.get(1).x = 12;
+ result.get(1).y = 2;
+ }
+ return result;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.edit.provider.ComposedImage#getSize(java.util.Collection)
+ */
+ @Override
+ public Size getSize(Collection<? extends Size> imageSizes) {
+ this.imageSizes = newArrayList(imageSizes);
+ List<Point> drawPoints = getDrawPoints(null);
+
+ Size result = new Size();
+ for (int i = 0; i < imageSizes.size(); i++) {
+ Size size = this.imageSizes.get(i);
+ Point point = drawPoints.get(i);
+
+ result.width = Math.max(result.width, size.width + Math.abs(point.x));
+ result.height = Math.max(result.height, size.height + Math.abs(point.y));
+ }
+ return result;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/ReferenceChangeItemProviderSpec.java b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/ReferenceChangeItemProviderSpec.java
index 99a049cfa..f97dbec9c 100644
--- a/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/ReferenceChangeItemProviderSpec.java
+++ b/plugins/org.eclipse.emf.compare.edit/src/org/eclipse/emf/compare/provider/spec/ReferenceChangeItemProviderSpec.java
@@ -49,6 +49,8 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
*/
public class ReferenceChangeItemProviderSpec extends ReferenceChangeItemProvider implements IItemStyledLabelProvider {
+ private final OverlayImageProvider overlayProvider;
+
/**
* Constructor calling super {@link #ReferenceChangeItemProvider(AdapterFactory)}.
*
@@ -57,6 +59,7 @@ public class ReferenceChangeItemProviderSpec extends ReferenceChangeItemProvider
*/
public ReferenceChangeItemProviderSpec(AdapterFactory adapterFactory) {
super(adapterFactory);
+ overlayProvider = new OverlayImageProvider(getResourceLocator(), true);
}
/**
@@ -139,9 +142,13 @@ public class ReferenceChangeItemProviderSpec extends ReferenceChangeItemProvider
public Object getImage(Object object) {
ReferenceChange refChange = (ReferenceChange)object;
- Object image = AdapterFactoryUtil.getImage(getRootAdapterFactory(), refChange.getValue());
+ Object refChangeValueImage = AdapterFactoryUtil.getImage(getRootAdapterFactory(), refChange
+ .getValue());
+
+ Object diffImage = overlayProvider.getComposedImage(refChange, refChangeValueImage);
+ Object ret = overlayImage(object, diffImage);
- return image;
+ return ret;
}
/**
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/merged_ov.gif b/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/merged_ov.gif
deleted file mode 100644
index 874a6dcea..000000000
--- a/plugins/org.eclipse.emf.compare.ide.ui/icons/full/ovr16/merged_ov.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/plugin.xml b/plugins/org.eclipse.emf.compare.ide.ui/plugin.xml
index 5cac68976..f5d8a4c55 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/plugin.xml
+++ b/plugins/org.eclipse.emf.compare.ide.ui/plugin.xml
@@ -56,11 +56,7 @@
point="org.eclipse.emf.edit.itemProviderAdapterFactories">
<factory
class="org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.CompareNodeAdapterFactory"
- supportedTypes=
- "org.eclipse.compare.structuremergeviewer.IDiffElement
- org.eclipse.compare.structuremergeviewer.IDiffContainer
- org.eclipse.compare.structuremergeviewer.ITypedElement
- org.eclipse.compare.structuremergeviewer.ICompareInput"
+ supportedTypes="org.eclipse.compare.structuremergeviewer.ICompareInput"
uri="http://www.eclipse.org/emf/compare">
</factory>
</extension>
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/accessor/AbstractAccessorFactory.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/accessor/AbstractAccessorFactory.java
deleted file mode 100644
index 260b8c946..000000000
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/accessor/AbstractAccessorFactory.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Obeo.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor;
-
-/**
- * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
- */
-
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewerContentProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewerContentProvider.java
index 4bab9d525..4f5c006e6 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewerContentProvider.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewerContentProvider.java
@@ -135,6 +135,7 @@ public class EMFCompareTextMergeViewerContentProvider implements IMergeViewerCon
}
if (element instanceof ICompareInput) {
Object left = ((ICompareInput)element).getLeft();
+ // TODO: MBA use adapterfactory
if (left == null && element instanceof IDiffElement) {
IDiffElement parent = ((IDiffElement)element).getParent();
if (parent instanceof ICompareInput) {
@@ -206,6 +207,7 @@ public class EMFCompareTextMergeViewerContentProvider implements IMergeViewerCon
if (element instanceof ICompareInput) {
Object right = ((ICompareInput)element).getRight();
if (right == null && element instanceof IDiffElement) {
+ // TODO: MBA use adapterfactory
IDiffContainer parent = ((IDiffElement)element).getParent();
if (parent instanceof ICompareInput) {
right = ((ICompareInput)parent).getRight();
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewerContentProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewerContentProvider.java
index 89158b648..3283d8945 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewerContentProvider.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewerContentProvider.java
@@ -50,7 +50,8 @@ public class TreeContentMergeViewerContentProvider implements IMergeViewerConten
private final Comparison fComparison;
/**
- * Creates a new {@link TreeContentMergeViewerContentProvider} and stored the given {@link CompareConfiguration}.
+ * Creates a new {@link TreeContentMergeViewerContentProvider} and stored the given
+ * {@link CompareConfiguration}.
*
* @param cc
* the {@link CompareConfiguration} that will be used to get label and image of left, right and
@@ -111,6 +112,7 @@ public class TreeContentMergeViewerContentProvider implements IMergeViewerConten
Object ret = compareInput.getAncestor();
// if no ancestor and element is a diff, try to reach the ancestor of parent, recursively
if (ret == null && element instanceof IDiffElement) {
+ // TODO: MBA use adapterfactory
IDiffContainer parent = ((IDiffElement)compareInput).getParent();
ret = getAncestorContent(parent);
}
@@ -162,6 +164,7 @@ public class TreeContentMergeViewerContentProvider implements IMergeViewerConten
Object ret = compareInput.getLeft();
// if no left and element is a diff, try to reach the left of parent, recursively
if (ret == null && element instanceof IDiffElement) {
+ // TODO: MBA use adapterfactory
IDiffContainer parent = ((IDiffElement)compareInput).getParent();
ret = getLeftContent(parent);
}
@@ -240,6 +243,7 @@ public class TreeContentMergeViewerContentProvider implements IMergeViewerConten
Object ret = compareInput.getRight();
// if no right and element is a diff, try to reach the right of parent, recursively
if (ret == null && element instanceof IDiffElement) {
+ // TODO: MBA use adapterfactory
IDiffContainer parent = ((IDiffElement)compareInput).getParent();
ret = getRightContent(parent);
}
@@ -260,6 +264,7 @@ public class TreeContentMergeViewerContentProvider implements IMergeViewerConten
} else if (element instanceof ICompareInput) {
Object right = ((ICompareInput)element).getRight();
if (right == null && element instanceof IDiffElement) {
+ // TODO: MBA use adapterfactory
IDiffContainer parent = ((IDiffElement)element).getParent();
if (parent instanceof ICompareInput) {
right = ((ICompareInput)parent).getRight();
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffContainer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffContainer.java
deleted file mode 100644
index c9fcde5ec..000000000
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffContainer.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Obeo.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;
-
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.toArray;
-import static com.google.common.collect.Iterables.transform;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-
-import java.util.Collection;
-
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-
-/**
- * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
- */
-public abstract class AbstractEDiffContainer extends AbstractEDiffElement implements IDiffContainer {
-
- /**
- * @param adapterFactory
- */
- public AbstractEDiffContainer(AdapterFactory adapterFactory) {
- super(adapterFactory);
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffContainer#hasChildren()
- */
- public boolean hasChildren() {
- boolean ret = false;
- Adapter treeItemContentProvider = getAdapterFactory().adapt(getTarget(),
- ITreeItemContentProvider.class);
- if (treeItemContentProvider instanceof ITreeItemContentProvider) {
- ret = ((ITreeItemContentProvider)treeItemContentProvider).hasChildren(target);
- }
- return ret;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffContainer#getChildren()
- */
- public IDiffElement[] getChildren() {
- Iterable<IDiffElement> ret = ImmutableList.of();
- Adapter treeItemContentProvider = getAdapterFactory().adapt(target, ITreeItemContentProvider.class);
- if (treeItemContentProvider instanceof ITreeItemContentProvider) {
- Collection<?> children = ((ITreeItemContentProvider)treeItemContentProvider).getChildren(target);
- ret = adapt(children, getAdapterFactory(), IDiffElement.class);
- }
-
- return toArray(ret, IDiffElement.class);
- }
-
- /**
- * Always throws {@link UnsupportedOperationException}. This {@link AbstractEDiffContainer} is adapted
- * from a diff EObject and cannot be modified directly.
- *
- * @param child
- * the child to add
- * @throws UnsupportedOperationException
- * @see org.eclipse.compare.structuremergeviewer.IDiffContainer#add(org.eclipse.compare.structuremergeviewer.IDiffElement)
- */
- public void add(IDiffElement child) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Always throws {@link UnsupportedOperationException}. This {@link AbstractEDiffContainer} is adapted
- * from a diff EObject and cannot be modified directly.
- *
- * @param child
- * the child to add
- * @throws UnsupportedOperationException
- * @see org.eclipse.compare.structuremergeviewer.IDiffContainer#removeToRoot(org.eclipse.compare.structuremergeviewer.IDiffElement)
- */
- public void removeToRoot(IDiffElement child) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adapts each elements of the the given <code>iterable</code> to the given <code>type</code> by using the
- * given <code>adapterFactory</code>.
- *
- * @param <T>
- * the type of returned elements.
- * @param iterable
- * the iterable to transform.
- * @param adapterFactory
- * the {@link AdapterFactory} used to adapt elements
- * @param type
- * the target type of adapted elements
- * @return an iterable with element of type <code>type</code>.
- */
- protected static <T> Iterable<T> adapt(Iterable<?> iterable, final AdapterFactory adapterFactory,
- final Class<T> type) {
- Function<Object, Object> adaptFunction = new Function<Object, Object>() {
- public Object apply(Object input) {
- return adapterFactory.adapt(input, type);
- }
- };
- return filter(transform(iterable, adaptFunction), type);
- }
-}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffElement.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffElement.java
deleted file mode 100644
index f0d1422bb..000000000
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffElement.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Obeo.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;
-
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * An EMF {@link Adapter} implementing the {@link IDiffElement} interface.
- * <p>
- * It is delegating {@link #getImage()} and {@link #getName()} to an adapter retrieved from an
- * {@link AdapterFactory}.
- *
- * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
- */
-public abstract class AbstractEDiffElement extends AdapterImpl implements IDiffElement {
-
- /**
- * The {@link AdapterFactory} used to implement {@link #getName()} and {@link #getImage()}.
- */
- private final AdapterFactory fAdapterFactory;
-
- /**
- * Simple constructor storing the given {@link AdapterFactory}.
- *
- * @param adapterFactory
- * the factory.
- */
- public AbstractEDiffElement(AdapterFactory adapterFactory) {
- fAdapterFactory = adapterFactory;
- }
-
- @Override
- public boolean isAdapterForType(Object type) {
- return type == fAdapterFactory;
- }
-
- /**
- * Final accessor to the {@link AdapterFactory} for sub classses.
- *
- * @return the wrapped {@link AdapterFactory}.
- */
- protected final AdapterFactory getAdapterFactory() {
- return fAdapterFactory;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.ITypedElement#getName()
- */
- public String getName() {
- String ret = null;
- Adapter adapter = getAdapterFactory().adapt(target, IItemLabelProvider.class);
- if (adapter instanceof IItemLabelProvider) {
- ret = ((IItemLabelProvider)adapter).getText(target);
- }
- return ret;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.ITypedElement#getImage()
- */
- public Image getImage() {
- Image ret = null;
- Adapter adapter = getAdapterFactory().adapt(target, IItemLabelProvider.class);
- if (adapter instanceof IItemLabelProvider) {
- Object imageObject = ((IItemLabelProvider)adapter).getImage(target);
- ret = ExtendedImageRegistry.getInstance().getImage(imageObject);
- }
- return ret;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.ITypedElement#getType()
- */
- public String getType() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.structuremergeviewer.IDiffElement#getKind()
- */
- public int getKind() {
- return Differencer.NO_CHANGE;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.structuremergeviewer.IDiffElement#getParent()
- */
- public IDiffContainer getParent() {
- IDiffContainer ret = null;
- if (target instanceof EObject) {
- Adapter treeItemContentProvider = getAdapterFactory().adapt(target,
- ITreeItemContentProvider.class);
- if (treeItemContentProvider instanceof ITreeItemContentProvider) {
- ret = getParentAndAdaptAsIDiffContainer((ITreeItemContentProvider)treeItemContentProvider);
- }
- }
- return ret;
- }
-
- /**
- * @param treeItemContentProvider
- * @return
- */
- private IDiffContainer getParentAndAdaptAsIDiffContainer(ITreeItemContentProvider treeItemContentProvider) {
- IDiffContainer ret = null;
- Object parent = treeItemContentProvider.getParent(target);
- if (parent instanceof EObject) {
- Object diffContainer = getAdapterFactory().adapt(parent, IDiffContainer.class);
- if (diffContainer instanceof IDiffContainer) {
- ret = (IDiffContainer)diffContainer;
- }
- }
- return ret;
- }
-
- /**
- * Always throws {@link UnsupportedOperationException}. This {@link AbstractEDiffElement} is adapted from
- * a diff EObject and cannot be modified directly.
- *
- * @param parent
- * the parent to set
- * @see org.eclipse.compare.structuremergeviewer.IDiffElement#setParent(org.eclipse.compare.structuremergeviewer.IDiffContainer)
- * @throws UnsupportedOperationException
- */
- public void setParent(IDiffContainer parent) {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffNode.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffNode.java
index 943129613..a7d8107ac 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffNode.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/AbstractEDiffNode.java
@@ -11,20 +11,26 @@
package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;
import org.eclipse.compare.ITypedElement;
+import org.eclipse.compare.structuremergeviewer.Differencer;
import org.eclipse.compare.structuremergeviewer.ICompareInput;
import org.eclipse.compare.structuremergeviewer.ICompareInputChangeListener;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.IAccessorFactory;
import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.IAccessorFactory.Registry;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
import org.eclipse.jface.util.SafeRunnable;
+import org.eclipse.swt.graphics.Image;
/**
* @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
*/
-public abstract class AbstractEDiffNode extends AbstractEDiffContainer implements ICompareInput {
+public abstract class AbstractEDiffNode extends AdapterImpl implements ICompareInput {
/**
*
@@ -32,13 +38,35 @@ public abstract class AbstractEDiffNode extends AbstractEDiffContainer implement
private final ListenerList fListener;
/**
+ * The {@link AdapterFactory} used to implement {@link #getName()} and {@link #getImage()}.
+ */
+ private final AdapterFactory fAdapterFactory;
+
+ /**
+ * Simple constructor storing the given {@link AdapterFactory}.
+ *
* @param adapterFactory
+ * the factory.
*/
public AbstractEDiffNode(AdapterFactory adapterFactory) {
- super(adapterFactory);
+ fAdapterFactory = adapterFactory;
fListener = new ListenerList();
}
+ @Override
+ public boolean isAdapterForType(Object type) {
+ return type == fAdapterFactory;
+ }
+
+ /**
+ * Final accessor to the {@link AdapterFactory} for sub classses.
+ *
+ * @return the wrapped {@link AdapterFactory}.
+ */
+ protected final AdapterFactory getAdapterFactory() {
+ return fAdapterFactory;
+ }
+
/**
* {@inheritDoc}
*
@@ -92,6 +120,34 @@ public abstract class AbstractEDiffNode extends AbstractEDiffContainer implement
/**
* {@inheritDoc}
*
+ * @see org.eclipse.compare.ITypedElement#getImage()
+ */
+ public Image getImage() {
+ Image ret = null;
+ Adapter adapter = getAdapterFactory().adapt(target, IItemLabelProvider.class);
+ if (adapter instanceof IItemLabelProvider) {
+ Object imageObject = ((IItemLabelProvider)adapter).getImage(target);
+ ret = ExtendedImageRegistry.getInstance().getImage(imageObject);
+ }
+ return ret;
+ }
+
+ public int getKind() {
+ return Differencer.NO_CHANGE;
+ }
+
+ public String getName() {
+ String ret = null;
+ Adapter adapter = getAdapterFactory().adapt(target, IItemLabelProvider.class);
+ if (adapter instanceof IItemLabelProvider) {
+ ret = ((IItemLabelProvider)adapter).getText(target);
+ }
+ return ret;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
* @see org.eclipse.compare.structuremergeviewer.ICompareInput#getAncestor()
*/
public ITypedElement getAncestor() {
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/DiffNodeComparer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/DiffNodeComparer.java
index 53250f592..cbb779b68 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/DiffNodeComparer.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/DiffNodeComparer.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;
+import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.jface.viewers.IElementComparer;
@@ -49,13 +50,13 @@ public class DiffNodeComparer implements IElementComparer {
*/
public boolean equals(Object a, Object b) {
final boolean equal;
- if (a instanceof AbstractEDiffElement && b instanceof AbstractEDiffElement) {
- final Notifier targetA = ((AbstractEDiffElement)a).getTarget();
+ if (a instanceof Adapter && b instanceof Adapter) {
+ final Notifier targetA = ((Adapter)a).getTarget();
if (targetA == null) {
// Fall back to default behavior
equal = a.equals(b);
} else {
- equal = targetA.equals(((AbstractEDiffElement)b).getTarget());
+ equal = targetA.equals(((Adapter)b).getTarget());
}
} else if (delegate != null) {
equal = delegate.equals(a, b);
@@ -74,8 +75,8 @@ public class DiffNodeComparer implements IElementComparer {
*/
public int hashCode(Object element) {
final int hashCode;
- if (element instanceof AbstractEDiffElement) {
- final Notifier target = ((AbstractEDiffElement)element).getTarget();
+ if (element instanceof Adapter) {
+ final Notifier target = ((Adapter)element).getTarget();
if (target == null) {
// Fall back to default behavior
hashCode = element.hashCode();
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
index 26c9ddb92..a782adadd 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
@@ -24,7 +24,6 @@ import org.eclipse.compare.ITypedElement;
import org.eclipse.compare.structuremergeviewer.DiffTreeViewer;
import org.eclipse.compare.structuremergeviewer.ICompareInput;
import org.eclipse.compare.structuremergeviewer.ICompareInputChangeListener;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
@@ -109,7 +108,7 @@ public class EMFCompareStructureMergeViewer extends DiffTreeViewer implements Co
boolean leftIsLocal = CompareConfigurationExtension.getBoolean(configuration, "LEFT_IS_LOCAL", false); //$NON-NLS-1$
setLabelProvider(new DelegatingStyledCellLabelProvider(
- new EMFCompareStructureMergeViewerLabelProvider(fAdapterFactory, this, leftIsLocal)));
+ new EMFCompareStructureMergeViewerLabelProvider(fAdapterFactory, this)));
setContentProvider(new EMFCompareStructureMergeViewerContentProvider(fAdapterFactory,
differenceGrouper));
@@ -308,7 +307,7 @@ public class EMFCompareStructureMergeViewer extends DiffTreeViewer implements Co
void compareInputChanged(final Comparison comparison) {
getCompareConfiguration().setProperty(EMFCompareConstants.COMPARE_RESULT, comparison);
- fRoot = fAdapterFactory.adapt(comparison, IDiffElement.class);
+ fRoot = fAdapterFactory.adapt(comparison, ICompareInput.class);
getCompareConfiguration().getContainer().runAsynchronously(new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
@@ -455,7 +454,7 @@ public class EMFCompareStructureMergeViewer extends DiffTreeViewer implements Co
if (!affectedObjects.isEmpty()) {
List<Object> adaptedAffectedObject = newArrayList();
for (Object affectedObject : affectedObjects) {
- adaptedAffectedObject.add(fAdapterFactory.adapt(affectedObject, IDiffElement.class));
+ adaptedAffectedObject.add(fAdapterFactory.adapt(affectedObject, ICompareInput.class));
}
setSelection(new StructuredSelection(adaptedAffectedObject), true);
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java
index 479f777cf..435ea025d 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java
@@ -10,46 +10,41 @@
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;
+import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.isEmpty;
import static com.google.common.collect.Iterables.toArray;
-import static org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffContainer.adapt;
+import static com.google.common.collect.Iterables.transform;
+import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
+import org.eclipse.compare.structuremergeviewer.ICompareInput;
+import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.Diff;
import org.eclipse.emf.compare.ide.ui.internal.actions.group.DifferenceGroup;
import org.eclipse.emf.compare.ide.ui.internal.actions.group.DifferenceGrouper;
import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.ComparisonNode;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-class EMFCompareStructureMergeViewerContentProvider implements ITreeContentProvider {
+class EMFCompareStructureMergeViewerContentProvider extends AdapterFactoryContentProvider {
private final DifferenceGrouper fDifferenceGrouper;
- private final AdapterFactory fAdapterFactory;
-
EMFCompareStructureMergeViewerContentProvider(AdapterFactory adapterFactory,
DifferenceGrouper differenceGrouper) {
- this.fAdapterFactory = adapterFactory;
+ super(adapterFactory);
this.fDifferenceGrouper = differenceGrouper;
}
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- // empty implementation
- }
-
- public void dispose() {
- }
-
+ @Override
public Object getParent(Object element) {
final Object ret;
- if (element instanceof IDiffElement) {
- ret = ((IDiffElement)element).getParent();
+ if (element instanceof Adapter) {
+ ret = getAdapterFactory().adapt(super.getParent(((Adapter)element).getTarget()),
+ ICompareInput.class);
} else if (element instanceof DifferenceGroup) {
ret = ((DifferenceGroup)element).getComparison();
} else {
@@ -58,30 +53,28 @@ class EMFCompareStructureMergeViewerContentProvider implements ITreeContentProvi
return ret;
}
+ @Override
public final boolean hasChildren(Object element) {
final boolean ret;
if (element instanceof ComparisonNode) {
Comparison target = ((ComparisonNode)element).getTarget();
final Iterable<? extends DifferenceGroup> groups = fDifferenceGrouper.getGroups(target);
if (isEmpty(groups)) {
- ret = doHasChildren((ComparisonNode)element);
+ ret = super.hasChildren(((Adapter)element).getTarget());
} else {
ret = true;
}
- } else if (element instanceof IDiffContainer) {
- ret = doHasChildren((IDiffContainer)element);
} else if (element instanceof DifferenceGroup) {
ret = !isEmpty(((DifferenceGroup)element).getDifferences());
+ } else if (element instanceof Adapter) {
+ ret = super.hasChildren(((Adapter)element).getTarget());
} else {
ret = false;
}
return ret;
}
- private boolean doHasChildren(IDiffContainer element) {
- return element.hasChildren();
- }
-
+ @Override
public final Object[] getChildren(Object element) {
final Object[] ret;
if (element instanceof ComparisonNode) {
@@ -90,25 +83,55 @@ class EMFCompareStructureMergeViewerContentProvider implements ITreeContentProvi
if (!isEmpty(groups)) {
ret = Iterables.toArray(groups, DifferenceGroup.class);
} else {
- ret = doGetChildren((IDiffContainer)element);
+ Iterable<ICompareInput> compareInputs = adapt(super.getChildren(((Adapter)element)
+ .getTarget()), getAdapterFactory(), ICompareInput.class);
+ ret = toArray(compareInputs, ICompareInput.class);
}
- } else if (element instanceof IDiffContainer) {
- ret = doGetChildren((IDiffContainer)element);
} else if (element instanceof DifferenceGroup) {
Iterable<? extends Diff> differences = ((DifferenceGroup)element).getDifferences();
- Iterable<IDiffElement> diffNodes = adapt(differences, fAdapterFactory, IDiffElement.class);
- ret = toArray(diffNodes, IDiffElement.class);
+ Iterable<ICompareInput> compareInputs = adapt(differences, getAdapterFactory(),
+ ICompareInput.class);
+ ret = toArray(compareInputs, ICompareInput.class);
+ } else if (element instanceof Adapter) {
+ Iterable<ICompareInput> compareInputs = adapt(super.getChildren(((Adapter)element).getTarget()),
+ getAdapterFactory(), ICompareInput.class);
+ ret = toArray(compareInputs, ICompareInput.class);
} else {
ret = new Object[0];
}
return ret;
}
- private Object[] doGetChildren(IDiffContainer diffContainer) {
- return diffContainer.getChildren();
- }
-
+ @Override
public Object[] getElements(Object element) {
return getChildren(element);
}
+
+ /**
+ * Adapts each elements of the the given <code>iterable</code> to the given <code>type</code> by using the
+ * given <code>adapterFactory</code>.
+ *
+ * @param <T>
+ * the type of returned elements.
+ * @param iterable
+ * the iterable to transform.
+ * @param adapterFactory
+ * the {@link AdapterFactory} used to adapt elements
+ * @param type
+ * the target type of adapted elements
+ * @return an iterable with element of type <code>type</code>.
+ */
+ static <T> Iterable<T> adapt(Iterable<?> iterable, final AdapterFactory adapterFactory,
+ final Class<T> type) {
+ Function<Object, Object> adaptFunction = new Function<Object, Object>() {
+ public Object apply(Object input) {
+ return adapterFactory.adapt(input, type);
+ }
+ };
+ return filter(transform(iterable, adaptFunction), type);
+ }
+
+ static <T> Iterable<T> adapt(Object[] iterable, final AdapterFactory adapterFactory, final Class<T> type) {
+ return adapt(Lists.newArrayList(iterable), adapterFactory, type);
+ }
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerLabelProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerLabelProvider.java
index 91fc20779..bfb6df4b1 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerLabelProvider.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerLabelProvider.java
@@ -10,22 +10,16 @@
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
+import com.google.common.base.Preconditions;
+
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.compare.Diff;
-import org.eclipse.emf.compare.Match;
-import org.eclipse.emf.compare.ide.ui.internal.EMFCompareConstants;
+import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
import org.eclipse.emf.compare.ide.ui.internal.actions.group.DifferenceGroup;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.DiffNode;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.ImageProvider;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.MatchNode;
-import org.eclipse.emf.compare.ide.ui.internal.util.EMFCompareCompositeImageDescriptor;
import org.eclipse.emf.compare.ide.ui.internal.util.StyledStringConverter;
import org.eclipse.emf.compare.provider.IItemStyledLabelProvider;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
-import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.Viewer;
@@ -35,18 +29,11 @@ import org.eclipse.swt.graphics.Image;
class EMFCompareStructureMergeViewerLabelProvider extends AdapterFactoryLabelProvider.FontAndColorProvider implements IStyledLabelProvider {
- private final boolean fLeftIsLocal;
-
- private final ImageProvider imgProvider;
-
/**
* @param adapterFactory
*/
- public EMFCompareStructureMergeViewerLabelProvider(AdapterFactory adapterFactory, Viewer viewer,
- boolean leftIsLocal) {
+ public EMFCompareStructureMergeViewerLabelProvider(AdapterFactory adapterFactory, Viewer viewer) {
super(adapterFactory, viewer);
- fLeftIsLocal = leftIsLocal;
- imgProvider = new ImageProvider(fLeftIsLocal);
}
@Override
@@ -61,8 +48,8 @@ class EMFCompareStructureMergeViewerLabelProvider extends AdapterFactoryLabelPro
*/
@Override
public Font getFont(Object object) {
- if (object instanceof AbstractEDiffElement) {
- return super.getFont(((AbstractEDiffElement)object).getTarget());
+ if (object instanceof Adapter) {
+ return super.getFont(((Adapter)object).getTarget());
}
return super.getFont(object);
}
@@ -74,8 +61,8 @@ class EMFCompareStructureMergeViewerLabelProvider extends AdapterFactoryLabelPro
*/
@Override
public Color getForeground(Object object) {
- if (object instanceof AbstractEDiffElement) {
- return super.getForeground(((AbstractEDiffElement)object).getTarget());
+ if (object instanceof Adapter) {
+ return super.getForeground(((Adapter)object).getTarget());
}
return super.getForeground(object);
}
@@ -87,8 +74,8 @@ class EMFCompareStructureMergeViewerLabelProvider extends AdapterFactoryLabelPro
*/
@Override
public Color getBackground(Object object) {
- if (object instanceof AbstractEDiffElement) {
- return super.getBackground(((AbstractEDiffElement)object).getTarget());
+ if (object instanceof Adapter) {
+ return super.getBackground(((Adapter)object).getTarget());
}
return super.getBackground(object);
}
@@ -96,22 +83,8 @@ class EMFCompareStructureMergeViewerLabelProvider extends AdapterFactoryLabelPro
@Override
public Image getImage(Object element) {
final Image ret;
- if (element instanceof DiffNode) {
- Diff target = ((DiffNode)element).getTarget();
- ImageDescriptor overlay = imgProvider.getImageDescriptorOverlay(target);
- Image base = super.getImage(target);
- EMFCompareCompositeImageDescriptor descriptor = new EMFCompareCompositeImageDescriptor(base,
- overlay, EMFCompareConstants.COMPARE_IMAGE_WIDTH, !fLeftIsLocal);
- ret = EMFCompareIDEUIPlugin.getDefault().getImage(descriptor);
- } else if (element instanceof MatchNode) {
- Match target = ((MatchNode)element).getTarget();
- ImageDescriptor overlay = imgProvider.getImageDescriptorOverlay(target);
- Image base = super.getImage(target);
- EMFCompareCompositeImageDescriptor descriptor = new EMFCompareCompositeImageDescriptor(base,
- overlay, EMFCompareConstants.COMPARE_IMAGE_WIDTH, !fLeftIsLocal);
- ret = EMFCompareIDEUIPlugin.getDefault().getImage(descriptor);
- } else if (element instanceof AbstractEDiffElement) {
- ret = ((AbstractEDiffElement)element).getImage();
+ if (element instanceof Adapter) {
+ ret = super.getImage(((Adapter)element).getTarget());
} else if (element instanceof DifferenceGroup) {
final Image groupImage = ((DifferenceGroup)element).getImage();
if (groupImage != null) {
@@ -127,27 +100,45 @@ class EMFCompareStructureMergeViewerLabelProvider extends AdapterFactoryLabelPro
}
public StyledString getStyledText(Object element) {
- Object target = null;
- Object adapter = null;
+ final StyledString ret;
if (element instanceof Adapter) {
- target = ((Adapter)element).getTarget();
- adapter = adapterFactory.adapt(target, IItemStyledLabelProvider.class);
- if (adapter instanceof IItemStyledLabelProvider) {
- StyledStringConverter stringConverter = new StyledStringConverter();
- return stringConverter.toJFaceStyledString(((IItemStyledLabelProvider)adapter)
- .getStyledText(target));
- }
- }
-
- final String ret;
- if (element instanceof IDiffElement) {
- ret = ((IDiffElement)element).getName();
+ Notifier target = ((Adapter)element).getTarget();
+ ret = getStyledText(getAdapterFactory(), target);
} else if (element instanceof DifferenceGroup) {
- ret = ((DifferenceGroup)element).getName();
+ ret = new StyledString(((DifferenceGroup)element).getName());
} else {
- ret = super.getText(element);
+ ret = new StyledString(super.getText(element));
}
- return new StyledString(ret);
+ return ret;
}
+
+ /**
+ * Returns the styled text string of the given <code>object</code> by adapting it to
+ * {@link IItemStyledLabelProvider} and asking for its
+ * {@link IItemStyledLabelProvider#getStyledText(Object) text}. Returns null if <code>object</code> is
+ * null.
+ *
+ * @param adapterFactory
+ * the adapter factory to adapt from
+ * @param object
+ * the object from which we want a text
+ * @return the text, or null if object is null.
+ * @throws NullPointerException
+ * if <code>adapterFactory</code> is null.
+ */
+ private static StyledString getStyledText(final AdapterFactory adapterFactory, final Object object) {
+ Preconditions.checkNotNull(adapterFactory);
+ if (object == null) {
+ return null;
+ }
+
+ Object itemStyledLabelProvider = adapterFactory.adapt(object, IItemStyledLabelProvider.class);
+ if (itemStyledLabelProvider instanceof IItemStyledLabelProvider) {
+ StyledStringConverter stringConverter = new StyledStringConverter();
+ return stringConverter.toJFaceStyledString(((IItemStyledLabelProvider)itemStyledLabelProvider)
+ .getStyledText(object));
+ }
+ return null;
+ }
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/AttributeChangeNode.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/AttributeChangeNode.java
index 1b9c758ad..8e2e01d19 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/AttributeChangeNode.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/AttributeChangeNode.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider;
-import org.eclipse.compare.ITypedElement;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.compare.AttributeChange;
@@ -40,14 +39,4 @@ public class AttributeChangeNode extends DiffNode {
public AttributeChange getTarget() {
return (AttributeChange)super.getTarget();
}
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffElement#getType()
- */
- @Override
- public String getType() {
- return ITypedElement.TEXT_TYPE;
- }
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/CompareNodeAdapterFactory.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/CompareNodeAdapterFactory.java
index b30a27c73..1ed9c125c 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/CompareNodeAdapterFactory.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/CompareNodeAdapterFactory.java
@@ -14,10 +14,7 @@ import static com.google.common.collect.Lists.newArrayList;
import java.util.Collection;
-import org.eclipse.compare.ITypedElement;
import org.eclipse.compare.structuremergeviewer.ICompareInput;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
@@ -54,9 +51,6 @@ public class CompareNodeAdapterFactory extends CompareAdapterFactory implements
/**
* Creates an {@link ComposeableAdapterFactory} with the following supported types:
* <ul>
- * <li>{@link IDiffElement}</li>,
- * <li>{@link IDiffContainer}</li>,
- * <li>{@link ITypedElement}</li>,
* <li>{@link ICompareInput}</li>.
* </ul>
*
@@ -64,9 +58,6 @@ public class CompareNodeAdapterFactory extends CompareAdapterFactory implements
* This will be used by the comparison adapter to group differences together.
*/
public CompareNodeAdapterFactory() {
- supportedTypes.add(IDiffElement.class);
- supportedTypes.add(IDiffContainer.class);
- supportedTypes.add(ITypedElement.class);
supportedTypes.add(ICompareInput.class);
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/ConflictNode.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/ConflictNode.java
index 2c638cab0..e9fcb0457 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/ConflictNode.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/ConflictNode.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider;
-import org.eclipse.compare.structuremergeviewer.Differencer;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.compare.Conflict;
import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffNode;
@@ -41,14 +40,4 @@ public class ConflictNode extends AbstractEDiffNode {
public Conflict getTarget() {
return (Conflict)super.getTarget();
}
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffElement#getKind()
- */
- @Override
- public int getKind() {
- return Differencer.CONFLICTING;
- }
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/MatchNode.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/MatchNode.java
index 3e6783fae..b3293ce2f 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/MatchNode.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/provider/MatchNode.java
@@ -23,7 +23,6 @@ import org.eclipse.emf.compare.ConflictKind;
import org.eclipse.emf.compare.Diff;
import org.eclipse.emf.compare.DifferenceSource;
import org.eclipse.emf.compare.Match;
-import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.ContentMergeViewerConstants;
import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffNode;
import org.eclipse.emf.ecore.EObject;
@@ -84,16 +83,6 @@ public class MatchNode extends AbstractEDiffNode {
/**
* {@inheritDoc}
*
- * @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffElement#getType()
- */
- @Override
- public String getType() {
- return ContentMergeViewerConstants.EOBJECT_NODE_TYPE;
- }
-
- /**
- * {@inheritDoc}
- *
* @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractEDiffElement#getKind()
*/
@Override

Back to the top