Example usage for org.eclipse.jface.viewers ITreePathContentProvider ITreePathContentProvider

List of usage examples for org.eclipse.jface.viewers ITreePathContentProvider ITreePathContentProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ITreePathContentProvider ITreePathContentProvider.

Prototype

ITreePathContentProvider

Source Link

Usage

From source file:de.dentrassi.eclipse.rpm.editor.ContentTable.java

License:Open Source License

public ContentTable(final Composite parent) {
    this.wrapper = new Composite(parent, SWT.NO_BACKGROUND);
    parent.setLayout(new FillLayout());

    this.resourceManager = new LocalResourceManager(JFaceResources.getResources(parent.getDisplay()));
    this.wrapper.addDisposeListener((evt) -> this.resourceManager.dispose());

    this.dimmedColor = this.resourceManager.createColor(new RGB(127, 127, 127));
    final ImageDescriptor fileIconDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID,
            "$nl$/icons/obj16/file.png"); //$NON-NLS-1$
    final ImageDescriptor folderIconDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID,
            "$nl$/icons/obj16/folder.png"); //$NON-NLS-1$
    final ImageDescriptor linkIconDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID,
            "$nl$/icons/obj16/link.png"); //$NON-NLS-1$

    this.viewer = new TreeViewer(this.wrapper, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

    final TreeColumnLayout layout = new TreeColumnLayout();

    createColumn(layout, "Name", 4, SWT.NONE, (node, cell) -> {
        cell.setText(node.getName());//  w ww. j a  v  a  2s .c  o m
        final MetaInformation meta = ContentTable.this.meta.get(node.getFullName());
        if (meta != null && meta.getMode() != null) {
            if ((meta.getMode() & 0x8000) > 0) {
                cell.setImage(this.resourceManager.createImage(fileIconDescriptor));
            } else if ((meta.getMode() & 0x4000) > 0) {
                cell.setImage(this.resourceManager.createImage(folderIconDescriptor));
            } else if ((meta.getMode() & 0xA000) > 0) {
                cell.setImage(this.resourceManager.createImage(linkIconDescriptor));
            }
        }
    });

    createColumn(layout, "Size", 1, SWT.RIGHT,
            (node, cell) -> cell.setText(NumberFormat.getIntegerInstance().format(node.getSize())));

    createMetaColumn(layout, "User", 1, SWT.NONE, (meta, cell) -> cell.setText(meta.getUser()));
    createMetaColumn(layout, "Group", 1, SWT.NONE, (meta, cell) -> cell.setText(meta.getGroup()));
    createMetaColumn(layout, "Mode", 1, SWT.NONE, (meta, cell) -> cell.setText(makeMode(meta.getMode())));

    createMetaColumn(layout, "Link", 1, SWT.NONE, (meta, cell) -> cell.setText(meta.getLinkTo()));

    createColumn(layout, "Timestamp", 1, SWT.NONE, (node, cell) -> {
        Instant ts = null;

        final MetaInformation meta = ContentTable.this.meta.get(node.getFullName());
        if (meta != null) {
            // use meta entry
            ts = meta.getTimestamp();
        }
        if (ts == null && node instanceof File) {
            // use CPIO entry
            ts = ((File) node).getFile().getTimestamp();
        }

        if (ts != null) {
            cell.setText(DATETIME_FORMATTER.format(ts.atZone(ZoneId.systemDefault())));
        }
    });

    this.wrapper.setLayout(layout);
    this.viewer.getTree().setHeaderVisible(true);

    final ITreePathContentProvider p = new ITreePathContentProvider() {

        @Override
        public boolean hasChildren(final TreePath path) {
            final Object[] children = getChildren(path);
            return children != null && children.length > 0;
        }

        @Override
        public TreePath[] getParents(final Object element) {
            return new TreePath[0];
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            if (inputElement instanceof Object[]) {
                return (Object[]) inputElement;
            } else if (inputElement instanceof Directory) {
                return ((Directory) inputElement).getChildren();
            }
            return null;
        }

        @Override
        public Object[] getChildren(final TreePath parentPath) {
            return getElements(parentPath.getLastSegment());
        }
    };
    this.viewer.setContentProvider(p);
}

From source file:de.dentrassi.eclipse.rpm.editor.DependenciesTable.java

License:Open Source License

public DependenciesTable(final Composite parent) {
    this.wrapper = new Composite(parent, SWT.NO_BACKGROUND);
    parent.setLayout(new FillLayout());

    this.viewer = new TreeViewer(this.wrapper, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);

    final TreeColumnLayout layout = new TreeColumnLayout();

    {//from   w  w w .  j  a  va  2  s. c  o m
        final TreeViewerColumn col = new TreeViewerColumn(this.viewer, SWT.NONE);
        col.getColumn().setText("Name");
        col.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(final ViewerCell cell) {
                final Object ele = cell.getElement();
                if (ele instanceof Map.Entry<?, ?>) {
                    final String label = ((Map.Entry<?, ?>) ele).getKey().toString();
                    cell.setText(label);
                } else if (ele instanceof Dependency) {
                    final Dependency dep = (Dependency) ele;
                    cell.setText(dep.getName());
                }
            }
        });
        layout.setColumnData(col.getColumn(), new ColumnWeightData(5));
    }

    {
        final TreeViewerColumn col = new TreeViewerColumn(this.viewer, SWT.NONE);
        col.getColumn().setText("Op");
        col.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(final ViewerCell cell) {
                final Object ele = cell.getElement();
                if (ele instanceof Dependency) {
                    final Dependency dep = (Dependency) ele;

                    final EnumSet<RpmDependencyFlags> flags = dep.getFlags();

                    final StringBuilder sb = new StringBuilder();

                    for (final RpmDependencyFlags flag : flags) {
                        switch (flag) {
                        case LESS:
                            sb.append("<");
                            break;
                        case EQUAL:
                            sb.append("=");
                            break;
                        case GREATER:
                            sb.append(">");
                            break;
                        default:
                            break;
                        }
                    }

                    cell.setText(sb.toString());
                }
            }
        });
        layout.setColumnData(col.getColumn(), new ColumnWeightData(1));
    }

    {
        final TreeViewerColumn col = new TreeViewerColumn(this.viewer, SWT.NONE);
        col.getColumn().setText("Version");
        col.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(final ViewerCell cell) {
                final Object ele = cell.getElement();
                if (ele instanceof Dependency) {
                    final Dependency dep = (Dependency) ele;
                    cell.setText(dep.getVersion());
                }
            }
        });
        layout.setColumnData(col.getColumn(), new ColumnWeightData(5));
    }

    {
        final TreeViewerColumn col = new TreeViewerColumn(this.viewer, SWT.NONE);
        col.getColumn().setText("Flags");
        col.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(final ViewerCell cell) {
                final Object ele = cell.getElement();
                if (ele instanceof Dependency) {
                    final Dependency dep = (Dependency) ele;

                    final EnumSet<RpmDependencyFlags> flags = dep.getFlags();

                    final String text = flags.stream().map(RpmDependencyFlags::name)
                            .collect(Collectors.joining(", "));

                    cell.setText(text);
                }
            }
        });
        layout.setColumnData(col.getColumn(), new ColumnWeightData(5));
    }

    this.wrapper.setLayout(layout);
    this.viewer.getTree().setHeaderVisible(true);

    final ITreePathContentProvider p = new ITreePathContentProvider() {

        @Override
        public boolean hasChildren(final TreePath path) {
            final Object[] children = getChildren(path);
            return children != null && children.length > 0;
        }

        @Override
        public TreePath[] getParents(final Object element) {
            return new TreePath[0];
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            if (inputElement instanceof Map<?, ?>) {
                return ((Map<?, ?>) inputElement).entrySet().toArray();
            } else if (inputElement instanceof Map.Entry<?, ?>) {
                final Object val = ((Map.Entry<?, ?>) inputElement).getValue();
                if (val instanceof Collection<?>) {
                    return ((Collection<?>) val).toArray();
                }
            }
            return null;
        }

        @Override
        public Object[] getChildren(final TreePath parentPath) {
            return getElements(parentPath.getLastSegment());
        }
    };
    this.viewer.setContentProvider(p);
}

From source file:de.dentrassi.eclipse.rpm.editor.HeaderTable.java

License:Open Source License

public HeaderTable(final Composite parent, final Function<Integer, Object> tagNameProvider) {
    this.tagNameProvider = tagNameProvider;
    this.wrapper = new Composite(parent, SWT.NO_BACKGROUND);
    parent.setLayout(new FillLayout());

    this.viewer = new TreeViewer(this.wrapper, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);

    final TreeColumnLayout layout = new TreeColumnLayout();

    createColumn(layout, "Tag ID", 1, entry -> String.format("%d", entry.getKey()));
    createColumnCell(layout, "Tag Name", 2, (entry, cell) -> {
        makeTagName(entry).ifPresent(cell::setText);
    });//w w  w  .j  a  v a 2  s  .  co  m

    createStyledColumn(layout, "Type", 1, entry -> makeType(entry));
    createColumn(layout, "Count", 1, entry -> String.format("%d", entry.getValue().getCount()));
    createColumn(layout, "Index", 1, entry -> String.format("%d", entry.getValue().getIndex()));
    createColumnCell(layout, "Value", 10, HeaderTable::updateCellValue);

    this.wrapper.setLayout(layout);
    this.viewer.getTree().setHeaderVisible(true);
    this.viewer.addDoubleClickListener(this::handleDoubleClick);

    final ITreePathContentProvider p = new ITreePathContentProvider() {

        @Override
        public boolean hasChildren(final TreePath path) {
            final Object[] children = getChildren(path);
            return children != null && children.length > 0;
        }

        @Override
        public TreePath[] getParents(final Object element) {
            return new TreePath[0];
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            if (inputElement instanceof Object[]) {
                return (Object[]) inputElement;
            } else if (inputElement instanceof Entry) {
                final Entry entry = (Entry) inputElement;
                final Object value = entry.getValue().getValue();
                final Object[] childs = makeObjects(value).map(Stream::toArray).orElse(null);
                if (childs != null && childs.length <= 1) {
                    return null;
                }
                return childs;
            }
            return null;
        }

        @Override
        public Object[] getChildren(final TreePath parentPath) {
            return getElements(parentPath.getLastSegment());
        }
    };
    this.viewer.setContentProvider(p);
}

From source file:org.eclipse.tcf.te.tcf.ui.wizards.pages.PeerExportWizardPage.java

License:Open Source License

/**
 * Creates the checkbox tree and list for selecting peers.
 *
 * @param parent the parent control//from   w w w .  j  a  va  2s. c o  m
 */
private final void createPeersGroup(Composite parent) {
    Composite resourcesGroup = new Composite(parent, SWT.NONE);
    resourcesGroup.setLayout(new GridLayout());
    resourcesGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
    resourcesGroup.setFont(parent.getFont());

    new Label(resourcesGroup, SWT.NONE).setText(Messages.PeerExportWizardPage_peers_label);
    Table table = new Table(resourcesGroup, SWT.CHECK | SWT.BORDER);
    table.setLayoutData(new GridData(GridData.FILL_BOTH));
    fViewer = new CheckboxTableViewer(table);
    fViewer.setContentProvider(new ITreePathContentProvider() {
        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof IPeerModel) {
                IPeerNode[] nodes = ((IPeerModel) inputElement).getPeerNodes();
                List<IPeerNode> filteredNodes = new ArrayList<IPeerNode>();
                for (IPeerNode node : nodes) {
                    if (node.isVisible()) {
                        filteredNodes.add(node);
                    }
                }
                return filteredNodes.toArray();
            }
            return new Object[0];
        }

        @Override
        public Object[] getChildren(TreePath parentPath) {
            return null;
        }

        @Override
        public boolean hasChildren(TreePath path) {
            return false;
        }

        @Override
        public TreePath[] getParents(Object element) {
            return null;
        }
    });
    fViewer.setLabelProvider(new DelegatingLabelProvider());
    ICheckStateListener checkListener = new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            setPageComplete(isComplete());
        }
    };
    fViewer.addCheckStateListener(checkListener);
    fViewer.setInput(ModelManager.getPeerModel());

    // top level group
    Composite buttonComposite = new Composite(resourcesGroup, SWT.NONE);
    buttonComposite.setFont(parent.getFont());

    GridLayout layout = new GridLayout(2, true);
    layout.marginHeight = layout.marginWidth = 0;
    buttonComposite.setLayout(layout);
    buttonComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));

    Button selectButton = createButton(buttonComposite, IDialogConstants.SELECT_ALL_ID,
            Messages.PeerExportWizardPage_selectAll, false);

    selectButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            fViewer.setAllChecked(true);
            setPageComplete(isComplete());
        }
    });

    Button deselectButton = createButton(buttonComposite, IDialogConstants.DESELECT_ALL_ID,
            Messages.PeerExportWizardPage_deselectAll, false);

    deselectButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            fViewer.setAllChecked(false);
            setPageComplete(isComplete());
        }
    });
}

From source file:org.eclipse.tcf.te.tcf.ui.wizards.pages.PeerImportWizardPage.java

License:Open Source License

/**
 * Creates the checkbox tree and list for selecting peers.
 *
 * @param parent the parent control//from   www  . j a v  a  2  s.c om
 */
@SuppressWarnings("unused")
private final void createPeersGroup(Composite parent) {
    Composite resourcesGroup = new Composite(parent, SWT.NONE);
    resourcesGroup.setLayout(new GridLayout());
    resourcesGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
    resourcesGroup.setFont(parent.getFont());

    new Label(resourcesGroup, SWT.NONE).setText(Messages.PeerImportWizardPage_peers_label);
    Table table = new Table(resourcesGroup, SWT.CHECK | SWT.BORDER);
    table.setLayoutData(new GridData(GridData.FILL_BOTH));
    fViewer = new CheckboxTableViewer(table);
    fViewer.setContentProvider(new ITreePathContentProvider() {
        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            List<IPeer> elements = new ArrayList<IPeer>();
            File[] candidates = ((IPath) inputElement).toFile().listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    IPath path = new Path(pathname.getAbsolutePath());
                    return path.getFileExtension() != null
                            && path.getFileExtension().toLowerCase().equals("peer"); //$NON-NLS-1$
                }
            });
            // If there are "*.peer" files to read, process them
            if (candidates != null && candidates.length > 0) {
                for (File candidate : candidates) {
                    try {
                        IURIPersistenceService service = ServiceManager.getInstance()
                                .getService(IURIPersistenceService.class);
                        if (service != null) {
                            IPeer tempPeer = (IPeer) service.read(IPeer.class,
                                    candidate.getAbsoluteFile().toURI());
                            elements.add(tempPeer);
                        }
                    } catch (Exception e) {
                    }
                }
            }

            return elements.toArray();
        }

        @Override
        public Object[] getChildren(TreePath parentPath) {
            return null;
        }

        @Override
        public boolean hasChildren(TreePath path) {
            return false;
        }

        @Override
        public TreePath[] getParents(Object element) {
            return null;
        }
    });
    fViewer.setLabelProvider(new DelegatingLabelProvider());
    ICheckStateListener checkListener = new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            setPageComplete(isComplete());
        }
    };
    fViewer.addCheckStateListener(checkListener);

    // top level group
    Composite buttonComposite = new Composite(resourcesGroup, SWT.NONE);
    buttonComposite.setFont(parent.getFont());

    GridLayout layout = new GridLayout(2, true);
    layout.marginHeight = layout.marginWidth = 0;
    buttonComposite.setLayout(layout);
    buttonComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));

    Button selectButton = createButton(buttonComposite, IDialogConstants.SELECT_ALL_ID,
            Messages.PeerImportWizardPage_selectAll, false);

    selectButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            fViewer.setAllChecked(true);
            setPageComplete(isComplete());
        }
    });

    Button deselectButton = createButton(buttonComposite, IDialogConstants.DESELECT_ALL_ID,
            Messages.PeerImportWizardPage_deselectAll, false);

    deselectButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            fViewer.setAllChecked(false);
            setPageComplete(isComplete());
        }
    });

    new Label(resourcesGroup, SWT.NONE);

    fOverwrite = new Button(resourcesGroup, SWT.CHECK);
    fOverwrite.setText(Messages.PeerImportWizardPage_overwrite_button);
    fOverwrite.setSelection(getDialogSettings().getBoolean(OVERWRITE));

}