List of usage examples for org.eclipse.jface.viewers TableViewerFocusCellManager getFocusCell
@Override
public ViewerCell getFocusCell()
From source file:org.eclipse.oomph.setup.ui.IndexManagerDialog.java
License:Open Source License
@Override protected void createUI(Composite parent) { indexViewer = new TableViewer(parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); indexViewer.getTable().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create()); indexViewer.setContentProvider(new IStructuredContentProvider() { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // Do nothing. }//from w w w .j ava 2 s.com public void dispose() { // Do nothing. } public Object[] getElements(Object inputElement) { return indexChoices.entrySet().toArray(); } }); final ColumnViewerInformationControlToolTipSupport columnViewerInformationControlToolTipSupport = new ColumnViewerInformationControlToolTipSupport( indexViewer, new LocationListener() { public void changing(LocationEvent event) { } public void changed(LocationEvent event) { } }); class MyLabelProvider extends CellLabelProvider implements ILabelProvider { private final Color gray = indexViewer.getTable().getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY); private final Font normalFont = indexViewer.getTable().getFont(); private final Font italicFont = ExtendedFontRegistry.INSTANCE.getFont(normalFont, IItemFontProvider.ITALIC_FONT); private final Font boldFont = ExtendedFontRegistry.INSTANCE.getFont(normalFont, IItemFontProvider.BOLD_FONT); public String getText(Object element) { return asMapEntry(element).getValue(); } public Image getImage(Object element) { return SetupUIPlugin.INSTANCE.getSWTImage("full/obj16/Index"); } @Override public String getToolTipText(Object element) { URI indexLocation = asMapEntry(element).getKey(); Map<URI, String> indexNames = indexManager.getIndexNames(true); StringBuilder result = new StringBuilder(); String nameLine = "<divs style='white-space:nowrap;'><b>name</b>: " + indexNames.get(indexLocation) + "</div>\n"; result.append(nameLine); String locationLine = "<div style='white-space:nowrap;'><b>location</b>: " + indexLocation + "</div>\n"; result.append(locationLine); String availabilityLine = "<div style='white-space:nowrap;'><b>availability</b>: " + (indexAvailability == null ? "Unknown" : indexAvailability.get(indexLocation) ? "Available" : "Unavailable") + "</div><br/><br/>\n"; result.append(availabilityLine); try { AbstractHoverInformationControlManager hoverInformationControlManager = ReflectUtil.getValue( "hoverInformationControlManager", columnViewerInformationControlToolTipSupport); int max = Math.max(nameLine.length(), locationLine.length()); hoverInformationControlManager.setSizeConstraints(max, 6, false, false); } catch (Throwable throwable) { // Ignore. } return result.toString(); } @Override public void update(ViewerCell cell) { Object element = cell.getElement(); cell.setImage(getImage(element)); URI indexLocation = asMapEntry(element).getKey(); if (!originalIndexChoices.containsKey(indexLocation)) { cell.setForeground(gray); } if (indexLocation.equals(originalIndexLocation)) { cell.setFont(boldFont); } else if (indexAvailability != null && !indexAvailability.get(indexLocation)) { cell.setFont(italicFont); } else { cell.setFont(normalFont); } cell.setText(getText(element) + " "); } } final ILabelProvider labelProvider = new MyLabelProvider(); indexViewer.setLabelProvider(labelProvider); final TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(indexViewer, new FocusCellOwnerDrawHighlighter(indexViewer)); indexViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { focusCellManager.getFocusCell(); updateEnablement(); } }); indexViewer.setInput(indexManager); TextCellEditor textCellEditor = new TextCellEditor(indexViewer.getTable(), SWT.BORDER); indexViewer.setCellEditors(new CellEditor[] { textCellEditor }); indexViewer.setColumnProperties(new String[] { "label" }); ColumnViewerEditorActivationStrategy editorActivationStrategy = new ColumnViewerEditorActivationStrategy( indexViewer) { @Override protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION || event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.F2; } }; TableViewerEditor.create(indexViewer, focusCellManager, editorActivationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION); indexViewer.setCellModifier(new ICellModifier() { public void modify(Object element, String property, Object value) { asMapEntry(((TableItem) element).getData()).setValue((String) value); indexViewer.refresh(true); } public Object getValue(Object element, String property) { return labelProvider.getText(element).trim(); } public boolean canModify(Object element, String property) { return true; } }); if (!indexChoices.isEmpty()) { indexViewer.setSelection(new StructuredSelection(indexChoices.entrySet().iterator().next())); } }