style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Widget útil en RCP ( Group, Table with checkBox style and "Select All" - "Deselect All" buttons)

Buen día amigos:

Quiero compartir un diseño de un widget que, crea una lista de elementos con el estilo de check box y los botones de "Select All" "Deselect All", es algo como "empacar" el diseño en una clase y usarlo como uno quiera.

Espero que sea útil para la comunidad, saludos.

Su uso es (en nuestra ventana lo podremos agregar así):

                // GroupTable (tableGroup) - To display items
                GroupTableCheck tableGroup = new GroupTableCheck(container);
                Drawer.drawGroupTable(tableGroup);

Y para llenar la tabla, de la siguiente forma:

                // Filling table
                for (String itemName : items.keySet()) {
                        TableItem item = new TableItem(tableGroup.getTable(), SWT.NONE);
                        item.setText(itemName);
                }
                tableGroup.getTable().redraw();

Y todos los elementos se pueden configurar como uno quiera, repito: Es como un código que se empaqueta en una clase, que puede ser útil a nosotros como desarrolladores.

Las clases son:

Drawer

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;

public class Drawer {
        /**
         * First create {@link GroupTableCheck} like: <br/>
         * <cod e>GroupTableCheck("Where to print it", "checkStyle", "verticalSpan", "horizontalSpan");</cod e><br/>
         * and draws this widget
         * @param groupTable
         */

        public static void drawGroupTable(
                        final GroupTableCheck groupTable) {

                // Group
                groupTable.setGroup( new Group(groupTable.getContainer(), SWT.CENTER));
                groupTable.getGroup().setLayout(new GridLayout(2, false));
                GridData gridDataGroup = new GridData(GridData.FILL_BOTH);
                if (groupTable.getVerticalSpan() >0 )
                        gridDataGroup.verticalSpan = groupTable.getVerticalSpan();
                if (groupTable.getHorizontalSpan() >0 )
                        gridDataGroup.horizontalSpan = groupTable.getHorizontalSpan();

                groupTable.getGroup().setLayoutData(gridDataGroup);

                // Table
                groupTable.setTable(new Table(groupTable.getGroup(),
                                SWT.CHECK | SWT.BORDER | SWT.V_SCROLL));
                GridData gdTable = new GridData(GridData.FILL_BOTH);
                gdTable.horizontalSpan = 2;
                groupTable.getTable().setLayoutData(gdTable);

                // Button Select "Select All"
                groupTable.setBtnSelect (new Button(groupTable.getGroup(), SWT.NONE));
                groupTable.getBtnSelect().setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, false, false, 1, 1));
                groupTable.getBtnSelect().setText("Select All");
                groupTable.getBtnSelect().addSelectionListener(new SelectionListener() {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                // All elements in it will be checked and adds it to List
                                for (TableItem element : groupTable.getTable().getItems()) {
                                        element.setChecked(true);
                                }      
                        }

                        @Override
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
                });

                // Button "Deselect All"
                groupTable.setBtnDeselect(new Button(groupTable.getGroup(), SWT.NONE));
                groupTable.getBtnDeselect().setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));        
                groupTable.getBtnDeselect().setText("Deselect All");
                groupTable.getBtnDeselect().addSelectionListener(new SelectionListener() {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                // Deselect all items and removes it from List
                                for (TableItem element : groupTable.getTable().getItems()) {
                                        element.setChecked(false);
                                }
                        }

                        @Override
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
                });            
        }
}

y

GroupTableCheck

import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Table;

public class GroupTableCheck {
        private Composite container;
        private Group group;
        private Table table;
        private Button btnSelect, btnDeselect;
        private int verticalSpan;
        private int horizontalSpan;
       
        /**
         * Defines the container to print this table
         * @param container
         */

        public GroupTableCheck(Composite container) {
                super();
                this.container = container;
        }
        /**
         * Create Group with Table and optionally "checkStyle" and vertical or horizontal span <br/>
         * Developer only needs to define: Texts and Listeners of elements.<br/>
         * <cod e>GroupTableCheck("Where to print it", "verticalSpan", "horizontalSpan");</cod e>
         * @param container - Where to print table
         * @param verticalSpan
         * @param horizontalSpan
         */

        public GroupTableCheck(Composite container, int verticalSpan, int horizontalSpan) {
                super();
                this.container = container;
                this.verticalSpan = verticalSpan;
                this.horizontalSpan = horizontalSpan;
        }      
        public int getHorizontalSpan() {
                return horizontalSpan;
        }
        public void setHorizontalSpan(int horizontalSpan) {
                this.horizontalSpan = horizontalSpan;
        }
        public int getVerticalSpan() {
                return verticalSpan;
        }
        public void setVerticalSpan(int verticalSpan) {
                this.verticalSpan = verticalSpan;
        }
        public Composite getContainer() {
                return container;
        }
        public void setContainer(Composite container) {
                this.container = container;
        }
        public Group getGroup() {
                return group;
        }
        public void setGroup(Group group) {
                this.group = group;
        }
        public Table getTable() {
                return table;
        }
        public void setTable(Table table) {
                this.table = table;
        }
        public Button getBtnSelect() {
                return btnSelect;
        }
        public void setBtnSelect(Button btnSelect) {
                this.btnSelect = btnSelect;
        }
        public Button getBtnDeselect() {
                return btnDeselect;
        }
        public void setBtnDeselect(Button btnDeselect) {
                this.btnDeselect = btnDeselect;
        }

}

AdjuntoTamaño
Example.png33.34 KB

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">