List of usage examples for org.eclipse.jface.fieldassist ContentProposalAdapter setEnabled
public void setEnabled(boolean enabled)
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); } }); }