@jupyterlab/apputils#CommandToolbarButton TypeScript Examples
The following examples show how to use
@jupyterlab/apputils#CommandToolbarButton.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: logConsoleWidget.tsx From jupyterlab-ros with BSD 3-Clause "New" or "Revised" License | 6 votes |
constructor(app: JupyterFrontEnd) {
super({ content: new LogConsolePanel() });
this.addClass('jp-logConsole');
this.id = 'jupyterlab-ros/logConsole:widget';
this.title.closable = true;
this.title.label = 'ROS Log console';
this.title.icon = listIcon;
const server = ServerConnection.makeSettings();
this.url = URLExt.join(server.wsUrl, 'ros/bridge');
this.ros = new ROSLIB.Ros({ url: this.url });
this.ros.on('connection', this.onConection);
this.ros.on('error', this.onError);
this.ros.on('close', this.onClose);
this.listener = new ROSLIB.Topic({
ros: this.ros,
name: '/rosout',
messageType: 'rosgraph_msgs/Log'
});
this.listener.subscribe(this.onMessage);
this.status = new LogStatus(this.ros, this.url);
this.levelSwitcher = new LogLevelSwitcher(this.content);
this.nodeSwicher = new LogNodeSwitcher(this.content);
this.logs = [];
// Adding the buttons in widget toolbar
this.toolbar.addItem('status', this.status);
this.toolbar.addItem('checkpoint',
new CommandToolbarButton({commands: app.commands, id: 'jupyterlab-ros/logConsole:checkpoint'})
);
this.toolbar.addItem('clear',
new CommandToolbarButton({commands: app.commands, id: 'jupyterlab-ros/logConsole:clear'})
);
this.toolbar.addItem('level', this.levelSwitcher);
this.toolbar.addItem('topic', this.nodeSwicher);
}
Example #2
Source File: plugin.ts From jupyter-videochat with BSD 3-Clause "New" or "Revised" License | 6 votes |
function activateToggleArea(
app: JupyterFrontEnd,
chat: IVideoChatManager,
palette?: ICommandPalette
): void {
const { shell, commands } = app;
const { __ } = chat;
const labShell = isFullLab(app) ? (shell as LabShell) : null;
if (!labShell) {
return;
}
const toggleBtn = new CommandToolbarButton({
id: CommandIds.toggleArea,
commands,
icon: launcherIcon,
});
chat.mainWidget
.then((widget) => {
widget.toolbar.insertBefore(
ToolbarIds.SPACER_LEFT,
ToolbarIds.TOGGLE_AREA,
toggleBtn
);
})
.catch((err) => console.warn(__(`Couldn't add Video Chat area toggle`), err));
if (palette) {
palette.addItem({ command: CommandIds.toggleArea, category: __(category) });
}
}
Example #3
Source File: dashboard.tsx From jupyterlab-interactive-dashboard-editor with BSD 3-Clause "New" or "Revised" License | 5 votes |
constructor(options: DashboardDocument.IOptions) {
let { content, reveal } = options;
const { context, commandRegistry } = options;
const model = context.model as DashboardModel;
model.path = context.path;
content = content || new Dashboard({ ...options, model, context });
reveal = Promise.all([reveal, context.ready]);
super({
...options,
content: content as Dashboard,
reveal
});
// Build the toolbar
this.toolbar.addClass(TOOLBAR_CLASS);
const commands = commandRegistry;
const { save, undo, redo, cut, copy, paste } = CommandIDs;
const args = { toolbar: true, dashboardId: content.id };
const makeToolbarButton = (
id: string,
tooltip: string
): CommandToolbarButton => {
const button = new CommandToolbarButton({ args, commands, id });
button.node.title = tooltip;
return button;
};
const saveButton = makeToolbarButton(save, 'Save');
const undoButton = makeToolbarButton(undo, 'Undo');
const redoButton = makeToolbarButton(redo, 'Redo');
const cutButton = makeToolbarButton(cut, 'Cut the selected outputs');
const copyButton = makeToolbarButton(copy, 'Copy the selected outputs');
const pasteButton = makeToolbarButton(
paste,
'Paste outputs from the clipboard'
);
this.toolbar.addItem(save, saveButton);
this.toolbar.addItem(undo, undoButton);
this.toolbar.addItem(redo, redoButton);
this.toolbar.addItem(cut, cutButton);
this.toolbar.addItem(copy, copyButton);
this.toolbar.addItem(paste, pasteButton);
this.toolbar.addItem('spacer', Toolbar.createSpacerItem());
this.toolbar.addItem(
'switchMode',
new DashboardDocument.DashboardModeSwitcher(content as Dashboard)
);
}
Example #4
Source File: widget.ts From jupyterlab-tabular-data-editor with BSD 3-Clause "New" or "Revised" License | 5 votes |
constructor(options: EditableCSVDocumentWidget.IOptions) {
let { content, reveal } = options;
const { context, commandRegistry, ...other } = options;
content = content || new DSVEditor({ context });
reveal = Promise.all([reveal, content.revealed]);
super({ context, content, reveal, ...other });
// add commands to the toolbar
const commands = commandRegistry;
const {
save,
undo,
redo,
cutToolbar,
copyToolbar,
pasteToolbar
} = CommandIDs;
this.toolbar.addItem(
'save',
new CommandToolbarButton({ commands, id: save })
);
this.toolbar.addItem(
'undo',
new CommandToolbarButton({ commands, id: undo })
);
this.toolbar.addItem(
'redo',
new CommandToolbarButton({ commands, id: redo })
);
this.toolbar.addItem(
'cut',
new CommandToolbarButton({ commands, id: cutToolbar })
);
this.toolbar.addItem(
'copy',
new CommandToolbarButton({ commands, id: copyToolbar })
);
this.toolbar.addItem(
'paste',
new CommandToolbarButton({ commands, id: pasteToolbar })
);
/* possible feature
const filterData = new FilterButton({ selected: content.delimiter });
this.toolbar.addItem('filter-data', filterData);
*/
this.toolbar.addItem('spacer', Toolbar.createSpacerItem());
this.toolbar.addItem(
'format-data',
new ToolbarButton({
label: 'Format Data',
iconClass: 'jp-ToggleSwitch',
tooltip: 'Click to format the data based on the column type',
onClick: (): void => this.toggleDataDetection()
})
);
}
Example #5
Source File: plugin.ts From jupyter-videochat with BSD 3-Clause "New" or "Revised" License | 5 votes |
function activateRetro(
app: JupyterFrontEnd,
chat: IVideoChatManager,
filebrowser?: IFileBrowserFactory,
mainmenu?: IMainMenu
): void {
if (!PageConfig.getOption(RETRO_CANARY_OPT)) {
return;
}
const { __ } = chat;
const baseUrl = PageConfig.getBaseUrl();
// this is basically hard-coded upstream
const treeUrl = URLExt.join(baseUrl, RETRO_TREE_URL);
const { commands } = app;
commands.addCommand(CommandIds.openTab, {
label: __('New Video Chat'),
icon: prettyChatIcon,
execute: (args: any) => {
window.open(`${treeUrl}?${FORCE_URL_PARAM}`, '_blank');
},
});
// If available, add menu item
if (mainmenu) {
mainmenu.fileMenu.newMenu.addGroup([{ command: CommandIds.openTab }]);
}
// If available, add button to file browser
if (filebrowser) {
const spacer = Toolbar.createSpacerItem();
spacer.node.style.flex = '1';
filebrowser.defaultBrowser.toolbar.insertItem(999, 'videochat-spacer', spacer);
filebrowser.defaultBrowser.toolbar.insertItem(
1000,
'new-videochat',
new CommandToolbarButton({
commands,
id: CommandIds.openTab,
})
);
}
}
Example #6
Source File: plugin.ts From jupyter-videochat with BSD 3-Clause "New" or "Revised" License | 4 votes |
/**
* Handle application-level concerns
*/
async function activateCore(
app: JupyterFrontEnd,
settingRegistry: ISettingRegistry,
translator?: ITranslator,
palette?: ICommandPalette,
launcher?: ILauncher,
restorer?: ILayoutRestorer,
mainmenu?: IMainMenu
): Promise<IVideoChatManager> {
const { commands, shell } = app;
const labShell = isFullLab(app) ? (shell as LabShell) : null;
const manager = new VideoChatManager({
trans: (translator || nullTranslator).load(NS),
});
const { __ } = manager;
let widget: MainAreaWidget;
let chat: VideoChat;
let subject: string | null = null;
const tracker = new WidgetTracker<MainAreaWidget>({ namespace: NS });
if (!widget || widget.isDisposed) {
// Create widget
chat = new VideoChat(manager, {});
widget = new MainAreaWidget({ content: chat });
widget.addClass(`${CSS}-wrapper`);
manager.setMainWidget(widget);
widget.toolbar.addItem(ToolbarIds.SPACER_LEFT, Toolbar.createSpacerItem());
widget.toolbar.addItem(ToolbarIds.TITLE, new RoomTitle(manager));
widget.toolbar.addItem(ToolbarIds.SPACER_RIGHT, Toolbar.createSpacerItem());
const disconnectBtn = new CommandToolbarButton({
id: CommandIds.disconnect,
commands,
icon: stopIcon,
});
const onCurrentRoomChanged = () => {
if (manager.currentRoom) {
disconnectBtn.show();
} else {
disconnectBtn.hide();
}
};
manager.currentRoomChanged.connect(onCurrentRoomChanged);
widget.toolbar.addItem(ToolbarIds.DISCONNECT, disconnectBtn);
onCurrentRoomChanged();
chat.id = `id-${NS}`;
chat.title.caption = __(DEFAULT_LABEL);
chat.title.closable = false;
chat.title.icon = chatIcon;
}
// hide the label when in sidebar, as it shows the rotated text
function updateTitle() {
if (subject != null) {
widget.title.caption = subject;
} else {
widget.title.caption = __(DEFAULT_LABEL);
}
widget.title.label = manager.currentArea === 'main' ? widget.title.caption : '';
}
// add to shell, update tracker, title, etc.
function addToShell(area?: ILabShell.Area, activate = true) {
DEBUG && console.warn(`add to shell in are ${area}, ${!activate || 'not '} active`);
area = area || manager.currentArea;
if (labShell) {
labShell.add(widget, area);
updateTitle();
widget.update();
if (!tracker.has(widget)) {
tracker.add(widget).catch(void 0);
}
if (activate) {
shell.activateById(widget.id);
}
} else if (window.location.search.indexOf(FORCE_URL_PARAM) !== -1) {
document.title = [document.title.split(' - ')[0], __(DEFAULT_LABEL)].join(' - ');
app.shell.currentWidget.parent = null;
app.shell.add(widget, 'main', { rank: 0 });
const { parent } = widget;
parent.addClass(`${CSS}-main-parent`);
setTimeout(() => {
parent.update();
parent.fit();
app.shell.fit();
app.shell.update();
}, 100);
}
}
// listen for the subject to update the widget title dynamically
manager.meetChanged.connect(() => {
if (manager.meet) {
manager.meet.on('subjectChange', (args: any) => {
subject = args.subject;
updateTitle();
});
} else {
subject = null;
}
updateTitle();
});
// connect settings
settingRegistry
.load(corePlugin.id)
.then((settings) => {
manager.settings = settings;
let lastArea = manager.settings.composite.area;
settings.changed.connect(() => {
if (lastArea !== manager.settings.composite.area) {
addToShell();
}
lastArea = manager.settings.composite.area;
});
addToShell(null, false);
})
.catch(() => addToShell(null, false));
// add commands
commands.addCommand(CommandIds.open, {
label: __(DEFAULT_LABEL),
icon: prettyChatIcon,
execute: async (args: IChatArgs) => {
await manager.initialized;
addToShell(null, true);
// Potentially navigate to new room
if (manager.currentRoom?.displayName !== args.displayName) {
manager.currentRoom = { displayName: args.displayName };
}
},
});
commands.addCommand(CommandIds.disconnect, {
label: __('Disconnect Video Chat'),
execute: () => (manager.currentRoom = null),
icon: stopIcon,
});
commands.addCommand(CommandIds.toggleArea, {
label: __('Toggle Video Chat Sidebar'),
icon: launcherIcon,
execute: async () => {
manager.currentArea = ['right', 'left'].includes(manager.currentArea)
? 'main'
: 'right';
},
});
// If available, add the commands to the palette
if (palette) {
palette.addItem({ command: CommandIds.open, category: __(category) });
}
// If available, add a card to the launcher
if (launcher) {
launcher.add({ command: CommandIds.open, args: { area: 'main' } });
}
// If available, restore the position
if (restorer) {
restorer
.restore(tracker, { command: CommandIds.open, name: () => `id-${NS}` })
.catch(console.warn);
}
// If available, add to the file->new menu.... new tab handled in retroPlugin
if (mainmenu && labShell) {
mainmenu.fileMenu.newMenu.addGroup([{ command: CommandIds.open }]);
}
// Return the manager that others extensions can use
return manager;
}