| /** |
| * |
| * Copyright (c) 2011, 2016 - 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 v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| */ |
| package org.eclipse.osbp.vaaclipse.addons.softwarefactory.handler; |
| |
| import java.util.Locale; |
| |
| import javax.annotation.PostConstruct; |
| import javax.inject.Inject; |
| |
| import org.eclipse.e4.core.services.events.IEventBroker; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.osbp.eventbroker.EventBrokerMsg; |
| import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService; |
| import org.eclipse.osbp.ui.api.user.IUser; |
| import org.eclipse.osbp.vaaclipse.api.ResourceInfoProvider; |
| import org.eclipse.osbp.xtext.dialogdsl.common.StrategyProvider; |
| import org.eclipse.osbp.xtext.strategy.FocusingEnhancer; |
| import org.eclipse.osbp.xtext.strategy.LayoutingStrategy; |
| import org.eclipse.osbp.xtext.strategy.StrategyDSLPackage; |
| import org.eclipse.osbp.xtext.strategy.StrategyDefault; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| import com.vaadin.data.Property.ValueChangeEvent; |
| import com.vaadin.data.Property.ValueChangeListener; |
| import com.vaadin.ui.ComboBox; |
| import com.vaadin.ui.ComponentContainer; |
| import com.vaadin.ui.FormLayout; |
| |
| @SuppressWarnings("all") |
| public class StrategyHandler implements IUser.UserLocaleListener { |
| private final static Logger log = LoggerFactory.getLogger("change strategy"); |
| |
| @Inject |
| private IEventBroker eventBroker; |
| |
| @Inject |
| private ResourceInfoProvider resourceInfoProvider; |
| |
| private ComboBox strategyCombo; |
| |
| @Inject |
| private IUser user; |
| |
| /** The metadata service. */ |
| @Inject |
| private IDSLMetadataService dslMetadataService; |
| |
| private StrategyProvider stdProvider; |
| |
| @PostConstruct |
| public void init(final ComponentContainer container) { |
| FormLayout form = new FormLayout(); |
| form.addStyleName("ToolControlCombo"); |
| form.setMargin(false); |
| form.setSpacing(false); |
| strategyCombo = new ComboBox(); |
| strategyCombo.setNullSelectionAllowed(false); |
| strategyCombo.setWidth("200px"); |
| strategyCombo.setTextInputAllowed(false); |
| |
| for (EObject obj : dslMetadataService.getAll(StrategyDSLPackage.Literals.STRATEGY_DEFAULT)) { |
| StrategyDefault stdStrategy = ((StrategyDefault) obj); |
| stdProvider = new StrategyProvider(stdStrategy.getDefaultLayouting().getName()+"LayoutingStrategy", |
| stdStrategy.getDefaultFocusing().getName()+"FocusingEnhancer"); |
| strategyCombo.addItem(stdProvider); |
| strategyCombo.setItemCaption(stdProvider, "Standard"); |
| } |
| for (EObject strategyObj : dslMetadataService.getAll(StrategyDSLPackage.Literals.LAYOUTING_STRATEGY)) { |
| LayoutingStrategy strategy = (LayoutingStrategy) strategyObj; |
| for (EObject enhancerObj : dslMetadataService.getAll(StrategyDSLPackage.Literals.FOCUSING_ENHANCER)) { |
| FocusingEnhancer enhancer = (FocusingEnhancer) enhancerObj; |
| StrategyProvider verticalProvider = new StrategyProvider(strategy.getName()+"LayoutingStrategy", enhancer.getName()+"FocusingEnhancer"); |
| strategyCombo.addItem(verticalProvider); |
| strategyCombo.setItemCaption(verticalProvider, strategy.getName()); |
| } |
| } |
| form.addComponent(strategyCombo); |
| container.addComponent(form); |
| strategyCombo.select(stdProvider); |
| strategyCombo.addValueChangeListener(new ValueChangeListener() { |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| if (log.isDebugEnabled()) |
| log.debug("will set theme to:" |
| + event.getProperty().getValue()); |
| StrategyProvider provider = ((StrategyProvider) event |
| .getProperty().getValue()); |
| if ((provider != null) && (provider.getLayoutingId() != null)) { |
| eventBroker.send(EventBrokerMsg.DIALOG_STRATEGY_CHANGED, provider); |
| } |
| } |
| }); |
| user.addUserLocaleListener(this); |
| } |
| |
| @Override |
| public void localeChanged(Locale locale) { |
| strategyCombo.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "strategyTooltip")); |
| } |
| } |