use of org.jkiss.dbeaver.tools.registry.ToolDescriptor in project dbeaver by serge-rider.
the class DataSourceToolsContributor method fillToolsMenu.
private static void fillToolsMenu(List<IContributionItem> menuItems, List<ToolDescriptor> tools, ISelection selection) {
boolean hasTools = false;
if (!CommonUtils.isEmpty(tools)) {
IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow();
if (workbenchWindow.getActivePage() != null) {
IWorkbenchPart activePart = workbenchWindow.getActivePage().getActivePart();
if (activePart != null) {
Map<ToolGroupDescriptor, IMenuManager> groupsMap = new HashMap<>();
Set<ToolGroupDescriptor> groupSet = new HashSet<>();
for (ToolDescriptor tool : tools) {
hasTools = true;
IMenuManager parentMenu = null;
if (tool.getGroup() != null) {
if (SHOW_GROUPS_AS_SUBMENU) {
parentMenu = getGroupMenu(menuItems, groupsMap, tool.getGroup());
} else {
if (!groupSet.contains(tool.getGroup())) {
groupSet.add(tool.getGroup());
menuItems.add(new Separator(tool.getGroup().getId()));
}
}
}
IAction action = ActionUtils.makeAction(new ExecuteToolHandler(workbenchWindow, tool), activePart.getSite(), selection, tool.getLabel(), tool.getIcon() == null ? null : DBeaverIcons.getImageDescriptor(tool.getIcon()), tool.getDescription());
if (parentMenu == null) {
menuItems.add(new ActionContributionItem(action));
} else {
parentMenu.add(new ActionContributionItem(action));
}
}
}
}
}
if (!hasTools) {
menuItems.add(new ActionContributionItem(new EmptyListAction()));
}
}
use of org.jkiss.dbeaver.tools.registry.ToolDescriptor in project dbeaver by serge-rider.
the class DataSourceToolsContributor method fillContributionItems.
@Override
protected void fillContributionItems(List<IContributionItem> menuItems) {
IWorkbenchPage activePage = UIUtils.getActiveWorkbenchWindow().getActivePage();
IWorkbenchPart activePart = activePage.getActivePart();
if (activePart == null) {
return;
}
DBSObject selectedObject = null;
INavigatorModelView navigatorModelView = GeneralUtils.adapt(activePart, INavigatorModelView.class);
if (navigatorModelView != null) {
final ISelectionProvider selectionProvider = activePart.getSite().getSelectionProvider();
if (selectionProvider != null) {
ISelection selection = selectionProvider.getSelection();
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
selectedObject = RuntimeUtils.getObjectAdapter(((IStructuredSelection) selection).getFirstElement(), DBSObject.class);
List<ToolDescriptor> tools = getAvailableTools((IStructuredSelection) selection);
fillToolsMenu(menuItems, tools, selection);
}
}
} else if (activePart instanceof IEditorPart) {
IEditorInput editorInput = ((IEditorPart) activePart).getEditorInput();
if (editorInput instanceof IDatabaseEditorInput) {
selectedObject = ((IDatabaseEditorInput) editorInput).getDatabaseObject();
} else if (activePart instanceof IDataSourceContainerProvider) {
selectedObject = ((IDataSourceContainerProvider) activePart).getDataSourceContainer();
}
}
if (selectedObject != null) {
// Contribute standard tools like session manager
DBPDataSource dataSource = selectedObject.getDataSource();
if (dataSource != null) {
DBPDataSourceContainer dataSourceContainer = dataSource.getContainer();
DBPEditorContribution[] contributedEditors = DBWorkbench.getPlatform().getDataSourceProviderRegistry().getContributedEditors(DBPEditorContribution.MB_CONNECTION_EDITOR, dataSourceContainer);
if (contributedEditors.length > 0) {
menuItems.add(new Separator());
for (DBPEditorContribution ec : contributedEditors) {
menuItems.add(new ActionContributionItem(new OpenToolsEditorAction(activePage, dataSource, ec)));
}
}
}
}
// Tasks management
{
menuItems.add(new Separator());
menuItems.add(ActionUtils.makeCommandContribution(activePart.getSite(), DatabaseTasksView.CREATE_TASK_CMD_ID));
}
}
use of org.jkiss.dbeaver.tools.registry.ToolDescriptor in project dbeaver by serge-rider.
the class DataSourceToolsContributor method getAvailableTools.
private List<ToolDescriptor> getAvailableTools(IStructuredSelection selection) {
List<DBSObject> objects = NavigatorUtils.getSelectedObjects(selection);
List<ToolDescriptor> result = new ArrayList<>();
if (!objects.isEmpty()) {
for (ToolDescriptor descriptor : ToolsRegistry.getInstance().getTools()) {
if (descriptor.isSingleton() && objects.size() > 1) {
continue;
}
boolean applies = true;
for (DBSObject object : objects) {
if (!descriptor.appliesTo(object)) {
applies = false;
break;
}
}
if (applies) {
result.add(descriptor);
}
}
}
return result;
}
use of org.jkiss.dbeaver.tools.registry.ToolDescriptor in project dbeaver by dbeaver.
the class DataSourceToolsContributor method fillToolsMenu.
private static void fillToolsMenu(List<IContributionItem> menuItems, List<ToolDescriptor> tools, ISelection selection) {
boolean hasTools = false;
if (!CommonUtils.isEmpty(tools)) {
IWorkbenchWindow workbenchWindow = UIUtils.getActiveWorkbenchWindow();
if (workbenchWindow.getActivePage() != null) {
IWorkbenchPart activePart = workbenchWindow.getActivePage().getActivePart();
if (activePart != null) {
Map<ToolGroupDescriptor, IMenuManager> groupsMap = new HashMap<>();
Set<ToolGroupDescriptor> groupSet = new HashSet<>();
for (ToolDescriptor tool : tools) {
hasTools = true;
IMenuManager parentMenu = null;
if (tool.getGroup() != null) {
if (SHOW_GROUPS_AS_SUBMENU) {
parentMenu = getGroupMenu(menuItems, groupsMap, tool.getGroup());
} else {
if (!groupSet.contains(tool.getGroup())) {
groupSet.add(tool.getGroup());
menuItems.add(new Separator(tool.getGroup().getId()));
}
}
}
IAction action = ActionUtils.makeAction(new ExecuteToolHandler(workbenchWindow, tool), activePart.getSite(), selection, tool.getLabel(), tool.getIcon() == null ? null : DBeaverIcons.getImageDescriptor(tool.getIcon()), tool.getDescription());
if (parentMenu == null) {
menuItems.add(new ActionContributionItem(action));
} else {
parentMenu.add(new ActionContributionItem(action));
}
}
}
}
}
if (!hasTools) {
menuItems.add(new ActionContributionItem(new EmptyListAction()));
}
}
use of org.jkiss.dbeaver.tools.registry.ToolDescriptor in project dbeaver by dbeaver.
the class DataSourceToolsContributor method fillContributionItems.
@Override
protected void fillContributionItems(List<IContributionItem> menuItems) {
IWorkbenchPage activePage = UIUtils.getActiveWorkbenchWindow().getActivePage();
IWorkbenchPart activePart = activePage.getActivePart();
if (activePart == null) {
return;
}
DBSObject selectedObject = null;
INavigatorModelView navigatorModelView = GeneralUtils.adapt(activePart, INavigatorModelView.class);
if (navigatorModelView != null) {
final ISelectionProvider selectionProvider = activePart.getSite().getSelectionProvider();
if (selectionProvider != null) {
ISelection selection = selectionProvider.getSelection();
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
selectedObject = RuntimeUtils.getObjectAdapter(((IStructuredSelection) selection).getFirstElement(), DBSObject.class);
List<ToolDescriptor> tools = getAvailableTools((IStructuredSelection) selection);
fillToolsMenu(menuItems, tools, selection);
}
}
} else if (activePart instanceof IEditorPart) {
IEditorInput editorInput = ((IEditorPart) activePart).getEditorInput();
if (editorInput instanceof IDatabaseEditorInput) {
selectedObject = ((IDatabaseEditorInput) editorInput).getDatabaseObject();
} else if (activePart instanceof IDataSourceContainerProvider) {
selectedObject = ((IDataSourceContainerProvider) activePart).getDataSourceContainer();
}
}
if (selectedObject != null) {
// Contribute standard tools like session manager
DBPDataSource dataSource = selectedObject.getDataSource();
if (dataSource != null) {
DBPDataSourceContainer dataSourceContainer = dataSource.getContainer();
DBPEditorContribution[] contributedEditors = DBWorkbench.getPlatform().getDataSourceProviderRegistry().getContributedEditors(DBPEditorContribution.MB_CONNECTION_EDITOR, dataSourceContainer);
if (contributedEditors.length > 0) {
menuItems.add(new Separator());
for (DBPEditorContribution ec : contributedEditors) {
menuItems.add(new ActionContributionItem(new OpenToolsEditorAction(activePage, dataSource, ec)));
}
}
}
}
// Tasks management
{
menuItems.add(new Separator());
menuItems.add(ActionUtils.makeCommandContribution(activePart.getSite(), DatabaseTasksView.CREATE_TASK_CMD_ID));
}
}
Aggregations