diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index 7f9dbb9f79..67b1c04617 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -526,6 +526,8 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas uiModel->addToParentAndBuildUiItems(projectTreeItem, position, rimResultReservoir); + RiuMainWindow::instance()->setCurrentObjectInTreeView(riv->cellResult()); + return true; } @@ -561,6 +563,8 @@ bool RiaApplication::openInputEclipseCase(const QString& caseName, const QString uiModel->addToParentAndBuildUiItems(projectTreeItem, position, rimInputReservoir); + RiuMainWindow::instance()->setCurrentObjectInTreeView(riv->cellResult()); + return true; } @@ -1374,6 +1378,7 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames) // When reading active cell info, only the total cell count is tested for consistency RimResultCase* mainResultCase = NULL; std::vector< std::vector > mainCaseGridDimensions; + RimIdenticalGridCaseGroup* gridCaseGroup = NULL; { QString firstFileName = fileNames[0]; @@ -1392,10 +1397,8 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames) rimResultReservoir->readGridDimensions(mainCaseGridDimensions); - m_project->reservoirs.push_back(rimResultReservoir); - m_project->moveEclipseCaseIntoCaseGroup(rimResultReservoir); - mainResultCase = rimResultReservoir; + gridCaseGroup = m_project->createIdenticalCaseGroupFromMainCase(mainResultCase); } caf::ProgressInfo info(fileNames.size(), "Reading Active Cell data"); @@ -1418,8 +1421,7 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames) { if (rimResultReservoir->openAndReadActiveCellData(mainResultCase->reservoirData())) { - m_project->reservoirs.push_back(rimResultReservoir); - m_project->moveEclipseCaseIntoCaseGroup(rimResultReservoir); + m_project->insertCaseInCaseGroup(gridCaseGroup, rimResultReservoir); } else { @@ -1434,7 +1436,15 @@ bool RiaApplication::addEclipseCases(const QStringList& fileNames) info.setProgress(i); } - onProjectOpenedOrClosed(); + RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel(); + caf::PdmUiTreeItem* projectTreeItem = uiModel->treeItemRoot(); + + // New case is inserted before the last item, the script item + int position = projectTreeItem->childCount() - 1; + + uiModel->addToParentAndBuildUiItems(projectTreeItem, position, gridCaseGroup); + + RiuMainWindow::instance()->setCurrentObjectInTreeView(gridCaseGroup->statisticsCaseCollection()); return true; } diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 4238464a60..011fb85e7b 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -130,6 +130,26 @@ QString RimProject::projectFileVersionString() const return m_projectFileVersionString; } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimIdenticalGridCaseGroup* RimProject::createIdenticalCaseGroupFromMainCase(RimCase* mainCase) +{ + CVF_ASSERT(mainCase); + + RigCaseData* rigEclipseCase = mainCase->reservoirData(); + RigMainGrid* equalGrid = registerCaseInGridCollection(rigEclipseCase); + CVF_ASSERT(equalGrid); + + RimIdenticalGridCaseGroup* group = new RimIdenticalGridCaseGroup; + group->createAndAppendStatisticsCase(); + group->addCase(mainCase); + caseGroups().push_back(group); + + return group; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimProject.h b/ApplicationCode/ProjectDataModel/RimProject.h index 419e376c00..6763277e79 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.h +++ b/ApplicationCode/ProjectDataModel/RimProject.h @@ -48,6 +48,7 @@ public: void close(); + RimIdenticalGridCaseGroup* createIdenticalCaseGroupFromMainCase(RimCase* mainCase); void insertCaseInCaseGroup(RimIdenticalGridCaseGroup* caseGroup, RimCase* rimReservoir); void moveEclipseCaseIntoCaseGroup(RimCase* rimReservoir);