Bug 320842 -  [ModelTooling] Editing of Expressions not available
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/OSGI-INF/pdeextensionlookup.xml b/bundles/org.eclipse.e4.tools.emf.editor3x/OSGI-INF/pdeextensionlookup.xml
index 759090b..cad2595 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor3x/OSGI-INF/pdeextensionlookup.xml
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/OSGI-INF/pdeextensionlookup.xml
@@ -4,4 +4,5 @@
    <service>
       <provide interface="org.eclipse.e4.tools.emf.ui.common.IExtensionLookup"/>
    </service>
+   <property name="service.ranking" type="Integer" value="1000"/>
 </scr:component>
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/PDEExtensionLookup.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/PDEExtensionLookup.java
index 4cce764..88c4114 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/PDEExtensionLookup.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/PDEExtensionLookup.java
@@ -11,14 +11,21 @@
 package org.eclipse.e4.tools.emf.editor3x;
 
 import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.RegistryFactory;
 import org.eclipse.e4.tools.emf.ui.common.IExtensionLookup;
 import org.eclipse.pde.internal.core.PDEExtensionRegistry;
 
 public class PDEExtensionLookup implements IExtensionLookup {
 
-	public IExtension[] findExtensions(String extensionPointId) {
-		PDEExtensionRegistry reg = new PDEExtensionRegistry();
-		return reg.findExtensions(extensionPointId, true);
+	public IExtension[] findExtensions(String extensionPointId, boolean liveModel) {
+		if( liveModel ) {
+			IExtensionRegistry registry = RegistryFactory.getRegistry();
+			return registry.getExtensionPoint(extensionPointId).getExtensions();
+		} else {
+			PDEExtensionRegistry reg = new PDEExtensionRegistry();
+			return reg.findExtensions(extensionPointId, true);			
+		}
 	}
 
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.liveeditor/.project b/bundles/org.eclipse.e4.tools.emf.liveeditor/.project
index e796110..8f23770 100644
--- a/bundles/org.eclipse.e4.tools.emf.liveeditor/.project
+++ b/bundles/org.eclipse.e4.tools.emf.liveeditor/.project
@@ -20,6 +20,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
diff --git a/bundles/org.eclipse.e4.tools.emf.liveeditor/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.tools.emf.liveeditor/META-INF/MANIFEST.MF
index 5ea74a5..e4b46da 100644
--- a/bundles/org.eclipse.e4.tools.emf.liveeditor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.tools.emf.liveeditor/META-INF/MANIFEST.MF
@@ -16,5 +16,8 @@
  org.eclipse.core.resources;bundle-version="3.6.0",
  org.eclipse.e4.core.contexts;bundle-version="0.9.0",
  org.eclipse.e4.core.di;bundle-version="0.9.0",
- org.eclipse.jface;bundle-version="3.6.0"
+ org.eclipse.jface;bundle-version="3.6.0",
+ org.eclipse.equinox.registry;bundle-version="3.5.0"
 Bundle-Vendor: %Bundle-Vendor
+Service-Component: OSGI-INF/extensionlookup.xml
+Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.e4.tools.emf.liveeditor/OSGI-INF/extensionlookup.xml b/bundles/org.eclipse.e4.tools.emf.liveeditor/OSGI-INF/extensionlookup.xml
new file mode 100644
index 0000000..658799d
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.liveeditor/OSGI-INF/extensionlookup.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.e4.tools.emf.liveeditor">
+   <implementation class="org.eclipse.e4.tools.emf.liveeditor.RuntimeExtensionLookup"/>
+   <service>
+      <provide interface="org.eclipse.e4.tools.emf.ui.common.IExtensionLookup"/>
+   </service>
+   <property name="service.ranking" type="Integer" value="0"/>
+</scr:component>
diff --git a/bundles/org.eclipse.e4.tools.emf.liveeditor/build.properties b/bundles/org.eclipse.e4.tools.emf.liveeditor/build.properties
index aab247e..c15df50 100644
--- a/bundles/org.eclipse.e4.tools.emf.liveeditor/build.properties
+++ b/bundles/org.eclipse.e4.tools.emf.liveeditor/build.properties
@@ -1,7 +1,8 @@
-source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
                about.html,\
-               OSGI-INF/
+               OSGI-INF/,\
+               OSGI-INF/extensionlookup.xml
+source.. = src/
diff --git a/bundles/org.eclipse.e4.tools.emf.liveeditor/src/org/eclipse/e4/tools/emf/liveeditor/RuntimeExtensionLookup.java b/bundles/org.eclipse.e4.tools.emf.liveeditor/src/org/eclipse/e4/tools/emf/liveeditor/RuntimeExtensionLookup.java
new file mode 100644
index 0000000..a200502
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.liveeditor/src/org/eclipse/e4/tools/emf/liveeditor/RuntimeExtensionLookup.java
@@ -0,0 +1,15 @@
+package org.eclipse.e4.tools.emf.liveeditor;
+
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.RegistryFactory;
+import org.eclipse.e4.tools.emf.ui.common.IExtensionLookup;
+
+public class RuntimeExtensionLookup implements IExtensionLookup {
+
+	public IExtension[] findExtensions(String extensionPointId, boolean liveModel) {
+		IExtensionRegistry registry = RegistryFactory.getRegistry();
+		return registry.getExtensionPoint(extensionPointId).getExtensions();
+	}
+
+}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IExtensionLookup.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IExtensionLookup.java
index 71b6a1e..24a2ebb 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IExtensionLookup.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IExtensionLookup.java
@@ -13,5 +13,5 @@
 import org.eclipse.core.runtime.IExtension;
 
 public interface IExtensionLookup {
-	public IExtension[] findExtensions(String extensionPointId);
+	public IExtension[] findExtensions(String extensionPointId, boolean liveModel);
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CoreExpressionEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CoreExpressionEditor.java
index f8924c9..99c47c8 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CoreExpressionEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CoreExpressionEditor.java
@@ -121,7 +121,7 @@
 				b.addSelectionListener(new SelectionAdapter() {
 					@Override
 					public void widgetSelected(SelectionEvent e) {
-						ExpressionIdDialog dialog = new ExpressionIdDialog(t.getShell(), getEditor().getExtensionLookup(), (MCoreExpression) getMaster().getValue(), getEditingDomain());
+						ExpressionIdDialog dialog = new ExpressionIdDialog(t.getShell(), getEditor().getExtensionLookup(), (MCoreExpression) getMaster().getValue(), getEditingDomain(), getEditor().isLiveModel());
 						dialog.open();
 					}
 				});
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ExpressionIdDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ExpressionIdDialog.java
index f146843..abdeb0b 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ExpressionIdDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ExpressionIdDialog.java
@@ -51,12 +51,14 @@
 	private TableViewer viewer;
 	private EditingDomain domain;
 	private MCoreExpression expression;
+	private boolean liveModel;
 
-	public ExpressionIdDialog(Shell parentShell, IExtensionLookup lookup, MCoreExpression expression, EditingDomain domain) {
+	public ExpressionIdDialog(Shell parentShell, IExtensionLookup lookup, MCoreExpression expression, EditingDomain domain, boolean liveModel) {
 		super(parentShell);
 		this.lookup = lookup;
 		this.expression = expression;
 		this.domain = domain;
+		this.liveModel = liveModel;
 	}
 
 	@Override
@@ -120,7 +122,7 @@
 
 	private List<IConfigurationElement> getElements(IExtensionLookup lookup) {
 		List<IConfigurationElement> list = new ArrayList<IConfigurationElement>();
-		for (IExtension ext : lookup.findExtensions("org.eclipse.core.expressions.definitions")) { //$NON-NLS-1$
+		for (IExtension ext : lookup.findExtensions("org.eclipse.core.expressions.definitions", liveModel)) { //$NON-NLS-1$
 			for (IConfigurationElement el : ext.getConfigurationElements()) {
 				list.add(el);
 			}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuElementsEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuElementsEditor.java
index 02e44a4..baebd34 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuElementsEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuElementsEditor.java
@@ -109,7 +109,7 @@
 		viewer.setContentProvider(cp);
 
 		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-		gd.heightHint = 120;
+		gd.heightHint = 300;
 		viewer.getControl().setLayoutData(gd);
 		viewer.setLabelProvider(new ComponentLabelProvider(getEditor()));