blob: d443f8a831450c279bdc064ca4ab6a4e4da8c684 [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
package org.eclipse.osbp.runtime.web.vaadin.common.sharedState;
import java.util.Map;
import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Component;
// TODO: Auto-generated Javadoc
/**
* Vaadin util to find a shared state if available.
*/
public class SharedStateUtil {
/**
* Tries to find the {@link ISharedStateContext} registered with the Vaadin
* component. It also iterates the parents recursively to find it.
*
* @param component
* the component
* @return the shared state
*/
public static ISharedStateContext getSharedState(Component component) {
if (component == null) {
return null;
}
if (component instanceof AbstractComponent) {
AbstractComponent comp = (AbstractComponent) component;
if (comp.getData() != null && (comp.getData() instanceof Map)) {
@SuppressWarnings("unchecked")
Map<Object, Object> map = (Map<Object, Object>) comp.getData();
ISharedStateContext sharedState = (ISharedStateContext) map
.get(ISharedStateContext.class);
if (sharedState != null) {
return sharedState;
}
}
}
return getSharedState(component.getParent());
}
}