This repository has been archived by the owner on Apr 1, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 299
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* Add 'Message' component * Add Message component, along with state/action/reducer * Add actions for show / hide message dialog, and fix formatting * Add more items to PLAN * More stuff in PLAN * Add initial language client status bar * Start creating state for statusbar * Add buffer-leave event * Fix the STATUSBAR_HIDE action * Add rotation & filetype * Update PLAN * Update PLAN * Remove wrap from SignatureHelp * Factor out file type to common element * Set up statusbar to allow for a globally referenced id, across plugins * Add setting for status bar font size * Add configurable font size for the status bar * Set rotate animation only when initializing is in progress * Don't show language status if we don't have a filetype * Add error state * When there is an error, setup click event to open dev tools * Update PLAN * Update PLAN * Update Config * Update PLAN * Fix lint issues * Update PLAN.md * Remove PLAN.md * Merge imports * Reorder import groups * Fix import ordering * Add more detailed logging, and additional error state * Fix logging message * Fix lint issues
- Loading branch information
extr0py
authored
Jul 22, 2017
1 parent
be714b3
commit 4735dbc
Showing
16 changed files
with
395 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
105 changes: 105 additions & 0 deletions
105
browser/src/Plugins/Api/LanguageClient/LanguageClientStatusBar.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
/** | ||
* LanguageClientStatusBar.tsx | ||
* | ||
* Implements status bar for Oni | ||
*/ | ||
|
||
import * as electron from "electron" | ||
import * as React from "react" | ||
|
||
import { Icon } from "./../../../UI/Icon" | ||
|
||
import { Oni } from "./../Oni" | ||
|
||
export class LanguageClientStatusBar { | ||
|
||
private _item: Oni.StatusBarItem | ||
private _fileType: string | ||
|
||
constructor(private _oni: Oni) { | ||
this._item = this._oni.statusBar.getItem("oni.status.fileType") | ||
} | ||
|
||
public show(fileType: string): void { | ||
this._fileType = fileType | ||
this._item.setContents(<StatusBarRenderer state={LanguageClientState.NotAvailable} language={this._fileType} />) | ||
this._item.show() | ||
} | ||
|
||
public setStatus(status: LanguageClientState): void { | ||
this._item.setContents(<StatusBarRenderer state={status} language={this._fileType} />) | ||
} | ||
|
||
public hide(): void { | ||
this._item.hide() | ||
} | ||
} | ||
|
||
export enum LanguageClientState { | ||
NotAvailable = 0, | ||
Initializing, | ||
Initialized, | ||
Active, | ||
Error, | ||
} | ||
|
||
const SpinnerIcon = "circle-o-notch" | ||
const ConnectedIcon = "bolt" | ||
const ErrorIcon = "exclamation-circle" | ||
|
||
interface StatusBarRendererProps { | ||
state: LanguageClientState | ||
language: string | ||
} | ||
|
||
const getIconFromStatus = (status: LanguageClientState) => { | ||
switch (status) { | ||
case LanguageClientState.Initializing: | ||
return SpinnerIcon | ||
case LanguageClientState.Error: | ||
return ErrorIcon | ||
default: | ||
return ConnectedIcon | ||
} | ||
} | ||
|
||
const getClassNameFromstatus = (status: LanguageClientState) => { | ||
switch (status) { | ||
case LanguageClientState.Initializing: | ||
return "rotate-animation" | ||
default: | ||
return "" | ||
} | ||
} | ||
|
||
const StatusBarRenderer = (props: StatusBarRendererProps) => { | ||
const containerStyle: React.CSSProperties = { | ||
display: "flex", | ||
alignItems: "center", | ||
justifyContent: "center", | ||
height: "100%", | ||
backgroundColor: "rgb(35, 35, 35)", | ||
color: "rgb(200, 200, 200)", | ||
paddingRight: "8px", | ||
paddingLeft: "8px", | ||
} | ||
|
||
const iconStyle: React.CSSProperties = { | ||
paddingRight: "6px", | ||
minWidth: "14px", | ||
textAlign: "center", | ||
} | ||
|
||
const openDevTools = () => { | ||
electron.remote.getCurrentWindow().webContents.openDevTools() | ||
} | ||
|
||
const onClick = props.state === LanguageClientState.Error ? openDevTools : null | ||
|
||
return <div style={containerStyle} onClick={onClick}> | ||
<span style={iconStyle}> | ||
<Icon name={getIconFromStatus(props.state)} className={getClassNameFromstatus(props.state)} /> | ||
</span> | ||
<span>{props.language}</span> | ||
</div> | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.