diff --git a/src/UI/PropertyModel.cc b/src/UI/PropertyModel.cc
index c0068cbd25eb4eb56cc5d7938864599bc8a90fd8..a882df3e4f8a9342d900b65a2c4af9a08fc50eab 100644
--- a/src/UI/PropertyModel.cc
+++ b/src/UI/PropertyModel.cc
@@ -285,3 +285,13 @@ PropertyModel::flags(const QModelIndex &index) const noexcept
 {
     return QAbstractItemModel::flags(index);
 }
+
+QTreeView *
+PropertyModel::getView(QWidget *parent, PropertyModel *ptr) noexcept
+{
+    QTreeView *view = new QTreeView(parent);
+    view->setModel(ptr);
+    view->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
+    view->expandAll();
+    return view;
+}
diff --git a/src/UI/PropertyModel.hh b/src/UI/PropertyModel.hh
index 2a4d1815b27f4e3891128fce5769298a11844bd0..f1802d85e494c8b1c6deccf998b5a44b09720ba2 100644
--- a/src/UI/PropertyModel.hh
+++ b/src/UI/PropertyModel.hh
@@ -67,6 +67,8 @@ public:
         root->setKey(object.getElementName());
     }
 
+    [[nodiscard]] static QTreeView *getView(QWidget *parent, PropertyModel *) noexcept;
+
     QVariant data(const QModelIndex &, int role) const noexcept override;
     bool setData(const QModelIndex &, const QVariant &v, int r = Qt::EditRole) noexcept override;
 
diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc
index 95ba41cfaf0132077932f253acfb359d960ced4c..df87483c241107d6dc88297b6e80344bfd844916 100644
--- a/src/UI/VivyDocumentView.cc
+++ b/src/UI/VivyDocumentView.cc
@@ -167,10 +167,7 @@ void
 VivyDocumentView::openProperties() noexcept
 {
     propertyModel   = std::make_unique<PropertyModel>(*document.get());
-    QTreeView *view = new QTreeView(property);
-    view->setModel(propertyModel.get());
-    view->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
-    view->expandAll();
+    QTreeView *view = PropertyModel::getView(property, propertyModel.get());
 
     if (!property) {
         property = new UnclosableDockWidget("Properties", this);