All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kie.uberfire.client.common.PrettyFormLayout Maven / Gradle / Ivy

The newest version!
/*
 * 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.kie.uberfire.client.common;

import com.github.gwtbootstrap.client.ui.Form;
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.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

/**
 * Uses ext forms to do a prettier layout.
 */
public class PrettyFormLayout extends Composite {

    private VerticalPanel layout = new VerticalPanel();
    private FlexTable currentTable;
    private String sectionName;

    public PrettyFormLayout() {
        layout.setWidth( "100%" );
        initWidget( layout );
    }

    public void startSection() {
        this.currentTable = new FlexTable();
    }

    public void startSection( String title ) {
        startSection();
        this.sectionName = title;
    }

    public void clear() {
        this.layout.clear();
    }

    public void addHeader( Image img,
                           String name,
                           Image edit ) {
        HorizontalPanel h = new HorizontalPanel();
        h.add( img );
        h.add( new HTML( " " ) );
        h.add( new Label( name ) );
        if ( edit != null ) {
            h.add( edit );
        }

        Form f = newForm( null );

        f.add( h );
        layout.add( f );
    }

    public void addHeader( Image img,
                           Widget content ) {
        HorizontalPanel h = new HorizontalPanel();
        h.add( img );
        h.add( new HTML( " " ) );
        h.add( content );
        Form f = newForm( null );
        f.add( h );
        layout.add( f );
    }

    private Form newForm( final String hdr ) {
        Form fp = new Form();
        fp.setWidth( "100%" );
        fp.addStyleName( "guvnor-FormPanel" );
        if ( hdr != null ) {
            fp.setTitle( hdr );
        }
        return fp;
    }

    public void endSection() {
        Form f = newForm( this.sectionName );

        f.add( this.currentTable );

        this.layout.add( f );
        this.sectionName = null;
    }

    public void addRow( final Widget widget ) {
        //TODO ARIA: what to do with widget has no visible label?

        int row = currentTable.getRowCount();
        currentTable.setWidget( row,
                                0,
                                widget );
        currentTable.getFlexCellFormatter().setColSpan( row,
                                                        0,
                                                        2 );
    }

    public int addAttribute( String lbl,
                             final Widget categories ) {
        String id = DOM.createUniqueId();
        categories.getElement().setAttribute( "aria-labelledby", id );
        categories.getElement().setAttribute( "aria-required", String.valueOf( true ) );
        categories.getElement().setTabIndex( 0 );

        int row = currentTable.getRowCount();
        Label label = new Label( lbl );
        label.getElement().setAttribute( "id", id );

        currentTable.setWidget( row,
                                0,
                                label );
        currentTable.setWidget( row,
                                1,
                                categories );
        currentTable.getFlexCellFormatter().setHorizontalAlignment( row,
                                                                    0,
                                                                    HasHorizontalAlignment.ALIGN_RIGHT );
        currentTable.getFlexCellFormatter().setVerticalAlignment( row,
                                                                  0,
                                                                  HasVerticalAlignment.ALIGN_TOP );

        return row;
    }

    public void removeRow( int row ) {

        currentTable.removeRow( row );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy