Example usage for org.eclipse.jface.fieldassist ContentProposalAdapter setEnabled

List of usage examples for org.eclipse.jface.fieldassist ContentProposalAdapter setEnabled

Introduction

In this page you can find the example usage for org.eclipse.jface.fieldassist ContentProposalAdapter setEnabled.

Prototype

public void setEnabled(boolean enabled) 

Source Link

Document

Set the boolean flag that determines whether the adapter is enabled.

Usage

From source file:org.embl.cca.utils.ui.view.filenavigator.FileView.java

License:Apache License

@Override
public void createPartControl(final Composite parent) {

    parent.setLayout(new GridLayout(1, false));

    final Composite top = new Composite(parent, SWT.NONE);
    top.setLayout(new GridLayout(2, false));
    top.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));

    final Label fileLabel = new Label(top, SWT.NONE);
    fileLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));

    filePath = new Text(top, SWT.BORDER);
    filePath.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    tree = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    tree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    tree.getTree().setHeaderVisible(true);
    tree.setUseHashlookup(true);/*from ww  w.j  av  a2 s.  c  o  m*/

    fscp = new FileSystemContentProvider(); //It gets tree on setting input
    fscp.addTreeContentProviderListener(this);
    tree.setContentProvider(fscp);
    fslp = new FileSystemLabelProvider(tree, false);
    tree.setLabelProvider(fslp);
    fcpp = new FileContentProposalProvider();
    //      tree.addFilter(new AllowOnlyFoldersFilter());
    fsc = new FileSystemComparator(tree, defaultFileSortType);
    tree.setComparator(fsc);

    if (savedPath != null) {
        savedSelection = fcpp.stringToFile(savedPath);
    }
    if (savedSelection != null)
        filePath.setText(savedSelection.getAbsolutePath());
    final TextContentAdapter adapter = new TextContentAdapter();
    final ContentProposalAdapter ad = new ContentProposalAdapter(filePath, adapter, fcpp, null, null);
    ad.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
    ad.addContentProposalListener(new IContentProposalListener() {
        @Override
        public void proposalAccepted(IContentProposal proposal) {
            setSelectedFile(proposal.getContent(), false);
        }
    });

    tree.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (!updatingTextFromTreeSelections)
                return;
            final File file = getSelectedFile();
            if (file != null && file.isDirectory()) {
                try {
                    ad.setEnabled(false);
                    filePath.setText(fcpp.fileToString(file));
                    filePath.setSelection(filePath.getText().length());
                } finally {
                    ad.setEnabled(true);
                }
            }
        }
    });

    filePath.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.character == '\t') {
                if (ad.isProposalPopupOpen()) {
                    logger.debug("return keyPressed on filePath");
                    // hacking due to lame ContentProposalAdapter, it can
                    // not tell the proposals (everything is private):
                    IContentProposal[] proposals = fcpp.getProposals(null, 0);
                    if (proposals != null) { // Can not be null because
                        // isProposalPopupOpen,
                        // anyway to be safe
                        final String path = proposals[0].getContent();
                        logger.debug("getFirstPath is " + path);

                        filePath.getDisplay().asyncExec(new Runnable() {
                            @Override
                            public void run() {
                                filePath.setFocus();
                                filePath.setText(path);
                                setSelectedFile(path, false);
                                filePath.setFocus();
                                filePath.setSelection(path.length(), path.length());
                            }
                        });
                    }
                }
                // This else branch is unnecessary, because if pressed
                // RETURN and filePath is valid, then the proposal will
                // accept it (see addContentProposalListener)
                //            } else if (/* e.character=='\t' || */e.character == '\n'
                //                  || e.character == '\r') {
                //               final String path = filePath.getText();
                //               setSelectedFile(path, false);
            }
        }
    });

    fslp.createColumns(logger);
    getSite().setSelectionProvider(tree);

    try {
        //         final IFileIconService service = CommonExtension.getService(IFileIconService.class);
        //         final Image icon =  //TODO Check how this works on windows (probably shows the root icon wrongly, because we need folder icon
        //               service.getIconForFile(isWindowsOS() ? new File(
        //                     "C:/Windows/") : new File("/"));
        //         final Image icon = service.getIconForFile(findFileWithTag.listRoots()[0]);
        //         fileLabel.setImage(icon);
    } catch (Exception e) {
        logger.error("Cannot get icon for system root!", e);
    }

    // Make drag source, it can then drag into projects
    final DragSource dragSource = new DragSource(tree.getControl(),
            DND.DROP_MOVE | DND.DROP_DEFAULT | DND.DROP_COPY);
    dragSource.setTransfer(new Transfer[] { FileTransfer.getInstance() });
    dragSource.addDragListener(new DragSourceAdapter() {
        @Override
        public void dragSetData(final DragSourceEvent event) {
            if (getSelectedFiles() == null)
                return;
            event.data = getSelectedFiles();
        }
    });

    // Add ability to open any file double clicked on (folders open in Image
    // Monitor View)
    tree.getTree().addListener(SWT.MouseDoubleClick, new Listener() {
        @Override
        public void handleEvent(final Event event) {
            openSelectedFile();
        }
    });

    tree.getTree().addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(final KeyEvent e) {
        }

        @Override
        public void keyPressed(final KeyEvent e) {
            if (e.character == '\n' || e.character == '\r') {
                openSelectedFile();
            }
        }
    });

    tree.setInput(fscp.createSuperRootNode());

    createRightClickMenu();
    addToolbar();
}

From source file:uk.ac.diamond.sda.navigator.views.FileView.java

License:Open Source License

@Override
public void createPartControl(final Composite parent) {

    parent.setLayout(new GridLayout(1, false));

    final Composite top = new Composite(parent, SWT.NONE);
    top.setLayout(new GridLayout(2, false));
    top.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));

    final Label fileLabel = new Label(top, SWT.NONE);
    fileLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
    try {/*w  ww  .  j  a va  2s . co  m*/
        IFileIconService service = FileIconServiceHolder.getFileIconService();
        final Image icon = service.getIconForFile(OSUtils.isWindowsOS() ? "C:/Windows/" : "/");
        fileLabel.setImage(icon);
    } catch (Exception e) {
        logger.error("Cannot get icon for system root!", e);
    }

    this.filePath = new Text(top, SWT.BORDER);
    if (savedSelection != null)
        filePath.setText(savedSelection.toAbsolutePath().toString());
    filePath.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    final FileContentProposalProvider prov = new FileContentProposalProvider();
    final TextContentAdapter adapter = new TextContentAdapter();
    final ContentProposalAdapter ad = new ContentProposalAdapter(filePath, adapter, prov, null, null);
    ad.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
    ad.addContentProposalListener(new IContentProposalListener() {
        @Override
        public void proposalAccepted(IContentProposal proposal) {
            final String path = proposal.getContent();
            try {
                updatingTextFromTreeSelections = false;
                setSelectedFile(path);
            } finally {
                updatingTextFromTreeSelections = true;
            }
        }
    });

    filePath.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.character == '\t') {
                if (ad.isProposalPopupOpen()) {
                    if (prov.getFirstPath() != null) {
                        final String path = prov.getFirstPath();

                        filePath.getDisplay().asyncExec(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    updatingTextFromTreeSelections = false;
                                    filePath.setFocus();
                                    filePath.setText(path);
                                    setSelectedFile(path);
                                    filePath.setFocus();
                                    filePath.setSelection(path.length(), path.length());
                                } finally {
                                    updatingTextFromTreeSelections = true;
                                }
                            }
                        });
                    }
                }
            } else if (e.character == '\t' || e.character == '\n' || e.character == '\r') {
                final String path = filePath.getText();
                try {
                    updatingTextFromTreeSelections = false;
                    setSelectedFile(path);
                } finally {
                    updatingTextFromTreeSelections = true;
                }
            }
        }
    });

    tree = new TreeViewer(parent,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
    tree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    tree.getTree().setHeaderVisible(true);
    tree.setUseHashlookup(true);

    tree.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (!updatingTextFromTreeSelections)
                return;
            final Path file = getSelectedPath();
            if (file != null && Files.isDirectory(file)) {
                try {
                    ad.setEnabled(false);
                    filePath.setText(file.toAbsolutePath().toString());
                    filePath.setSelection(filePath.getText().length());
                } finally {
                    ad.setEnabled(true);
                }
            }
        }
    });

    final String[] titles = { "Name", "Date", "Type", "Size", "Comment", "Scan Command" };

    IPreferenceStore store = NavigatorRCPActivator.getDefault().getPreferenceStore();
    boolean showDate = store.getBoolean(FileNavigatorPreferenceConstants.SHOW_DATE_COLUMN);
    boolean showType = store.getBoolean(FileNavigatorPreferenceConstants.SHOW_TYPE_COLUMN);
    boolean showSize = store.getBoolean(FileNavigatorPreferenceConstants.SHOW_SIZE_COLUMN);
    boolean showComment = store.getBoolean(FileNavigatorPreferenceConstants.SHOW_COMMENT_COLUMN);
    boolean showScanCmd = store.getBoolean(FileNavigatorPreferenceConstants.SHOW_SCANCMD_COLUMN);

    // we listen to the preference store property changes
    store.addPropertyChangeListener(new IPropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FileNavigatorPreferenceConstants.SHOW_DATE_COLUMN)) {
                setColumnVisible(1, 120, (Boolean) event.getNewValue());
            } else if (event.getProperty().equals(FileNavigatorPreferenceConstants.SHOW_TYPE_COLUMN)) {
                setColumnVisible(2, 80, (Boolean) event.getNewValue());
            } else if (event.getProperty().equals(FileNavigatorPreferenceConstants.SHOW_SIZE_COLUMN)) {
                setColumnVisible(3, 150, (Boolean) event.getNewValue());
            } else if (event.getProperty().equals(FileNavigatorPreferenceConstants.SHOW_COMMENT_COLUMN)) {
                setColumnVisible(4, 250, (Boolean) event.getNewValue());
            } else if (event.getProperty().equals(FileNavigatorPreferenceConstants.SHOW_SCANCMD_COLUMN)) {
                setColumnVisible(5, 300, (Boolean) event.getNewValue());
            }
        }
    });

    int dateWidth = showDate ? 120 : 0;
    int typeWidth = showType ? 80 : 0;
    int sizeWidth = showSize ? 150 : 0;
    int commentWidth = showComment ? 250 : 0;
    int scanCmdWidth = showScanCmd ? 300 : 0;

    final int[] widths = { 350, dateWidth, typeWidth, sizeWidth, commentWidth, scanCmdWidth };
    TreeViewerColumn tVCol;
    for (int i = 0; i < titles.length; i++) {
        tVCol = new TreeViewerColumn(tree, SWT.NONE);
        TreeColumn tCol = tVCol.getColumn();
        tCol.setText(titles[i]);
        tCol.setWidth(widths[i]);
        try {
            tVCol.setLabelProvider(new FileLabelProvider(tree, i));
        } catch (Exception e1) {
            logger.error("Cannot create label provider " + i, e1);
        }
    }
    getSite().setSelectionProvider(tree);

    createContent(true);

    // Make drag source, it can then drag into projects
    final DragSource dragSource = new DragSource(tree.getControl(),
            DND.DROP_MOVE | DND.DROP_DEFAULT | DND.DROP_COPY);
    dragSource.setTransfer(new Transfer[] { FileTransfer.getInstance() });
    dragSource.addDragListener(new DragSourceAdapter() {
        @Override
        public void dragSetData(DragSourceEvent event) {
            if (getSelectedPaths() == null)
                return;
            event.data = getSelectedPaths();
        }
    });

    // Add ability to open any file double clicked on (folders open in Image Monitor View)
    tree.getTree().addListener(SWT.MouseDoubleClick, new Listener() {

        @Override
        public void handleEvent(Event event) {
            openSelectedFile();
        }
    });

    tree.getTree().addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {

        }

        @Override
        public void keyPressed(KeyEvent e) {
            if (e.character == '\n' || e.character == '\r') {
                openSelectedFile();
            }
        }
    });

    createRightClickMenu();
    createActions();

    if (savedSelection != null) {
        if (savedSelection.toFile().exists()) {
            tree.setSelection(new StructuredSelection(savedSelection));
        } else if (savedSelection.getParent() != null && savedSelection.getParent().toFile().exists()) {
            // If file deleted, select parent.
            tree.setSelection(new StructuredSelection(savedSelection.getParent()));
        }
    }

    Display.getDefault().asyncExec(new Runnable() {
        @Override
        public void run() {
            final TreePath path = new TreePath(new Object[] { NIOUtils.getRoots().get(0) });
            tree.setExpandedState(path, true);
        }
    });

}