use of cz.metacentrum.perun.webgui.widgets.cells.PerunAttributeValueCell in project perun by CESNET.
the class TestDataGridAttributesTabItem method draw.
public Widget draw() {
//contentWidget.setSize("100%", "100%");
DockLayoutPanel ft = new DockLayoutPanel(Style.Unit.PX);
contentWidget.setWidget(ft);
final DataGrid gridTable = new DataGrid();
gridTable.setSize("100%", "100%");
final ArrayList<Attribute> vosList = new ArrayList<Attribute>();
final GetAttributesV2 getVos = new GetAttributesV2(new JsonCallbackEvents() {
public void onFinished(JavaScriptObject jso) {
vosList.addAll(new TableSorter<Attribute>().sortByAttrNameTranslation(JsonUtils.<Attribute>jsoAsList(jso)));
gridTable.setRowData(vosList);
gridTable.redraw();
}
});
getVos.getUserAttributes(3411);
getVos.retrieveData();
gridTable.setSelectionModel(new MultiSelectionModel<Attribute>(new GeneralKeyProvider<Attribute>()));
final SelectionModel<Attribute> selectionModel = gridTable.getSelectionModel();
gridTable.setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.DISABLED);
Column<Attribute, Boolean> checkBoxColumn = new Column<Attribute, Boolean>(new CheckboxCell(true, true)) {
@Override
public Boolean getValue(Attribute object) {
// Get the value from the selection model.
return selectionModel.isSelected(object);
}
};
checkBoxColumn.setFieldUpdater(new FieldUpdater<Attribute, Boolean>() {
@Override
public void update(int i, Attribute Attribute, Boolean aBoolean) {
selectionModel.setSelected(Attribute, aBoolean);
}
});
// Checkbox column header
CheckboxCell cb = new CheckboxCell();
Header<Boolean> checkBoxHeader = new Header<Boolean>(cb) {
public Boolean getValue() {
//return true to see a checked checkbox.
return false;
}
};
checkBoxHeader.setUpdater(new ValueUpdater<Boolean>() {
public void update(Boolean value) {
// sets selected to all, if value = true, unselect otherwise
for (Attribute obj : vosList) {
selectionModel.setSelected(obj, value);
}
}
});
gridTable.addColumn(checkBoxColumn, checkBoxHeader, checkBoxHeader);
gridTable.setColumnWidth(checkBoxColumn, 40.0, Style.Unit.PX);
TextColumn<Attribute> idColumn = new TextColumn<Attribute>() {
@Override
public String getValue(Attribute object) {
return String.valueOf(object.getId());
}
};
if (JsonUtils.isExtendedInfoVisible()) {
gridTable.addColumn(idColumn, "Id", "Id");
gridTable.setColumnWidth(idColumn, "90px");
}
// Name column
Column<Attribute, Attribute> nameColumn = JsonUtils.addColumn(new PerunAttributeNameCell());
// Description column
Column<Attribute, Attribute> descriptionColumn = JsonUtils.addColumn(new PerunAttributeDescriptionCell());
// Value column
Column<Attribute, Attribute> valueColumn = JsonUtils.addColumn(new PerunAttributeValueCell(), new FieldUpdater<Attribute, Attribute>() {
public void update(int index, Attribute object, Attribute value) {
object = value;
selectionModel.setSelected(object, object.isAttributeValid());
}
});
ColumnSortEvent.ListHandler<Attribute> columnSortHandler = new ColumnSortEvent.ListHandler<Attribute>(vosList);
gridTable.addColumnSortHandler(columnSortHandler);
// Sorting name column
nameColumn.setSortable(true);
columnSortHandler.setComparator(nameColumn, new AttributeComparator<Attribute>(AttributeComparator.Column.TRANSLATED_NAME));
// Sorting description column
descriptionColumn.setSortable(true);
columnSortHandler.setComparator(descriptionColumn, new AttributeComparator<Attribute>(AttributeComparator.Column.TRANSLATED_DESCRIPTION));
// Add sorting
gridTable.addColumnSortHandler(columnSortHandler);
// updates the columns size
gridTable.setColumnWidth(nameColumn, 200.0, Style.Unit.PX);
gridTable.setColumnWidth(valueColumn, 420.0, Style.Unit.PX);
gridTable.addColumn(nameColumn, "Name");
gridTable.addColumn(valueColumn, "Value");
gridTable.addColumn(descriptionColumn, "Description");
TabMenu tabMenu = new TabMenu();
tabMenu.addWidget(TabMenu.getPredefinedButton(ButtonType.ADD, "", new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
session.getTabManager().addTabToCurrentTab(new TestDataGridTabItem(), true);
}
}));
ft.addNorth(tabMenu, 50);
ft.add(gridTable);
return getWidget();
}
Aggregations