catch up with branch development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index a4b1e40..e5f33a6 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -26,6 +26,7 @@
                 <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils.ui</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.webserver.messagequeue</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.osgi.hybrid.api/.project b/org.eclipse.osbp.osgi.hybrid.api/.project
index 76494ac..68dae7b 100644
--- a/org.eclipse.osbp.osgi.hybrid.api/.project
+++ b/org.eclipse.osbp.osgi.hybrid.api/.project
@@ -36,12 +36,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.osbp.osgi.hybrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.osgi.hybrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs
index 0933f8c..19e3115 100644
--- a/org.eclipse.osbp.osgi.hybrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs
+++ b/org.eclipse.osbp.osgi.hybrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -1,4 +1,5 @@
 //outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
 eclipse.preferences.version=1
 is_project_specific=true
 outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
diff --git a/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF
index 566119c..ed2aa0e 100644
--- a/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF
@@ -28,7 +28,8 @@
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
- com.vaadin.shared;bundle-version="[7.7.6,7.8.0)"
+ com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
+ org.eclipse.osbp.utils.ui;bundle-version="0.9.0"
 Export-Package: org.eclipse.osbp.osgi.hybrid.api;version="0.9.0"
 Import-Package: javax.annotation,
  javax.jms;version="1.1.0",
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java
index 66be602..ba473ea 100644
--- a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java
@@ -37,6 +37,7 @@
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
 import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization;
 import org.eclipse.osbp.ui.api.useraccess.AbstractPosition;
+import org.eclipse.osbp.utils.vaadin.beeper.Beeper;
 import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageAttribute;
 import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageEvent;
 import org.slf4j.Logger;
@@ -44,10 +45,12 @@
 
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.Audio;
 import com.vaadin.ui.FormLayout;
 import com.vaadin.ui.Label;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Video;
 
 public abstract class AbstractHybridVaaclipseView implements IHybridVaadinVaaclipseListener, IPartListener {
 	
@@ -68,12 +71,18 @@
 	private VerticalLayout fParent;
 	private boolean fViewInitialized;
 
-	private RenderMode renderMode = RenderMode.SYNCHRONOUSLY;
+	private RenderMode renderMode = RenderMode.ASYNCHRONOUSLY;
 	private boolean firstTime = true;
 	private int pollingInterval = 2000;
+	/** The beeper. */
+	private Beeper beeper = new Beeper();
+	private Audio audio = new Audio();
+	private Video video = new Video();
 
 	private RecursiveFocusBlurListener fRecursiveFocusBlurListener;
 
+	private EPartService partService;
+
 	public AbstractHybridVaaclipseView() {}
 	/**
 	 * <b><i><u>Warning:</u> never use initializing class attributes in the definition!<br>
@@ -90,11 +99,18 @@
 		fViewInitialized = false;
 		fParent = parent;
 		fRecursiveFocusBlurListener = RecursiveFocusBlurListener.attachFor(fParent);
+//		parent.addComponent(beeper);
+//		audio.setShowControls(false);
+//		parent.addComponent(audio);
+//		video.setShowControls(false);
 	}
 
 	@PostConstruct
 	public void initView() {
-		preInit();
+		partService = fEclipseContext.get(EPartService.class);
+		partService.addPartListener(this);
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).addListener(this);
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).setE4Application(fE4App);
 		VaadinObservables.getRealm(UI.getCurrent());
 		UI.getCurrent().setPollInterval(pollingInterval);
 		createView(fParent);
@@ -102,6 +118,13 @@
 		renderData(true);
 	}
 
+	@PreDestroy
+	public void preDestroy() {
+		fRecursiveFocusBlurListener.detach();
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).removeListener(this);
+		partService.removePartListener(this);
+	}
+
 	public void promptSecurityMessage(String message, AbstractOrderedLayout layout) {
 		layout.removeAllComponents();
 		FormLayout area = new FormLayout();
@@ -241,28 +264,6 @@
 		return null;
 	}
 
-	public EPartService getPartService() {
-		if (fEclipseContext.containsKey(EPartService.class)) {
-			return fEclipseContext.get(EPartService.class);
-		}
-		return null;
-	}
-
-	protected void preInit() {
-		EPartService partService = getPartService();
-		if(partService != null) {
-			partService.addPartListener(this);
-			HybridVaadinVaaclipseConnector.instance(fEclipseContext).addListener(this);
-			HybridVaadinVaaclipseConnector.instance(fEclipseContext).setE4Application(fE4App);
-		}
-	}
-
-	@PreDestroy
-	public void preDestroy() {
-		fRecursiveFocusBlurListener.detach();
-		HybridVaadinVaaclipseConnector.instance(fEclipseContext).removeListener(this);
-	}
-
 	/**
 	 * You <b>must call this at the end of the overridden init()</b>
 	 */
@@ -357,37 +358,36 @@
 
 	@Override
 	public void partActivated(MPart part) {
-		HybridVaadinVaaclipseConnector.instance(fEclipseContext).activatePartStateRefresher(part);
-		MPerspective active = HybridVaadinVaaclipseConnector.findCurrentPerspectiveFor(part == null ? getPartService().getActivePart() : part);
-		if (active instanceof MPerspective) {
-			HybridVaadinVaaclipseConnector.instance(fEclipseContext).updatePerspectiveList();
-			HybridVaadinVaaclipseConnector.instance(fEclipseContext).updateFocusPerspective(active.getElementId());
-		} else if (part != null || getPartService().getActivePart() != null) {
-			LOGGER.debug("part activated:" + (part == null ? "<null>" : part.getElementId() + " '" + part.getLabel() + "'"));
-			List<MPerspective> existing = HybridVaadinVaaclipseConnector.instance(fEclipseContext).findPerspectives();
-			for (MPerspective perspective : existing) {
-				LOGGER.debug("    perspective:" + perspective.getElementId() + " '" + perspective.getLabel() + "'");
+		if(part != null) {
+			HybridVaadinVaaclipseConnector.instance(fEclipseContext).activatePartStateRefresher(part);
+			MPerspective active = HybridVaadinVaaclipseConnector.findCurrentPerspectiveFor(part);
+			if (active instanceof MPerspective) {
+				HybridVaadinVaaclipseConnector.instance(fEclipseContext).updatePerspectiveList();
+				HybridVaadinVaaclipseConnector.instance(fEclipseContext).updateFocusPerspective(active.getElementId());
 			}
-			LOGGER.debug("  COULD NOT find the corresponding perspective :-(");
 		}
 	}
 
 	@Override
 	public void partBroughtToTop(MPart part) {
 		HybridVaadinVaaclipseConnector.instance(fEclipseContext).activatePartStateRefresher(part);
+		LOGGER.debug("part {} brought to top", part);
 	}
 
 	@Override
 	public void partDeactivated(MPart part) {
-	} // NOP
+		LOGGER.debug("part {} deactivated", part);
+	}
 
 	@Override
 	public void partHidden(MPart part) {
-	} // NOP
+		LOGGER.debug("part {} hidden", part);
+	}
 
 	@Override
 	public void partVisible(MPart part) {
-	} // NOP
+		LOGGER.debug("part {} visible", part);
+	}
 
 	/**
 	 * Try to authenticate with the credentials given!<br>
@@ -417,5 +417,16 @@
 	public void setPollingInterval(int pollingInterval) {
 		this.pollingInterval = pollingInterval;
 	}
-
+	
+	public Beeper getBeeper() {
+		return beeper;
+	}
+	public Audio getAudio() {
+		return audio;
+	}
+	public Video getVideo() {
+		return video;
+	}
+//	abstract void activate(MPart part);
+//	abstract void deactivate(MPart part);
 }