/*
* Copyright 2014 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.guvnor.asset.management.client.editors.repository.wizard.pages;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import org.gwtbootstrap3.client.ui.CheckBox;
import org.gwtbootstrap3.client.ui.FormGroup;
import org.gwtbootstrap3.client.ui.HelpBlock;
import org.gwtbootstrap3.client.ui.TextBox;
import org.gwtbootstrap3.extras.select.client.ui.Option;
import org.gwtbootstrap3.extras.select.client.ui.Select;
import org.uberfire.commons.data.Pair;
import org.uberfire.ext.widgets.core.client.resources.i18n.CoreConstants;
public class RepositoryInfoPageViewImpl extends Composite
implements RepositoryInfoPageView {
private Presenter presenter;
interface RepositoryInfoPageBinder extends UiBinder<Widget, RepositoryInfoPageViewImpl> {
}
@UiField
FormGroup organizationalUnitGroup;
@UiField
HelpBlock organizationalUnitHelpBlock;
@UiField
Select organizationalUnitDropdown;
@UiField
FormGroup nameGroup;
@UiField
TextBox nameTextBox;
@UiField
HelpBlock nameHelpBlock;
@UiField
FormGroup managedReposiotryGroup;
@UiField
CheckBox isManagedRepository;
@UiField
HelpBlock isManagedRepositoryHelpBlock;
private boolean managedRepository = false;
private static RepositoryInfoPageBinder uiBinder = GWT.create( RepositoryInfoPageBinder.class );
public RepositoryInfoPageViewImpl() {
initWidget( uiBinder.createAndBindUi( this ) );
initialiseFields();
}
@Override
public void init( Presenter presenter ) {
this.presenter = presenter;
}
@Override
public String getName() {
return nameTextBox.getText();
}
@Override
public String getOrganizationalUnitName() {
return organizationalUnitDropdown.getValue();
}
@Override
public void setName( String name ) {
this.nameTextBox.setText( name );
}
public void setNameErrorMessage( String message ) {
nameHelpBlock.setText( message );
}
public void clearNameErrorMessage( ) {
nameHelpBlock.setText( null );
}
@Override
public void setValidOU( boolean ouValid ) {
//not apply for this case
}
@Override
public void setVisibleOU( boolean visible ) {
organizationalUnitDropdown.setVisible( visible );
}
@Override
public void initOrganizationalUnits( List<Pair<String, String>> organizationalUnits ) {
organizationalUnitDropdown.clear();
final Option select = new Option();
select.setText( CoreConstants.INSTANCE.SelectEntry() );
select.setValue( NOT_SELECTED );
organizationalUnitDropdown.add( select );
if ( organizationalUnits != null ) {
for ( Pair<String, String> organizationalUnitInfo : organizationalUnits ) {
final Option option = new Option();
option.setValue( organizationalUnitInfo.getK1() );
option.setText( organizationalUnitInfo.getK2() );
organizationalUnitDropdown.add( option );
}
}
organizationalUnitDropdown.refresh();
}
@Override
public boolean isManagedRepository() {
return managedRepository;
}
@Override
public void enabledManagedRepositoryCreation( boolean enabled ) {
managedReposiotryGroup.setVisible( enabled );
}
@Override
public void alert( String message ) {
Window.alert( message );
}
private void initialiseFields() {
nameTextBox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
presenter.onNameChange();
}
} );
organizationalUnitDropdown.addValueChangeHandler( e -> presenter.onOUChange() );
isManagedRepository.addValueChangeHandler( new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange( ValueChangeEvent<Boolean> event ) {
managedRepository = event.getValue();
presenter.onManagedRepositoryChange();
}
} );
}
}