Skip to content

Commit 0b0d87b

Browse files
author
Hofstetter Benjamin (extern)
committed
cell status bar implementation
1 parent 5fcfdf6 commit 0b0d87b

13 files changed

+202
-8
lines changed

src/extension/commands/export/export-to-markdown.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { promises as fs } from "fs";
22
import * as vscode from "vscode";
33
import { TextEncoder } from "util";
44

5-
import { SparqlNotebookSerializer } from "../../file-io";
5+
import { SparqlNotebookSerializer } from "../../notebook/file-io";
66

77
async function loadNotebook(uri: vscode.Uri) {
88
const data = await fs.readFile(uri.fsPath);

src/extension/endpoint/endpoint.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
export abstract class Endpoint {
3+
public abstract url: string;
34
abstract query(sparqlQuery: string, execution?: any): Promise<any>;
45
}
56

src/extension/endpoint/file-endpoint/file-endpoint.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { RdfMimeType, SparqlStore } from '../../sparql-store/sparql-store';
99
* Represents an HTTP SPARQL endpoint.
1010
*/
1111
export class FileEndpoint extends Endpoint {
12+
private _url: string = '';
1213
private files: Set<Uri> = new Set<Uri>();
1314
private _store: SparqlStore;
1415
/**
@@ -22,7 +23,12 @@ export class FileEndpoint extends Endpoint {
2223
this._store = new SparqlStore();
2324
}
2425

26+
get url(): string {
27+
return this._url;
28+
}
29+
2530
public async addFile(rdfFile: Uri) {
31+
this._url = rdfFile.path;
2632
if (!rdfFile) {
2733
// show window error message
2834
window.showErrorMessage('No file selected');

src/extension/endpoint/http-endpoint/http-endpoint.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Endpoint } from '../endpoint';
88
*/
99
export class HttpEndpoint extends Endpoint {
1010
private http: AxiosInstance;
11+
private _url: string;
1112

1213
/**
1314
* Creates a new instance of the HttpEndpoint class.
@@ -17,6 +18,7 @@ export class HttpEndpoint extends Endpoint {
1718
*/
1819
constructor(endpointUrl: string, user: string, password: string) {
1920
super();
21+
this._url = endpointUrl;
2022
this.http = axios.create({
2123
baseURL: endpointUrl,
2224
auth: {
@@ -26,6 +28,10 @@ export class HttpEndpoint extends Endpoint {
2628
});
2729
}
2830

31+
get url(): string {
32+
return this._url;
33+
}
34+
2935
/**
3036
* Executes a SPARQL query against the endpoint.
3137
* @param sparqlQuery - The SPARQL query to execute.

src/extension/extension.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as vscode from "vscode";
22

3-
import { SparqlNotebookController } from "./sparql-notebook-controller";
3+
import { SparqlNotebookController } from "./notebook/sparql-notebook-controller";
44
import { EndpointConnections } from "./sparql-connection-menu";
55

6-
import { SparqlNotebookSerializer } from "./file-io";
6+
import { SparqlNotebookSerializer } from "./notebook/file-io";
77

88
import { deleteConnection } from "./commands/sparql-connection/delete-connection";
99
import { addConnection } from "./commands/sparql-connection/add-connection";
@@ -15,6 +15,7 @@ import { addQueryFromFile } from "./commands/code-cell/add-query-from-file";
1515
import { activateFormProvider } from "./connection-view/connection-view";
1616
import { createStoreFromFile } from "./commands/store-from-file/store-from-file";
1717
import path = require("path");
18+
import { SparqlNotebookCellStatusBarItemProvider } from './notebook/SparqlNotebookCellStatusBarItemProvider';
1819

1920
export const extensionId = "sparql-notebook";
2021
export const storageKey = `${extensionId}-connections`;
@@ -163,8 +164,10 @@ export function activate(context: vscode.ExtensionContext) {
163164
}
164165
});
165166
}));
167+
168+
context.subscriptions.push(vscode.notebooks.registerNotebookCellStatusBarItemProvider(extensionId, new SparqlNotebookCellStatusBarItemProvider()));
169+
166170
};
167171

168172
// this method is called when your extension is deactivated
169173
export function deactivate() { }
170-
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import {
2+
NotebookCellStatusBarItemProvider,
3+
EventEmitter,
4+
NotebookCell,
5+
CancellationToken,
6+
NotebookCellStatusBarItem,
7+
NotebookCellStatusBarAlignment
8+
} from 'vscode';
9+
import { CellContentStatusBarItem, ConnectionSourceStatusBarItem } from './sparql-notebook-cell-status-bar-item-provider';
10+
import { SparqlNotebookCell } from './sparql-notebook-cell';
11+
12+
13+
export class SparqlNotebookCellStatusBarItemProvider implements NotebookCellStatusBarItemProvider {
14+
private _onDidChangeCellStatusBarItems = new EventEmitter<void>();
15+
readonly onDidChangeCellStatusBarItems = this._onDidChangeCellStatusBarItems.event;
16+
17+
provideCellStatusBarItems(cell: NotebookCell, token: CancellationToken): NotebookCellStatusBarItem[] {
18+
const sparqlCell = new SparqlNotebookCell(cell);
19+
20+
21+
const statusBarItems: NotebookCellStatusBarItem[] = [];
22+
23+
statusBarItems.push(new ConnectionSourceStatusBarItem(sparqlCell, NotebookCellStatusBarAlignment.Right));
24+
statusBarItems.push(new CellContentStatusBarItem(sparqlCell, NotebookCellStatusBarAlignment.Right));
25+
return statusBarItems;
26+
}
27+
}

0 commit comments

Comments
 (0)