Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private class HighlightCallbackIterator implements SerializableEventListener, IteratorRowFieldCallback {
- private IIteratorView iteratorView;
- private Filter filter;
- private Collection<String> highlightFields;
- private String highlightMethodId;
- private boolean highlightApplied = false;
- HighlightCallbackIterator(IIteratorView iteratorView, Filter filter, Collection<String> highlightFields, String highlightMethodId) {
- this.iteratorView = iteratorView;
- this.filter = filter;
- this.highlightFields = highlightFields;
- this.highlightMethodId = highlightMethodId;
- }
- @Override
- public void onEvent(Event event) throws Exception {
- /*вся подсветка осуществляется в методе onField. Однако, если высвать iteratorView.doWithColumnByFieldName для поля, у которого нет
- view, то коллбэк не будет вызван, а вариант, когда в дескрипторе подсветки есть поле, которого нет в итераторе вполне возможен.
- Поэтому перебираем все поля, до тех пор, пока не встретим поле, которое представлено визуальным компонентом в итераторе*/
- highlightApplied = false;
- for (String highlightField : highlightFields) {
- iteratorView.doWithColumnByFieldName(highlightField, this);
- if (highlightApplied) {
- return;
- }
- }
- }
- @Override
- public void onField(FieldView fieldView, ContainerViewContext containerViewContext) {
- highlightApplied = true;
- if (filter != null) {
- if (containerViewContext instanceof ContentAccessor) {
- if (!filter.check((ContentAccessor) containerViewContext)) {
- return;
- }
- } else {
- FieldSet fs = containerViewContext.getFieldValues(new FieldSet());
- if (!filter.check(fs)) {
- return;
- }
- }
- }
- DocEditViewContext docFormContext = new DocEditViewContext(containerViewContext);
- for (String fieldName : highlightFields) {
- highlightService.highlightField(docFormContext, FieldPath.from(fieldName), highlightMethodId);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement