コード例 #1
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimGeoMechPropertyFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) 
{
    uiOrdering.add(&name);

    caf::PdmUiGroup* group1 = uiOrdering.addNewGroup("Result");
    resultDefinition->uiOrdering(uiConfigName, *group1);

    caf::PdmUiGroup& group2 = *(uiOrdering.addNewGroup("Filter Settings"));

    group2.add(&filterMode);

    if ( resultDefinition->hasCategoryResult() )
    {
        group2.add(&m_selectedCategoryValues);
    }
    else
    {
        group2.add(&lowerBound);
        group2.add(&upperBound);
    }

    updateReadOnlyStateOfAllFields();

    uiOrdering.skipRemainingFields(true);
}
コード例 #2
0
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dWellLogExtractionCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Curve Data");

    curveDataGroup->add(&m_case);

    RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
    RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());

    if (eclipseCase)
    {
        m_eclipseResultDefinition->uiOrdering(uiConfigName, *curveDataGroup);
    }
    else if (geomCase)
    {
        m_geomResultDefinition->uiOrdering(uiConfigName, *curveDataGroup);
    }

    if ((eclipseCase && m_eclipseResultDefinition->hasDynamicResult())
        || geomCase)
    {
        curveDataGroup->add(&m_timeStep);
    }

    Rim3dWellLogCurve::configurationUiOrdering(uiOrdering);

    m_nameConfig()->createUiGroup(uiConfigName, uiOrdering);

    uiOrdering.skipRemainingFields(true);
}
コード例 #3
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    caf::PdmUiGroup* visGroup = uiOrdering.addNewGroup("Visibility");

    visGroup->add(&m_showAnimProgress);
    visGroup->add(&m_showCaseInfo);
    visGroup->add(&m_showResultInfo);
    RimGeoMechView * geoMechView = dynamic_cast<RimGeoMechView*>(m_viewDef.p());
    if (!geoMechView)
    {
        visGroup->add(&m_showVolumeWeightedMean);
    }

    visGroup->add(&m_showHistogram);

    caf::PdmUiGroup* statGroup = uiOrdering.addNewGroup("Statistics Options");
    RimEclipseView * eclipseView = dynamic_cast<RimEclipseView*>(m_viewDef.p());

    if (!eclipseView || !eclipseView->cellResult()->isFlowDiagOrInjectionFlooding())
    {
        statGroup->add(&m_statisticsTimeRange);
    }
    statGroup->add(&m_statisticsCellRange);

    uiOrdering.skipRemainingFields(true);
}
コード例 #4
0
ファイル: RimGridCollection.cpp プロジェクト: OPM/ResInsight
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridInfo::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    uiOrdering.add(&m_gridName);
    uiOrdering.add(&m_eclipseGridIndex);

    uiOrdering.skipRemainingFields();
}
コード例 #5
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimPerforationInterval::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    {
        RimWellPath* wellPath;
        firstAncestorOrThisOfType(wellPath);
        if (wellPath)
        {
            if (wellPath->unitSystem() == RiaEclipseUnitTools::UNITS_METRIC)
            {
                m_startMD.uiCapability()->setUiName("Start MD [m]");
                m_endMD.uiCapability()->setUiName("End MD [m]");
                m_diameter.uiCapability()->setUiName("Diameter [m]");
            }
            else if (wellPath->unitSystem() == RiaEclipseUnitTools::UNITS_FIELD)
            {
                m_startMD.uiCapability()->setUiName("Start MD [ft]");
                m_endMD.uiCapability()->setUiName("End MD [ft]");
                m_diameter.uiCapability()->setUiName("Diameter [ft]");
            }
        }
    }
    m_date.uiCapability()->setUiReadOnly(m_startOfHistory());

    uiOrdering.add(&m_startMD);
    uiOrdering.add(&m_endMD);
    uiOrdering.add(&m_diameter);
    uiOrdering.add(&m_skinFactor);
    uiOrdering.add(&m_startOfHistory);
    uiOrdering.add(&m_date);

    uiOrdering.skipRemainingFields();
}
コード例 #6
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimWellLogPlot::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    uiOrdering.add(&m_userName);
    uiOrderingForPlot(uiOrdering);
    uiOrderingForVisibleDepthRange(uiOrdering);

    uiOrdering.skipRemainingFields(true);
}
コード例 #7
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    prepareFieldsForUiDisplay();

    {
        auto group = uiOrdering.addNewGroup("Sensitivity Scale Factors");
        group->setCollapsedByDefault(false);
        group->add(&m_heightScaleFactor);
        group->add(&m_widthScaleFactor);
        group->add(&m_dFactorScaleFactor);
        group->add(&m_conductivityScaleFactor);

        group->add(&m_scaleApplyButton);
    }

    auto nonDarcyFlowGroup = uiOrdering.addNewGroup("Non-Darcy Flow");
    nonDarcyFlowGroup->add(&m_nonDarcyFlowType);
    
    if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_USER_DEFINED)
    {
        nonDarcyFlowGroup->add(&m_userDefinedDFactor);
    }

    if (m_nonDarcyFlowType == RimFractureTemplate::NON_DARCY_COMPUTED)
    {
        nonDarcyFlowGroup->add(&m_inertialCoefficient);

        {
            auto group = nonDarcyFlowGroup->addNewGroup("Effective Permeability");
            group->add(&m_permeabilityType);
            group->add(&m_relativePermeability);
            group->add(&m_userDefinedEffectivePermeability);
        }

        {
            auto group = nonDarcyFlowGroup->addNewGroup("Width");
            group->add(&m_fractureWidthType);
            group->add(&m_fractureWidth);
        }

        nonDarcyFlowGroup->add(&m_relativeGasDensity);
        nonDarcyFlowGroup->add(&m_gasViscosity);
        nonDarcyFlowGroup->add(&m_dFactorDisplayField);

        {
            auto group  = nonDarcyFlowGroup->addNewGroup("D Factor Details");
            group->setCollapsedByDefault(true);
            group->add(&m_dFactorSummaryText);
        }
    }

    uiOrdering.add(&m_fractureTemplateUnit);
    uiOrdering.skipRemainingFields(true);
}
コード例 #8
0
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAnnotationLineAppearance::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    if (!m_lineFieldsHidden())
    {
        uiOrdering.add(&m_color);
        uiOrdering.add(&m_style);
        uiOrdering.add(&m_thickness);
    }

    uiOrdering.skipRemainingFields(true);
}
コード例 #9
0
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPolylineAppearance::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    RimAnnotationLineAppearance::defineUiOrdering(uiConfigName, uiOrdering);

    if (!m_sphereFieldsHidden)
    {
        uiOrdering.add(&m_sphereColor);
        uiOrdering.add(&m_sphereRadiusFactor);
    }

    uiOrdering.skipRemainingFields(true);
}
コード例 #10
0
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellPathFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    RimFracture::defineUiOrdering(uiConfigName, uiOrdering);

    if (m_fractureTemplate())
    {
        uiOrdering.add(nameField(), caf::PdmUiOrdering::LayoutOptions(true, 3, 1));
        uiOrdering.add(&m_fractureTemplate, {true, 2, 1});
        uiOrdering.add(&m_editFractureTemplate, {false, 1, 0});
    }
    else
    {
        uiOrdering.add(nameField());
        {
            RimProject* project = nullptr;
            this->firstAncestorOrThisOfTypeAsserted(project);
            if (project->allFractureTemplates().empty())
            {
                uiOrdering.add(&m_createEllipseFractureTemplate);
                uiOrdering.add(&m_createStimPlanFractureTemplate, false);
            }
            else
            {
                uiOrdering.add(&m_fractureTemplate);
            }
        }
    }

    caf::PdmUiGroup* locationGroup = uiOrdering.addNewGroup("Location / Orientation");
    locationGroup->add(&m_measuredDepth);
    locationGroup->add(&m_azimuth);
    locationGroup->add(&m_uiWellPathAzimuth);
    locationGroup->add(&m_uiWellFractureAzimuthDiff);
    locationGroup->add(&m_wellFractureAzimuthAngleWarning);
    locationGroup->add(&m_dip);
    locationGroup->add(&m_tilt);

    caf::PdmUiGroup* propertyGroup = uiOrdering.addNewGroup("Properties");
    propertyGroup->add(&m_fractureUnit);
    propertyGroup->add(&m_stimPlanTimeIndexToPlot);
    propertyGroup->add(&m_perforationLength);
    propertyGroup->add(&m_perforationEfficiency);
    propertyGroup->add(&m_wellDiameter);

    caf::PdmUiGroup* fractureCenterGroup = uiOrdering.addNewGroup("Fracture Center Info");
    fractureCenterGroup->add(&m_uiAnchorPosition);

    uiOrdering.skipRemainingFields(true);
}
コード例 #11
0
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    // Appearance settings
    caf::PdmUiGroup* appearanceGroup =
        uiOrdering.addNewGroupWithKeyword("Curve Appearance Assignment", RiuSummaryCurveDefinitionKeywords::appearance());

    caf::PdmUiGroup* appearanceSubGroup = appearanceGroup->addNewGroup("Appearance Type Assignment");
    appearanceSubGroup->setCollapsedByDefault(true);

    appearanceSubGroup->add(&m_useAutoAppearanceAssignment);
    appearanceSubGroup->add(&m_caseAppearanceType);
    appearanceSubGroup->add(&m_variableAppearanceType);
    appearanceSubGroup->add(&m_wellAppearanceType);
    appearanceSubGroup->add(&m_groupAppearanceType);
    appearanceSubGroup->add(&m_regionAppearanceType);

    appearanceGroup->add(&m_appearanceApplyButton);

    // Appearance option sensitivity
    {
        m_caseAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
        m_variableAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
        m_wellAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
        m_groupAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
        m_regionAppearanceType.uiCapability()->setUiReadOnly(m_useAutoAppearanceAssignment);
    }

    // Name config
    caf::PdmUiGroup* autoNameGroup =
        uiOrdering.addNewGroupWithKeyword("Plot and Curve Name Configuration", RiuSummaryCurveDefinitionKeywords::nameConfig());
    autoNameGroup->setCollapsedByDefault(true);

    autoNameGroup->add(&m_useAutoPlotTitleProxy);

    m_curveNameConfig->uiOrdering(uiConfigName, *autoNameGroup);

    // Fields to be displayed directly in UI
    uiOrdering.add(&m_targetPlot);
    uiOrdering.add(&m_okButtonField);
    uiOrdering.add(&m_applyButtonField);
    uiOrdering.add(&m_closeButtonField);

    uiOrdering.skipRemainingFields(true);

    syncPreviewCurvesFromUiSelection();

    m_summaryCurveSelectionEditor->updateUi();
}
コード例 #12
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimWellLogFile::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    uiOrdering.add(&m_fileName);
    uiOrdering.add(&m_date);
    m_date.uiCapability()->setUiReadOnly(m_lasFileHasValidDate);

    auto timespec = m_date().timeSpec();

    if (!isDateValid(m_date()))
    {
        uiOrdering.add(&m_invalidDateMessage);
    }

    if (hasFlowData())
    {
        uiOrdering.add(&m_wellFlowCondition);
    }

    uiOrdering.skipRemainingFields(true);
}
コード例 #13
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimWellPathGeometryDef::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    uiOrdering.add(&m_wellStartType);
    if (m_wellStartType == START_FROM_OTHER_WELL)
    {
        uiOrdering.add(&m_parentWell);
        m_kickoffDepthOrMD.uiCapability()->setUiName("Measured Depth");
        uiOrdering.add(&m_kickoffDepthOrMD);
    }

    if (m_wellStartType == START_AT_SURFACE)
    {
        m_kickoffDepthOrMD.uiCapability()->setUiName("Kick-Off Depth");
        uiOrdering.add(&m_kickoffDepthOrMD);
    }

    uiOrdering.add(&m_referencePointUtmXyd);
    uiOrdering.add(&m_mdrkbAtFirstTarget);
    uiOrdering.add(&m_wellTargets);
    uiOrdering.add(&m_pickPointsEnabled);
    uiOrdering.skipRemainingFields(true);
}
コード例 #14
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimSimWellInView::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Visibility");
    appearanceGroup->add(&showWellLabel);
    appearanceGroup->add(&showWellHead);
    appearanceGroup->add(&showWellPipe);
    appearanceGroup->add(&showWellSpheres);
    
    caf::PdmUiGroup* filterGroup = uiOrdering.addNewGroup("Well Cells and Fence");
    filterGroup->add(&showWellCells);
    filterGroup->add(&showWellCellFence);

    showWellCellFence.uiCapability()->setUiReadOnly(!showWellCells());
    caf::PdmUiGroup* sizeScalingGroup = uiOrdering.addNewGroup("Size Scaling");
    sizeScalingGroup->add(&wellHeadScaleFactor);
    sizeScalingGroup->add(&pipeScaleFactor);

    caf::PdmUiGroup* colorGroup = uiOrdering.addNewGroup("Colors");
    colorGroup->add(&wellPipeColor);

    uiOrdering.skipRemainingFields(true);
}
コード例 #15
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimWellLogExtractionCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    RimPlotCurve::updateOptionSensitivity();

    caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Curve Data");

    curveDataGroup->add(&m_case);
    
    RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(m_case.value());
    RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(m_case.value());

    curveDataGroup->add(&m_trajectoryType);
    if (m_trajectoryType() == WELL_PATH)
    {
        curveDataGroup->add(&m_wellPath);
    }
    else 
    {
        curveDataGroup->add(&m_simWellName);

        RiaSimWellBranchTools::appendSimWellBranchFieldsIfRequiredFromSimWellName(curveDataGroup,
                                                                                  m_simWellName,
                                                                                  m_branchDetection,
                                                                                  m_branchIndex);
    }

    if (eclipseCase)
    {
        m_eclipseResultDefinition->uiOrdering(uiConfigName, *curveDataGroup);

    }
    else if (geomCase)
    {
        m_geomResultDefinition->uiOrdering(uiConfigName, *curveDataGroup);
  
    }

    if (   (eclipseCase && m_eclipseResultDefinition->hasDynamicResult())
        ||  geomCase)
    {
        curveDataGroup->add(&m_timeStep);
    }

    caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
    RimPlotCurve::appearanceUiOrdering(*appearanceGroup);

    caf::PdmUiGroup* nameGroup = uiOrdering.addNewGroup("Curve Name");
    nameGroup->setCollapsedByDefault(true);
    nameGroup->add(&m_showLegend);
    RimPlotCurve::curveNameUiOrdering(*nameGroup);

    if (m_isUsingAutoName)
    {
        nameGroup->add(&m_addWellNameToCurveName);
        nameGroup->add(&m_addCaseNameToCurveName);
        nameGroup->add(&m_addPropertyToCurveName);
        nameGroup->add(&m_addDateToCurveName);
        nameGroup->add(&m_addTimestepToCurveName);
    }


    uiOrdering.skipRemainingFields(true);
}
コード例 #16
0
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimSummaryFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    uiOrdering.add(&m_filterType);

    caf::PdmUiGroup* curveVarFilterGroup = nullptr;

    if(m_filterType() == SUM_FILTER_VAR_STRING)
    {
        uiOrdering.add(&m_completeVarStringFilter);
    }
    else
    {
        caf::PdmUiOrdering* curveVarFilterGroup = &uiOrdering;//uiOrdering.addNewGroup("Search Options");

        curveVarFilterGroup->add(&m_filterQuantityName);

        switch(m_filterType())
        {
            case SUM_FILTER_ANY:
            {
                curveVarFilterGroup->add(&m_wellNameFilter);
                curveVarFilterGroup->add(&m_wellGroupNameFilter);
                curveVarFilterGroup->add(&m_regionNumberFilter);
                curveVarFilterGroup->add(&m_regionNumber2Filter);
                curveVarFilterGroup->add(&m_wellSegmentNumberFilter);
                curveVarFilterGroup->add(&m_lgrNameFilter);
                curveVarFilterGroup->add(&m_cellIJKFilter);
            }
            break;
            case SUM_FILTER_REGION:
            {
                curveVarFilterGroup->add(&m_regionNumberFilter);
            }
            break;
            case SUM_FILTER_REGION_2_REGION:
            {
                curveVarFilterGroup->add(&m_regionNumberFilter);
                curveVarFilterGroup->add(&m_regionNumber2Filter);

            }
            break;
            case SUM_FILTER_WELL_GROUP:
            {
                curveVarFilterGroup->add(&m_wellGroupNameFilter);

            }
            break;
            case SUM_FILTER_WELL:
            {
                curveVarFilterGroup->add(&m_wellNameFilter);

            }
            break;
            case SUM_FILTER_WELL_COMPLETION:
            {
                curveVarFilterGroup->add(&m_wellNameFilter);
                curveVarFilterGroup->add(&m_cellIJKFilter);

            }
            break;
            case SUM_FILTER_WELL_LGR:
            {
                curveVarFilterGroup->add(&m_wellNameFilter);
                curveVarFilterGroup->add(&m_lgrNameFilter);
            }
            break;
            case SUM_FILTER_WELL_COMPLETION_LGR:
            {
                curveVarFilterGroup->add(&m_wellNameFilter);
                curveVarFilterGroup->add(&m_lgrNameFilter);
                curveVarFilterGroup->add(&m_cellIJKFilter);
            }
            break;
            case SUM_FILTER_WELL_SEGMENT:
            {
                curveVarFilterGroup->add(&m_wellNameFilter);
                curveVarFilterGroup->add(&m_wellSegmentNumberFilter);
            }
            break;
            case SUM_FILTER_BLOCK:
            {
                curveVarFilterGroup->add(&m_cellIJKFilter);
            }
            break;
            case SUM_FILTER_BLOCK_LGR:
            {
                curveVarFilterGroup->add(&m_lgrNameFilter);
                curveVarFilterGroup->add(&m_cellIJKFilter);
            }
            break;

        }
    }

    uiOrdering.skipRemainingFields();
}
コード例 #17
0
ファイル: RimCellRangeFilter.cpp プロジェクト: OPM/ResInsight
//--------------------------------------------------------------------------------------------------
/// 
//--------------------------------------------------------------------------------------------------
void RimCellRangeFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
    bool readOnlyState = isRangeFilterControlled();

    std::vector<caf::PdmFieldHandle*> objFields;
    this->fields(objFields);
    for (auto& objField : objFields)
    {
        objField->uiCapability()->setUiReadOnly(readOnlyState);
    }

    const cvf::StructGridInterface* grid = selectedGrid();

    RimCase* rimCase = nullptr;
    this->firstAncestorOrThisOfTypeAsserted(rimCase);
    const cvf::StructGridInterface* mainGrid = RigReservoirGridTools::mainGrid(rimCase);

    Rim3dView* rimView = nullptr;
    this->firstAncestorOrThisOfTypeAsserted(rimView);
    auto actCellInfo = RigReservoirGridTools::activeCellInfo(rimView);

    if (grid == mainGrid && actCellInfo)
    {
        cvf::Vec3st min, max;
        actCellInfo->IJKBoundingBox(min, max);

        // Adjust to Eclipse indexing
        min.x() = min.x() + 1;
        min.y() = min.y() + 1;
        min.z() = min.z() + 1;

        max.x() = max.x() + 1;
        max.y() = max.y() + 1;
        max.z() = max.z() + 1;

        startIndexI.uiCapability()->setUiName(QString("I Start (%1)").arg(min.x()));
        startIndexJ.uiCapability()->setUiName(QString("J Start (%1)").arg(min.y()));
        startIndexK.uiCapability()->setUiName(QString("K Start (%1)").arg(min.z()));
        cellCountI.uiCapability()->setUiName(QString("  Width (%1)").arg(max.x() - min.x() + 1));
        cellCountJ.uiCapability()->setUiName(QString("  Width (%1)").arg(max.y() - min.y() + 1));
        cellCountK.uiCapability()->setUiName(QString("  Width (%1)").arg(max.z() - min.z() + 1));
    }
    else
    {
        startIndexI.uiCapability()->setUiName(QString("I Start"));
        startIndexJ.uiCapability()->setUiName(QString("J Start"));
        startIndexK.uiCapability()->setUiName(QString("K Start"));
        cellCountI.uiCapability()->setUiName(QString("  Width"));
        cellCountJ.uiCapability()->setUiName(QString("  Width"));
        cellCountK.uiCapability()->setUiName(QString("  Width"));
    }
    
    uiOrdering.add(&name);
    uiOrdering.add(&filterMode);
    uiOrdering.add(&m_gridIndex);
    uiOrdering.add(&propagateToSubGrids);
    uiOrdering.add(&startIndexI);
    uiOrdering.add(&cellCountI);
    uiOrdering.add(&startIndexJ);
    uiOrdering.add(&cellCountJ);
    uiOrdering.add(&startIndexK);
    uiOrdering.add(&cellCountK);

    if(RiaApplication::enableDevelopmentFeatures())
    {
        auto group = uiOrdering.addNewGroup("Single Cell Filtering (TEST)");
        group->setCollapsedByDefault(true);

        group->add(&m_useIndividualCellIndices);
        group->add(&m_individualCellIndices);

        m_individualCellIndices.uiCapability()->setUiReadOnly(!m_useIndividualCellIndices);
    }
    uiOrdering.skipRemainingFields(true);
}