diff --git source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp
index b29e8f2..b066d43 100644
--- source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp
+++ source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp
@@ -25,6 +25,7 @@
 #include "ScenarioEditor/Tools/Common/ObjectSettings.h"
 #include "ScenarioEditor/Tools/Common/MiscState.h"
 #include "VariationControl.h"
+#include "SelectedTemplates.h"
 
 #include "GameInterface/Messages.h"
 
@@ -462,8 +463,15 @@ ObjectBottomBar::ObjectBottomBar(
 	variationSizer->Add(variationSelect, wxSizerFlags().Proportion(1).Expand());
 	playerVariationSizer->Add(variationSizer, wxSizerFlags().Proportion(1));
 
+	/* selected templates panel */
+	wxWindow* selectedTemplates = new SelectedTemplates(this, objectSettings);
+	selectedTemplates->SetMinSize(wxSize(250, -1));
+	wxSizer* selTemplatesSizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Selected entity templates"));
+	selTemplatesSizer->Add(selectedTemplates, wxSizerFlags().Proportion(1).Expand());
+
 	mainSizer->AddSpacer(3);
 	mainSizer->Add(playerVariationSizer, wxSizerFlags().Expand());
+	mainSizer->Add(selTemplatesSizer, wxSizerFlags().Expand());
 
 	// ----------------------------------------------------------------------------------
 
diff --git source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/SelectedTemplates.cpp source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/SelectedTemplates.cpp
new file mode 100644
index 0000000..8ff3045
--- /dev/null
+++ source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/SelectedTemplates.cpp
@@ -0,0 +1,82 @@
+/* Copyright (C) 2011 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 0 A.D. is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sstream>
+
+#include "precompiled.h"
+
+#include "ScenarioEditor/Tools/Common/ObjectSettings.h"
+
+#include "SelectedTemplates.h"
+#include "GameInterface/Messages.h"
+
+SelectedTemplates::SelectedTemplates(wxWindow* parent, Observable<ObjectSettings>& objectSettings)
+: wxScrolledWindow(parent, -1),
+m_ObjectSettings(objectSettings)
+{
+	m_Conn = m_ObjectSettings.RegisterObserver(1, &SelectedTemplates::OnSelectionChange, this);
+
+	SetScrollRate(0, 5);
+
+	m_Sizer = new wxBoxSizer(wxVERTICAL);
+	SetSizer(m_Sizer);
+}
+
+void SelectedTemplates::OnSelectionChange(const ObjectSettings& settings)
+{
+	Freeze();
+
+	const std::vector<AtlasMessage::ObjectID>& selections = settings.GetSelectedObjects();
+
+	// Get the list of selected objects from the game
+	AtlasMessage::qGetSelectedObjectsTemplateNames qry(selections);
+	qry.Post();
+
+	std::vector<std::string> names;
+	names = *qry.names;
+
+	// calculate frequency for the template names
+	typedef std::map<std::string, unsigned> counts_templates;
+	counts_templates f_names;
+
+	for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it)
+		++f_names[*it];
+
+	m_Sizer->Clear(true);
+
+	for (counts_templates::const_iterator it = f_names.begin(); it != f_names.end(); ++it)
+	{
+	    double freq = static_cast<double>(it->second);
+		std::stringstream ss_freq;
+		ss_freq << freq;
+		std::string s_freq = ss_freq.str();
+
+		std::string template_name = it->first;
+
+		template_name.append(" x ");
+		template_name.append(s_freq);
+		wxString tooltip(template_name.c_str());
+		wxStaticText *label = new wxStaticText(this, wxID_ANY, _(template_name.c_str()));
+		label->SetToolTip(tooltip);
+		m_Sizer->Add(label, wxSizerFlags().Align(wxALIGN_LEFT));
+	}
+
+	Thaw();
+
+	// Make the scrollbars appear when appropriate
+	m_Sizer->FitInside(this);
+}
diff --git source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/SelectedTemplates.h source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/SelectedTemplates.h
new file mode 100644
index 0000000..5b9b86d
--- /dev/null
+++ source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/SelectedTemplates.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 2009 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 0 A.D. is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef INCLUDED_SELECTEDTEMPLATES
+#define INCLUDED_SELECTEDTEMPLATES
+
+#include "General/Observable.h"
+
+class SelectedTemplates : public wxScrolledWindow
+{
+public:
+	SelectedTemplates(wxWindow* parent, Observable<ObjectSettings>& objectSettings);
+
+private:
+	void OnSelectionChange(const ObjectSettings& settings);
+
+	ObservableScopedConnection m_Conn;
+
+	Observable<ObjectSettings>& m_ObjectSettings;
+	wxSizer* m_Sizer;
+};
+
+#endif // INCLUDED_SELECTEDTEMPLATES
diff --git source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.cpp source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.cpp
index 6bd0558..ba76bb8 100644
--- source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.cpp
+++ source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.cpp
@@ -86,6 +86,11 @@ const std::vector<ObjectSettings::Group> ObjectSettings::GetActorVariation() con
 	return variation;
 }
 
+const std::vector<AtlasMessage::ObjectID>& ObjectSettings::GetSelectedObjects() const
+{
+	return m_SelectedObjects;
+}
+
 AtlasMessage::sObjectSettings ObjectSettings::GetSettings() const
 {
 	AtlasMessage::sObjectSettings settings;
@@ -110,9 +115,6 @@ void ObjectSettings::OnSelectionChange(const std::vector<AtlasMessage::ObjectID>
 	// TODO: what would be the sensible action if nothing's selected?
 	// and if multiple objects are selected?
 
-	if (selection.empty())
-		return;
-
 	AtlasMessage::qGetObjectSettings qry (m_View, selection[0]);
 	qry.Post();
 
diff --git source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.h source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.h
index e89c564..58adb50 100644
--- source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.h
+++ source/tools/atlas/AtlasUI/ScenarioEditor/Tools/Common/ObjectSettings.h
@@ -52,6 +52,8 @@ public:
 	const std::set<wxString>& GetActorSelections() const;
 	void SetActorSelections(const std::set<wxString>& selections);
 
+	const std::vector<AtlasMessage::ObjectID>& GetSelectedObjects() const;
+
 	// Constructs new sObjectSettings object from settings
 	AtlasMessage::sObjectSettings GetSettings() const;
 
diff --git source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp
index 4051464..e47b882 100644
--- source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp
+++ source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp
@@ -95,6 +95,24 @@ QUERYHANDLER(GetObjectsList)
 }
 
 
+QUERYHANDLER(GetSelectedObjectsTemplateNames)
+{
+	std::vector<entity_id_t> ids = *msg->ids;
+	std::vector<std::string> names;
+
+	CmpPtr<ICmpTemplateManager> cmpTemplateManager(*g_Game->GetSimulation2(), SYSTEM_ENTITY);
+	ENSURE(cmpTemplateManager);
+
+	for (size_t i = 0; i < ids.size(); i++)
+	{
+		entity_id_t id = (entity_id_t)ids[i];
+		std::string templateName = cmpTemplateManager->GetCurrentTemplateName(id);
+		names.push_back(templateName);
+	}
+
+	msg->names = names;
+}
+
 static std::vector<entity_id_t> g_Selection;
 typedef std::map<player_id_t, CColor> PlayerColorMap;
 
diff --git source/tools/atlas/GameInterface/Messages.h source/tools/atlas/GameInterface/Messages.h
index d7f1e60..e907cda 100644
--- source/tools/atlas/GameInterface/Messages.h
+++ source/tools/atlas/GameInterface/Messages.h
@@ -320,6 +320,12 @@ QUERY(GetObjectsList,
 	  ((std::vector<sObjectsListItem>, objects)) // sorted by .name
 	  );
 
+QUERY(GetSelectedObjectsTemplateNames,
+		((std::vector<ObjectID>, ids))
+		,
+		((std::vector<std::string>, names))
+		);
+
 #ifndef MESSAGES_SKIP_STRUCTS
 struct sObjectSettings
 {
