JComboBox sourceCombo = (JComboBox) e.getSource();
// find what is selected.
CriterionFieldEnum selectedItem = (CriterionFieldEnum) sourceCombo.getSelectedItem();
if (selectedItem != null) {
// get Metadata Object from the selected string.
GenericMetadata metadata = filterDomain.getMetaDataFromFieldType(selectedItem);
if (metadata instanceof LastModifiedDateMetadata) {
comp = new DatePicker();
} else if (metadata instanceof ExtensionMismatchMetadata) {
comp = new JComboBox();
} else {
comp = new TextBoxAndButton(FilterDialog.this);
}
tableModel.setValueAt(comp, filterTable.getSelectedRow(), 2);
if (e.getStateChange() == ItemEvent.SELECTED) {
// Add a new row if metadata is selected at last
// row.
if (tableModel.getRowCount() == selectedRow + 1) {
tableModel.addRow(getRowForTable());
filterTable.revalidate();
}
JComboBox comboBox = (JComboBox) tableModel.getValueAt(selectedRow, 1);
operationComboboxModel = (DefaultComboBoxModel) comboBox.getModel();
// If filter criteria is not there that means fresh
// criteria for selected row and create one
FilterCriterionImpl newCriteria = new FilterCriterionImpl();
newCriteria.setRowNumber(filterTable.getSelectedRow());
newCriteria.setField(metadata.getField());
filterContext.addFilterCiterion(newCriteria, filterTable.getSelectedRow());
// Apply metadaUi logic.
applyMetadaUILogic(comp, metadata);
//Add the possible criteria e.g. all, any equal to...
operationComboboxModel.removeAllElements();
for (CriterionOperator metaDataOp : metadata.getOperationList()) {
operationComboboxModel.addElement(metaDataOp);
}
if (comp instanceof TextBoxAndButton) {
((TextBoxAndButton) comp).setType(metadata, filterContext.getFilterCriterion(filterTable
.getSelectedRow()));
}
//BNO: For extension_mismatch
if (comp instanceof JComboBox) {
JComboBox combo = (JComboBox) comp;
combo.addItem("true");
combo.addItem("false");
}
filterTable.repaint();
}
} else {
GenericMetadata metadata = getFilterDomain().getMetaDataFromFieldType(deSelectedItem);
sourceCombo.getModel().setSelectedItem(metadata.getField());
}
}
}