Package org.drools.guvnor.client.widgets.drools.wizards.assets.decisiontable

Source Code of org.drools.guvnor.client.widgets.drools.wizards.assets.decisiontable.ColumnExpansionPageViewImpl

/*
* Copyright 2011 JBoss Inc
*
* 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.drools.guvnor.client.widgets.drools.wizards.assets.decisiontable;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.drools.guvnor.client.decisiontable.Validator;
import org.drools.guvnor.client.messages.Constants;
import org.drools.guvnor.client.resources.WizardCellListResources;
import org.drools.guvnor.client.widgets.drools.wizards.assets.decisiontable.cells.ConditionCell;
import org.drools.ide.common.client.modeldriven.dt52.ConditionCol52;

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.uibinder.client.UiHandler;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.SelectionChangeEvent;

/**
* An implementation of the Column Expansion page
*/
public class ColumnExpansionPageViewImpl extends Composite
    implements
    ColumnExpansionPageView {

    private Presenter                            presenter;

    private List<ConditionCol52>                 availableColumns;
    private Set<ConditionCol52>                  availableColumnsSelections;
    private MinimumWidthCellList<ConditionCol52> availableColumnsWidget;

    private List<ConditionCol52>                 chosenColumns           = new ArrayList<ConditionCol52>();
    private Set<ConditionCol52>                  chosenColumnsSelections;
    private MinimumWidthCellList<ConditionCol52> chosenColumnsWidget;

    private MultiSelectionModel<ConditionCol52>  availableSelectionModel = new MultiSelectionModel<ConditionCol52>();
    private MultiSelectionModel<ConditionCol52>  chosenSelectionModel    = new MultiSelectionModel<ConditionCol52>();

    private boolean                              isExandInFull           = true;

    @UiField
    CheckBox                                     chkExpandInFull;

    @UiField
    HorizontalPanel                              columnSelectorContainer;

    @UiField
    ScrollPanel                                  availableColumnsContainer;

    @UiField
    ScrollPanel                                  chosenColumnsContainer;

    @UiField
    PushButton                                   btnAdd;

    @UiField
    PushButton                                   btnRemove;

    @UiField
    HorizontalPanel                              msgIncompleteConditions;

    interface ColumnExpansionPageWidgetBinder
        extends
        UiBinder<Widget, ColumnExpansionPageViewImpl> {
    }

    private static ColumnExpansionPageWidgetBinder uiBinder = GWT.create( ColumnExpansionPageWidgetBinder.class );

    public ColumnExpansionPageViewImpl(Validator validator) {
        this.availableColumnsWidget = new MinimumWidthCellList<ConditionCol52>( new ConditionCell( validator ),
                                                                                  WizardCellListResources.INSTANCE );
        this.chosenColumnsWidget = new MinimumWidthCellList<ConditionCol52>( new ConditionCell( validator ),
                                                                               WizardCellListResources.INSTANCE );

        initWidget( uiBinder.createAndBindUi( this ) );
        initialiseAvailableColumns();
        initialiseChosenColumns();
        initialiseExpandInFull();
    }

    private void initialiseAvailableColumns() {
        availableColumnsContainer.add( availableColumnsWidget );
        availableColumnsWidget.setKeyboardSelectionPolicy( KeyboardSelectionPolicy.ENABLED );
        availableColumnsWidget.setMinimumWidth( 275 );

        Label lstEmpty = new Label( Constants.INSTANCE.DecisionTableWizardNoAvailableColumns() );
        lstEmpty.setStyleName( WizardCellListResources.INSTANCE.cellListStyle().cellListEmptyItem() );
        availableColumnsWidget.setEmptyListWidget( lstEmpty );

        availableColumnsWidget.setSelectionModel( availableSelectionModel );

        availableSelectionModel.addSelectionChangeHandler( new SelectionChangeEvent.Handler() {

            public void onSelectionChange(SelectionChangeEvent event) {
                availableColumnsSelections = availableSelectionModel.getSelectedSet();
                btnAdd.setEnabled( availableColumnsSelections.size() > 0 );
            }

        } );
    }

    private void initialiseChosenColumns() {
        chosenColumnsContainer.add( chosenColumnsWidget );
        chosenColumnsWidget.setKeyboardSelectionPolicy( KeyboardSelectionPolicy.ENABLED );
        chosenColumnsWidget.setMinimumWidth( 275 );

        Label lstEmpty = new Label( Constants.INSTANCE.DecisionTableWizardNoChosenColumns() );
        lstEmpty.setStyleName( WizardCellListResources.INSTANCE.cellListStyle().cellListEmptyItem() );
        chosenColumnsWidget.setEmptyListWidget( lstEmpty );

        chosenColumnsWidget.setSelectionModel( chosenSelectionModel );

        chosenSelectionModel.addSelectionChangeHandler( new SelectionChangeEvent.Handler() {

            public void onSelectionChange(SelectionChangeEvent event) {
                chosenColumnsSelections = chosenSelectionModel.getSelectedSet();
                btnRemove.setEnabled( chosenColumnsSelections.size() > 0 );
            }

        } );
    }

    private void initialiseExpandInFull() {
        chkExpandInFull.addClickHandler( new ClickHandler() {

            public void onClick(ClickEvent event) {
                isExandInFull = chkExpandInFull.getValue();
                columnSelectorContainer.setVisible( !isExandInFull );
                presenter.setColumnsToExpand( getColumnsToExpand() );
            }

        } );
    }

    private void setChosenColumns(List<ConditionCol52> columns) {
        chosenColumnsWidget.setRowCount( columns.size(),
                                         true );
        chosenColumnsWidget.setRowData( columns );
    }

    public void setAvailableColumns(List<ConditionCol52> columns) {
        availableColumns = columns;
        availableColumns.removeAll( chosenColumns );
        availableColumnsWidget.setRowCount( columns.size(),
                                            true );
        availableColumnsWidget.setRowData( columns );
    }

    public void setPresenter(Presenter presenter) {
        this.presenter = presenter;
    }

    public void setAreConditionsDefined(boolean areConditionsDefined) {
        msgIncompleteConditions.setVisible( !areConditionsDefined );
        availableColumnsWidget.redraw();
        chosenColumnsWidget.redraw();
    }

    private List<ConditionCol52> getColumnsToExpand() {
        List<ConditionCol52> columns = new ArrayList<ConditionCol52>();
        if ( isExandInFull ) {
            columns.addAll( availableColumns );
        }
        columns.addAll( chosenColumns );
        return columns;
    }

    @UiHandler(value = "btnAdd")
    public void btnAddClick(ClickEvent event) {
        for ( ConditionCol52 column : availableColumnsSelections ) {
            chosenColumns.add( column );
            availableColumns.remove( column );
        }
        availableSelectionModel.clear();
        availableColumnsSelections.clear();
        setChosenColumns( chosenColumns );
        setAvailableColumns( availableColumns );
        presenter.setColumnsToExpand( getColumnsToExpand() );
        btnAdd.setEnabled( false );
    }

    @UiHandler(value = "btnRemove")
    public void btnRemoveClick(ClickEvent event) {
        for ( ConditionCol52 column : chosenColumnsSelections ) {
            chosenColumns.remove( column );
            availableColumns.add( column );
        }
        chosenSelectionModel.clear();
        chosenColumnsSelections.clear();
        setChosenColumns( chosenColumns );
        setAvailableColumns( availableColumns );
        presenter.setColumnsToExpand( getColumnsToExpand() );
        btnRemove.setEnabled( false );
    }

}
TOP

Related Classes of org.drools.guvnor.client.widgets.drools.wizards.assets.decisiontable.ColumnExpansionPageViewImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.