/* * 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.wizard.container; import java.util.ArrayList; import javax.enterprise.context.Dependent; import javax.inject.Inject; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Composite; import org.gwtbootstrap3.client.ui.CheckBox; import org.gwtbootstrap3.client.ui.TextBox; import org.gwtbootstrap3.client.ui.constants.ValidationState; 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; import org.kie.workbench.common.screens.server.management.client.util.ContentChangeHandler; import org.kie.workbench.common.screens.server.management.client.widget.Div; import org.kie.workbench.common.screens.server.management.client.widget.artifact.ArtifactListWidgetPresenter; import org.uberfire.ext.widgets.common.client.common.StyleHelper; import static org.uberfire.commons.validation.PortablePreconditions.*; @Dependent @Templated public class NewContainerFormView extends Composite implements NewContainerFormPresenter.View { private TranslationService translationService; @DataField("new-container-alias-form") Element containerAliasGroup = DOM.createDiv(); @Inject @DataField("new-container-alias") TextBox containerAlias; @DataField("new-container-alias-help") Element containerAliasHelp = DOM.createSpan(); @DataField("new-container-name-form") Element containerNameGroup = DOM.createDiv(); @Inject @DataField("new-container-name") TextBox containerName; @DataField("new-container-name-help") Element containerNameHelp = DOM.createSpan(); @DataField("new-group-id-form") Element groupIdGroup = DOM.createDiv(); @Inject @DataField("new-group-id") TextBox groupId; @DataField("new-artifact-id-form") Element artifactIdGroup = DOM.createDiv(); @Inject @DataField("new-artifact-id") TextBox artifactId; @DataField("new-version-form") Element versionGroup = DOM.createDiv(); @Inject @DataField("new-version") TextBox version; @Inject @DataField("new-start-container") CheckBox startContainer; @Inject @DataField("content-area") Div content; private final ArrayList<ContentChangeHandler> changeHandlers = new ArrayList<ContentChangeHandler>(); @Inject public NewContainerFormView( final TranslationService translationService ) { super(); this.translationService = translationService; } @Override public void init( final NewContainerFormPresenter presenter ) { containerName.addChangeHandler( new ChangeHandler() { @Override public void onChange( ChangeEvent event ) { if ( presenter.isContainerNameValid() ) { noErrorOnContainerName(); } else { errorOnContainerName(); } fireChangeHandlers(); } } ); groupId.addChangeHandler( new ChangeHandler() { @Override public void onChange( ChangeEvent event ) { if ( presenter.isGroupIdValid() ) { noErrorOnGroupId(); } else { errorOnGroupId(); } fireChangeHandlers(); } } ); artifactId.addChangeHandler( new ChangeHandler() { @Override public void onChange( ChangeEvent event ) { if ( presenter.isArtifactIdValid() ) { noErrorOnArtifactId(); } else { errorOnArtifactId(); } fireChangeHandlers(); } } ); version.addChangeHandler( new ChangeHandler() { @Override public void onChange( ChangeEvent event ) { if ( presenter.isVersionValid() ) { noErrorOnVersion(); } else { errorOnVersion(); } fireChangeHandlers(); } } ); startContainer.setText(getStartContainerCheckBoxText()); } private void fireChangeHandlers() { for ( final ContentChangeHandler changeHandler : changeHandlers ) { changeHandler.onContentChange(); } } @Override public String getTitle() { return getTitleText(); } @Override public void setArtifactListWidgetView( final ArtifactListWidgetPresenter.View view ) { content.add( view ); } @Override public void clear() { containerName.setText( "" ); containerAlias.setText( "" ); groupId.setText( "" ); artifactId.setText( "" ); version.setText( "" ); startContainer.setValue( false ); noErrors(); } @Override public void noErrors() { noErrorOnContainerName(); noErrorOnGroupId(); noErrorOnArtifactId(); noErrorOnVersion(); } @Override public void noErrorOnContainerName() { containerNameHelp.getStyle().setVisibility( Style.Visibility.HIDDEN ); StyleHelper.addUniqueEnumStyleName( containerNameGroup, ValidationState.class, ValidationState.NONE ); } @Override public void noErrorOnGroupId() { StyleHelper.addUniqueEnumStyleName( groupIdGroup, ValidationState.class, ValidationState.NONE ); } @Override public void noErrorOnArtifactId() { StyleHelper.addUniqueEnumStyleName( artifactIdGroup, ValidationState.class, ValidationState.NONE ); } @Override public void noErrorOnVersion() { StyleHelper.addUniqueEnumStyleName( versionGroup, ValidationState.class, ValidationState.NONE ); } @Override public void addContentChangeHandler( final ContentChangeHandler contentChangeHandler ) { changeHandlers.add( checkNotNull( "contentChangeHandler", contentChangeHandler ) ); } @Override public void setGroupId( final String value ) { groupId.setText( value ); } @Override public void setArtifactId( final String value ) { artifactId.setText( value ); } @Override public void setVersion( final String value ) { version.setText( value ); } @Override public void setContainerName( final String value ) { containerName.setText( value ); } @Override public boolean isStartContainer() { return startContainer.getValue(); } @Override public void setStartContainer(boolean startContainer) { this.startContainer.setValue( startContainer ); } @Override public String getContainerName() { return containerName.getText(); } @Override public String getContainerAlias() { return containerAlias.getText(); } @Override public String getGroupId() { return groupId.getText(); } @Override public String getArtifactId() { return artifactId.getText(); } @Override public String getVersion() { return version.getText(); } @Override public void errorOnContainerName() { StyleHelper.addUniqueEnumStyleName( containerNameGroup, ValidationState.class, ValidationState.ERROR ); } @Override public void errorOnContainerName( final String message ) { errorOnContainerName(); containerNameHelp.getStyle().setVisibility( Style.Visibility.VISIBLE ); containerNameHelp.setInnerText( message ); } @Override public void errorOnGroupId() { StyleHelper.addUniqueEnumStyleName( groupIdGroup, ValidationState.class, ValidationState.ERROR ); } @Override public void errorOnArtifactId() { StyleHelper.addUniqueEnumStyleName( artifactIdGroup, ValidationState.class, ValidationState.ERROR ); } @Override public void errorOnVersion() { StyleHelper.addUniqueEnumStyleName( versionGroup, ValidationState.class, ValidationState.ERROR ); } @Override public String getInvalidErrorMessage() { return translationService.format( Constants.NewContainerFormView_InvalidErrorMessage ); } @Override public String getNewContainerWizardTitle() { return translationService.format( Constants.NewContainerFormView_NewContainerWizardTitle ); } @Override public String getNewContainerWizardSaveSuccess() { return translationService.format( Constants.NewContainerFormView_NewContainerWizardSaveSuccess ); } @Override public String getNewContainerWizardSaveError() { return translationService.format( Constants.NewContainerFormView_NewContainerWizardSaveError ); } private String getTitleText() { return translationService.format( Constants.NewContainerFormView_TitleText ); } private String getStartContainerCheckBoxText() { return translationService.format( Constants.NewContainerFormView_StartContainerText ); } }