[commit] r2414 - in trunk/GME: GMEActiveBrowser Mga

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue Jan 14 16:29:51 CST 2014


Author: ksmyth
Date: Tue Jan 14 16:29:51 2014
New Revision: 2414

Log:
TreeBrowser: better error messages for failed copy/paste or drag/drop (META-2548)

Modified:
   trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp
   trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp
   trunk/GME/GMEActiveBrowser/StdAfx.cpp
   trunk/GME/Mga/MgaCheck.cpp

Modified: trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp
==============================================================================
--- trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp	Fri Jan 10 16:21:02 2014	(r2413)
+++ trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp	Tue Jan 14 16:29:51 2014	(r2414)
@@ -2620,7 +2620,7 @@
 					if( m_TreeAggregate.DoDrop( DRAGOP_COPY, &OleDataObject, CPoint( 0, 0))) {
 						// what about set focus back
 						m_TreeAggregate.SetFocus();
-					} else msg = _T("Cannot paste data from the clipboard. Please select valid target item.");
+					}
 				} else msg = _T("Cannot recover data from the clipboard.");
 
 				if( !msg.IsEmpty()) MessageBox( msg, _T("Paste Error"), MB_ICONERROR);

Modified: trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp
==============================================================================
--- trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp	Fri Jan 10 16:21:02 2014	(r2413)
+++ trunk/GME/GMEActiveBrowser/AggregateTreeCtrl.cpp	Tue Jan 14 16:29:51 2014	(r2414)
@@ -826,10 +826,11 @@
 
 					// first move the selected folders. The order matters 
 					// since the NEWCHILD event must be the last one.
-					if( ccpDroppedFolders) COMTHROW( ccpTargetFolder->MoveFolders( ccpDroppedFolders, &ccpNewFolders));
+					if (ccpDroppedFolders)
+						ccpTargetFolder->__MoveFolders(ccpDroppedFolders, &ccpNewFolders);
 
 					// then move the selected fcos
-					COMTHROW( ccpTargetFolder->MoveFCOs( ccpDroppedFCOs, &ccpNewFCOs));
+					ccpTargetFolder->__MoveFCOs(ccpDroppedFCOs, &ccpNewFCOs);
 
 					// this ensures that the new parent is notified in the right time and place
 					// a NEWCHILD event is sent to the target folder
@@ -840,10 +841,11 @@
 				case DRAGOP_COPY:
 				{
 					CComPtr<IMgaFolders> ccpNewFolders;
-					if( ccpDroppedFolders) COMTHROW(ccpTargetFolder->CopyFolders(ccpDroppedFolders,&ccpNewFolders));
+					if (ccpDroppedFolders)
+						ccpTargetFolder->__CopyFolders(ccpDroppedFolders,&ccpNewFolders);
 
 					CComPtr<IMgaFCOs> ccpNewFCOs;
-					COMTHROW(ccpTargetFolder->CopyFCOs(ccpDroppedFCOs,&ccpNewFCOs));
+					ccpTargetFolder->__CopyFCOs(ccpDroppedFCOs,&ccpNewFCOs);
 					
 					MGACOLL_ITERATE(IMgaFCO, ccpNewFCOs) { // for smart copy related entries
 						MakeSureGUIDIsUniqueForSmartCopy( CComPtr<IMgaFCO>( MGACOLL_ITER) );
@@ -983,9 +985,8 @@
 								COMTHROW(ccpFCO->get_MetaRole(&ccpMetaRole));
 								CComPtr<IMgaMetaFCO> ccpKind;
 								COMTHROW(ccpFCO->get_Meta(&ccpKind));
-								CComPtr<IMgaMetaRole> ccpNewRole;
-
-								COMTHROW(ccpMgaResolver->get_RoleByMeta(ccpTargetModel,ccpKind,OBJTYPE_NULL,ccpMetaRole,NULL,&ccpNewRole));
+								
+								IMgaMetaRolePtr ccpNewRole = ccpMgaResolver->RoleByMeta[ccpTargetModel,ccpKind,OBJTYPE_NULL,ccpMetaRole,NULL];
 								COMTHROW(ccpMetaRoles->Append(ccpNewRole));
 							}
 							MGACOLL_ITERATE_END;
@@ -1014,9 +1015,9 @@
 						COMTHROW(ccpFCO->get_MetaRole(&ccpMetaRole));
 						CComPtr<IMgaMetaFCO> ccpKind;
 						COMTHROW(ccpFCO->get_Meta(&ccpKind));
-						CComPtr<IMgaMetaRole> ccpNewRole;
+						IMgaMetaRolePtr ccpNewRole;
 
-						COMTHROW(ccpMgaResolver->get_RoleByMeta(ccpTargetModel,ccpKind,OBJTYPE_NULL,ccpMetaRole,NULL,&ccpNewRole));
+						ccpNewRole = ccpMgaResolver->RoleByMeta[ccpTargetModel,ccpKind,OBJTYPE_NULL,ccpMetaRole,NULL];
 						COMTHROW(ccpMetaRoles->Append(ccpNewRole));
 					}
 					MGACOLL_ITERATE_END;

Modified: trunk/GME/GMEActiveBrowser/StdAfx.cpp
==============================================================================
--- trunk/GME/GMEActiveBrowser/StdAfx.cpp	Fri Jan 10 16:21:02 2014	(r2413)
+++ trunk/GME/GMEActiveBrowser/StdAfx.cpp	Tue Jan 14 16:29:51 2014	(r2414)
@@ -6,3 +6,4 @@
 
 #import "MetaLib.tlb" implementation_only no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
 #import "MgaLib.tlb" implementation_only no_namespace raw_method_prefix("") high_method_prefix("__") no_registry
+#import "MgaUtilLib.tlb" implementation_only no_namespace raw_method_prefix("") high_method_prefix("__") no_registry

Modified: trunk/GME/Mga/MgaCheck.cpp
==============================================================================
--- trunk/GME/Mga/MgaCheck.cpp	Fri Jan 10 16:21:02 2014	(r2413)
+++ trunk/GME/Mga/MgaCheck.cpp	Tue Jan 14 16:29:51 2014	(r2414)
@@ -28,9 +28,28 @@
 //#pragma bookmark todo: put back stuff that needs testing
 	}
 	for(i = list.begin(); i != list.end(); ++i) {
-		if(((*i).first).IsDeleted()) continue;
-		if((*i).second & CHK_ILLEGAL) { COMTHROW(E_MGA_OP_REFUSED); }
-		else if((*i).second & CHK_SELF) { COMTHROW(ObjForCore((*i).first)->Check()); }
+		if (((*i).first).IsDeleted())
+			continue;
+		if ((*i).second & CHK_ILLEGAL)
+		{
+			COMTHROW(E_MGA_OP_REFUSED);
+		}
+		else if((*i).second & CHK_SELF)
+		{
+			HRESULT hr = ObjForCore((*i).first)->Check();
+			if (FAILED(hr))
+			{
+				_bstr_t err;
+				if (GetErrorInfo(err.GetAddress()))
+				{
+					throw_com_error(hr, err);
+				}
+				else
+				{
+					COMTHROW(hr);
+				}
+			}
+		}
 	}
 	list.clear();
 }
@@ -221,8 +240,15 @@
 								// ok, if current element and its parent are both rootfolders
 								stillok = COM_EQUAL( metaf, parentmf) && COM_EQUAL( metaf, mf);
 							}
+							if (!stillok)
+								COMTHROW(E_MGA_META_VIOLATION);
+					}
+					else
+					{
+						_bstr_t err = L"'";
+						err += parentmf->Name + "' cannot contain '" + metaf->Name + L"'";
+						throw_com_error(E_MGA_META_VIOLATION, err);
 					}
-					if(!stillok) COMTHROW(E_MGA_META_VIOLATION);
 				}
 				MGACOLL_ITERATE_END;
 			}
@@ -259,7 +285,13 @@
 				MGACOLL_ITERATE(IMgaMetaFCO, kinds) {
 				  if(COM_EQUAL(meta, MGACOLL_ITER)) break;
 				}
-				if(MGACOLL_AT_END) COMTHROW(E_MGA_META_VIOLATION);
+				if (MGACOLL_AT_END)
+				{
+					IMgaMetaFCOPtr r = meta.p;
+					_bstr_t err = L"'";
+					err += r->Name + "' cannot be contained in the root folder";
+					throw_com_error(E_MGA_META_VIOLATION, err);
+				}
 				MGACOLL_ITERATE_END;
 			}
 			else if(parenttyp == OBJTYPE_NULL) {


More information about the gme-commit mailing list