/*
* 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.
*
* 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.drools.workbench.screens.testscenario.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
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.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
import org.drools.workbench.models.testscenarios.shared.CollectionFieldData;
import org.drools.workbench.models.testscenarios.shared.FieldData;
public class ListEditorRow extends Composite {
interface ListEditorRowBinder
extends
UiBinder<Widget, ListEditorRow> {
}
private static ListEditorRowBinder uiBinder = GWT.create( ListEditorRowBinder.class );
@UiField(provided = true)
FieldDataConstraintEditor fieldDataConstraintEditor;
@UiField
Image deleteItem;
@UiField
Image newItemBelow;
@UiField
Image suffleDown;
@UiField
Image suffleUp;
private final int index;
private final CollectionFieldData parentField;
private final ScenarioParentWidget parent;
public ListEditorRow( final int index,
final CollectionFieldData parentField,
final FieldData fieldData,
final FieldConstraintHelper helper,
final ScenarioParentWidget parent ) {
this.index = index;
this.parentField = parentField;
this.parent = parent;
fieldDataConstraintEditor = helper.createFieldDataConstraintEditor( fieldData );
fieldDataConstraintEditor.addValueChangeHandler( new ValueChangeHandler<String>() {
@Override
public void onValueChange( ValueChangeEvent<String> stringValueChangeEvent ) {
fieldData.setValue( stringValueChangeEvent.getValue() );
}
} );
initWidget( uiBinder.createAndBindUi( this ) );
}
@UiHandler("deleteItem")
public void deleteItem( final ClickEvent event ) {
parentField.getCollectionFieldList().remove( index );
parent.renderEditor();
}
@UiHandler("newItemBelow")
public void newItemBelow( final ClickEvent event ) {
FieldData newFieldData = new FieldData();
newFieldData.setName( parentField.getName() );
parentField.getCollectionFieldList().add( index + 1,
newFieldData );
parent.renderEditor();
}
@UiHandler("suffleDown")
public void suffleDown( final ClickEvent event ) {
if ( index < parentField.getCollectionFieldList().size() - 1 ) {
FieldData onMyLine = parentField.getCollectionFieldList().get( index );
FieldData onDown = parentField.getCollectionFieldList().get( index + 1 );
parentField.getCollectionFieldList().set( index + 1,
onMyLine );
parentField.getCollectionFieldList().set( index,
onDown );
parent.renderEditor();
}
}
@UiHandler("suffleUp")
public void suffleUp( final ClickEvent event ) {
if ( index > 0 ) {
FieldData oneUp = parentField.getCollectionFieldList().get( index - 1 );
FieldData onMyLine = parentField.getCollectionFieldList().get( index );
parentField.getCollectionFieldList().set( index,
oneUp );
parentField.getCollectionFieldList().set( index - 1,
onMyLine );
parent.renderEditor();
}
}
}