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

org.jboss.as.console.client.shared.general.SocketTable Maven / Gradle / Ivy

Go to download

Bundles the core AS7 console as a GWT module. Includes minor customizations to support extensions.

There is a newer version: 0.7.0.Final
Show newest version
package org.jboss.as.console.client.shared.general;

import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.ProvidesKey;
import org.jboss.as.console.client.shared.expr.ExpressionColumn;
import org.jboss.as.console.client.shared.general.model.SocketBinding;
import org.jboss.ballroom.client.widgets.tables.DefaultCellTable;

import java.util.Comparator;
import java.util.List;

/**
 * @author Heiko Braun
 * @date 6/7/11
 */
public class SocketTable {

    private DefaultCellTable table;
    private ListDataProvider dataProvider;
    private int portOffset = 0;

    public SocketTable() {
    }

    public SocketTable(int portOffset) {
        this.portOffset = portOffset;
    }

    public DefaultCellTable asWidget() {

        table = new DefaultCellTable(8, new ProvidesKey() {
            @Override
            public Object getKey(SocketBinding item) {
                return item.getName()+String.valueOf(item.getGroup());
            }
        });
        dataProvider = new ListDataProvider();
        dataProvider.addDataDisplay(table);

        ColumnSortEvent.ListHandler sortHandler =
                new ColumnSortEvent.ListHandler(dataProvider.getList());

        Column nameColumn = new Column(new TextCell()) {
            {
                setFieldUpdater(new FieldUpdater() {

                    @Override
                    public void update(int index, SocketBinding object, String value) {
                        object.setName(value);
                    }
                });
            }

            @Override
            public String getValue(SocketBinding object) {
                return object.getName();
            }
        };

        nameColumn.setSortable(true);
        sortHandler.setComparator(nameColumn, new Comparator() {
            @Override
            public int compare(SocketBinding o1, SocketBinding o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });


        ExpressionColumn portColumn = new ExpressionColumn("port") {
            @Override
            public String getRealValue(SocketBinding record) {
                if(record.getPort()>0)
                    return String.valueOf(record.getPort()+portOffset);
                else
                    return "";
            }
        };

        TextColumn mcastColumn = new TextColumn() {
            @Override
            public String getValue(SocketBinding record) {
                if(record.getMultiCastPort()>0)
                    return String.valueOf(record.getMultiCastPort()+portOffset);
                else
                    return "";
            }
        };


        table.addColumn(nameColumn, "Name");
        table.addColumn(portColumn, "Port");
        table.addColumn(mcastColumn, "MCast Port");

        table.addColumnSortHandler(sortHandler);
        table.getColumnSortList().push(nameColumn);

        return table;
    }

    public CellTable getCellTable() {
        return table;
    }

    public void updateFrom(String groupName, List bindings) {

        List list = dataProvider.getList();
        list.clear(); // cannot call setList() as that breaks the sort handler
        list.addAll(bindings);
        dataProvider.flush();

        table.selectDefaultEntity();
    }

     public void updateFrom(String groupName, List bindings, int portOffset) {

         this.portOffset = portOffset;
         updateFrom(groupName, bindings);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy