From 31361b4dc1044197dc0c92a5f6f8f9e016e6b2ec Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 28 Sep 2017 17:40:14 +0200 Subject: [PATCH] add contextview to editorpanel --- src/app/editor/contextView.js | 50 ++++++++++++++++++++++++++-------- src/app/panels/editor-panel.js | 13 ++++++++- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/app/editor/contextView.js b/src/app/editor/contextView.js index 2ac7d2dc53..93535e25b2 100644 --- a/src/app/editor/contextView.js +++ b/src/app/editor/contextView.js @@ -7,9 +7,13 @@ var csjs = require('csjs-inject') var css = csjs` .contextview { - position : absolute; background-color : ${styles.colors.backgroundBlue}; opacity : 0.8; + width : 20em; + height : 5em; + border-color : transparent; + border-radius : 3px; + border : .3px solid hsla(0, 0%, 40%, .2); } ` @@ -26,6 +30,7 @@ class ContextView { this._event = event this._view this._nodes + this._current event.contextualListener.register('contextChanged', nodes => { this._nodes = nodes this.update() @@ -35,36 +40,59 @@ class ContextView { render () { var view = yo`
- ${this._renderItems()} + ${this._renderTarget()}
` if (!this._view) { this._view = view + this.hide() } return view } + hide () { + if (this._view) { + this._view.style.display = 'none' + } + } + + show () { + if (this._view) { + this._view.style.display = 'block' + } + } + update () { if (this._view) { yo.update(this._view, this.render()) + this._view.style.display = this._current ? 'block' : 'none' } } - _renderItems () { + _renderTarget () { + this._current = null if (this._nodes && this._nodes.length) { var last = this._nodes[this._nodes.length - 1] - if (this._api.contextualListener.declarationOf(last)) { - return renderReference(last) + if (last.name === 'ContractDefinition' || last.name === 'FunctionDefinition' || last.name === 'ModifierDefinition' || last.name === 'VariableDeclaration') { + this._current = last + } else { + var target = this._api.contextualListener.declarationOf(last) + if (target) { + this._current = target + } } } - return yo`` + return this._renderDeclarations(this._current) } -} - - -function renderReference (node) { - yo`
${node.name}
` + _renderDeclarations (node) { + if (!node) return yo`
` + var references = this._api.contextualListener.referencesOf(node) + references = yo`
${references ? references.length : '0'} references
` + return yo`
${node.attributes.type} ${node.attributes.name} (${node.name})
+
${references}
+
` + } } module.exports = ContextView diff --git a/src/app/panels/editor-panel.js b/src/app/panels/editor-panel.js index bebc19ebc0..f338d60991 100644 --- a/src/app/panels/editor-panel.js +++ b/src/app/panels/editor-panel.js @@ -123,9 +123,17 @@ var css = csjs` width : 100%; } - .banner { + .banner { width : 25em; } + + .contextviewcontainer{ + position : absolute; + z-index : 100; + right : 20px; + top : 20px; + width : 20em; + } ` class EditorPanel { @@ -221,6 +229,9 @@ class EditorPanel { self._view.terminal = self._components.terminal.render() self._view.content = yo`
+
+ ${self._api.contextview.render()} +
${self._view.editor} ${self._view.terminal}