/*
* Copyright 2013 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.projecteditor.client.forms.dependencies;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import org.gwtbootstrap3.client.ui.Button;
import org.kie.workbench.common.screens.projecteditor.client.resources.ProjectEditorResources;
import org.kie.workbench.common.services.shared.dependencies.EnhancedDependencies;
import org.kie.workbench.common.services.shared.dependencies.EnhancedDependency;
import org.kie.workbench.common.services.shared.whitelist.WhiteList;
import org.kie.workbench.common.widgets.client.resources.i18n.CommonConstants;
import org.uberfire.ext.widgets.common.client.common.BusyPopup;
import org.uberfire.ext.widgets.common.client.tables.SimpleTable;
import org.uberfire.mvp.Command;
public class DependencyGridViewImpl
extends Composite
implements DependencyGridView {
@UiField( provided = true )
SimpleTable<EnhancedDependency> dataGrid = new SimpleTable<EnhancedDependency>();
interface Binder
extends
UiBinder<Widget, DependencyGridViewImpl> {
}
private static Binder uiBinder = GWT.create( Binder.class );
private DependencyGrid presenter;
private WhiteListColumn whiteListColumn = new WhiteListColumn();
@UiField
Button addDependencyButton;
@UiField
Button addFromRepositoryDependencyButton;
public DependencyGridViewImpl() {
dataGrid.setEmptyTableCaption( ProjectEditorResources.CONSTANTS.NoDependencies() );
addGroupIdColumn();
addArtifactIdColumn();
addVersionColumn();
addActionColumn();
addRemoveRowColumn();
initWidget( uiBinder.createAndBindUi( this ) );
}
private void addGroupIdColumn() {
dataGrid.addColumn( new GroupIdColumn( new RedrawCommand() ),
ProjectEditorResources.CONSTANTS.GroupID() );
}
private void addArtifactIdColumn() {
dataGrid.addColumn( new ArtifactIdColumn( new RedrawCommand() ),
ProjectEditorResources.CONSTANTS.ArtifactID() );
}
private void addVersionColumn() {
dataGrid.addColumn( new VersionColumn( new RedrawCommand() ),
ProjectEditorResources.CONSTANTS.Version() );
}
private void addRemoveRowColumn() {
RemoveColumn column = new RemoveColumn();
column.setFieldUpdater( new FieldUpdater<EnhancedDependency, String>() {
@Override
public void update( final int index,
final EnhancedDependency dependency,
final String value ) {
presenter.onRemoveDependency( dependency );
}
} );
dataGrid.addColumn( column,
CommonConstants.INSTANCE.Delete() );
}
private void addActionColumn() {
dataGrid.addColumn( whiteListColumn,
ProjectEditorResources.CONSTANTS.WhiteList() );
}
@Override
public void setPresenter( DependencyGrid presenter ) {
this.presenter = presenter;
}
@Override
public void setReadOnly() {
addDependencyButton.setEnabled( false );
addFromRepositoryDependencyButton.setEnabled( false );
}
@UiHandler("addDependencyButton")
void onAddDependency( ClickEvent event ) {
presenter.onAddDependency();
}
@UiHandler("addFromRepositoryDependencyButton")
void onAddDependencyFromRepository( ClickEvent event ) {
presenter.onAddDependencyFromRepository();
}
@Override
public void show( final EnhancedDependencies dependencies ) {
dataGrid.setRowData( dependencies.asList() );
dataGrid.redraw();
}
@Override
public void setWhiteList( final WhiteList whiteList ) {
whiteListColumn.init( presenter,
whiteList );
}
@Override
public void redraw() {
dataGrid.redraw();
}
@Override
public void showLoading() {
BusyPopup.showMessage( CommonConstants.INSTANCE.Loading() );
}
@Override
public void hideBusyIndicator() {
BusyPopup.close();
}
class RedrawCommand
implements Command {
@Override public void execute() {
dataGrid.redraw();
}
}
}