Bug 521067 - Move o.e.e4.tools.emf.ui to Java 8

Bump minor, convert to lambdas and try-with-resource.

Change-Id: I31306a338ba230b40e86fdbcfc8f7050df8f951f
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/.classpath b/bundles/org.eclipse.e4.tools.emf.ui/.classpath
index 738c284..d3f10d8 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/.classpath
+++ b/bundles/org.eclipse.e4.tools.emf.ui/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
 		<accessrules>
 			<accessrule kind="accessible" pattern="org/eclipse/e4/**"/>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs
index 8f1b99f..7591ee5 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs
@@ -21,14 +21,17 @@
 org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
 org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
 org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
 org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -45,7 +48,7 @@
 org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
 org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
 org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
@@ -84,12 +87,14 @@
 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
 org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
 org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
 org.eclipse.jdt.core.compiler.problem.nullReference=warning
 org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
 org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
 org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
 org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
 org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
 org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
@@ -112,6 +117,9 @@
 org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
 org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
 org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
@@ -132,7 +140,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
 org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
index e4a3557..9efae60 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.e4.tools.emf.ui;singleton:=true
-Bundle-Version: 4.5.300.qualifier
+Bundle-Version: 4.6.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.9.0",
  org.eclipse.core.databinding;bundle-version="1.3.0",
  org.eclipse.core.databinding.property;bundle-version="1.2.100",
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/pom.xml b/bundles/org.eclipse.e4.tools.emf.ui/pom.xml
index e90ff8d..625b87e 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/pom.xml
+++ b/bundles/org.eclipse.e4.tools.emf.ui/pom.xml
@@ -21,7 +21,7 @@
 
   <groupId>eclipse.platform.ui.tools</groupId>
   <artifactId>org.eclipse.e4.tools.emf.ui</artifactId>
-  <version>4.5.300-SNAPSHOT</version>
+  <version>4.6.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <build>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/Util.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/Util.java
index a2e533d..872a5e8 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/Util.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/Util.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2015 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -18,8 +18,6 @@
 import java.util.TreeSet;
 
 import org.eclipse.core.databinding.Binding;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -398,34 +396,30 @@
 
 	public static final void addDecoration(Control control, Binding binding) {
 		final ControlDecoration dec = new ControlDecoration(control, SWT.BOTTOM);
-		binding.getValidationStatus().addValueChangeListener(new IValueChangeListener() {
+		binding.getValidationStatus().addValueChangeListener(event -> {
+			final IStatus s = (IStatus) event.getObservableValue().getValue();
+			if (s.isOK()) {
+				dec.setDescriptionText(null);
+				dec.setImage(null);
+			} else {
+				dec.setDescriptionText(s.getMessage());
 
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				final IStatus s = (IStatus) event.getObservableValue().getValue();
-				if (s.isOK()) {
-					dec.setDescriptionText(null);
-					dec.setImage(null);
-				} else {
-					dec.setDescriptionText(s.getMessage());
-
-					String fieldDecorationID = null;
-					switch (s.getSeverity()) {
-					case IStatus.INFO:
-						fieldDecorationID = FieldDecorationRegistry.DEC_INFORMATION;
-						break;
-					case IStatus.WARNING:
-						fieldDecorationID = FieldDecorationRegistry.DEC_WARNING;
-						break;
-					case IStatus.ERROR:
-					case IStatus.CANCEL:
-						fieldDecorationID = FieldDecorationRegistry.DEC_ERROR;
-						break;
-					}
-					final FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault()
-							.getFieldDecoration(fieldDecorationID);
-					dec.setImage(fieldDecoration == null ? null : fieldDecoration.getImage());
+				String fieldDecorationID = null;
+				switch (s.getSeverity()) {
+				case IStatus.INFO:
+					fieldDecorationID = FieldDecorationRegistry.DEC_INFORMATION;
+					break;
+				case IStatus.WARNING:
+					fieldDecorationID = FieldDecorationRegistry.DEC_WARNING;
+					break;
+				case IStatus.ERROR:
+				case IStatus.CANCEL:
+					fieldDecorationID = FieldDecorationRegistry.DEC_ERROR;
+					break;
 				}
+				final FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault()
+						.getFieldDecoration(fieldDecorationID);
+				dec.setImage(fieldDecoration == null ? null : fieldDecoration.getImage());
 			}
 		});
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/IdGenerator.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/IdGenerator.java
index 30753d9..109155c 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/IdGenerator.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/IdGenerator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2015 TwelveTone LLC and others.
+ * Copyright (c) 2014, 2017 TwelveTone LLC and others.
  * 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
@@ -17,11 +17,8 @@
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.tabs.empty.E;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.FocusAdapter;
 import org.eclipse.swt.widgets.Control;
 
@@ -84,40 +81,26 @@
 				}
 			});
 
-			control.addDisposeListener(new DisposeListener() {
-
-				@Override
-				public void widgetDisposed(DisposeEvent e) {
-					stopGenerating();
-				}
-			});
+			control.addDisposeListener(e -> stopGenerating());
 		}
 
 		observableValue2 = evpId.observe(master.getValue());
-		observableValue2.addValueChangeListener(listener2 = new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (!ignore) {
-					stopGenerating();
-				}
+		observableValue2.addValueChangeListener(listener2 = event -> {
+			if (!ignore) {
+				stopGenerating();
 			}
 		});
 
 		observableValue = ebpLabel.observe(master.getValue());
-		observableValue.addValueChangeListener(listener = new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				String labelValue = (String) ebpLabel.getValue(master.getValue());
-				if (labelValue == null) {
-					labelValue = ""; //$NON-NLS-1$
-				}
-				final String trimmedIdEnding = trimToLowercase(labelValue);
-				ignore = true;
-				evpId.setValue(master.getValue(), baseId + trimmedIdEnding);
-				ignore = false;
+		observableValue.addValueChangeListener(listener = event -> {
+			String labelValue = (String) ebpLabel.getValue(master.getValue());
+			if (labelValue == null) {
+				labelValue = ""; //$NON-NLS-1$
 			}
+			final String trimmedIdEnding = trimToLowercase(labelValue);
+			ignore = true;
+			evpId.setValue(master.getValue(), baseId + trimmedIdEnding);
+			ignore = false;
 		});
 
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
index 783e877..4a92de5 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2015 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -33,12 +33,8 @@
 import org.eclipse.core.databinding.observable.IObservable;
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.map.IMapChangeListener;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
-import org.eclipse.core.databinding.observable.map.MapChangeEvent;
 import org.eclipse.core.databinding.observable.masterdetail.IObservableFactory;
-import org.eclipse.core.databinding.observable.set.ISetChangeListener;
-import org.eclipse.core.databinding.observable.set.SetChangeEvent;
 import org.eclipse.core.databinding.observable.set.WritableSet;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.resources.IProject;
@@ -194,8 +190,6 @@
 import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider;
@@ -208,12 +202,8 @@
 import org.eclipse.jface.resource.StringConverter;
 import org.eclipse.jface.viewers.AbstractTreeViewer;
 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeViewerListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TreeExpansionEvent;
 import org.eclipse.jface.viewers.TreeViewer;
@@ -230,8 +220,6 @@
 import org.eclipse.swt.dnd.DragSourceEvent;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyListener;
@@ -246,7 +234,6 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.TreeItem;
@@ -401,13 +388,7 @@
 				protected void updateResourceBundle() {
 					super.updateResourceBundle();
 					if (viewer != null) {
-						viewer.getControl().getDisplay().asyncExec(new Runnable() {
-
-							@Override
-							public void run() {
-								viewer.refresh();
-							}
-						});
+						viewer.getControl().getDisplay().asyncExec(() -> viewer.refresh());
 					}
 				}
 			};
@@ -418,13 +399,7 @@
 
 		// This is a workaround until Bug 437207 is merged.
 		// @PersistState will not be invoked.
-		composite.addDisposeListener(new DisposeListener() {
-
-			@Override
-			public void widgetDisposed(DisposeEvent arg0) {
-				persistState();
-			}
-		});
+		composite.addDisposeListener(arg0 -> persistState());
 	}
 
 	@PersistState
@@ -437,13 +412,9 @@
 	@PostConstruct
 	void postCreate(Composite composite) {
 		if (project == null) {
-			keyListener = new Listener() {
-
-				@Override
-				public void handleEvent(Event event) {
-					if ((event.stateMask & SWT.ALT) == SWT.ALT) {
-						findAndHighlight(context.get(Display.class).getFocusControl());
-					}
+			keyListener = event -> {
+				if ((event.stateMask & SWT.ALT) == SWT.ALT) {
+					findAndHighlight(context.get(Display.class).getFocusControl());
 				}
 			};
 			context.get(Display.class).addFilter(SWT.MouseUp, keyListener);
@@ -619,62 +590,49 @@
 				}
 			}
 		});
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
-			@Override
-			public void selectionChanged(SelectionChangedEvent event) {
-				if (!event.getSelection().isEmpty()) {
-					final IStructuredSelection s = (IStructuredSelection) event.getSelection();
-					if (s.getFirstElement() instanceof EObject) {
-						final EObject obj = (EObject) s.getFirstElement();
-						final AbstractComponentEditor editor = getEditor(obj.eClass());
-						if (editor != null) {
-							currentEditor = editor;
-							sectionHeaderLabel.setText(editor.getLabel(obj));
-							iconLabel.setImage(editor.getImage(obj));
-							obsManager.runAndCollect(new Runnable() {
-
-								@Override
-								public void run() {
-									final Composite comp = editor.getEditor(contentContainer, s.getFirstElement());
-									comp.setBackgroundMode(SWT.INHERIT_DEFAULT);
-									layout.topControl = comp;
-									contentContainer.layout(true);
-								}
-							});
-						}
-					} else {
-						final VirtualEntry<?> entry = (VirtualEntry<?>) s.getFirstElement();
-						final AbstractComponentEditor editor = virtualEditors.get(entry.getId());
-						if (editor != null) {
-							currentEditor = editor;
-							sectionHeaderLabel.setText(editor.getLabel(entry));
-							iconLabel.setImage(editor.getImage(entry));
-							obsManager.runAndCollect(new Runnable() {
-
-								@Override
-								public void run() {
-									final Composite comp = editor.getEditor(contentContainer, s.getFirstElement());
-									comp.setBackgroundMode(SWT.INHERIT_DEFAULT);
-									layout.topControl = comp;
-									contentContainer.layout(true);
-								}
-
-							});
-						}
+		viewer.addSelectionChangedListener(event -> {
+			if (!event.getSelection().isEmpty()) {
+				final IStructuredSelection s = (IStructuredSelection) event.getSelection();
+				if (s.getFirstElement() instanceof EObject) {
+					final EObject obj = (EObject) s.getFirstElement();
+					final AbstractComponentEditor editor1 = getEditor(obj.eClass());
+					if (editor1 != null) {
+						currentEditor = editor1;
+						sectionHeaderLabel.setText(editor1.getLabel(obj));
+						iconLabel.setImage(editor1.getImage(obj));
+						obsManager.runAndCollect(() -> {
+							final Composite comp = editor1.getEditor(contentContainer, s.getFirstElement());
+							comp.setBackgroundMode(SWT.INHERIT_DEFAULT);
+							layout.topControl = comp;
+							contentContainer.layout(true);
+						});
 					}
-
-					// Rectangle r = scrolling.getClientArea();
-					// scrolling.setMinSize(contentContainer.computeSize(r.width,
-					// SWT.DEFAULT));
-					// scrolling.setOrigin(0, 0);
-					// scrolling.layout(true, true);
-
-					if (selectionService != null) {
-						selectionService.setSelection(s.getFirstElement());
+				} else {
+					final VirtualEntry<?> entry = (VirtualEntry<?>) s.getFirstElement();
+					final AbstractComponentEditor editor2 = virtualEditors.get(entry.getId());
+					if (editor2 != null) {
+						currentEditor = editor2;
+						sectionHeaderLabel.setText(editor2.getLabel(entry));
+						iconLabel.setImage(editor2.getImage(entry));
+						obsManager.runAndCollect(() -> {
+							final Composite comp = editor2.getEditor(contentContainer, s.getFirstElement());
+							comp.setBackgroundMode(SWT.INHERIT_DEFAULT);
+							layout.topControl = comp;
+							contentContainer.layout(true);
+						});
 					}
-
 				}
+
+				// Rectangle r = scrolling.getClientArea();
+				// scrolling.setMinSize(contentContainer.computeSize(r.width,
+				// SWT.DEFAULT));
+				// scrolling.setOrigin(0, 0);
+				// scrolling.layout(true, true);
+
+				if (selectionService != null) {
+					selectionService.setSelection(s.getFirstElement());
+				}
+
 			}
 		});
 
@@ -682,283 +640,279 @@
 
 		final MenuManager mgr = new MenuManager();
 		mgr.setRemoveAllWhenShown(true);
-		mgr.addMenuListener(new IMenuListener() {
+		mgr.addMenuListener(manager -> {
+			final IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
+			final List<?> listOfSelections = s.toList();
+			final int noSelected = listOfSelections.size();
 
-			@Override
-			public void menuAboutToShow(IMenuManager manager) {
-				final IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
-				final List<?> listOfSelections = s.toList();
-				final int noSelected = listOfSelections.size();
-
-				boolean addSeparator = false;
-				if (!s.isEmpty() && noSelected == 1) {
-					List<Action> actions;
-					if (s.getFirstElement() instanceof VirtualEntry<?>) {
-						actions = virtualEditors.get(((VirtualEntry<?>) s.getFirstElement()).getId())
-								.getActions(s.getFirstElement());
-						if (actions.size() > 0) {
-							final MenuManager addMenu = new MenuManager(messages.ModelEditor_AddChild);
-							for (final Action a : actions) {
-								addSeparator = true;
-								addMenu.add(a);
-							}
-							manager.add(addMenu);
-						}
-
-						actions = virtualEditors.get(((VirtualEntry<?>) s.getFirstElement()).getId())
-								.getActionsImport(s.getFirstElement());
-						if (actions.size() > 0) {
-							final MenuManager menu = new MenuManager(messages.ModelEditor_Import3x);
-							for (final Action a : actions) {
-								addSeparator = true;
-								menu.add(a);
-							}
-							manager.add(menu);
-						}
-
-						if (addSeparator) {
-							manager.add(new Separator());
-						}
-
-					} else {
-
-						final EObject o = (EObject) s.getFirstElement();
-						final AbstractComponentEditor editor = getEditor(o.eClass());
-
-						// Build Add Child menu
-						if (editor != null) {
-							actions = new ArrayList<>(editor.getActions(s.getFirstElement()));
-						} else {
-							actions = new ArrayList<>();
-						}
-
-						if (actions.size() > 0) {
-							final MenuManager addMenu = new MenuManager(messages.ModelEditor_AddChild);
-							for (final Action a : actions) {
-								addSeparator = true;
-								addMenu.add(a);
-							}
-							manager.add(addMenu);
-						}
-
-						// Build import menu
-						if (editor != null) {
-							actions = new ArrayList<>(editor.getActionsImport(s.getFirstElement()));
-						} else {
-							actions = new ArrayList<>();
-						}
-
-						if (actions.size() > 0) {
-							// TODO WIM - extract nls
-							final MenuManager menu = new MenuManager(messages.ModelEditor_Import3x);
-							for (final Action a : actions) {
-								addSeparator = true;
-								menu.add(a);
-							}
-							manager.add(menu);
-						}
-
-						if (o.eContainer() != null) {
+			boolean addSeparator = false;
+			if (!s.isEmpty() && noSelected == 1) {
+				List<Action> actions;
+				if (s.getFirstElement() instanceof VirtualEntry<?>) {
+					actions = virtualEditors.get(((VirtualEntry<?>) s.getFirstElement()).getId())
+							.getActions(s.getFirstElement());
+					if (actions.size() > 0) {
+						final MenuManager addMenu1 = new MenuManager(messages.ModelEditor_AddChild);
+						for (final Action a1 : actions) {
 							addSeparator = true;
-							manager.add(new Action(messages.ModelEditor_Delete, ImageDescriptor.createFromImage(
-									resourcePool.getImageUnchecked(ResourceProvider.IMG_Obj16_cross))) {
-								@Override
-								public void run() {
-									final Command cmd = DeleteCommand.create(modelProvider.getEditingDomain(), o);
-									if (cmd.canExecute()) {
-										modelProvider.getEditingDomain().getCommandStack().execute(cmd);
-									}
-								}
-							});
+							addMenu1.add(a1);
 						}
+						manager.add(addMenu1);
 					}
-				}
-				// multi selection
-				if (noSelected > 0) {
-					if (!isModelFragment() && modelExtractor != null) {
-						manager.add(new Action(messages.ModelEditor_ExtractFragment, ImageDescriptor
-								.createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_ModelFragments))) {
+
+					actions = virtualEditors.get(((VirtualEntry<?>) s.getFirstElement()).getId())
+							.getActionsImport(s.getFirstElement());
+					if (actions.size() > 0) {
+						final MenuManager menu1 = new MenuManager(messages.ModelEditor_Import3x);
+						for (final Action a2 : actions) {
+							addSeparator = true;
+							menu1.add(a2);
+						}
+						manager.add(menu1);
+					}
+
+					if (addSeparator) {
+						manager.add(new Separator());
+					}
+
+				} else {
+
+					final EObject o = (EObject) s.getFirstElement();
+					final AbstractComponentEditor editor = getEditor(o.eClass());
+
+					// Build Add Child menu
+					if (editor != null) {
+						actions = new ArrayList<>(editor.getActions(s.getFirstElement()));
+					} else {
+						actions = new ArrayList<>();
+					}
+
+					if (actions.size() > 0) {
+						final MenuManager addMenu2 = new MenuManager(messages.ModelEditor_AddChild);
+						for (final Action a3 : actions) {
+							addSeparator = true;
+							addMenu2.add(a3);
+						}
+						manager.add(addMenu2);
+					}
+
+					// Build import menu
+					if (editor != null) {
+						actions = new ArrayList<>(editor.getActionsImport(s.getFirstElement()));
+					} else {
+						actions = new ArrayList<>();
+					}
+
+					if (actions.size() > 0) {
+						// TODO WIM - extract nls
+						final MenuManager menu2 = new MenuManager(messages.ModelEditor_Import3x);
+						for (final Action a4 : actions) {
+							addSeparator = true;
+							menu2.add(a4);
+						}
+						manager.add(menu2);
+					}
+
+					if (o.eContainer() != null) {
+						addSeparator = true;
+						manager.add(new Action(messages.ModelEditor_Delete, ImageDescriptor
+								.createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Obj16_cross))) {
 							@Override
 							public void run() {
-								final ArrayList<MApplicationElement> maes = new ArrayList<>();
-								for (final Object objSelect : listOfSelections) {
-									EObject container = null;
-									if (objSelect instanceof VirtualEntry<?>) {
+								final Command cmd = DeleteCommand.create(modelProvider.getEditingDomain(), o);
+								if (cmd.canExecute()) {
+									modelProvider.getEditingDomain().getCommandStack().execute(cmd);
+								}
+							}
+						});
+					}
+				}
+			}
+			// multi selection
+			if (noSelected > 0) {
+				if (!isModelFragment() && modelExtractor != null) {
+					manager.add(new Action(messages.ModelEditor_ExtractFragment, ImageDescriptor
+							.createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_ModelFragments))) {
+						@Override
+						public void run() {
+							final ArrayList<MApplicationElement> maes = new ArrayList<>();
+							for (final Object objSelect : listOfSelections) {
+								EObject container = null;
+								if (objSelect instanceof VirtualEntry<?>) {
 
-										final VirtualEntry<?> ve = (VirtualEntry<?>) objSelect;
-										container = (EObject) ve.getOriginalParent();
-										final IObservableList list = ve.getList();
-										final Iterator<?> iterator = list.iterator();
-										while (iterator.hasNext()) {
-											maes.add((MApplicationElement) iterator.next());
-										}
-
-									} else {
-										container = ((EObject) objSelect).eContainer();
-										final MApplicationElement objSelect2 = (MApplicationElement) objSelect;
-										if (!(objSelect2 instanceof MApplication)) {
-											maes.add(objSelect2);
-										} else {
-											// can't extract application
-											return;
-										}
-
+									final VirtualEntry<?> ve = (VirtualEntry<?>) objSelect;
+									container = (EObject) ve.getOriginalParent();
+									final IObservableList list = ve.getList();
+									final Iterator<?> iterator = list.iterator();
+									while (iterator.hasNext()) {
+										maes.add((MApplicationElement) iterator.next());
 									}
 
-									final String containerId = ((MApplicationElement) container).getElementId();
-									if (containerId == null || containerId.length() == 0) {
-										MessageDialog.openError(viewer.getControl().getShell(), null,
-												messages.ModelEditor_ExtractFragment_NoParentId);
-
+								} else {
+									container = ((EObject) objSelect).eContainer();
+									final MApplicationElement objSelect2 = (MApplicationElement) objSelect;
+									if (!(objSelect2 instanceof MApplication)) {
+										maes.add(objSelect2);
+									} else {
+										// can't extract application
 										return;
 									}
 
 								}
 
-								if (modelExtractor.extract(viewer.getControl().getShell(), project, maes)) {
-									final Command cmd = DeleteCommand.create(modelProvider.getEditingDomain(), maes);
-									if (cmd.canExecute()) {
-										modelProvider.getEditingDomain().getCommandStack().execute(cmd);
-									}
+								final String containerId = ((MApplicationElement) container).getElementId();
+								if (containerId == null || containerId.length() == 0) {
+									MessageDialog.openError(viewer.getControl().getShell(), null,
+											messages.ModelEditor_ExtractFragment_NoParentId);
+
+									return;
 								}
 
 							}
-						});
-					}
 
-				}
-
-				final IExtensionRegistry registry = RegistryFactory.getRegistry();
-				final IExtensionPoint extPoint = registry.getExtensionPoint("org.eclipse.e4.tools.emf.ui.scripting"); //$NON-NLS-1$
-				final IConfigurationElement[] elements = extPoint.getConfigurationElements();
-
-				if (elements.length > 0 && !s.isEmpty() && s.getFirstElement() instanceof MApplicationElement
-						&& noSelected == 1) {
-					if (addSeparator) {
-						manager.add(new Separator());
-					}
-
-					addSeparator = false;
-
-					final MenuManager scriptExecute = new MenuManager(messages.ModelEditor_Script);
-					manager.add(scriptExecute);
-					for (final IConfigurationElement e : elements) {
-						final IConfigurationElement le = e;
-						scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$
-							@Override
-							public void run() {
-								try {
-									final MApplicationElement o = (MApplicationElement) s.getFirstElement();
-									final IScriptingSupport support = (IScriptingSupport) le
-											.createExecutableExtension("class"); //$NON-NLS-1$
-									IEclipseContext ctx = null;
-									if (project == null) {
-										if (o instanceof MContext) {
-											ctx = ((MContext) o).getContext();
-										} else {
-											ctx = ModelUtils.getContainingContext(o);
-										}
-									}
-
-									support.openEditor(viewer.getControl().getShell(), s.getFirstElement(), ctx);
-								} catch (final CoreException e) {
-									// TODO Auto-generated catch block
-									e.printStackTrace();
+							if (modelExtractor.extract(viewer.getControl().getShell(), project, maes)) {
+								final Command cmd = DeleteCommand.create(modelProvider.getEditingDomain(), maes);
+								if (cmd.canExecute()) {
+									modelProvider.getEditingDomain().getCommandStack().execute(cmd);
 								}
 							}
-						});
-					}
+
+						}
+					});
 				}
 
-				if (project != null) {
+			}
 
-					if (addSeparator) {
-						manager.add(new Separator());
-					}
+			final IExtensionRegistry registry = RegistryFactory.getRegistry();
+			final IExtensionPoint extPoint = registry.getExtensionPoint("org.eclipse.e4.tools.emf.ui.scripting"); //$NON-NLS-1$
+			final IConfigurationElement[] elements = extPoint.getConfigurationElements();
 
-					final Action nlsAction = new Action(messages.ModelEditor_ExternalizeStrings) {
+			if (elements.length > 0 && !s.isEmpty() && s.getFirstElement() instanceof MApplicationElement
+					&& noSelected == 1) {
+				if (addSeparator) {
+					manager.add(new Separator());
+				}
+
+				addSeparator = false;
+
+				final MenuManager scriptExecute = new MenuManager(messages.ModelEditor_Script);
+				manager.add(scriptExecute);
+				for (final IConfigurationElement e : elements) {
+					final IConfigurationElement le = e;
+					scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$
 						@Override
 						public void run() {
-							final ExternalizeStringHandler h = ContextInjectionFactory
-									.make(ExternalizeStringHandler.class, context);
-							ContextInjectionFactory.invoke(h, Execute.class, context);
-						}
-					};
-
-					final Action extIdAction = new Action(messages.ModelEditor_ExportIds) {
-						@Override
-						public void run() {
-							final ExportIdsHandler h = ContextInjectionFactory.make(ExportIdsHandler.class, context);
-							ContextInjectionFactory.invoke(h, Execute.class, context);
-						}
-					};
-
-					manager.add(nlsAction);
-					manager.add(extIdAction);
-				} else {
-					if (addSeparator) {
-						manager.add(new Separator());
-					}
-
-					if (s.getFirstElement() instanceof MUIElement) {
-						final MUIElement el = (MUIElement) s.getFirstElement();
-						if (el.getWidget() instanceof Control) {
-							manager.add(new Action(messages.ModelEditor_ShowControl) {
-
-								@Override
-								public void run() {
-									ControlHighlighter.show((Control) el.getWidget());
+							try {
+								final MApplicationElement o = (MApplicationElement) s.getFirstElement();
+								final IScriptingSupport support = (IScriptingSupport) le
+										.createExecutableExtension("class"); //$NON-NLS-1$
+								IEclipseContext ctx = null;
+								if (project == null) {
+									if (o instanceof MContext) {
+										ctx = ((MContext) o).getContext();
+									} else {
+										ctx = ModelUtils.getContainingContext(o);
+									}
 								}
-							});
 
+								support.openEditor(viewer.getControl().getShell(), s.getFirstElement(), ctx);
+							} catch (final CoreException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
+							}
 						}
-					}
-
+					});
 				}
+			}
+
+			if (project != null) {
 
 				if (addSeparator) {
 					manager.add(new Separator());
 				}
 
-				final Action expandAction = new Action(messages.ModelEditor_ExpandSubtree) {
+				final Action nlsAction = new Action(messages.ModelEditor_ExternalizeStrings) {
 					@Override
 					public void run() {
-						if (!s.isEmpty()) {
-							if (viewer.getExpandedState(s.getFirstElement())) {
-								viewer.collapseToLevel(s.getFirstElement(), AbstractTreeViewer.ALL_LEVELS);
-							} else {
-								viewer.expandToLevel(s.getFirstElement(), AbstractTreeViewer.ALL_LEVELS);
-							}
-						}
+						final ExternalizeStringHandler h = ContextInjectionFactory.make(ExternalizeStringHandler.class,
+								context);
+						ContextInjectionFactory.invoke(h, Execute.class, context);
 					}
 				};
 
-				manager.add(expandAction);
+				final Action extIdAction = new Action(messages.ModelEditor_ExportIds) {
+					@Override
+					public void run() {
+						final ExportIdsHandler h = ContextInjectionFactory.make(ExportIdsHandler.class, context);
+						ContextInjectionFactory.invoke(h, Execute.class, context);
+					}
+				};
 
-				if (s.getFirstElement() instanceof EObject) {
+				manager.add(nlsAction);
+				manager.add(extIdAction);
+			} else {
+				if (addSeparator) {
 					manager.add(new Separator());
-					final EObject el = (EObject) s.getFirstElement();
-					final Action gotoXmiAction = new Action(messages.ModelEditor_goto_xmi) {
-						@Override
-						public void run() {
-							gotoEObject(TAB_XMI, el);
-						}
-					};
-					manager.add(gotoXmiAction);
+				}
 
-					if (listTab != null) {
-						if (EmfUtil.getAttribute(el, "elementId") != null) { //$NON-NLS-1$
-							final Action gotoListAction = new Action(messages.ModelEditor_goto_list) {
-								@Override
-								public void run() {
-									gotoEObject(TAB_LIST, el);
-								}
-							};
-							manager.add(gotoListAction);
+				if (s.getFirstElement() instanceof MUIElement) {
+					final MUIElement el1 = (MUIElement) s.getFirstElement();
+					if (el1.getWidget() instanceof Control) {
+						manager.add(new Action(messages.ModelEditor_ShowControl) {
+
+							@Override
+							public void run() {
+								ControlHighlighter.show((Control) el1.getWidget());
+							}
+						});
+
+					}
+				}
+
+			}
+
+			if (addSeparator) {
+				manager.add(new Separator());
+			}
+
+			final Action expandAction = new Action(messages.ModelEditor_ExpandSubtree) {
+				@Override
+				public void run() {
+					if (!s.isEmpty()) {
+						if (viewer.getExpandedState(s.getFirstElement())) {
+							viewer.collapseToLevel(s.getFirstElement(), AbstractTreeViewer.ALL_LEVELS);
+						} else {
+							viewer.expandToLevel(s.getFirstElement(), AbstractTreeViewer.ALL_LEVELS);
 						}
 					}
-
 				}
+			};
+
+			manager.add(expandAction);
+
+			if (s.getFirstElement() instanceof EObject) {
+				manager.add(new Separator());
+				final EObject el2 = (EObject) s.getFirstElement();
+				final Action gotoXmiAction = new Action(messages.ModelEditor_goto_xmi) {
+					@Override
+					public void run() {
+						gotoEObject(TAB_XMI, el2);
+					}
+				};
+				manager.add(gotoXmiAction);
+
+				if (listTab != null) {
+					if (EmfUtil.getAttribute(el2, "elementId") != null) { //$NON-NLS-1$
+						final Action gotoListAction = new Action(messages.ModelEditor_goto_list) {
+							@Override
+							public void run() {
+								gotoEObject(TAB_LIST, el2);
+							}
+						};
+						manager.add(gotoListAction);
+					}
+				}
+
 			}
 		});
 
@@ -983,24 +937,16 @@
 			@Override
 			public void treeExpanded(final TreeExpansionEvent event) {
 				if (mod1Down) {
-					viewer.getTree().getDisplay().asyncExec(new Runnable() {
-						@Override
-						public void run() {
-							viewer.expandToLevel(event.getElement(), AbstractTreeViewer.ALL_LEVELS);
-						}
-					});
+					viewer.getTree().getDisplay()
+					.asyncExec(() -> viewer.expandToLevel(event.getElement(), AbstractTreeViewer.ALL_LEVELS));
 				}
 			}
 
 			@Override
 			public void treeCollapsed(final TreeExpansionEvent event) {
 				if (mod1Down) {
-					viewer.getTree().getDisplay().asyncExec(new Runnable() {
-						@Override
-						public void run() {
-							viewer.collapseToLevel(event.getElement(), AbstractTreeViewer.ALL_LEVELS);
-						}
-					});
+					viewer.getTree().getDisplay()
+					.asyncExec(() -> viewer.collapseToLevel(event.getElement(), AbstractTreeViewer.ALL_LEVELS));
 				}
 			}
 		});
@@ -1126,56 +1072,42 @@
 
 		final WritableSet clearedSet = new WritableSet();
 
-		contentProvider.getKnownElements().addSetChangeListener(new ISetChangeListener() {
-
-			@Override
-			public void handleSetChange(SetChangeEvent event) {
-				for (final Object o : event.diff.getAdditions()) {
-					if (o instanceof EObject) {
-						clearedSet.add(o);
-					}
+		contentProvider.getKnownElements().addSetChangeListener(event -> {
+			for (final Object o1 : event.diff.getAdditions()) {
+				if (o1 instanceof EObject) {
+					clearedSet.add(o1);
 				}
+			}
 
-				for (final Object o : event.diff.getRemovals()) {
-					if (o instanceof EObject) {
-						clearedSet.remove(o);
-					}
+			for (final Object o2 : event.diff.getRemovals()) {
+				if (o2 instanceof EObject) {
+					clearedSet.remove(o2);
 				}
 			}
 		});
 
 		for (final FeaturePath p : labelFeaturePaths) {
 			final IObservableMap map = EMFProperties.value(p).observeDetail(clearedSet);
-			map.addMapChangeListener(new IMapChangeListener() {
-
-				@Override
-				public void handleMapChange(MapChangeEvent event) {
-					viewer.update(event.diff.getChangedKeys().toArray(), null);
-				}
-			});
+			map.addMapChangeListener(event -> viewer.update(event.diff.getChangedKeys().toArray(), null));
 		}
 
 		viewer.setInput(modelProvider.getRoot());
 		viewer.setAutoExpandLevel(2);
 		viewer.expandToLevel(viewer.getAutoExpandLevel());
-		viewer.addDoubleClickListener(new IDoubleClickListener() {
-
-			@Override
-			public void doubleClick(DoubleClickEvent event) {
-				final TreeViewer viewer = (TreeViewer) event.getViewer();
-				final IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
-				final Object selectedNode = thisSelection.getFirstElement();
-				if (mod1Down) {
-					if (viewer.getExpandedState(selectedNode)) {
-						viewer.setExpandedState(selectedNode, false);
-					} else {
-						viewer.expandToLevel(selectedNode, AbstractTreeViewer.ALL_LEVELS);
-					}
+		viewer.addDoubleClickListener(event -> {
+			final TreeViewer viewer1 = (TreeViewer) event.getViewer();
+			final IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
+			final Object selectedNode = thisSelection.getFirstElement();
+			if (mod1Down) {
+				if (viewer1.getExpandedState(selectedNode)) {
+					viewer1.setExpandedState(selectedNode, false);
 				} else {
-					viewer.setExpandedState(selectedNode, !viewer.getExpandedState(selectedNode));
+					viewer1.expandToLevel(selectedNode, AbstractTreeViewer.ALL_LEVELS);
 				}
-
+			} else {
+				viewer1.setExpandedState(selectedNode, !viewer1.getExpandedState(selectedNode));
 			}
+
 		});
 
 		// Effect of filtered tree implementation (bug 391086)
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/VirtualEntry.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/VirtualEntry.java
index 80636ef..39c8723 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/VirtualEntry.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/VirtualEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -12,10 +12,10 @@
 
 import java.util.ArrayList;
 import java.util.List;
+
 import org.eclipse.core.databinding.observable.Diffs;
 import org.eclipse.core.databinding.observable.list.IListChangeListener;
 import org.eclipse.core.databinding.observable.list.IObservableList;
-import org.eclipse.core.databinding.observable.list.ListChangeEvent;
 import org.eclipse.core.databinding.observable.list.ListDiff;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.property.list.IListProperty;
@@ -36,15 +36,11 @@
 		final IObservableList origList = property.observe(originalParent);
 		list.addAll(cleanedList(origList));
 
-		final IListChangeListener listener = new IListChangeListener() {
-
-			@Override
-			public void handleListChange(ListChangeEvent event) {
-				if (!VirtualEntry.this.list.isDisposed()) {
-					List<Object> clean = cleanedList(event.getObservableList());
-					ListDiff diff = Diffs.computeListDiff(VirtualEntry.this.list, clean);
-					diff.applyTo(VirtualEntry.this.list);
-				}
+		final IListChangeListener listener = event -> {
+			if (!VirtualEntry.this.list.isDisposed()) {
+				List<Object> clean = cleanedList(event.getObservableList());
+				ListDiff diff = Diffs.computeListDiff(VirtualEntry.this.list, clean);
+				diff.applyTo(VirtualEntry.this.list);
 			}
 		};
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java
index b27cdd3..828ccb0 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2014 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -19,17 +19,12 @@
 
 import org.eclipse.core.databinding.Binding;
 import org.eclipse.core.databinding.UpdateValueStrategy;
-import org.eclipse.core.databinding.observable.list.IListChangeListener;
 import org.eclipse.core.databinding.observable.list.IObservableList;
-import org.eclipse.core.databinding.observable.list.ListChangeEvent;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.validation.IValidator;
 import org.eclipse.core.databinding.validation.ValidationStatus;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.e4.tools.emf.ui.common.Util;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
@@ -80,10 +75,8 @@
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
@@ -93,12 +86,8 @@
 import org.eclipse.swt.dnd.TextTransfer;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -163,18 +152,14 @@
 
 		TextPasteHandler.createFor(t);
 
-		editor.getMaster().addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				final Object val = event.diff.getNewValue();
-				if (val != null && val instanceof EObject && !t.isDisposed()) {
-					final Resource res = ((EObject) val).eResource();
-					if (res instanceof E4XMIResource) {
-						final String v = ((E4XMIResource) res).getID((EObject) val);
-						if (v != null && v.trim().length() > 0) {
-							t.setText(v);
-						}
+		editor.getMaster().addValueChangeListener(event -> {
+			final Object val = event.diff.getNewValue();
+			if (val != null && val instanceof EObject && !t.isDisposed()) {
+				final Resource res = ((EObject) val).eResource();
+				if (res instanceof E4XMIResource) {
+					final String v = ((E4XMIResource) res).getID((EObject) val);
+					if (v != null && v.trim().length() > 0) {
+						t.setText(v);
 					}
 				}
 			}
@@ -355,13 +340,7 @@
 		final IEMFEditListProperty prop = EMFEditProperties.list(editor.getEditingDomain(), feature);
 		final IObservableList observableList = prop.observeDetail(editor.getMaster());
 		tableviewer.setInput(observableList);
-		observableList.addListChangeListener(new IListChangeListener() {
-
-			@Override
-			public void handleListChange(ListChangeEvent event) {
-				tableviewer.getTable().getColumn(0).pack();
-			}
-		});
+		observableList.addListChangeListener(event -> tableviewer.getTable().getColumn(0).pack());
 
 		return pickList;
 	}
@@ -415,25 +394,21 @@
 			final FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration(
 					FieldDecorationRegistry.DEC_WARNING);
 			controlDecoration.setImage(fieldDecoration.getImage());
-			final IValidator iv = new IValidator() {
-
-				@Override
-				public IStatus validate(Object value) {
-					if (value == null) {
+			final IValidator iv = value -> {
+				if (value == null) {
+					controlDecoration.show();
+					return ValidationStatus.warning(warningText);
+				}
+				if (value instanceof String) {
+					final String text = (String) value;
+					if (text.trim().length() == 0) {
 						controlDecoration.show();
 						return ValidationStatus.warning(warningText);
 					}
-					if (value instanceof String) {
-						final String text = (String) value;
-						if (text.trim().length() == 0) {
-							controlDecoration.show();
-							return ValidationStatus.warning(warningText);
-						}
-					}
-
-					controlDecoration.hide();
-					return Status.OK_STATUS;
 				}
+
+				controlDecoration.hide();
+				return Status.OK_STATUS;
 			};
 			final UpdateValueStrategy acv = new UpdateValueStrategy().setAfterConvertValidator(iv);
 			context.bindValue(textProp.observeDelayed(200, t), modelProp.observeDetail(master), acv, acv);
@@ -532,15 +507,11 @@
 		final IObservableValue uiObs = vProp.observe(viewer);
 		final IObservableValue mObs = EMFEditProperties.value(editor.getEditingDomain(),
 				UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(editor.getMaster());
-		editor.getMaster().addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (binding[0] != null) {
-					binding[0].dispose();
-				}
-
+		editor.getMaster().addValueChangeListener(event -> {
+			if (binding[0] != null) {
+				binding[0].dispose();
 			}
+
 		});
 
 		final IObservableList list = listProp.observeDetail(editor.getMaster());
@@ -574,13 +545,7 @@
 		});
 		viewer.setInput(list);
 
-		editor.getMaster().addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				binding[0] = context.bindValue(uiObs, mObs);
-			}
-		});
+		editor.getMaster().addValueChangeListener(event -> binding[0] = context.bindValue(uiObs, mObs));
 	}
 
 	public static void createBindingContextWiget(Composite parent, final Messages Messages,
@@ -657,13 +622,9 @@
 		final IEMFListProperty prop = EMFProperties.list(feature);
 		viewer.setInput(prop.observeDetail(editor.getMaster()));
 
-		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
-			@Override
-			public void selectionChanged(SelectionChangedEvent event) {
-				final String strSelected = (String) ((StructuredSelection) event.getSelection()).getFirstElement();
-				t.setText(strSelected != null ? strSelected : ""); //$NON-NLS-1$
-			}
+		viewer.addSelectionChangedListener(event -> {
+			final String strSelected = (String) ((StructuredSelection) event.getSelection()).getFirstElement();
+			t.setText(strSelected != null ? strSelected : ""); //$NON-NLS-1$
 		});
 
 		//
@@ -795,24 +756,17 @@
 	}
 
 	public static void attachFiltering(Text searchText, final TableViewer viewer, final PatternFilter filter) {
-		searchText.addModifyListener(new ModifyListener() {
-			@Override
-			public void modifyText(ModifyEvent e) {
-				filter.setPattern(((Text) e.widget).getText());
-				viewer.refresh();
-				if (viewer.getTable().getItemCount() > 0) {
-					final Object data = viewer.getTable().getItem(0).getData();
-					viewer.setSelection(new StructuredSelection(data));
-				}
+		searchText.addModifyListener(e -> {
+			filter.setPattern(((Text) e.widget).getText());
+			viewer.refresh();
+			if (viewer.getTable().getItemCount() > 0) {
+				final Object data = viewer.getTable().getItem(0).getData();
+				viewer.setSelection(new StructuredSelection(data));
 			}
 		});
-		searchText.addTraverseListener(new TraverseListener() {
-
-			@Override
-			public void keyTraversed(TraverseEvent e) {
-				if (e.keyCode == SWT.ARROW_DOWN && viewer.getTable().getItemCount() > 0) {
-					viewer.getControl().setFocus();
-				}
+		searchText.addTraverseListener(e -> {
+			if (e.keyCode == SWT.ARROW_DOWN && viewer.getTable().getItemCount() > 0) {
+				viewer.getControl().setFocus();
 			}
 		});
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java
index 37d7300..b3165b3 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -17,8 +17,6 @@
 import org.eclipse.core.databinding.UpdateValueStrategy;
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.tools.emf.ui.common.ContributionURIValidator;
@@ -43,8 +41,6 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
@@ -138,21 +134,17 @@
 			final Text t = new Text(parent, SWT.BORDER);
 			TextPasteHandler.createFor(t);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			t.addModifyListener(new ModifyListener() {
-
-				@Override
-				public void modifyText(ModifyEvent e) {
-					if (lnk != null) {
-						lnk.setToolTipText(((Text) e.getSource()).getText());
-					}
+			t.addModifyListener(e -> {
+				if (lnk != null) {
+					lnk.setToolTipText(((Text) e.getSource()).getText());
 				}
 			});
 			final Binding binding = context.bindValue(
 					textProp.observeDelayed(200, t),
 					EMFEditProperties.value(getEditingDomain(),
 							ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI).observeDetail(master),
-							new UpdateValueStrategy().setAfterConvertValidator(new ContributionURIValidator()),
-							new UpdateValueStrategy());
+					new UpdateValueStrategy().setAfterConvertValidator(new ContributionURIValidator()),
+					new UpdateValueStrategy());
 			Util.addDecoration(t, binding);
 
 			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
@@ -179,17 +171,13 @@
 			list.add(0, ((MDirectMenuItem) element).getVisibleWhen());
 		}
 
-		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(new IValueChangeListener() {
+		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+			}
 
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-				}
-
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-				}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
 			}
 		});
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java
index 871646f..c756625 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -16,8 +16,6 @@
 import org.eclipse.core.databinding.Binding;
 import org.eclipse.core.databinding.UpdateValueStrategy;
 import org.eclipse.core.databinding.observable.list.IObservableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.tools.emf.ui.common.ContributionURIValidator;
@@ -42,8 +40,6 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
@@ -99,13 +95,9 @@
 		final Text t = new Text(parent, SWT.BORDER);
 		TextPasteHandler.createFor(t);
 		t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		t.addModifyListener(new ModifyListener() {
-
-			@Override
-			public void modifyText(ModifyEvent e) {
-				if (lnk != null) {
-					lnk.setToolTipText(((Text) e.getSource()).getText());
-				}
+		t.addModifyListener(e -> {
+			if (lnk != null) {
+				lnk.setToolTipText(((Text) e.getSource()).getText());
 			}
 		});
 		final Binding binding = context.bindValue(textProp.observeDelayed(200, t),
@@ -173,17 +165,13 @@
 			list.add(0, ((MDirectToolItem) element).getVisibleWhen());
 		}
 
-		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(new IValueChangeListener() {
+		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+			}
 
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-				}
-
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-				}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
 			}
 		});
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java
index 9c65ccf..328c4dc 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -15,8 +15,6 @@
 import org.eclipse.core.databinding.UpdateValueStrategy;
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.e4.tools.emf.ui.common.CommandToStringConverter;
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
@@ -119,17 +117,13 @@
 			list.add(0, ((MHandledMenuItem) element).getVisibleWhen());
 		}
 
-		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(new IValueChangeListener() {
+		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+			}
 
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-				}
-
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-				}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
 			}
 		});
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java
index 2287f6c..e56940c 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -14,8 +14,6 @@
 
 import org.eclipse.core.databinding.UpdateValueStrategy;
 import org.eclipse.core.databinding.observable.list.IObservableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.e4.tools.emf.ui.common.CommandToStringConverter;
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
@@ -118,17 +116,13 @@
 			list.add(0, ((MHandledToolItem) element).getVisibleWhen());
 		}
 
-		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(new IValueChangeListener() {
+		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+			}
 
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-				}
-
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-				}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
 			}
 		});
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java
index f6bb192..27962f0 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * f * Copyright (c) 2010, 2014 BestSolution.at and others.
+ * f * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -21,13 +21,9 @@
 import javax.inject.Inject;
 
 import org.eclipse.core.databinding.UpdateValueStrategy;
-import org.eclipse.core.databinding.observable.list.IListChangeListener;
 import org.eclipse.core.databinding.observable.list.IObservableList;
-import org.eclipse.core.databinding.observable.list.ListChangeEvent;
 import org.eclipse.core.databinding.observable.list.ListDiffVisitor;
 import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.resources.IProject;
@@ -402,48 +398,38 @@
 			list.add(0, ((MUIElement) element).getVisibleWhen());
 		}
 
-		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(new IValueChangeListener() {
+		UI_ELEMENT__VISIBLE_WHEN.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+			}
 
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-				}
-
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-				}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
 			}
 		});
 
 		final IObservableList l = ELEMENT_CONTAINER__CHILDREN.observe(element);
-		l.addListChangeListener(new IListChangeListener() {
+		l.addListChangeListener(event -> event.diff.accept(new ListDiffVisitor() {
 
 			@Override
-			public void handleListChange(ListChangeEvent event) {
-				event.diff.accept(new ListDiffVisitor() {
-
-					@Override
-					public void handleRemove(int index, Object element) {
-						list.remove(element);
-					}
-
-					@Override
-					public void handleMove(int oldIndex, int newIndex, Object element) {
-						if (list.get(0) instanceof MExpression) {
-							oldIndex += 1;
-							newIndex += 1;
-						}
-						list.move(oldIndex, newIndex);
-					}
-
-					@Override
-					public void handleAdd(int index, Object element) {
-						list.add(element);
-					}
-				});
+			public void handleRemove(int index, Object element) {
+				list.remove(element);
 			}
-		});
+
+			@Override
+			public void handleMove(int oldIndex, int newIndex, Object element) {
+				if (list.get(0) instanceof MExpression) {
+					oldIndex += 1;
+					newIndex += 1;
+				}
+				list.move(oldIndex, newIndex);
+			}
+
+			@Override
+			public void handleAdd(int index, Object element) {
+				list.add(element);
+			}
+		}));
 		list.addAll(l);
 
 		return list;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
index e18e317..7e1114f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -17,8 +17,6 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.core.resources.IProject;
@@ -445,23 +443,19 @@
 			list.add(0, window.getToolbar());
 		}
 
-		PART__TOOLBAR.observe(element).addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-					if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
-						createRemoveToolBar.setSelection(false);
-					}
-
+		PART__TOOLBAR.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+				if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
+					createRemoveToolBar.setSelection(false);
 				}
 
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-					if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
-						createRemoveToolBar.setSelection(true);
-					}
+			}
+
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
+				if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
+					createRemoveToolBar.setSelection(true);
 				}
 			}
 		});
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
index b29a35a..719768c 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2014 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -19,8 +19,6 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.core.resources.IProject;
@@ -62,8 +60,6 @@
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
@@ -250,14 +246,10 @@
 			final Text t = new Text(parent, SWT.BORDER);
 			TextPasteHandler.createFor(t);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			t.addModifyListener(new ModifyListener() {
-
-				@Override
-				public void modifyText(ModifyEvent e) {
-					// lnk might be disposed if else branch above taken
-					if (lnk != null) {
-						lnk.setToolTipText(((Text) e.getSource()).getText());
-					}
+			t.addModifyListener(e -> {
+				// lnk might be disposed if else branch above taken
+				if (lnk != null) {
+					lnk.setToolTipText(((Text) e.getSource()).getText());
 				}
 			});
 			final Binding binding = context.bindValue(
@@ -433,23 +425,19 @@
 			list.add(0, window.getToolbar());
 		}
 
-		PART__TOOLBAR.observe(element).addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-					if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
-						createRemoveToolBar.setSelection(false);
-					}
-
+		PART__TOOLBAR.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+				if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
+					createRemoveToolBar.setSelection(false);
 				}
 
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-					if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
-						createRemoveToolBar.setSelection(true);
-					}
+			}
+
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
+				if (getMaster().getValue() == element && !createRemoveToolBar.isDisposed()) {
+					createRemoveToolBar.setSelection(true);
 				}
 			}
 		});
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
index 0fc349a..7adfc75 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2014 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -23,8 +23,6 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.core.resources.IProject;
@@ -367,22 +365,18 @@
 			list.add(0, item.getMenu());
 		}
 
-		TOOL_ITEM__MENU.observe(element).addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-					if (getMaster().getValue() == element && !createRemoveMenu.isDisposed()) {
-						createRemoveMenu.setSelection(false);
-					}
+		TOOL_ITEM__MENU.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+				if (getMaster().getValue() == element && !createRemoveMenu.isDisposed()) {
+					createRemoveMenu.setSelection(false);
 				}
+			}
 
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-					if (getMaster().getValue() == element && !createRemoveMenu.isDisposed()) {
-						createRemoveMenu.setSelection(true);
-					}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
+				if (getMaster().getValue() == element && !createRemoveMenu.isDisposed()) {
+					createRemoveMenu.setSelection(true);
 				}
 			}
 		});
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java
index c4bc295..f0e777f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2014 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -21,8 +21,6 @@
 
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.databinding.property.value.IValueProperty;
@@ -422,22 +420,18 @@
 			list.add(0, window.getMainMenu());
 		}
 
-		WINDOW__MAIN_MENU.observe(element).addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getOldValue() != null) {
-					list.remove(event.diff.getOldValue());
-					if (getMaster().getValue() == element && !createRemoveMainMenu.isDisposed()) {
-						createRemoveMainMenu.setSelection(false);
-					}
+		WINDOW__MAIN_MENU.observe(element).addValueChangeListener(event -> {
+			if (event.diff.getOldValue() != null) {
+				list.remove(event.diff.getOldValue());
+				if (getMaster().getValue() == element && !createRemoveMainMenu.isDisposed()) {
+					createRemoveMainMenu.setSelection(false);
 				}
+			}
 
-				if (event.diff.getNewValue() != null) {
-					list.add(0, event.diff.getNewValue());
-					if (getMaster().getValue() == element && !createRemoveMainMenu.isDisposed()) {
-						createRemoveMainMenu.setSelection(true);
-					}
+			if (event.diff.getNewValue() != null) {
+				list.add(0, event.diff.getNewValue());
+				if (getMaster().getValue() == element && !createRemoveMainMenu.isDisposed()) {
+					createRemoveMainMenu.setSelection(true);
 				}
 			}
 		});
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithHardcodedScope.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithHardcodedScope.java
index 28bebe9..5e014d0 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithHardcodedScope.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithHardcodedScope.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -24,6 +24,7 @@
 import java.util.Properties;
 import java.util.Timer;
 import java.util.TimerTask;
+
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.resources.IFile;
@@ -167,23 +168,12 @@
 
 				Image img = icons.get(file);
 				if (img == null) {
-					InputStream in = null;
-					try {
-						in = file.getContents();
+					try (InputStream in = file.getContents()) {
 						img = new Image(cell.getControl().getDisplay(), in);
 						icons.put(file, img);
-					} catch (CoreException e) {
+					} catch (CoreException | IOException e) {
 						// TODO Auto-generated catch block
 						e.printStackTrace();
-					} finally {
-						if (in != null) {
-							try {
-								in.close();
-							} catch (IOException e) {
-								// TODO Auto-generated catch block
-								e.printStackTrace();
-							}
-						}
 					}
 				}
 
@@ -274,10 +264,7 @@
 		IFile f = project.getFile("/META-INF/MANIFEST.MF"); //$NON-NLS-1$
 
 		if (f != null && f.exists()) {
-			BufferedReader r = null;
-			try {
-				InputStream s = f.getContents();
-				r = new BufferedReader(new InputStreamReader(s));
+			try (InputStream s = f.getContents(); BufferedReader r = new BufferedReader(new InputStreamReader(s));) {
 				String line;
 				while ((line = r.readLine()) != null) {
 					if (line.startsWith("Bundle-SymbolicName:")) { //$NON-NLS-1$
@@ -295,15 +282,6 @@
 			} catch (IOException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
-			} finally {
-				if (r != null) {
-					try {
-						r.close();
-					} catch (IOException e) {
-						// TODO Auto-generated catch block
-						e.printStackTrace();
-					}
-				}
 			}
 		}
 		return null;
@@ -375,9 +353,7 @@
 					// Only search target bundle if specified
 					String bundle = (String) context.get("bundle"); //$NON-NLS-1$
 					if (E.notEmpty(bundle)) {
-						InputStream inputStream = null;
-						try {
-							inputStream = iFile.getContents();
+						try (InputStream inputStream = iFile.getContents();) {
 							Properties props = new Properties();
 							props.load(inputStream);
 							String name = props.getProperty("Bundle-SymbolicName"); //$NON-NLS-1$
@@ -388,11 +364,6 @@
 						} catch (IOException e) {
 							// TODO Auto-generated catch block
 							e.printStackTrace();
-						} finally {
-							try {
-								inputStream.close();
-							} catch (Exception ex) {
-							}
 						}
 					}
 					project.accept(new IResourceVisitor() {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithScopeAndFilter.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithScopeAndFilter.java
index 1aa3053..85409e3 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithScopeAndFilter.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractIconDialogWithScopeAndFilter.java
@@ -1,6 +1,6 @@
 /*******************************************************************************
  *
- * Copyright (c) 2010 BestSolution.at and others.
+ * Copyright (c) 2010, 2017 BestSolution.at and others.
  * 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
@@ -12,7 +12,6 @@
  ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -176,23 +175,12 @@
 
 				Image img = icons.get(file);
 				if (img == null) {
-					InputStream in = null;
-					try {
-						in = file.getContents();
+					try (InputStream in = file.getContents()) {
 						img = new Image(cell.getControl().getDisplay(), in);
 						icons.put(file, img);
 					} catch (final Exception e) {
 						// e.printStackTrace();
 						return;
-					} finally {
-						if (in != null) {
-							try {
-								in.close();
-							} catch (final IOException e) {
-								// TODO Auto-generated catch block
-								// e.printStackTrace();
-							}
-						}
 					}
 				}
 
@@ -219,7 +207,7 @@
 					icons.put(file, img);
 				}
 				final int width = AbstractIconDialogWithScopeAndFilter.this.getViewer().getTable().getColumn(0)
-					.getWidth();
+						.getWidth();
 				if (img.getImageData().width > width) {
 					AbstractIconDialogWithScopeAndFilter.this.getViewer().getTable().getColumn(0)
 					.setWidth(img.getImageData().width);
@@ -435,7 +423,7 @@
 								if (matcherGif.match(path) || matcherPng.match(path) || matcherJpg.match(path)) {
 									if (E.notEmpty(filter.getPackages())) {
 										if (!filter.getPackages().contains(
-											resource.getProjectRelativePath().removeLastSegments(1).toOSString())) {
+												resource.getProjectRelativePath().removeLastSegments(1).toOSString())) {
 											return false;
 										}
 									}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java
index c0ba9dd..48d3530 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/FilteredContributionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 TwelveTone LLC and others.
+ * Copyright (c) 2014, 2017 TwelveTone LLC and others.
  * 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
@@ -1033,15 +1033,12 @@
 
 	public BundleModel loadBundleModel(IProject currentProject) throws CoreException {
 		final Document document = new Document();
-		final Scanner scanner = new Scanner(PDEProject.getManifest(currentProject).getContents());
-		try {
+		try (final Scanner scanner = new Scanner(PDEProject.getManifest(currentProject).getContents())) {
 			final String content = scanner.useDelimiter("\\Z").next(); //$NON-NLS-1$
 			document.set(content);
 			final BundleModel model = new BundleModel(document, false);
 			model.load();
 			return model;
-		} finally {
-			scanner.close();
 		}
 	}
 
@@ -1088,10 +1085,8 @@
 		final IFile f = project.getFile("/META-INF/MANIFEST.MF"); //$NON-NLS-1$
 
 		if (f != null && f.exists()) {
-			BufferedReader r = null;
-			try {
-				final InputStream s = f.getContents();
-				r = new BufferedReader(new InputStreamReader(s));
+			try (final InputStream s = f.getContents();
+					BufferedReader r = new BufferedReader(new InputStreamReader(s));) {
 				String line;
 				while ((line = r.readLine()) != null) {
 					if (line.startsWith("Bundle-SymbolicName:")) { //$NON-NLS-1$
@@ -1107,13 +1102,6 @@
 				e.printStackTrace();
 			} catch (final IOException e) {
 				e.printStackTrace();
-			} finally {
-				if (r != null) {
-					try {
-						r.close();
-					} catch (final IOException e) {
-					}
-				}
 			}
 		}
 		return null;
@@ -1129,10 +1117,9 @@
 		final File f = new File(new File(rootDirectory), "/META-INF/MANIFEST.MF"); //$NON-NLS-1$
 
 		if (f.exists()) {
-			BufferedReader r = null;
-			try {
-				final InputStream s = new FileInputStream(f);
-				r = new BufferedReader(new InputStreamReader(s));
+			try (final InputStream s = new FileInputStream(f);
+					BufferedReader r = new BufferedReader(new InputStreamReader(s))) {
+
 				String line;
 				while ((line = r.readLine()) != null) {
 					if (line.startsWith("Bundle-SymbolicName:")) { //$NON-NLS-1$
@@ -1146,13 +1133,6 @@
 				}
 			} catch (final IOException e) {
 				e.printStackTrace();
-			} finally {
-				if (r != null) {
-					try {
-						r.close();
-					} catch (final IOException e) {
-					}
-				}
 			}
 		}
 		return null;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/objectdata/ObjectViewer.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/objectdata/ObjectViewer.java
index 87691d6..ad08b95 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/objectdata/ObjectViewer.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/objectdata/ObjectViewer.java
@@ -4,8 +4,6 @@
 import java.util.Collections;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionPoint;
@@ -22,8 +20,6 @@
 import org.eclipse.emf.databinding.IEMFValueProperty;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ColumnViewer;
 import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
@@ -45,23 +41,19 @@
 
 public class ObjectViewer {
 	public TreeViewer createViewer(Composite parent, EStructuralFeature feature, final IObservableValue master,
-		IResourcePool resourcePool, final Messages messages) {
+			IResourcePool resourcePool, final Messages messages) {
 		final TreeViewer viewer = new TreeViewer(parent);
 		viewer.setContentProvider(new ContentProviderImpl());
 		viewer.setLabelProvider(new LabelProviderImpl(resourcePool));
 		viewer.setComparator(new ViewerComparatorImpl());
 		final IEMFValueProperty property = EMFProperties.value(feature);
 		final IObservableValue value = property.observeDetail(master);
-		value.addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getNewValue() != null) {
-					viewer.setInput(Collections.singleton(new JavaObject(event.diff.getNewValue())));
-					viewer.expandToLevel(2);
-				} else {
-					viewer.setInput(Collections.emptyList());
-				}
+		value.addValueChangeListener(event -> {
+			if (event.diff.getNewValue() != null) {
+				viewer.setInput(Collections.singleton(new JavaObject(event.diff.getNewValue())));
+				viewer.expandToLevel(2);
+			} else {
+				viewer.setInput(Collections.emptyList());
 			}
 		});
 
@@ -72,45 +64,40 @@
 		if (elements.length > 0) {
 			final MenuManager mgr = new MenuManager();
 			mgr.setRemoveAllWhenShown(true);
-			mgr.addMenuListener(new IMenuListener() {
+			mgr.addMenuListener(manager -> {
+				if (viewer.getSelection().isEmpty()) {
+					return;
+				}
 
-				@Override
-				public void menuAboutToShow(IMenuManager manager) {
-					if (viewer.getSelection().isEmpty()) {
-						return;
-					}
-
-					final MenuManager scriptExecute = new MenuManager(messages.ObjectViewer_Script);
-					mgr.add(scriptExecute);
-					for (final IConfigurationElement e : elements) {
-						final IConfigurationElement le = e;
-						scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$
-							@Override
-							public void run() {
-								try {
-									final IScriptingSupport support = (IScriptingSupport) le
+				final MenuManager scriptExecute = new MenuManager(messages.ObjectViewer_Script);
+				mgr.add(scriptExecute);
+				for (final IConfigurationElement e : elements) {
+					final IConfigurationElement le = e;
+					scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$
+						@Override
+						public void run() {
+							try {
+								final IScriptingSupport support = (IScriptingSupport) le
 										.createExecutableExtension("class"); //$NON-NLS-1$
-									final Object o = ((IStructuredSelection) viewer.getSelection())
-										.getFirstElement();
-									Object mainObject = null;
-									if (o instanceof JavaObject) {
-										mainObject = ((JavaObject) o).getInstance();
-									} else if (o instanceof JavaAttribute) {
-										mainObject = ((JavaAttribute) o).getFieldValue();
-									}
-
-									if (mainObject != null) {
-										final MApplicationElement value = (MApplicationElement) master.getValue();
-										support.openEditor(viewer.getControl().getShell(), mainObject,
-											ModelUtils.getContainingContext(value));
-									}
-								} catch (final CoreException e) {
-									// TODO Auto-generated catch block
-									e.printStackTrace();
+								final Object o = ((IStructuredSelection) viewer.getSelection()).getFirstElement();
+								Object mainObject = null;
+								if (o instanceof JavaObject) {
+									mainObject = ((JavaObject) o).getInstance();
+								} else if (o instanceof JavaAttribute) {
+									mainObject = ((JavaAttribute) o).getFieldValue();
 								}
+
+								if (mainObject != null) {
+									final MApplicationElement value = (MApplicationElement) master.getValue();
+									support.openEditor(viewer.getControl().getShell(), mainObject,
+											ModelUtils.getContainingContext(value));
+								}
+							} catch (final CoreException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
 							}
-						});
-					}
+						}
+					});
 				}
 			});
 
@@ -126,7 +113,7 @@
 		private final Messages messages;
 
 		protected TooltipSupportImpl(ColumnViewer viewer, int style, boolean manualActivation,
-			IResourcePool resourcePool, Messages messages) {
+				IResourcePool resourcePool, Messages messages) {
 			super(viewer, style, manualActivation);
 			this.resourcePool = resourcePool;
 			this.messages = messages;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java
index c9be474..f78c698 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExportIdsHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 MEDEVIT, FHV and others.
+ * Copyright (c) 2014, 2017 MEDEVIT, FHV and others.
  * 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
@@ -259,16 +259,16 @@
 					IResource resource = unit.getResource();
 					IFile file = (IFile) resource;
 
-					ByteArrayInputStream stream = new ByteArrayInputStream(content.toString().getBytes());
-					if (file.exists()) {
-						file.delete(true, new NullProgressMonitor());
+					try (ByteArrayInputStream stream = new ByteArrayInputStream(content.toString().getBytes())) {
+						if (file.exists()) {
+							file.delete(true, new NullProgressMonitor());
+						}
+
+						createParent(file.getParent());
+						// NPE
+						file.create(stream, IResource.KEEP_HISTORY, new NullProgressMonitor());
+
 					}
-
-					createParent(file.getParent());
-					// NPE
-					file.create(stream, IResource.KEEP_HISTORY, new NullProgressMonitor());
-
-					stream.close();
 					super.okPressed();
 				} catch (CoreException e) {
 					e.printStackTrace();
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExternalizeStringHandler.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExternalizeStringHandler.java
index ae86a80..d1c28b2 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExternalizeStringHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ExternalizeStringHandler.java
@@ -6,7 +6,9 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
+
 import javax.inject.Named;
+
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -226,16 +228,15 @@
 						b.append(e.key + " = " + e.value + System.getProperty("line.separator")); //$NON-NLS-1$//$NON-NLS-2$
 					}
 
-					ByteArrayInputStream stream = new ByteArrayInputStream(b.toString().getBytes());
-					if (f.exists()) {
-						f.appendContents(stream, IResource.KEEP_HISTORY, new NullProgressMonitor());
-					} else {
-						createParent(f.getParent());
-						f.create(stream, IResource.KEEP_HISTORY, new NullProgressMonitor());
+					try (ByteArrayInputStream stream = new ByteArrayInputStream(b.toString().getBytes())) {
+						if (f.exists()) {
+							f.appendContents(stream, IResource.KEEP_HISTORY, new NullProgressMonitor());
+						} else {
+							createParent(f.getParent());
+							f.create(stream, IResource.KEEP_HISTORY, new NullProgressMonitor());
+						}
 					}
 
-					stream.close();
-
 					for (Object o : els) {
 						Entry e = (Entry) o;
 						Command cmd = SetCommand.create(resource.getEditingDomain(), e.object, e.feature, "%" + e.key); //$NON-NLS-1$
@@ -280,9 +281,9 @@
 				IFile f = getBasePropertyFile();
 				if (f.exists()) {
 
-					InputStream in = f.getContents();
-					prop.load(in);
-					in.close();
+					try (InputStream in = f.getContents()) {
+						prop.load(in);
+					}
 				}
 			} catch (CoreException e) {
 				// TODO Auto-generated catch block
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ProjectOSGiTranslationProvider.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ProjectOSGiTranslationProvider.java
index 1eb8d31..7c6a7e5 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ProjectOSGiTranslationProvider.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/properties/ProjectOSGiTranslationProvider.java
@@ -213,18 +213,18 @@
 	 * @see IFile#getContents()
 	 */
 	public static String extractBasenameFromManifest(IFile file) throws CoreException, IOException {
-		final InputStream in = file.getContents();
-		final BufferedReader r = new BufferedReader(new InputStreamReader(in));
-		String line;
 		String newValue = Constants.BUNDLE_LOCALIZATION_DEFAULT_BASENAME;
-		while ((line = r.readLine()) != null) {
-			if (line.startsWith(Constants.BUNDLE_LOCALIZATION)) {
-				newValue = line.substring(Constants.BUNDLE_LOCALIZATION.length() + 1).trim();
-				break;
+		try (final InputStream in = file.getContents();
+				final BufferedReader r = new BufferedReader(new InputStreamReader(in))) {
+			String line;
+			while ((line = r.readLine()) != null) {
+				if (line.startsWith(Constants.BUNDLE_LOCALIZATION)) {
+					newValue = line.substring(Constants.BUNDLE_LOCALIZATION.length() + 1).trim();
+					break;
+				}
 			}
-		}
 
-		r.close();
+		}
 		return newValue;
 	}
 
@@ -233,7 +233,7 @@
 	 */
 	protected void updateResourceBundle() {
 		setResourceBundle(ResourceBundleHelper.getEquinoxResourceBundle(basename, locale,
-			new ProjectResourceBundleControl(true), new ProjectResourceBundleControl(false)));
+				new ProjectResourceBundleControl(true), new ProjectResourceBundleControl(false)));
 	}
 
 	/**
@@ -262,7 +262,7 @@
 
 		@Override
 		public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader,
-			boolean reload) throws IllegalAccessException, InstantiationException, IOException {
+				boolean reload) throws IllegalAccessException, InstantiationException, IOException {
 
 			final String bundleName = toBundleName(baseName, locale);
 			ResourceBundle bundle = null;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java
index feeeecb..2ce2f38 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 TwelveTone LLC and others.
+ * Copyright (c) 2014, 2017 TwelveTone LLC and others.
  * 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
@@ -139,7 +139,7 @@
 							break;
 						}
 						monitor.subTask(Messages.TargetPlatformContributionCollector_Searching
-							+ " " + e.installLocation); //$NON-NLS-1$
+								+ " " + e.installLocation); //$NON-NLS-1$
 					}
 
 					if (E.notEmpty(filter.getBundles())) {
@@ -298,7 +298,7 @@
 					final IPluginModelBase[] models = TargetPlatformHelper.getPDEState().getTargetModels();
 					final int total = projects.length + models.length;
 					monitor.beginTask(Messages.TargetPlatformContributionCollector_updatingTargetPlatformCache
-						+ cacheName + ")", total); //$NON-NLS-1$
+							+ cacheName + ")", total); //$NON-NLS-1$
 
 					for (final IProject pj : projects) {
 						if (monitor.isCanceled()) {
@@ -309,7 +309,7 @@
 						monitor.worked(1);
 						TargetPlatformContributionCollector.this
 						.visit(monitor, FilteredContributionDialog.getBundle(rootDirectory), rootDirectory,
-							new File(rootDirectory));
+								new File(rootDirectory));
 					}
 
 					// load target platform bundles
@@ -428,7 +428,7 @@
 						@Override
 						protected void createButtonsForButtonBar(Composite parent) {
 							final Button button = createButton(parent, 101,
-								Messages.TargetPlatformContributionCollector_RunInBackground, false);
+									Messages.TargetPlatformContributionCollector_RunInBackground, false);
 							// TODO JA
 							button.addSelectionListener(new SelectionAdapter() {
 								@Override
@@ -457,8 +457,8 @@
 							InterruptedException {
 								monitor
 								.beginTask(
-									Messages.TargetPlatformContributionCollector_WaitingForTargetPlatformIndexingToComplete,
-									IProgressMonitor.UNKNOWN);
+										Messages.TargetPlatformContributionCollector_WaitingForTargetPlatformIndexingToComplete,
+										IProgressMonitor.UNKNOWN);
 								while (job.getState() == Job.RUNNING && !runInBackground) {
 									Thread.sleep(100);
 								}
@@ -487,10 +487,8 @@
 		final File f = new File(file, "META-INF/MANIFEST.MF"); //$NON-NLS-1$
 
 		if (f.exists() && f.isFile()) {
-			BufferedReader r = null;
-			try {
-				final InputStream s = new FileInputStream(f);
-				r = new BufferedReader(new InputStreamReader(s));
+			try (final InputStream s = new FileInputStream(f);
+					BufferedReader r = new BufferedReader(new InputStreamReader(s))) {
 				String line;
 				while ((line = r.readLine()) != null) {
 					if (line.startsWith("Bundle-SymbolicName:")) { //$NON-NLS-1$
@@ -504,13 +502,6 @@
 				}
 			} catch (final IOException e) {
 				e.printStackTrace();
-			} finally {
-				if (r != null) {
-					try {
-						r.close();
-					} catch (final IOException e) {
-					}
-				}
 			}
 		}
 		return null;
@@ -554,7 +545,7 @@
 						e.path = ""; //$NON-NLS-1$
 					}
 					e.relativePath = Path
-						.fromOSString(file.getAbsolutePath().replace(e.installLocation, "")).makeRelative().toOSString(); //$NON-NLS-1$
+							.fromOSString(file.getAbsolutePath().replace(e.installLocation, "")).makeRelative().toOSString(); //$NON-NLS-1$
 
 					e.bundleSymName = bundleName;
 					// TODO we need project to strip source paths.
@@ -599,10 +590,10 @@
 			outputDirectories.put(installLocation, ret);
 			try {
 				final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
-					.parse(new File(installLocation + File.separator + ".classpath")); //$NON-NLS-1$
+						.parse(new File(installLocation + File.separator + ".classpath")); //$NON-NLS-1$
 				final XPath xp = XPathFactory.newInstance().newXPath();
 				final NodeList list = (NodeList) xp.evaluate(
-					"//classpathentry[@kind='output']/@path", doc, XPathConstants.NODESET); //$NON-NLS-1$
+						"//classpathentry[@kind='output']/@path", doc, XPathConstants.NODESET); //$NON-NLS-1$
 				for (int i = 0; i < list.getLength(); i++) {
 					final String value = list.item(i).getNodeValue();
 					ret.add(value);
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/UIViewer.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/UIViewer.java
index 902d64b..f15b5c9 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/UIViewer.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/UIViewer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 BestSolution.at and others.
+ * Copyright (c) 2011, 2017 BestSolution.at and others.
  * 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
@@ -11,9 +11,8 @@
 package org.eclipse.e4.tools.emf.ui.internal.common.uistructure;
 
 import java.util.Collections;
+
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionPoint;
@@ -29,8 +28,6 @@
 import org.eclipse.emf.databinding.IEMFValueProperty;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeViewer;
@@ -44,61 +41,54 @@
 		viewer.setLabelProvider(new WidgetLabelProvider(resourcePool));
 		IEMFValueProperty property = EMFProperties.value(feature);
 		IObservableValue value = property.observeDetail(master);
-		value.addValueChangeListener(new IValueChangeListener() {
-
-			@Override
-			public void handleValueChange(ValueChangeEvent event) {
-				if (event.diff.getNewValue() != null) {
-					viewer.setInput(Collections.singleton(event.diff.getNewValue()));
-					viewer.expandToLevel(2);
-				} else {
-					viewer.setInput(Collections.emptyList());
-				}
+		value.addValueChangeListener(event -> {
+			if (event.diff.getNewValue() != null) {
+				viewer.setInput(Collections.singleton(event.diff.getNewValue()));
+				viewer.expandToLevel(2);
+			} else {
+				viewer.setInput(Collections.emptyList());
 			}
 		});
 
 		final MenuManager mgr = new MenuManager();
 		mgr.setRemoveAllWhenShown(true);
-		mgr.addMenuListener(new IMenuListener() {
+		mgr.addMenuListener(manager -> {
+			final Object o = ((IStructuredSelection) viewer.getSelection()).getFirstElement();
+			if (o instanceof Control) {
+				manager.add(new Action(messages.ModelEditor_ShowControl) {
+					@Override
+					public void run() {
+						ControlHighlighter.show((Control) o);
+					}
+				});
+			}
 
-			@Override
-			public void menuAboutToShow(IMenuManager manager) {
-				final Object o = ((IStructuredSelection) viewer.getSelection()).getFirstElement();
-				if (o instanceof Control) {
-					manager.add(new Action(messages.ModelEditor_ShowControl) {
+			IExtensionRegistry registry = RegistryFactory.getRegistry();
+			IExtensionPoint extPoint = registry.getExtensionPoint("org.eclipse.e4.tools.emf.ui.scripting"); //$NON-NLS-1$
+			final IConfigurationElement[] elements = extPoint.getConfigurationElements();
+
+			final IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
+
+			if (elements.length > 0 && !s.isEmpty()) {
+				MenuManager scriptExecute = new MenuManager(messages.ModelEditor_Script);
+				manager.add(scriptExecute);
+				for (IConfigurationElement e : elements) {
+					final IConfigurationElement le = e;
+					scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$
 						@Override
 						public void run() {
-							ControlHighlighter.show((Control) o);
+							try {
+								MApplicationElement o = (MApplicationElement) master.getValue();
+								IScriptingSupport support = (IScriptingSupport) le.createExecutableExtension("class"); //$NON-NLS-1$
+								support.openEditor(viewer.getControl().getShell(), s.getFirstElement(),
+										ModelUtils.getContainingContext(o));
+							} catch (CoreException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
+							}
 						}
 					});
 				}
-
-				IExtensionRegistry registry = RegistryFactory.getRegistry();
-				IExtensionPoint extPoint = registry.getExtensionPoint("org.eclipse.e4.tools.emf.ui.scripting"); //$NON-NLS-1$
-				final IConfigurationElement[] elements = extPoint.getConfigurationElements();
-
-				final IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
-
-				if (elements.length > 0 && !s.isEmpty()) {
-					MenuManager scriptExecute = new MenuManager(messages.ModelEditor_Script);
-					manager.add(scriptExecute);
-					for (IConfigurationElement e : elements) {
-						final IConfigurationElement le = e;
-						scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$
-							@Override
-							public void run() {
-								try {
-									MApplicationElement o = (MApplicationElement) master.getValue();
-									IScriptingSupport support = (IScriptingSupport) le.createExecutableExtension("class"); //$NON-NLS-1$
-									support.openEditor(viewer.getControl().getShell(), s.getFirstElement(), ModelUtils.getContainingContext(o));
-								} catch (CoreException e) {
-									// TODO Auto-generated catch block
-									e.printStackTrace();
-								}
-							}
-						});
-					}
-				}
 			}
 		});