+ // mkr : PAL10770 -->
+ myLastStudyID = myStudyID;
+
+ CORBA::Object_ptr anObject = name_service->Resolve("/Kernel/Session");
+ if ( !CORBA::is_nil(anObject) ) {
+ SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);
+ if ( !CORBA::is_nil(aSession) ) {
+ int aStudyID = aSession->GetActiveStudyId();
+ if ( theId != aStudyID && aStudyID > 0) { // mkr : IPAL12128
+ MESSAGE("Warning : given study ID theId="<<theId<<" is wrong and will be replaced by the value "<<aStudyID);
+ myStudyID = aStudyID;
+ }
+ else
+ myStudyID = theId; // mkr : IPAL12128
+ }
+ }
+
+ if ( isNewStudy(myLastStudyID,myStudyID) ) {
+ if (CORBA::is_nil(myGeomEngine)) setGeomEngine();
+ string anEngine = _orb->object_to_string( myGeomEngine );
+
+ CORBA::Object_var anObj = name_service->Resolve("/myStudyManager");
+ if ( !CORBA::is_nil(anObj) ) {
+ SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObj);
+ if ( !CORBA::is_nil(aStudyManager) ) {
+ _PTR(Study) aDSStudy = ClientFactory::Study(aStudyManager->GetStudyByID(myStudyID));
+ if ( aDSStudy ) {
+ _PTR(SComponent) aSCO = aDSStudy->FindComponent(myGeomEngine->ComponentDataType());
+ if ( aSCO ) {
+ _PTR(StudyBuilder) aBuilder = aDSStudy->NewBuilder();
+ if ( aBuilder ) aBuilder->LoadWith( aSCO, anEngine );
+ }
+ }
+ }
+ }
+ }
+ // mkr : PAL10770 <--
+}
+
+//=============================================================================
+// CreateListOfGO:
+//=============================================================================
+GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfGO()
+{
+ MESSAGE("GEOM_Superv_i::CreateListOfGO()");
+ GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>();
+ return aListPtr->_this();
+}
+
+//=============================================================================
+// AddItemToListOfGO:
+//=============================================================================
+void GEOM_Superv_i::AddItemToListOfGO(GEOM::GEOM_List_ptr& theList,
+ GEOM::GEOM_Object_ptr theObject)
+{
+ MESSAGE("GEOM_Superv_i::AddItemToListOfGO(...)");
+ if (GEOM_List_i<GEOM::ListOfGO>* aList =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(theList, myPOA).in())) {
+ aList->AddObject(theObject);
+ MESSAGE(" NewLength = "<<aList->GetList().length());
+ }
+}
+
+//=============================================================================
+// CreateListOfLong:
+//=============================================================================
+GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfLong()
+{
+ MESSAGE("GEOM_Superv_i::CreateListOfLong()");
+ GEOM_List_i<GEOM::ListOfLong>* aListPtr = new GEOM_List_i<GEOM::ListOfLong>();
+ return aListPtr->_this();
+}
+
+//=============================================================================
+// AddItemToListOfLong:
+//=============================================================================
+void GEOM_Superv_i::AddItemToListOfLong(GEOM::GEOM_List_ptr& theList,
+ CORBA::Long theObject)
+{
+ MESSAGE("GEOM_Superv_i::AddItemToListOfLong(...)");
+ if (GEOM_List_i<GEOM::ListOfLong>* aList =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theList, myPOA).in())) {
+ aList->AddObject(theObject);
+ MESSAGE(" NewLength = "<<aList->GetList().length());
+ }
+}
+
+//=============================================================================
+// CreateListOfDouble:
+//=============================================================================
+GEOM::GEOM_List_ptr GEOM_Superv_i::CreateListOfDouble()
+{
+ MESSAGE("GEOM_Superv_i::CreateListOfDouble()");
+ GEOM_List_i<GEOM::ListOfDouble>* aListPtr = new GEOM_List_i<GEOM::ListOfDouble>();
+ return aListPtr->_this();
+}
+
+//=============================================================================
+// AddItemToListOfDouble:
+//=============================================================================
+void GEOM_Superv_i::AddItemToListOfDouble(GEOM::GEOM_List_ptr& theList,
+ CORBA::Double theObject)
+{
+ MESSAGE("GEOM_Superv_i::AddItemToListOfDouble(...)");
+ if (GEOM_List_i<GEOM::ListOfDouble>* aList =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfDouble>*>(GetServant(theList, myPOA).in())) {
+ aList->AddObject(theObject);
+ MESSAGE(" NewLength = "<<aList->GetList().length());
+ }