Index: src/sas/qtgui/MainWindow/DataExplorer.py
===================================================================
--- src/sas/qtgui/MainWindow/DataExplorer.py	(revision facf4cace332ddd3c8e57bfc24256769753e21a5)
+++ src/sas/qtgui/MainWindow/DataExplorer.py	(revision a24eacf3b3a9ca51fe5e34059e28454573779b5f)
@@ -826,4 +826,27 @@
         return wlist
 
+    def setItemsCheckability(self, model, dimension=None, checked=False):
+        """
+        For a given model, check or uncheck all items of given dimension
+        """
+        mode = QtCore.Qt.Checked if checked else QtCore.Qt.Unchecked
+
+        assert isinstance(checked, bool)
+
+        types = (None, Data1D, Data2D)
+        assert dimension in types
+
+        for index in range(model.rowCount()):
+            item = model.item(index)
+            if dimension is not None and not isinstance(GuiUtils.dataFromItem(item), dimension):
+                continue
+            if item.isCheckable() and item.checkState() != mode:
+                item.setCheckState(mode)
+            # look for all children
+            for inner_index in range(item.rowCount()):
+                child = item.child(inner_index)
+                if child.isCheckable() and child.checkState() != mode:
+                    child.setCheckState(mode)
+
     def selectData(self, index):
         """
@@ -836,72 +859,25 @@
         # Respond appropriately
         if index == 0:
-            # Select All
-            for index in range(self.model.rowCount()):
-                item = self.model.item(index)
-                if item.isCheckable() and item.checkState() == QtCore.Qt.Unchecked:
-                    item.setCheckState(QtCore.Qt.Checked)
+            self.setItemsCheckability(self.model, checked=True)
+
         elif index == 1:
             # De-select All
-            for index in range(self.model.rowCount()):
-                item = self.model.item(index)
-                if item.isCheckable() and item.checkState() == QtCore.Qt.Checked:
-                    item.setCheckState(QtCore.Qt.Unchecked)
+            self.setItemsCheckability(self.model, checked=False)
 
         elif index == 2:
             # Select All 1-D
-            for index in range(self.model.rowCount()):
-                item = self.model.item(index)
-                item.setCheckState(QtCore.Qt.Unchecked)
-
-                try:
-                    is1D = isinstance(GuiUtils.dataFromItem(item), Data1D)
-                except AttributeError:
-                    msg = "Bad structure of the data model."
-                    raise RuntimeError(msg)
-
-                if is1D:
-                    item.setCheckState(QtCore.Qt.Checked)
+            self.setItemsCheckability(self.model, dimension=Data1D, checked=True)
 
         elif index == 3:
             # Unselect All 1-D
-            for index in range(self.model.rowCount()):
-                item = self.model.item(index)
-
-                try:
-                    is1D = isinstance(GuiUtils.dataFromItem(item), Data1D)
-                except AttributeError:
-                    msg = "Bad structure of the data model."
-                    raise RuntimeError(msg)
-
-                if item.isCheckable() and item.checkState() == QtCore.Qt.Checked and is1D:
-                    item.setCheckState(QtCore.Qt.Unchecked)
+            self.setItemsCheckability(self.model, dimension=Data1D, checked=False)
 
         elif index == 4:
             # Select All 2-D
-            for index in range(self.model.rowCount()):
-                item = self.model.item(index)
-                item.setCheckState(QtCore.Qt.Unchecked)
-                try:
-                    is2D = isinstance(GuiUtils.dataFromItem(item), Data2D)
-                except AttributeError:
-                    msg = "Bad structure of the data model."
-                    raise RuntimeError(msg)
-
-                if is2D:
-                    item.setCheckState(QtCore.Qt.Checked)
+            self.setItemsCheckability(self.model, dimension=Data2D, checked=True)
 
         elif index == 5:
             # Unselect All 2-D
-            for index in range(self.model.rowCount()):
-                item = self.model.item(index)
-
-                try:
-                    is2D = isinstance(GuiUtils.dataFromItem(item), Data2D)
-                except AttributeError:
-                    msg = "Bad structure of the data model."
-                    raise RuntimeError(msg)
-
-                if item.isCheckable() and item.checkState() == QtCore.Qt.Checked and is2D:
-                    item.setCheckState(QtCore.Qt.Unchecked)
+            self.setItemsCheckability(self.model, dimension=Data2D, checked=False)
 
         else:
Index: src/sas/qtgui/MainWindow/UnitTesting/DataExplorerTest.py
===================================================================
--- src/sas/qtgui/MainWindow/UnitTesting/DataExplorerTest.py	(revision 573c38349522bd3c640c76f26fd0bbed6d9c9139)
+++ src/sas/qtgui/MainWindow/UnitTesting/DataExplorerTest.py	(revision a24eacf3b3a9ca51fe5e34059e28454573779b5f)
@@ -71,5 +71,5 @@
         self.assertEqual(self.form.cmdFreeze.text(), "Freeze Theory")
         self.assertEqual(self.form.cmdSendTo.text(), "Send data to")
-        self.assertEqual(self.form.cmdSendTo.iconSize(), QSize(48, 48))
+        self.assertEqual(self.form.cmdSendTo.iconSize(), QSize(32, 32))
         self.assertIsInstance(self.form.cmdSendTo.icon(), QIcon)
         self.assertEqual(self.form.chkBatch.text(), "Batch mode")
@@ -352,5 +352,5 @@
         # Test the current selection
         self.assertTrue(item1D.checkState() == Qt.Checked)
-        self.assertTrue(item2D.checkState() == Qt.Unchecked)        
+        self.assertTrue(item2D.checkState() == Qt.Checked)
 
         # unselect 1d data
@@ -359,5 +359,5 @@
         # Test the current selection
         self.assertTrue(item1D.checkState() == Qt.Unchecked)
-        self.assertTrue(item2D.checkState() == Qt.Unchecked)        
+        self.assertTrue(item2D.checkState() == Qt.Checked)
 
         # select 2d data
