diff --git a/ApplicationCode/Commands/FractureCommands/RicNewFractureModelFeature.cpp b/ApplicationCode/Commands/FractureCommands/RicNewFractureModelFeature.cpp index 1e1af2574c..88d9570fa5 100644 --- a/ApplicationCode/Commands/FractureCommands/RicNewFractureModelFeature.cpp +++ b/ApplicationCode/Commands/FractureCommands/RicNewFractureModelFeature.cpp @@ -117,12 +117,7 @@ void RicNewFractureModelFeature::setupActionLook( QAction* actionToSetup ) //-------------------------------------------------------------------------------------------------- bool RicNewFractureModelFeature::isCommandEnabled() { - if ( selectedFractureModelCollection() ) - { - return true; - } - - return false; + return selectedFractureModelCollection() != nullptr; } //-------------------------------------------------------------------------------------------------- @@ -130,35 +125,26 @@ bool RicNewFractureModelFeature::isCommandEnabled() //-------------------------------------------------------------------------------------------------- RimFractureModelCollection* RicNewFractureModelFeature::selectedFractureModelCollection() { - std::vector allSelectedItems; - caf::SelectionManager::instance()->selectedItems( allSelectedItems ); - if ( allSelectedItems.size() != 1u ) return nullptr; + std::vector selectedItems; + caf::SelectionManager::instance()->selectedItems( selectedItems ); + if ( selectedItems.size() != 1u ) return nullptr; - caf::PdmUiItem* pdmUiItem = allSelectedItems.front(); + caf::PdmUiItem* pdmUiItem = selectedItems.front(); - RimFractureModelCollection* objToFind = nullptr; - - caf::PdmObjectHandle* objHandle = dynamic_cast( pdmUiItem ); + RimFractureModelCollection* fractureModelCollection = nullptr; + caf::PdmObjectHandle* objHandle = dynamic_cast( pdmUiItem ); if ( objHandle ) { - objHandle->firstAncestorOrThisOfType( objToFind ); - } + objHandle->firstAncestorOrThisOfType( fractureModelCollection ); + + if ( fractureModelCollection ) return fractureModelCollection; + + RimWellPath* wellPath = dynamic_cast( objHandle ); + if ( wellPath ) return wellPath->fractureModelCollection(); - if ( objToFind == nullptr ) - { - std::vector wellPaths; - caf::SelectionManager::instance()->objectsByType( &wellPaths ); - if ( !wellPaths.empty() ) - { - return wellPaths[0]->fractureModelCollection(); - } RimWellPathCompletions* completions = caf::SelectionManager::instance()->selectedItemOfType(); - if ( completions ) - { - return completions->fractureModelCollection(); - } + if ( completions ) return completions->fractureModelCollection(); } - - return objToFind; + return nullptr; } diff --git a/ApplicationCode/Commands/WellPathCommands/RicNewWellPathAttributeFeature.cpp b/ApplicationCode/Commands/WellPathCommands/RicNewWellPathAttributeFeature.cpp index bd231e717e..199c1dc6e3 100644 --- a/ApplicationCode/Commands/WellPathCommands/RicNewWellPathAttributeFeature.cpp +++ b/ApplicationCode/Commands/WellPathCommands/RicNewWellPathAttributeFeature.cpp @@ -45,11 +45,13 @@ bool RicNewWellPathAttributeFeature::isCommandEnabled() } { - if ( caf::SelectionManager::instance()->selectedItemAncestorOfType() ) + if ( caf::SelectionManager::instance()->selectedItemOfType() || + caf::SelectionManager::instance()->selectedItemOfType() ) { return true; } } + return false; } diff --git a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp index 7aab7a29d5..f8db0cfee9 100644 --- a/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp +++ b/ApplicationCode/ProjectDataModel/RimContextCommandBuilder.cpp @@ -71,6 +71,7 @@ #include "RimFormationNames.h" #include "RimFormationNamesCollection.h" #include "RimFractureModel.h" +#include "RimFractureModelCollection.h" #include "RimFractureModelPlot.h" #include "RimFractureTemplate.h" #include "RimFractureTemplateCollection.h" @@ -397,6 +398,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection() menuBuilder << "RicNewPerforationIntervalFeature"; menuBuilder << "RicNewFishbonesSubsFeature"; menuBuilder << "RicNewWellPathFractureFeature"; + menuBuilder << "RicNewFractureModelFeature"; menuBuilder.subMenuEnd(); menuBuilder << "RicCreateTemporaryLgrFeature"; menuBuilder.addSeparator(); @@ -431,10 +433,15 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection() } else if ( dynamic_cast( firstUiItem ) ) { + menuBuilder << "RicNewFractureModelFeature"; menuBuilder << "RicNewFractureModelPlotFeature"; menuBuilder << "RicImportFaciesFeature"; menuBuilder << "RicImportElasticPropertiesFeature"; } + else if ( dynamic_cast( firstUiItem ) ) + { + menuBuilder << "RicNewFractureModelFeature"; + } else if ( dynamic_cast( firstUiItem ) ) { menuBuilder << "RicExportFractureModelPlotToFileFeature";