+ onActivePartChanged(ObjectPtr());
+ }
+ }
+}
+
+//***************************************************
+void XGUI_ObjectsBrowser::onContextMenuRequested(QContextMenuEvent* theEvent)
+{
+ myObjectsList = myTreeView->selectedObjects();
+ bool toEnable = myObjectsList.size() == 1;
+ foreach(QAction* aCmd, actions())
+ {
+ aCmd->setEnabled(toEnable);
+ }
+ emit contextMenuRequested(theEvent);
+}
+
+//***************************************************
+void XGUI_ObjectsBrowser::onLabelContextMenuRequested(const QPoint& thePnt)
+{
+ myObjectsList.clear();
+ //Empty feature pointer means that selected root document
+ myObjectsList.append(ObjectPtr());
+
+ foreach(QAction* aCmd, actions())
+ {
+ aCmd->setEnabled(true);
+ }
+ QContextMenuEvent aEvent(QContextMenuEvent::Mouse, thePnt, myActiveDocLbl->mapToGlobal(thePnt));
+ emit contextMenuRequested(&aEvent);
+}
+
+//***************************************************
+void XGUI_ObjectsBrowser::onEditItem()
+{
+ if (myObjectsList.size() > 0) {
+ ObjectPtr aFeature = myObjectsList.first();
+ if (aFeature) { // Selection happens in TreeView
+ // Find index which corresponds the feature
+ QModelIndex aIndex;
+ foreach(QModelIndex aIdx, selectedIndexes())
+ {
+ ObjectPtr aFea = dataModel()->object(aIdx);
+ if (dataModel()->object(aIdx)->isSame(aFeature)) {
+ aIndex = aIdx;
+ break;
+ }
+ }
+ if (aIndex.isValid()) {
+ myTreeView->setCurrentIndex(aIndex);
+ myTreeView->edit(aIndex);
+ }
+ } else { //Selection happens in Upper label
+ myActiveDocLbl->setReadOnly(false);
+ myActiveDocLbl->setFocus();
+ myActiveDocLbl->selectAll();
+ myActiveDocLbl->grabMouse();
+ myActiveDocLbl->setProperty("OldText", myActiveDocLbl->text());
+ }
+ }
+}
+
+//***************************************************
+void XGUI_ObjectsBrowser::onSelectionChanged()
+{
+ myObjectsList = myTreeView->selectedObjects();
+ emit selectionChanged();
+}
+
+//***************************************************
+void XGUI_ObjectsBrowser::rebuildDataTree()
+{
+ myDocModel->rebuildDataTree();
+ update();
+}
+
+//***************************************************
+void XGUI_ObjectsBrowser::setObjectsSelected(const QObjectPtrList& theObjects)
+{
+ QList<QModelIndex> theIndexes;
+ QItemSelectionModel* aSelectModel = myTreeView->selectionModel();
+ aSelectModel->clear();
+
+ foreach(ObjectPtr aFeature, theObjects)
+ {
+ QModelIndex aIndex = myDocModel->objectIndex(aFeature);
+ if (aIndex.isValid()) {
+ aSelectModel->select(aIndex, QItemSelectionModel::Select);