/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.screens.server.management.client.widget.config.process;
import java.util.List;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Composite;
import org.gwtbootstrap3.client.ui.AnchorListItem;
import org.gwtbootstrap3.client.ui.Button;
import org.gwtbootstrap3.client.ui.DropDownMenu;
import org.gwtbootstrap3.client.ui.TextBox;
import org.jboss.errai.ui.client.local.spi.TranslationService;
import org.jboss.errai.ui.shared.api.annotations.DataField;
import org.jboss.errai.ui.shared.api.annotations.Templated;
import org.kie.workbench.common.screens.server.management.client.resources.i18n.Constants;
@Dependent
@Templated
public class ProcessConfigView extends Composite
implements ProcessConfigPresenter.View {
private ProcessConfigPresenter presenter;
private TranslationService translationService;
@DataField("container-config-runtime-strategy-label")
Element runtimeStrategyLabel = DOM.createLabel();
@Inject
@DataField("container-config-runtime-strategy-button")
Button runtimeStrategy;
@Inject
@DataField("container-config-runtime-strategy-dropdown-menu")
DropDownMenu runtimeStrategyDropdown;
@DataField("container-config-kbase-name-form")
Element kbaseForm = DOM.createDiv();
@DataField("container-config-kbase-name-label")
Element kbaseLabel = DOM.createLabel();
@Inject
@DataField("container-config-kbase-name-textbox")
TextBox kbase;
@DataField("container-config-ksession-name-form")
Element ksessionForm = DOM.createDiv();
@DataField("container-config-ksession-name-label")
Element ksessionLabel = DOM.createLabel();
@Inject
@DataField("container-config-ksession-name-textbox")
TextBox ksession;
@DataField("container-config-merge-mode-label")
Element mergeModeLabel = DOM.createLabel();
@Inject
@DataField("container-config-merge-mode-button")
Button mergeMode;
@Inject
@DataField("container-config-merge-mode-dropdown-menu")
DropDownMenu mergeModeDropdown;
@Inject
public ProcessConfigView( final TranslationService translationService ) {
super();
this.translationService = translationService;
}
@Override
public void init( final ProcessConfigPresenter presenter ) {
this.presenter = presenter;
final List<String> runtimeStrategies = presenter.getRuntimeStrategies();
runtimeStrategy.setText( runtimeStrategies.get( 0 ) );
for ( final String strategy : runtimeStrategies ) {
runtimeStrategyDropdown.add( new AnchorListItem( strategy ) {{
addClickHandler( new ClickHandler() {
@Override
public void onClick( final ClickEvent event ) {
runtimeStrategy.setText( strategy );
}
} );
}} );
}
final List<String> mergeModes = presenter.getMergeModes();
mergeMode.setText( mergeModes.get( 0 ) );
for ( final String merge : mergeModes ) {
mergeModeDropdown.add( new AnchorListItem() {{
setText( merge );
addClickHandler( new ClickHandler() {
@Override
public void onClick( final ClickEvent event ) {
mergeMode.setText( merge );
}
} );
}} );
}
}
@Override
public void setContent( final String runtimeStrategy,
final String kbase,
final String ksession,
final String mergeMode ) {
this.runtimeStrategy.setText( runtimeStrategy );
this.kbase.setText( kbase );
this.ksession.setText( ksession );
this.mergeMode.setText( mergeMode );
this.runtimeStrategy.setEnabled( true );
this.kbase.setEnabled( true );
this.ksession.setEnabled( true );
this.mergeMode.setEnabled( true );
}
@Override
public String getRuntimeStrategy() {
return runtimeStrategy.getText();
}
@Override
public void disable() {
runtimeStrategy.setEnabled( false );
kbase.setEnabled( false );
ksession.setEnabled( false );
mergeMode.setEnabled( false );
}
@Override
public void clear() {
kbase.setText( "" );
ksession.setText( "" );
runtimeStrategy.setText( presenter.getRuntimeStrategies().get( 0 ) );
mergeMode.setText( presenter.getMergeModes().get( 0 ) );
}
@Override
public String getKBase() {
return kbase.getText();
}
@Override
public String getKSession() {
return ksession.getText();
}
@Override
public String getMergeMode() {
return mergeMode.getText();
}
@Override
public TranslationService getTranslationService() {
return translationService;
}
@Override
public String getConfigPageTitle() {
return translationService.format( Constants.ProcessConfigView_ConfigPageTitle );
}
}