(#395) Added sync of Eclipse property filters

This commit is contained in:
Magne Sjaastad 2015-08-27 15:45:22 +02:00
parent eaa5cc90a8
commit 81ce665883
8 changed files with 163 additions and 20 deletions

View File

@ -20,9 +20,10 @@
#include "RimEclipsePropertyFilterCollection.h"
#include "RimEclipseView.h"
#include "RimEclipseResultDefinition.h"
#include "RimEclipseCellColors.h"
#include "RimEclipseResultDefinition.h"
#include "RimEclipseView.h"
#include "RimManagedViewCollection.h"
#include "cafPdmUiEditorHandle.h"
@ -69,12 +70,7 @@ void RimEclipsePropertyFilterCollection::fieldChangedByUi(const caf::PdmFieldHan
{
this->updateUiIconFromToggleField();
RimEclipseView* view = NULL;
this->firstAnchestorOrThisOfType(view);
CVF_ASSERT(view);
view->scheduleGeometryRegen(PROPERTY_FILTERED);
view->scheduleCreateDisplayModelAndRedraw();
updateDisplayModel();
}
//--------------------------------------------------------------------------------------------------
@ -136,3 +132,19 @@ caf::PdmFieldHandle* RimEclipsePropertyFilterCollection::objectToggleField()
{
return &active;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilterCollection::updateDisplayModel()
{
RimEclipseView* view = NULL;
this->firstAnchestorOrThisOfType(view);
CVF_ASSERT(view);
view->scheduleGeometryRegen(PROPERTY_FILTERED);
view->scheduleCreateDisplayModelAndRedraw();
// Notify managed views of range filter change in master view
view->managedViewCollection()->updatePropertyFilters();
}

View File

@ -45,6 +45,8 @@ public:
void loadAndInitializePropertyFilters();
void updateDisplayModel();
// Overridden methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);

View File

@ -101,9 +101,9 @@ RimEclipseView::RimEclipseView()
m_rangeFilterCollection = new RimCellRangeFilterCollection();
m_rangeFilterCollection.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&propertyFilterCollection, "PropertyFilters", "Property Filters", "", "", "");
propertyFilterCollection = new RimEclipsePropertyFilterCollection();
propertyFilterCollection.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_propertyFilterCollection, "PropertyFilters", "Property Filters", "", "", "");
m_propertyFilterCollection = new RimEclipsePropertyFilterCollection();
m_propertyFilterCollection.uiCapability()->setUiHidden(true);
// Visualization fields
CAF_PDM_InitField(&showMainGrid, "ShowMainGrid", true, "Show Main Grid", "", "", "");
@ -134,7 +134,7 @@ RimEclipseView::~RimEclipseView()
delete this->cellEdgeResult();
delete m_rangeFilterCollection;
delete propertyFilterCollection();
delete m_propertyFilterCollection;
delete wellCollection();
delete faultCollection();
@ -237,7 +237,7 @@ void RimEclipseView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
scheduleCreateDisplayModelAndRedraw();
}
else if (changedField == &propertyFilterCollection)
else if (changedField == &m_propertyFilterCollection)
{
m_reservoirGridPartManager->scheduleGeometryRegen(PROPERTY_FILTERED);
@ -678,7 +678,7 @@ void RimEclipseView::loadDataAndUpdate()
updateViewerWidget();
this->propertyFilterCollection()->loadAndInitializePropertyFilters();
this->m_propertyFilterCollection()->loadAndInitializePropertyFilters();
this->faultCollection()->setReservoirView(this);
this->faultCollection()->syncronizeFaults();
@ -1496,3 +1496,41 @@ void RimEclipseView::addWellPathsToScene(cvf::Scene* scene,
scene->addModel(wellPathModelBasicList.p());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipsePropertyFilterCollection* RimEclipseView::propertyFilterCollection()
{
if (m_overridePropertyFilterCollection)
{
return m_overridePropertyFilterCollection;
}
else
{
return m_propertyFilterCollection;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const RimEclipsePropertyFilterCollection* RimEclipseView::propertyFilterCollection() const
{
if (m_overridePropertyFilterCollection)
{
return m_overridePropertyFilterCollection;
}
else
{
return m_propertyFilterCollection;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseView::setOverridePropertyFilterCollection(RimEclipsePropertyFilterCollection* pfc)
{
m_overridePropertyFilterCollection = pfc;
}

View File

@ -89,8 +89,6 @@ public:
caf::PdmChildField<RimCellEdgeColors*> cellEdgeResult;
caf::PdmChildField<RimEclipseFaultColors*> faultResultSettings;
caf::PdmChildField<RimEclipsePropertyFilterCollection*> propertyFilterCollection;
caf::PdmChildField<RimEclipseWellCollection*> wellCollection;
caf::PdmChildField<RimFaultCollection*> faultCollection;
@ -102,6 +100,10 @@ public:
// Access internal objects
RimEclipsePropertyFilterCollection* propertyFilterCollection();
const RimEclipsePropertyFilterCollection* propertyFilterCollection() const;
void setOverridePropertyFilterCollection(RimEclipsePropertyFilterCollection* pfc);
RimReservoirCellResultsStorage* currentGridCellResults();
RigActiveCellInfo* currentActiveCellInfo();
RimEclipseCellColors* currentFaultResultColors();
@ -162,6 +164,9 @@ private:
virtual RimCase* ownerCase();
caf::PdmChildField<RimEclipsePropertyFilterCollection*> m_propertyFilterCollection;
caf::PdmPointer<RimEclipsePropertyFilterCollection> m_overridePropertyFilterCollection;
caf::PdmPointer<RimEclipseCase> m_reservoir;
cvf::ref<RivReservoirViewPartMgr> m_reservoirGridPartManager;

View File

@ -187,3 +187,38 @@ void RimManagedViewCollection::updateRangeFilters()
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimManagedViewCollection::updatePropertyFilters()
{
for (size_t i = 0; i < managedViews.size(); i++)
{
RimManagedViewConfig* managedViewConfig = managedViews[i];
if (managedViewConfig->managedView())
{
if (managedViewConfig->syncPropertyFilters())
{
RimView* rimView = managedViewConfig->managedView();
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
if (eclipeView)
{
eclipeView->scheduleGeometryRegen(PROPERTY_FILTERED);
eclipeView->scheduleCreateDisplayModelAndRedraw();
}
/*
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
if (geoView)
{
geoView->scheduleGeometryRegen(RANGE_FILTERED);
geoView->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
geoView->scheduleCreateDisplayModelAndRedraw();
}
*/
}
}
}
}

View File

@ -47,4 +47,5 @@ public:
void updateCellResult();
void updateRangeFilters();
void updatePropertyFilters();
};

View File

@ -23,6 +23,8 @@
#include "RimCase.h"
#include "RimCellRangeFilterCollection.h"
#include "RimEclipsePropertyFilterCollection.h"
#include "RimEclipseView.h"
#include "RimManagedViewCollection.h"
#include "RimProject.h"
#include "RimView.h"
@ -43,10 +45,11 @@ RimManagedViewConfig::RimManagedViewConfig(void)
CAF_PDM_InitFieldNoDefault(&managedView, "ManagedView", "Managed View", "", "", "");
managedView.uiCapability()->setUiChildrenHidden(true);
CAF_PDM_InitField(&syncCamera, "SyncCamera", true, "Sync Camera", "", "", "");
CAF_PDM_InitField(&syncCellResult, "SyncCellResult", true, "Sync Cell Result", "", "", "");
CAF_PDM_InitField(&syncTimeStep, "SyncTimeStep", true, "Sync Time Step", "", "", "");
CAF_PDM_InitField(&syncRangeFilters,"SyncRangeFilters", true, "Sync Range Filters", "", "", "");
CAF_PDM_InitField(&syncCamera, "SyncCamera", true, "Sync Camera", "", "", "");
CAF_PDM_InitField(&syncCellResult, "SyncCellResult", true, "Sync Cell Result", "", "", "");
CAF_PDM_InitField(&syncTimeStep, "SyncTimeStep", true, "Sync Time Step", "", "", "");
CAF_PDM_InitField(&syncRangeFilters, "SyncRangeFilters", true, "Sync Range Filters", "", "", "");
CAF_PDM_InitField(&syncPropertyFilters, "SyncPropertyFilters", true,"Sync Property Filters", "", "", "");
}
//--------------------------------------------------------------------------------------------------
@ -154,6 +157,16 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
managedView->rangeFilterCollection()->updateUiUpdateDisplayModel();
}
}
else if (changedField == &syncPropertyFilters)
{
configureOverrides();
RimEclipseView* eclipseView = managedEclipseView();
if (eclipseView)
{
eclipseView->propertyFilterCollection()->updateDisplayModel();
}
}
else if (changedField == &managedView)
{
configureOverrides();
@ -177,6 +190,12 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
RimView* rimView = dynamic_cast<RimView*>(prevValue);
rimView->setOverrideRangeFilterCollection(NULL);
rimView->rangeFilterCollection()->updateUiUpdateDisplayModel();
RimEclipseView* rimEclipseView = dynamic_cast<RimEclipseView*>(rimView);
if (rimEclipseView)
{
rimEclipseView->setOverridePropertyFilterCollection(NULL);
}
}
}
}
@ -199,6 +218,23 @@ void RimManagedViewConfig::configureOverrides()
{
managedView->setOverrideRangeFilterCollection(NULL);
}
RimEclipseView* masterEclipseView = dynamic_cast<RimEclipseView*>(masterView);
if (masterEclipseView)
{
RimEclipseView* eclipseView = managedEclipseView();
if (eclipseView)
{
if (syncPropertyFilters)
{
eclipseView->setOverridePropertyFilterCollection(masterEclipseView->propertyFilterCollection());
}
else
{
eclipseView->setOverridePropertyFilterCollection(NULL);
}
}
}
}
}
@ -210,3 +246,13 @@ void RimManagedViewConfig::initAfterRead()
configureOverrides();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseView* RimManagedViewConfig::managedEclipseView()
{
RimView* rimView = managedView;
return dynamic_cast<RimEclipseView*>(rimView);
}

View File

@ -24,6 +24,7 @@
#include "cafPdmPtrField.h"
class RimView;
class RimEclipseView;
//==================================================================================================
///
@ -43,6 +44,7 @@ public:
caf::PdmField<bool> syncCellResult;
caf::PdmField<bool> syncTimeStep;
caf::PdmField<bool> syncRangeFilters;
caf::PdmField<bool> syncPropertyFilters;
protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
@ -53,4 +55,6 @@ protected:
private:
void allVisibleViews(std::vector<RimView*>& views);
void configureOverrides();
RimEclipseView* managedEclipseView();
};