Package org.guvnor.structure.client.navigator

Source Code of org.guvnor.structure.client.navigator.CommitNavigator

package org.guvnor.structure.client.navigator;

import java.util.List;

import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
import org.kie.uberfire.client.common.YesNoCancelPopup;
import org.guvnor.structure.client.resources.NavigatorResources;
import org.kie.uberfire.client.resources.i18n.CommonConstants;
import org.kie.uberfire.client.resources.i18n.CoreConstants;
import org.uberfire.java.nio.base.version.VersionRecord;
import org.uberfire.mvp.Command;
import org.uberfire.mvp.ParameterizedCommand;

public class CommitNavigator extends Composite {

    private FlowPanel container = new FlowPanel();
    private FlexTable navigator = null;
    private int lastIndex;
    private ParameterizedCommand<VersionRecord> onRevertCommand = null;

    public CommitNavigator() {
        initWidget( container );
    }

    public void setOnRevertCommand( final ParameterizedCommand<VersionRecord> command ) {
        this.onRevertCommand = command;
    }

    public void loadContent( final List<VersionRecord> versionRecords ) {
        lastIndex = 0;
        container.clear();
        if ( navigator != null ) {
            navigator.clear();
        }
        navigator = new FlexTable();
        navigator.setStyleName( NavigatorResources.INSTANCE.css().navigator() );

        setupContent( versionRecords );
    }

    public void addContent( final List<VersionRecord> content ) {
        int base = navigator.getRowCount();
        for ( int i = 0; i < content.size(); i++ ) {
            final VersionRecord dataContent = content.get( i );
            createElement( base + i, dataContent );
        }
    }

    private void setupContent( final List<VersionRecord> content ) {
        addContent( content );

        container.add( navigator );
    }

    private void createElement( final int row,
                                final VersionRecord dataContent ) {
        int col = 0;

        final Element messageCol = DOM.createDiv();
        messageCol.addClassName( NavigatorResources.INSTANCE.css().navigatorMessage() );
        {
            { //comment
                final Element message = DOM.createSpan();
                message.addClassName( NavigatorResources.INSTANCE.css().message() );
                message.setInnerText( dataContent.comment() );
                messageCol.appendChild( message );
            }

            final Element metadata = DOM.createDiv();

            {//author
                final Element author = DOM.createSpan();
                author.addClassName( NavigatorResources.INSTANCE.css().author() );
                author.setInnerText( dataContent.author() + " - " );
                metadata.appendChild( author );
            }

            {//date
                final Element date = DOM.createSpan();
                date.addClassName( NavigatorResources.INSTANCE.css().date() );
                DateTimeFormat fmt = DateTimeFormat.getFormat( "yyyy-MM-dd h:mm a" );
                date.setInnerText( fmt.format( dataContent.date() ) );
                metadata.appendChild( date );
            }

            messageCol.appendChild( metadata );
        }

        navigator.setWidget( row, col, new Widget() {{
            setElement( messageCol );
        }} );

        if ( onRevertCommand != null ) {
            navigator.setWidget( row, ++col, new Button( CoreConstants.INSTANCE.Revert() ) {{
                setType( ButtonType.DANGER );
                addClickHandler( new ClickHandler() {
                    @Override
                    public void onClick( final ClickEvent event ) {
                        final YesNoCancelPopup yesNoCancelPopup = YesNoCancelPopup.newYesNoCancelPopup( CommonConstants.INSTANCE.Warning(),
                                                                                                        CoreConstants.INSTANCE.ConfirmStateRevert(),
                                                                                                        new Command() {
                                                                                                            @Override
                                                                                                            public void execute() {
                                                                                                                onRevertCommand.execute( dataContent );
                                                                                                            }
                                                                                                        },
                                                                                                        new Command() {
                                                                                                            @Override
                                                                                                            public void execute() {
                                                                                                            }
                                                                                                        },
                                                                                                        null
                                                                                                      );
                        yesNoCancelPopup.setCloseVisible( false );
                        yesNoCancelPopup.show();
                    }
                } );
            }} );
        }

        lastIndex++;
    }

    public int getLastIndex() {
        return lastIndex;
    }

}
TOP

Related Classes of org.guvnor.structure.client.navigator.CommitNavigator

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.