Search in sources :

Example 6 with ScenarioHeaderMetaData

use of org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData in project drools-wb by kiegroup.

the class AbstractSelectedColumnCommand method setInstanceHeader.

/**
 * Sets the instance header for a <code>ScenarioSimulationContext</code>.
 * @param context It contains the <b>Context</b> inside which the commands will be executed
 * @param selectedColumn The selected <code>ScenarioGridColumn</code> where the command was launched
 */
protected void setInstanceHeader(ScenarioSimulationContext context, ScenarioGridColumn selectedColumn, String alias, String fullClassName) {
    int columnIndex = context.getAbstractScesimGridModelByGridWidget(gridWidget).getColumns().indexOf(selectedColumn);
    final FactIdentifier factIdentifier = setEditableHeadersAndGetFactIdentifier(context, selectedColumn, alias, fullClassName);
    setInstanceHeaderMetaData(selectedColumn, alias, factIdentifier);
    final ScenarioHeaderMetaData propertyHeaderMetaData = selectedColumn.getPropertyHeaderMetaData();
    setPropertyMetaData(propertyHeaderMetaData, getPropertyPlaceHolder(columnIndex), false, selectedColumn, ScenarioSimulationUtils.getPlaceHolder(selectedColumn.isInstanceAssigned(), selectedColumn.isPropertyAssigned(), factMappingValueType, fullClassName));
    context.getAbstractScesimGridModelByGridWidget(gridWidget).updateColumnInstance(columnIndex, selectedColumn);
    if (context.getScenarioSimulationEditorPresenter() != null) {
        context.getScenarioSimulationEditorPresenter().reloadTestTools(false);
    }
}
Also used : ScenarioHeaderMetaData(org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData) FactIdentifier(org.drools.scenariosimulation.api.model.FactIdentifier)

Example 7 with ScenarioHeaderMetaData

use of org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData in project drools-wb by kiegroup.

the class AbstractScesimGridModel method updateHeader.

public void updateHeader(int columnIndex, int headerRowIndex, String headerCellValue) {
    final ScenarioHeaderMetaData editedMetadata = (ScenarioHeaderMetaData) getColumns().get(columnIndex).getHeaderMetaData().get(headerRowIndex);
    // do not update if old and new value are the same
    if (Objects.equals(editedMetadata.getTitle(), headerCellValue)) {
        return;
    }
    ScesimModelDescriptor simulationDescriptor = abstractScesimModel.getScesimModelDescriptor();
    FactMapping factMappingToEdit = simulationDescriptor.getFactMappingByIndex(columnIndex);
    ScenarioHeaderMetaData.MetadataType metadataType = editedMetadata.getMetadataType();
    IntStream.range(0, getColumnCount()).forEach(index -> updateFactMapping(simulationDescriptor, factMappingToEdit, index, headerCellValue, metadataType));
    if (editedMetadata.getMetadataType().equals(ScenarioHeaderMetaData.MetadataType.INSTANCE)) {
        eventBus.fireEvent(new ReloadTestToolsEvent(false));
    }
}
Also used : ScesimModelDescriptor(org.drools.scenariosimulation.api.model.ScesimModelDescriptor) ReloadTestToolsEvent(org.drools.workbench.screens.scenariosimulation.client.events.ReloadTestToolsEvent) FactMapping(org.drools.scenariosimulation.api.model.FactMapping) ScenarioHeaderMetaData(org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData)

Example 8 with ScenarioHeaderMetaData

use of org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData in project drools-wb by kiegroup.

the class ScenarioSimulationGridWidgetMouseEventHandler method handleHeaderCell.

@Override
public boolean handleHeaderCell(final GridWidget gridWidget, final Point2D relativeLocation, final int uiHeaderRowIndex, final int uiHeaderColumnIndex, final AbstractNodeMouseEvent event) {
    // Get column information
    final double cx = relativeLocation.getX();
    final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper();
    final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(cx);
    final GridColumn<?> column = ci.getColumn();
    if (column == null) {
        return false;
    }
    final ScenarioHeaderMetaData headerMetaData = (ScenarioHeaderMetaData) column.getHeaderMetaData().get(uiHeaderRowIndex);
    final GridData gridData = gridWidget.getModel();
    if (!gridData.getSelectedHeaderCells().isEmpty() && editSupportedLocal(headerMetaData.getSupportedEditAction(), event)) {
        final GridData.SelectedCell firstSelectedHeaderCell = gridData.getSelectedHeaderCells().get(0);
        final Optional<GridColumn<?>> firstSelectedColumnOptional = gridData.getColumns().stream().filter(col -> col.getIndex() == firstSelectedHeaderCell.getColumnIndex()).findFirst();
        final int firstSelectedColumnPosition = gridData.getColumns().indexOf(firstSelectedColumnOptional.orElseThrow(IllegalStateException::new));
        return startEditLocal((ScenarioGrid) gridWidget, firstSelectedColumnPosition, (ScenarioGridColumn) column, uiHeaderRowIndex, true);
    }
    return true;
}
Also used : GridCellEditAction(org.uberfire.ext.wires.core.grids.client.model.GridCellEditAction) GridCell(org.uberfire.ext.wires.core.grids.client.model.GridCell) ScenarioGrid(org.drools.workbench.screens.scenariosimulation.client.widgets.ScenarioGrid) DefaultGridWidgetEditCellMouseEventHandler(org.uberfire.ext.wires.core.grids.client.widget.grid.impl.DefaultGridWidgetEditCellMouseEventHandler) GridColumn(org.uberfire.ext.wires.core.grids.client.model.GridColumn) GridData(org.uberfire.ext.wires.core.grids.client.model.GridData) AbstractNodeMouseEvent(com.ait.lienzo.client.core.event.AbstractNodeMouseEvent) GridWidget(org.uberfire.ext.wires.core.grids.client.widget.grid.GridWidget) Objects(java.util.Objects) ScenarioHeaderMetaData(org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData) ScenarioGridColumn(org.drools.workbench.screens.scenariosimulation.client.widgets.ScenarioGridColumn) BaseGridRendererHelper(org.uberfire.ext.wires.core.grids.client.widget.grid.renderers.grids.impl.BaseGridRendererHelper) Point2D(com.ait.lienzo.client.core.types.Point2D) Optional(java.util.Optional) ScenarioHeaderMetaData(org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData) GridData(org.uberfire.ext.wires.core.grids.client.model.GridData) GridColumn(org.uberfire.ext.wires.core.grids.client.model.GridColumn) ScenarioGridColumn(org.drools.workbench.screens.scenariosimulation.client.widgets.ScenarioGridColumn) BaseGridRendererHelper(org.uberfire.ext.wires.core.grids.client.widget.grid.renderers.grids.impl.BaseGridRendererHelper)

Example 9 with ScenarioHeaderMetaData

use of org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData in project drools-wb by kiegroup.

the class ScenarioContextMenuRegistry method manageHeaderRightClick.

/**
 * This method check if the click happened on an <b>header</b> cell. If it is so, manage it and returns <code>true</code>,
 * otherwise returns <code>false</code>
 * @param scenarioGrid
 * @param left
 * @param top
 * @param uiHeaderRowIndex - coordinates relative to the grid top left corner
 * @param uiColumnIndex
 * @return
 */
private boolean manageHeaderRightClick(final ScenarioGrid scenarioGrid, final int left, final int top, final Integer uiHeaderRowIndex, final Integer uiColumnIndex) {
    final ScenarioGridColumn column = (ScenarioGridColumn) scenarioGrid.getModel().getColumns().get(uiColumnIndex);
    if (column == null) {
        return false;
    }
    ScenarioHeaderMetaData columnMetadata = ScenarioSimulationGridHeaderUtilities.getColumnScenarioHeaderMetaData(column, uiHeaderRowIndex);
    if (columnMetadata == null) {
        return false;
    }
    if (uiHeaderRowIndex == null) {
        return false;
    }
    boolean showDuplicateInstance = scenarioGrid.getType().equals(ScenarioSimulationModel.Type.RULE);
    String group = ScenarioSimulationUtils.getOriginalColumnGroup(columnMetadata.getColumnGroup());
    /* The first case managed, empty string, is related to clicking on the first header row, the one containing
           GIVEN or EXPECT labels. In this case, the menu to show depends on columnMetadata.getTitle() value.
           All other cases, "GIVEN" and "EXPECT" groups names, manage the other headers rows.
         */
    switch(group) {
        case "":
            switch(columnMetadata.getTitle()) {
                case "GIVEN":
                    headerGivenContextMenu.show(scenarioGrid.getGridWidget(), left, top);
                    break;
                case "EXPECT":
                    headerExpectedContextMenu.show(scenarioGrid.getGridWidget(), left, top);
                    break;
                default:
                    otherContextMenu.show(left, top);
            }
            break;
        case "GIVEN":
            givenContextMenu.show(scenarioGrid.getGridWidget(), left, top, uiColumnIndex, group, Objects.equals(columnMetadata.getMetadataType(), ScenarioHeaderMetaData.MetadataType.PROPERTY), showDuplicateInstance);
            break;
        case "EXPECT":
            expectedContextMenu.show(scenarioGrid.getGridWidget(), left, top, uiColumnIndex, group, Objects.equals(columnMetadata.getMetadataType(), ScenarioHeaderMetaData.MetadataType.PROPERTY), showDuplicateInstance);
            break;
        default:
            otherContextMenu.show(left, top);
    }
    scenarioGrid.setSelectedColumnAndHeader(uiHeaderRowIndex, uiColumnIndex);
    return true;
}
Also used : ScenarioHeaderMetaData(org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData) ScenarioGridColumn(org.drools.workbench.screens.scenariosimulation.client.widgets.ScenarioGridColumn)

Example 10 with ScenarioHeaderMetaData

use of org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData in project drools-wb by kiegroup.

the class ScenarioGridTest method testShowContextMenuGivenOrExpect.

@Test
public void testShowContextMenuGivenOrExpect() {
    final String columnGroup = "grp";
    final ScenarioHeaderMetaData scenarioHeaderMetaDataMock = mock(ScenarioHeaderMetaData.class);
    when(scenarioHeaderMetaDataMock.getColumnGroup()).thenReturn(columnGroup);
    final int uiColumnIndex = 0;
    final int uiRowIndex = 0;
    final double columnWidth = 100.0;
    final GridColumn columnMock = mock(ScenarioGridColumn.class);
    when(columnMock.getIndex()).thenReturn(uiColumnIndex);
    when(columnMock.getWidth()).thenReturn(columnWidth);
    when(((ScenarioGridColumn) columnMock).getFactIdentifier()).thenReturn(FactIdentifier.EMPTY);
    when(columnMock.getHeaderMetaData()).thenReturn(Collections.singletonList(scenarioHeaderMetaDataMock));
    when(((ScenarioGridColumn) columnMock).getInformationHeaderMetaData()).thenReturn(scenarioHeaderMetaDataMock);
    when(scenarioGridModelMock.getColumns()).thenReturn(Collections.singletonList(columnMock));
    final double rowHeight = 40.0;
    final GridRow gridRow = mock(ScenarioGridRow.class);
    when(gridRow.getHeight()).thenReturn(rowHeight);
    when(scenarioGridModelMock.getRow(uiRowIndex)).thenReturn(gridRow);
    when(rendererHelperMock.getColumnInformation(50.0)).thenReturn(columnInformationMock);
    when(columnInformationMock.getColumn()).thenReturn(columnMock);
}
Also used : ScenarioHeaderMetaData(org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData) GridColumn(org.uberfire.ext.wires.core.grids.client.model.GridColumn) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) GridRow(org.uberfire.ext.wires.core.grids.client.model.GridRow) Test(org.junit.Test)

Aggregations

ScenarioHeaderMetaData (org.drools.workbench.screens.scenariosimulation.client.metadata.ScenarioHeaderMetaData)19 ScenarioGridColumn (org.drools.workbench.screens.scenariosimulation.client.widgets.ScenarioGridColumn)6 Test (org.junit.Test)6 AbstractScenarioSimulationTest (org.drools.workbench.screens.scenariosimulation.client.AbstractScenarioSimulationTest)4 GridColumn (org.uberfire.ext.wires.core.grids.client.model.GridColumn)3 FactMapping (org.drools.scenariosimulation.api.model.FactMapping)2 FactMappingType (org.drools.scenariosimulation.api.model.FactMappingType)2 EnableTestToolsEvent (org.drools.workbench.screens.scenariosimulation.client.events.EnableTestToolsEvent)2 ReloadTestToolsEvent (org.drools.workbench.screens.scenariosimulation.client.events.ReloadTestToolsEvent)2 Before (org.junit.Before)2 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)2 AbstractNodeMouseEvent (com.ait.lienzo.client.core.event.AbstractNodeMouseEvent)1 Viewport (com.ait.lienzo.client.core.shape.Viewport)1 Point2D (com.ait.lienzo.client.core.types.Point2D)1 Date (java.util.Date)1 Map (java.util.Map)1 Objects (java.util.Objects)1 Optional (java.util.Optional)1 SortedMap (java.util.SortedMap)1 AbstractScesimData (org.drools.scenariosimulation.api.model.AbstractScesimData)1