blob: e4df18668ee721be2ec6098023994287c67fe419 [file] [log] [blame]
/**
*
* 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 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:
* 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"));
}
}