@Override public void createPartControl(Composite parent) { super.createPartControl(parent); final TreeViewer viewer = getNavigatorViewer(); assert viewer != null; viewer.getTree().setHeaderVisible(true); createColumns(viewer); UIUtils.setHelp(parent, IHelpContextIds.CTX_PROJECT_EXPLORER); viewer.addFilter( new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { return !(element instanceof DBNProjectDatabases); } }); updateTitle(); }
private void createColumns(final TreeViewer viewer) { final Color shadowColor = viewer.getControl().getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW); final ILabelProvider mainLabelProvider = (ILabelProvider) viewer.getLabelProvider(); columnController = new ViewerColumnController("projectExplorer", viewer); columnController.addColumn( "Name", "Resource name", SWT.LEFT, true, true, new TreeColumnViewerLabelProvider( new LabelProvider() { @Override public String getText(Object element) { return mainLabelProvider.getText(element); } @Override public Image getImage(Object element) { return mainLabelProvider.getImage(element); } })); columnController.addColumn( "DataSource", "Datasource(s) associated with resource", SWT.LEFT, true, false, new TreeColumnViewerLabelProvider( new LabelProvider() { @Override public String getText(Object element) { DBNNode node = (DBNNode) element; if (node instanceof DBNDatabaseNode) { return ((DBNDatabaseNode) node).getDataSourceContainer().getName(); } else if (node instanceof DBNResource) { Collection<DBPDataSourceContainer> containers = ((DBNResource) node).getAssociatedDataSources(); if (!CommonUtils.isEmpty(containers)) { StringBuilder text = new StringBuilder(); for (DBPDataSourceContainer container : containers) { if (text.length() > 0) { text.append(", "); } text.append(container.getName()); } return text.toString(); } } return ""; } @Override public Image getImage(Object element) { /* DBNNode node = (DBNNode) element; if (node instanceof DBNDatabaseNode) { return DBeaverIcons.getImage(((DBNDatabaseNode) node).getDataSourceContainer().getDriver().getIcon()); } else if (node instanceof DBNResource) { Collection<DBPDataSourceContainer> containers = ((DBNResource) node).getAssociatedDataSources(); if (containers != null && containers.size() == 1) { return DBeaverIcons.getImage((containers.iterator().next().getDriver().getIcon())); } } */ return null; } })); columnController.addColumn( "Preview", "Script content preview", SWT.LEFT, false, false, new LazyLabelProvider(shadowColor) { @Override public String getLazyText(Object element) { if (element instanceof DBNNode) { return ((DBNNode) element).getNodeDescription(); } else { return null; } } }); columnController.addColumn( "Size", "File size", SWT.LEFT, false, false, new TreeColumnViewerLabelProvider( new LabelProvider() { @Override public String getText(Object element) { DBNNode node = (DBNNode) element; if (node instanceof DBNResource) { IResource resource = ((DBNResource) node).getResource(); if (resource instanceof IFile) { return String.valueOf(resource.getLocation().toFile().length()); } } return ""; } })); columnController.addColumn( "Modified", "Time the file was last modified", SWT.LEFT, false, false, new TreeColumnViewerLabelProvider( new LabelProvider() { private SimpleDateFormat sdf = new SimpleDateFormat(DBConstants.DEFAULT_TIMESTAMP_FORMAT); @Override public String getText(Object element) { DBNNode node = (DBNNode) element; if (node instanceof DBNResource) { IResource resource = ((DBNResource) node).getResource(); if (resource instanceof IFile || resource instanceof IFolder) { return sdf.format(new Date(resource.getLocation().toFile().lastModified())); } } return ""; } })); columnController.addColumn( "Type", "Resource type", SWT.LEFT, false, false, new TreeColumnViewerLabelProvider( new LabelProvider() { @Override public String getText(Object element) { DBNNode node = (DBNNode) element; if (node instanceof DBNResource) { IResource resource = ((DBNResource) node).getResource(); ProgramInfo program = ProgramInfo.getProgram(resource); if (program != null) { return program.getProgram().getName(); } } return ""; } })); columnController.createColumns(); }