@Test public void testOnItemSelectedExpressionColumnUndefinedExpressionType() { setupGrid(0); assertDefaultListItems(grid.getItems(0, 2), true); }
@Override @SuppressWarnings("unused") public List<ListSelectorItem> getItems(final int uiRowIndex, final int uiColumnIndex) { final List<ListSelectorItem> items = new ArrayList<>(); final boolean isMultiRow = SelectionUtils.isMultiRow(model); final boolean isMultiSelect = SelectionUtils.isMultiSelect(model); items.add(ListSelectorHeaderItem.build(translationService.format(DMNEditorConstants.InvocationEditor_Header))); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterAbove), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterBelow), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex + 1)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_DeleteParameter), !isMultiRow && model.getRowCount() > 1, () -> { cellEditorControls.hide(); deleteParameterBinding(uiRowIndex); })); if (uiColumnIndex != InvocationUIModelMapper.BINDING_EXPRESSION_COLUMN_INDEX) { return items; } final GridCell<?> cell = model.getCell(uiRowIndex, uiColumnIndex); final ExpressionCellValue ecv = (ExpressionCellValue) cell.getValue(); if (!ecv.getValue().isPresent()) { return items; } final BaseExpressionGrid grid = ecv.getValue().get(); if (grid instanceof UndefinedExpressionGrid) { return items; } items.add(new ListSelectorDividerItem()); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.ExpressionEditor_Clear), !isMultiSelect, () -> { cellEditorControls.hide(); clearExpressionType(uiRowIndex); })); return items; }
InvocationGrid extends BaseExpressionGrid<Invocation, InvocationGridData, InvocationUIModelMapper> implements HasListSelectorControl { @Override @SuppressWarnings("unused") public List<ListSelectorItem> getItems(final int uiRowIndex, final int uiColumnIndex) { final List<ListSelectorItem> items = new ArrayList<>(); final boolean isMultiRow = SelectionUtils.isMultiRow(model); final boolean isMultiSelect = SelectionUtils.isMultiSelect(model); items.add(ListSelectorHeaderItem.build(translationService.format(DMNEditorConstants.InvocationEditor_Header))); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterAbove), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterBelow), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex + 1)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_DeleteParameter), !isMultiRow && model.getRowCount() > 1, () -> { cellEditorControls.hide(); deleteParameterBinding(uiRowIndex); })); if (uiColumnIndex != InvocationUIModelMapper.BINDING_EXPRESSION_COLUMN_INDEX) { return items; } final GridCell<?> cell = model.getCell(uiRowIndex, uiColumnIndex); final ExpressionCellValue ecv = (ExpressionCellValue) cell.getValue(); if (!ecv.getValue().isPresent()) { return items; } final BaseExpressionGrid grid = ecv.getValue().get(); if (grid instanceof UndefinedExpressionGrid) { return items; } items.add(new ListSelectorDividerItem()); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.ExpressionEditor_Clear), !isMultiSelect, () -> { cellEditorControls.hide(); clearExpressionType(uiRowIndex); })); return items; } }
InvocationGrid extends BaseExpressionGrid<Invocation, InvocationGridData, InvocationUIModelMapper> implements HasListSelectorControl { @Override @SuppressWarnings("unused") public List<ListSelectorItem> getItems(final int uiRowIndex, final int uiColumnIndex) { final List<ListSelectorItem> items = new ArrayList<>(); final boolean isMultiRow = SelectionUtils.isMultiRow(model); final boolean isMultiSelect = SelectionUtils.isMultiSelect(model); items.add(ListSelectorHeaderItem.build(translationService.format(DMNEditorConstants.InvocationEditor_Header))); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterAbove), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterBelow), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex + 1)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_DeleteParameter), !isMultiRow && model.getRowCount() > 1, () -> { cellEditorControls.hide(); deleteParameterBinding(uiRowIndex); })); if (uiColumnIndex != InvocationUIModelMapper.BINDING_EXPRESSION_COLUMN_INDEX) { return items; } final GridCell<?> cell = model.getCell(uiRowIndex, uiColumnIndex); final ExpressionCellValue ecv = (ExpressionCellValue) cell.getValue(); if (!ecv.getValue().isPresent()) { return items; } final BaseExpressionGrid grid = ecv.getValue().get(); if (grid instanceof UndefinedExpressionGrid) { return items; } items.add(new ListSelectorDividerItem()); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.ExpressionEditor_Clear), !isMultiSelect, () -> { cellEditorControls.hide(); clearExpressionType(uiRowIndex); })); return items; } InvocationGrid(final GridCellTuple parent,
                          final Optional<String> nodeUUID,
                          final HasExpression hasExpression,
                          final Optional<HasName> hasName,
                          final DMNGridPanel gridPanel,
                          final DMNGridLayer gridLayer,
                          final InvocationGridData gridData,
                          final DefinitionUtils definitionUtils,
                          final SessionManager sessionManager,
                          final SessionCommandManager<AbstractCanvasHandler> sessionCommandManager,
                          final DefaultCanvasCommandFactory canvasCommandFactory,
                          final Event<ExpressionEditorChanged> editorSelectedEvent,
                          final Event<RefreshFormPropertiesEvent> refreshFormPropertiesEvent,
                          final Event<DomainObjectSelectionEvent> domainObjectSelectionEvent,
                          final CellEditorControlsView.Presenter cellEditorControls,
                          final ListSelectorView.Presenter listSelector,
                          final TranslationService translationService,
                          final boolean isOnlyVisualChangeAllowed,
                          final int nesting,
                          final Supplier<ExpressionEditorDefinitions> expressionEditorDefinitionsSupplier,
                          final ValueAndDataTypePopoverView.Presenter headerEditor,
                          final ReadOnlyProvider readOnlyProvider); }
InvocationGrid extends BaseExpressionGrid<Invocation, InvocationGridData, InvocationUIModelMapper> implements HasListSelectorControl { @Override @SuppressWarnings("unused") public List<ListSelectorItem> getItems(final int uiRowIndex, final int uiColumnIndex) { final List<ListSelectorItem> items = new ArrayList<>(); final boolean isMultiRow = SelectionUtils.isMultiRow(model); final boolean isMultiSelect = SelectionUtils.isMultiSelect(model); items.add(ListSelectorHeaderItem.build(translationService.format(DMNEditorConstants.InvocationEditor_Header))); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterAbove), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterBelow), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex + 1)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_DeleteParameter), !isMultiRow && model.getRowCount() > 1, () -> { cellEditorControls.hide(); deleteParameterBinding(uiRowIndex); })); if (uiColumnIndex != InvocationUIModelMapper.BINDING_EXPRESSION_COLUMN_INDEX) { return items; } final GridCell<?> cell = model.getCell(uiRowIndex, uiColumnIndex); final ExpressionCellValue ecv = (ExpressionCellValue) cell.getValue(); if (!ecv.getValue().isPresent()) { return items; } final BaseExpressionGrid grid = ecv.getValue().get(); if (grid instanceof UndefinedExpressionGrid) { return items; } items.add(new ListSelectorDividerItem()); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.ExpressionEditor_Clear), !isMultiSelect, () -> { cellEditorControls.hide(); clearExpressionType(uiRowIndex); })); return items; } InvocationGrid(final GridCellTuple parent,
                          final Optional<String> nodeUUID,
                          final HasExpression hasExpression,
                          final Optional<HasName> hasName,
                          final DMNGridPanel gridPanel,
                          final DMNGridLayer gridLayer,
                          final InvocationGridData gridData,
                          final DefinitionUtils definitionUtils,
                          final SessionManager sessionManager,
                          final SessionCommandManager<AbstractCanvasHandler> sessionCommandManager,
                          final DefaultCanvasCommandFactory canvasCommandFactory,
                          final Event<ExpressionEditorChanged> editorSelectedEvent,
                          final Event<RefreshFormPropertiesEvent> refreshFormPropertiesEvent,
                          final Event<DomainObjectSelectionEvent> domainObjectSelectionEvent,
                          final CellEditorControlsView.Presenter cellEditorControls,
                          final ListSelectorView.Presenter listSelector,
                          final TranslationService translationService,
                          final boolean isOnlyVisualChangeAllowed,
                          final int nesting,
                          final Supplier<ExpressionEditorDefinitions> expressionEditorDefinitionsSupplier,
                          final ValueAndDataTypePopoverView.Presenter headerEditor,
                          final ReadOnlyProvider readOnlyProvider); @Override InvocationUIModelMapper makeUiModelMapper(); @Override void initialiseUiRows(); @Override void initialiseUiCells(); @Override @SuppressWarnings("unused") List<ListSelectorItem> getItems(final int uiRowIndex,
                                           final int uiColumnIndex); @Override void onItemSelected(final ListSelectorItem item); @Override void doAfterSelectionChange(final int uiRowIndex,
                                       final int uiColumnIndex); @Override void doAfterHeaderSelectionChange(final int uiHeaderRowIndex,
                                             final int uiHeaderColumnIndex); }
InvocationGrid extends BaseExpressionGrid<Invocation, InvocationGridData, InvocationUIModelMapper> implements HasListSelectorControl { @Override @SuppressWarnings("unused") public List<ListSelectorItem> getItems(final int uiRowIndex, final int uiColumnIndex) { final List<ListSelectorItem> items = new ArrayList<>(); final boolean isMultiRow = SelectionUtils.isMultiRow(model); final boolean isMultiSelect = SelectionUtils.isMultiSelect(model); items.add(ListSelectorHeaderItem.build(translationService.format(DMNEditorConstants.InvocationEditor_Header))); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterAbove), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_InsertParameterBelow), !isMultiRow, () -> { cellEditorControls.hide(); getExpression().get().ifPresent(e -> addParameterBinding(uiRowIndex + 1)); })); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.InvocationEditor_DeleteParameter), !isMultiRow && model.getRowCount() > 1, () -> { cellEditorControls.hide(); deleteParameterBinding(uiRowIndex); })); if (uiColumnIndex != InvocationUIModelMapper.BINDING_EXPRESSION_COLUMN_INDEX) { return items; } final GridCell<?> cell = model.getCell(uiRowIndex, uiColumnIndex); final ExpressionCellValue ecv = (ExpressionCellValue) cell.getValue(); if (!ecv.getValue().isPresent()) { return items; } final BaseExpressionGrid grid = ecv.getValue().get(); if (grid instanceof UndefinedExpressionGrid) { return items; } items.add(new ListSelectorDividerItem()); items.add(ListSelectorTextItem.build(translationService.format(DMNEditorConstants.ExpressionEditor_Clear), !isMultiSelect, () -> { cellEditorControls.hide(); clearExpressionType(uiRowIndex); })); return items; } InvocationGrid(final GridCellTuple parent,
                          final Optional<String> nodeUUID,
                          final HasExpression hasExpression,
                          final Optional<HasName> hasName,
                          final DMNGridPanel gridPanel,
                          final DMNGridLayer gridLayer,
                          final InvocationGridData gridData,
                          final DefinitionUtils definitionUtils,
                          final SessionManager sessionManager,
                          final SessionCommandManager<AbstractCanvasHandler> sessionCommandManager,
                          final DefaultCanvasCommandFactory canvasCommandFactory,
                          final Event<ExpressionEditorChanged> editorSelectedEvent,
                          final Event<RefreshFormPropertiesEvent> refreshFormPropertiesEvent,
                          final Event<DomainObjectSelectionEvent> domainObjectSelectionEvent,
                          final CellEditorControlsView.Presenter cellEditorControls,
                          final ListSelectorView.Presenter listSelector,
                          final TranslationService translationService,
                          final boolean isOnlyVisualChangeAllowed,
                          final int nesting,
                          final Supplier<ExpressionEditorDefinitions> expressionEditorDefinitionsSupplier,
                          final ValueAndDataTypePopoverView.Presenter headerEditor,
                          final ReadOnlyProvider readOnlyProvider); @Override InvocationUIModelMapper makeUiModelMapper(); @Override void initialiseUiRows(); @Override void initialiseUiCells(); @Override @SuppressWarnings("unused") List<ListSelectorItem> getItems(final int uiRowIndex,
                                           final int uiColumnIndex); @Override void onItemSelected(final ListSelectorItem item); @Override void doAfterSelectionChange(final int uiRowIndex,
                                       final int uiColumnIndex); @Override void doAfterHeaderSelectionChange(final int uiHeaderRowIndex,
                                             final int uiHeaderColumnIndex);  }