From 6dfd4e2059dd8217c6bc8d8d853924e1073b2dff Mon Sep 17 00:00:00 2001
From: Sandro Weber <webers@in.tum.de>
Date: Fri, 21 May 2021 19:06:31 +0200
Subject: [PATCH] more tool button design options

---
 .../simulation-tools-service.js               | 15 +++++++++--
 .../simulation-view/simulation-view.css       |  9 +++++++
 .../simulation-view/simulation-view.js        | 25 +++++++++++++++----
 3 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/src/components/simulation-view/simulation-tools-service.js b/src/components/simulation-view/simulation-tools-service.js
index 8267d4e..243460a 100644
--- a/src/components/simulation-view/simulation-tools-service.js
+++ b/src/components/simulation-view/simulation-tools-service.js
@@ -66,18 +66,29 @@ SimulationToolsService.TOOLS = Object.freeze({
     },
     flexlayoutFactoryCb: () =>  {
       return <iframe src='http://localhost:8000' title='NEST Desktop' />;
+    },
+    getIcon: () => {
+      return <div>
+        <img src={'https://www.nest-simulator.org/wp-content/uploads/2015/03/nest_logo.png'}
+          alt="NEST Desktop"
+          style={{width: 40+ 'px', height: 20 + 'px'}} />
+        <span>Desktop</span>
+      </div>;
     }
   },
-  TEST_NEST_SERVER_DOCU: {
+  TEST_NRP_CORE_DOCU: {
     singleton: true,
     flexlayoutNode: {
       'type': 'tab',
-      'name': 'NRP-Core Documentation',
+      'name': 'NRP-Core Docs',
       'component': 'nrp-core-docu'
     },
     flexlayoutFactoryCb: () =>  {
       return <iframe src='https://hbpneurorobotics.bitbucket.io/index.html'
         title='NRP-Core Documentation' />;
+    },
+    getIcon: () => {
+      return <span>NRP-Core Docs</span>;
     }
   }
 });
diff --git a/src/components/simulation-view/simulation-view.css b/src/components/simulation-view/simulation-view.css
index d683442..0477b6a 100644
--- a/src/components/simulation-view/simulation-view.css
+++ b/src/components/simulation-view/simulation-view.css
@@ -63,6 +63,15 @@
   font-weight: bold;
 }
 
+.simulation-tool-button {
+  width: 60px;
+  height: 60px;
+  margin: 2px;
+  padding: 2px;
+  font-size: 0.7em;
+  font-weight: bold;
+}
+
 iframe {
   width: 100%;
   height: 100%;
diff --git a/src/components/simulation-view/simulation-view.js b/src/components/simulation-view/simulation-view.js
index ff838e6..8c903ae 100644
--- a/src/components/simulation-view/simulation-view.js
+++ b/src/components/simulation-view/simulation-view.js
@@ -1,5 +1,6 @@
 import React from 'react';
 import FlexLayout from 'flexlayout-react';
+import { OverlayTrigger, Tooltip, Button } from 'react-bootstrap';
 import { RiPlayFill, RiLayout6Line } from 'react-icons/ri';
 import { GiExitDoor } from 'react-icons/gi';
 import { TiMediaRecord } from 'react-icons/ti';
@@ -85,11 +86,25 @@ export default class SimulationView extends React.Component {
         </div>
         <div className='simulation-view-sidebar'>
           {Array.from(SimulationToolsService.instance.tools.values()).map(tool => {
-            return (<button onMouseDown={() => {
-              SimulationToolsService.instance.startToolDrag(
-                tool.flexlayoutNode,
-                this.refLayout);
-            }}>{tool.flexlayoutNode.name}</button>);
+            return (
+              <OverlayTrigger
+                key={`overlaytrigger-${tool.flexlayoutNode.component}`}
+                placement={'right'}
+                overlay={
+                  <Tooltip id={`tooltip-${tool.flexlayoutNode.component}`}>
+                    {tool.flexlayoutNode.name}
+                  </Tooltip>
+                }
+              >
+                <Button key={tool.flexlayoutNode.component}
+                  className="simulation-tool-button"
+                  onMouseDown={() => {
+                    SimulationToolsService.instance.startToolDrag(
+                      tool.flexlayoutNode,
+                      this.refLayout);
+                  }}>{tool.getIcon && tool.getIcon()}</Button>
+              </OverlayTrigger>
+            );
           })}
         </div>
         <div className='simulation-view-mainview'>
-- 
GitLab