/*
* Copyright 2015 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.datamodeller.client.widgets.packageselector;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import org.gwtbootstrap3.client.ui.Button;
import org.gwtbootstrap3.extras.select.client.ui.Select;
import org.kie.workbench.common.screens.datamodeller.client.util.UIUtil;
import org.uberfire.commons.data.Pair;
import org.uberfire.mvp.Command;
@Dependent
public class PackageSelectorViewImpl
extends Composite
implements PackageSelectorView {
interface PackageSelectorUIBinder
extends UiBinder<Widget, PackageSelectorViewImpl> {
}
private static PackageSelectorUIBinder uiBinder = GWT.create( PackageSelectorUIBinder.class );
@UiField
Select packageSelector;
@UiField
Button newPackage;
NewPackagePopup newPackagePopup;
private Presenter presenter;
@Inject
public PackageSelectorViewImpl( NewPackagePopup newPackagePopup ) {
initWidget( uiBinder.createAndBindUi( this ) );
this.newPackagePopup = newPackagePopup;
}
@PostConstruct
private void init() {
packageSelector.addValueChangeHandler( e -> presenter.onPackageChange() );
newPackage.addClickHandler( new ClickHandler() {
@Override
public void onClick( ClickEvent event ) {
presenter.onNewPackage();
}
} );
clear();
}
@Override
public void init( Presenter presenter ) {
this.presenter = presenter;
}
@Override
public void clear() {
UIUtil.initList( packageSelector, true );
}
@Override
public void initPackageList( final List<Pair<String, String>> packageList, final String selectedPackage, boolean enableEmptyPackageOption ) {
UIUtil.initList( packageSelector, packageList, selectedPackage, enableEmptyPackageOption );
}
@Override
public void addToPackageList( String packageName, boolean selected ) {
packageSelector.add( UIUtil.newOption( packageName, packageName ) );
if ( selected ) {
UIUtil.setSelectedValue( packageSelector, packageName );
}
UIUtil.refreshSelect( packageSelector );
}
@Override
public void showNewPackagePopup( final Command afterAddCommand ) {
newPackagePopup.show( afterAddCommand );
}
@Override
public String getNewPackage() {
return newPackagePopup.getPackageName();
}
@Override
public void enableCreatePackage( boolean enable ) {
newPackage.setVisible( enable );
}
@Override
public void setEnabled( boolean enabled ) {
newPackage.setVisible( enabled );
packageSelector.setEnabled( enabled );
UIUtil.refreshSelect( packageSelector );
}
@Override
public String getPackage() {
return packageSelector.getValue();
}
@Override
public void setPackage( String currentPackage ) {
UIUtil.setSelectedValue( packageSelector, currentPackage );
}
}