protected void createTopTable(Composite parent) { securities = new SecuritiesTable(parent, this); securities.addSelectionChangedListener( new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { onSecurityChanged( (Security) ((IStructuredSelection) event.getSelection()).getFirstElement()); } }); securities.addFilter( new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (filterPattern == null) return true; Security security = (Security) element; if (security.getName() != null && filterPattern.matcher(security.getName()).matches()) return true; if (security.getIsin() != null && filterPattern.matcher(security.getIsin()).matches()) return true; if (security.getTickerSymbol() != null && filterPattern.matcher(security.getTickerSymbol()).matches()) return true; return false; } }); setSecurityTableInput(); }