Object (final String dataId) { if (myBuilder == null) return null; if (LangDataKeys.IDE_VIEW.is(dataId)) { return myIdeView; } else if (PlatformCoreDataKeys.SELECTED_ITEM.is(dataId)) { return getSelectedNode(); } else if (PlatformCoreDataKeys.SELECTED_ITEMS.is(dataId)) { List<AbstractTreeNode<?>> selection = getSelectedNodes(); if (selection.isEmpty()) return ArrayUtil.EMPTY_OBJECT_ARRAY; return getSelectedNodes().toArray(); } else if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { List<AbstractTreeNode<?>> selection = getSelectedNodes(); if (selection.isEmpty()) return Navigatable.EMPTY_NAVIGATABLE_ARRAY; return selection.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY); } else if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) { AbstractTreeNode<?> parentNode = myBuilder.getParentNode(); List<AbstractTreeNode<?>> selection = getSelectedNodes(); DataProvider structureProvider = myProjectTreeStructure == null ? null : (DataProvider)myProjectTreeStructure.getDataFromProviders(selection, dataId); return CompositeDataProvider.compose(slowId -> getSlowData(slowId, parentNode, selection), structureProvider); } else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return myDeleteElementProvider; } else if (myProjectTreeStructure != null) { return myProjectTreeStructure.getDataFromProviders(getSelectedNodes(), dataId); } return null; }