package org.opennms.features.gwt.snmpselect.list.client.view;
import java.util.ArrayList;
import java.util.List;
import org.opennms.features.gwt.snmpselect.list.client.view.handler.SnmpSelectTableCollectUpdateHandler;
import org.opennms.features.gwt.tableresources.client.OnmsTableResources;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.cell.client.SelectionCell;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.RowStyles;
public class SnmpSelectTable extends CellTable<SnmpCellListItem> {
private abstract class SnmpTextColumn extends Column<SnmpCellListItem, String>{
public SnmpTextColumn() {
super(new TextCell());
}
}
private SnmpSelectTableCollectUpdateHandler m_fieldUpdater;
public SnmpSelectTable() {
super(15, (CellTable.Resources) GWT.create(OnmsTableResources.class));
initializeColumns();
}
private void initializeColumns() {
setRowStyles(new RowStyles<SnmpCellListItem>() {
@Override
public String getStyleNames(SnmpCellListItem cellListItem, int rowIndex) {
String bgStyle = null;
if(cellListItem.getIfAdminStatus() != 1){
bgStyle = "onms-ipinterface-status-unknown";
}else if(cellListItem.getIfAdminStatus() == 1 && cellListItem.getIfOperStatus() == 1){
bgStyle = "onms-ipinterface-status-up";
}else if(cellListItem.getIfAdminStatus() == 1 && cellListItem.getIfOperStatus() != 1){
bgStyle = "onms-ipinterface-status-down";
}
return bgStyle;
}
});
SnmpTextColumn ifIndexColumn = new SnmpTextColumn() {
@Override
public String getValue(SnmpCellListItem item) {
return item.getIfIndex();
}
};
addColumn(ifIndexColumn, "Index");
SnmpTextColumn snmpIfType = new SnmpTextColumn(){
@Override
public String getValue(SnmpCellListItem item) {
return item.getSnmpType();
}
};
addColumn(snmpIfType, "SNMP ifType");
SnmpTextColumn snmpIfDescr = new SnmpTextColumn() {
@Override
public String getValue(SnmpCellListItem item) {
return item.getIfDescr();
}
};
addColumn(snmpIfDescr, "SNMP ifDescr");
SnmpTextColumn snmpIfName = new SnmpTextColumn() {
@Override
public String getValue(SnmpCellListItem item) {
return item.getIfName();
}
};
addColumn(snmpIfName, "SNMP ifName");
SnmpTextColumn snmpIfAlias = new SnmpTextColumn() {
@Override
public String getValue(SnmpCellListItem item) {
return item.getIfAlias();
}
};
addColumn(snmpIfAlias, "SNMP ifAlias");
List<String> collectList = new ArrayList<String>() ;
collectList.add("Collect");
collectList.add("Don't Collect");
collectList.add("Default");
SelectionCell collectSelection = new SelectionCell(collectList);
Column<SnmpCellListItem, String> collectColumn = new Column<SnmpCellListItem, String>(collectSelection){
@Override
public String getValue(SnmpCellListItem item) {
if(item.getCollectFlag().equals("C") || item.getCollectFlag().equals("UC")) {
return "Collect";
}else if(item.getCollectFlag().equals("N") || item.getCollectFlag().equals("UN")) {
return "Don't Collect";
}else if(item.getCollectFlag().equals("Default")) {
return "Default";
}else {
return "Default";
}
}
};
collectColumn.setFieldUpdater(new FieldUpdater<SnmpCellListItem, String>() {
@Override
public void update(int index, SnmpCellListItem object, String value) {
String newCollectFlag = object.getCollectFlag();
if(value.equals("Collect")) {
newCollectFlag = "UC";
}else if(value.equals("Don't Collect")) {
newCollectFlag = "UN";
}else if(value.equals("Default")) {
newCollectFlag = "Default";
}
object.setCollectFlag(newCollectFlag);
if(getCollectUpdateHandler() != null) {
getCollectUpdateHandler().onSnmpInterfaceCollectUpdated(Integer.parseInt(object.getIfIndex()), object.getCollectFlag(), newCollectFlag);
}
}
});
addColumn(collectColumn, "Collect");
}
public void setCollectUpdateHandler(SnmpSelectTableCollectUpdateHandler fieldUpdater) {
m_fieldUpdater = fieldUpdater;
}
public SnmpSelectTableCollectUpdateHandler getCollectUpdateHandler() {
return m_fieldUpdater;
}
}