@lumino/widgets#DockPanel TypeScript Examples
The following examples show how to use
@lumino/widgets#DockPanel.
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: index.ts From jlab-enhanced-launcher with BSD 3-Clause "New" or "Revised" License | 4 votes |
/**
* Activate the launcher.
*/
async function activate(
app: JupyterFrontEnd,
translator: ITranslator,
labShell: ILabShell | null,
palette: ICommandPalette | null,
settingRegistry: ISettingRegistry | null,
state: IStateDB | null
): Promise<ILauncher> {
const { commands, shell } = app;
const trans = translator.load('jupyterlab');
let settings: ISettingRegistry.ISettings | null = null;
if (settingRegistry) {
try {
settings = await settingRegistry.load(EXTENSION_ID);
} catch (reason) {
console.log(`Failed to load settings for ${EXTENSION_ID}.`, reason);
}
}
const model = new LauncherModel(settings, state);
if (state) {
Promise.all([
state.fetch(`${EXTENSION_ID}:usageData`),
state.fetch(`${EXTENSION_ID}:viewMode`),
app.restored
])
.then(([usage, mode]) => {
model.viewMode = (mode as any) || 'cards';
for (const key in usage as any) {
model.usage[key] = (usage as any)[key];
}
})
.catch(reason => {
console.error('Fail to restore launcher usage data', reason);
});
}
commands.addCommand(CommandIDs.create, {
label: trans.__('New Launcher'),
execute: (args: ReadonlyPartialJSONObject) => {
const cwd = args['cwd'] ? String(args['cwd']) : '';
const id = `launcher-${Private.id++}`;
const callback = (item: Widget): void => {
shell.add(item, 'main', { ref: id });
};
const launcher = new Launcher({ model, cwd, callback, commands });
launcher.model = model;
launcher.title.icon = launcherIcon;
launcher.title.label = trans.__('Launcher');
const main = new MainAreaWidget({ content: launcher });
// If there are any other widgets open, remove the launcher close icon.
main.title.closable = !!toArray(shell.widgets('main')).length;
main.id = id;
shell.add(main, 'main', {
activate: args['activate'] as boolean,
ref: args['ref'] as string
});
if (labShell) {
labShell.layoutModified.connect(() => {
// If there is only a launcher open, remove the close icon.
main.title.closable = toArray(labShell.widgets('main')).length > 1;
}, main);
}
return main;
}
});
if (palette) {
palette.addItem({
command: CommandIDs.create,
category: trans.__('Launcher')
});
}
if (labShell && app.version >= '3.4.0') {
labShell.addButtonEnabled = true;
labShell.addRequested.connect((sender: DockPanel, arg: TabBar<Widget>) => {
// Get the ref for the current tab of the tabbar which the add button was clicked
const ref =
arg.currentTitle?.owner.id ||
arg.titles[arg.titles.length - 1].owner.id;
if (commands.hasCommand('filebrowser:create-main-launcher')) {
// If a file browser is defined connect the launcher to it
return commands.execute('filebrowser:create-main-launcher', { ref });
}
return commands.execute(CommandIDs.create, { ref });
});
}
return model;
}