Package org.drools.workbench.screens.enums.client.editor

Source Code of org.drools.workbench.screens.enums.client.editor.EnumEditorViewImpl

/*
* Copyright 2012 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.workbench.screens.enums.client.editor;

import javax.annotation.PostConstruct;

import com.google.gwt.cell.client.EditTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
import org.drools.workbench.screens.enums.client.resources.i18n.EnumEditorConstants;
import org.drools.workbench.screens.enums.client.widget.DeleteButtonCellWidget;
import org.kie.workbench.common.widgets.client.resources.i18n.CommonConstants;
import org.kie.uberfire.client.common.BusyPopup;

public class EnumEditorViewImpl extends Composite implements EnumEditorView {

    private final ListDataProvider<EnumRow> dataProvider = new ListDataProvider<EnumRow>();

    private boolean isDirty = false;

    @PostConstruct
    public void init() {
        final CellTable<EnumRow> cellTable = new CellTable<EnumRow>( Integer.MAX_VALUE );
        cellTable.setWidth( "100%" );

        final VerticalPanel panel = new VerticalPanel();

        //Column definitions
        final DeleteButtonCellWidget deleteButton = new DeleteButtonCellWidget();
        final Column<EnumRow, String> deleteButtonColumn = new Column<EnumRow, String>( deleteButton ) {
            @Override
            public String getValue( final EnumRow enumRow ) {
                return "";
            }
        };
        final Column<EnumRow, String> factNameColumn = new Column<EnumRow, String>( new EditTextCell() ) {
            @Override
            public String getValue( final EnumRow enumRow ) {
                return enumRow.getFactName();
            }
        };
        final Column<EnumRow, String> fieldNameColumn = new Column<EnumRow, String>( new EditTextCell() ) {
            @Override
            public String getValue( final EnumRow enumRow ) {
                return enumRow.getFieldName();
            }
        };
        final Column<EnumRow, String> contextColumn = new Column<EnumRow, String>( new EditTextCell() ) {
            @Override
            public String getValue( final EnumRow enumRow ) {
                return enumRow.getContext();
            }
        };

        //Write updates back to the model
        deleteButtonColumn.setFieldUpdater( new FieldUpdater<EnumRow, String>() {
            @Override
            public void update( final int index,
                                final EnumRow object,
                                final String value ) {
                isDirty = true;
                dataProvider.getList().remove( index );
            }
        } );
        factNameColumn.setFieldUpdater( new FieldUpdater<EnumRow, String>() {
            @Override
            public void update( final int index,
                                final EnumRow object,
                                final String value ) {
                isDirty = true;
                object.setFactName( value );
            }
        } );
        fieldNameColumn.setFieldUpdater( new FieldUpdater<EnumRow, String>() {
            @Override
            public void update( final int index,
                                final EnumRow object,
                                final String value ) {
                isDirty = true;
                object.setFieldName( value );
            }
        } );
        contextColumn.setFieldUpdater( new FieldUpdater<EnumRow, String>() {
            @Override
            public void update( final int index,
                                final EnumRow object,
                                final String value ) {
                isDirty = true;
                object.setContext( value );
            }
        } );

        cellTable.addColumn( deleteButtonColumn );
        cellTable.addColumn( factNameColumn,
                             EnumEditorConstants.INSTANCE.FactColumnHeader() );
        cellTable.addColumn( fieldNameColumn,
                             EnumEditorConstants.INSTANCE.FieldColumnHeader() );
        cellTable.addColumn( contextColumn,
                             EnumEditorConstants.INSTANCE.ContextColumnHeader() );

        // Connect the table to the data provider.
        dataProvider.addDataDisplay( cellTable );

        final Button addButton = new Button( EnumEditorConstants.INSTANCE.AddEnum(),
                                             new ClickHandler() {
            public void onClick( ClickEvent clickEvent ) {
                isDirty = true;
                final EnumRow enumRow = new EnumRow();
                dataProvider.getList().add( enumRow );
            }
        } );

        panel.add( addButton );
        panel.add( cellTable );

        initWidget( panel );
    }

    @Override
    public void setContent( final String content ) {
        dataProvider.setList( EnumParser.parseEnums( content ) );
    }

    @Override
    public String getContent() {
        if ( dataProvider.getList().isEmpty() ) {
            return "";
        }
        final StringBuilder sb = new StringBuilder();
        for ( final EnumRow enumRow : dataProvider.getList() ) {
            if ( enumRow.isValid() ) {
                sb.append( enumRow.toString() ).append( "\n" );
            }
        }
        return sb.toString();
    }

    @Override
    public boolean isDirty() {
        return isDirty;
    }

    @Override
    public void setNotDirty() {
        this.isDirty = false;
    }

    @Override
    public boolean confirmClose() {
        return Window.confirm( CommonConstants.INSTANCE.DiscardUnsavedData() );
    }

    @Override
    public void alertReadOnly() {
        Window.alert( CommonConstants.INSTANCE.CantSaveReadOnly() );
    }

    @Override
    public void showBusyIndicator( final String message ) {
        BusyPopup.showMessage( message );
    }

    @Override
    public void hideBusyIndicator() {
        BusyPopup.close();
    }

}
TOP

Related Classes of org.drools.workbench.screens.enums.client.editor.EnumEditorViewImpl

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.