List of usage examples for org.eclipse.jface.viewers ViewerCell getViewerRow
public ViewerRow getViewerRow()
From source file:com.peergreen.eclipse.osgi.preferences.provider.column.ActionsColumnLabelProvider.java
License:Apache License
@Override public void update(ViewerCell cell) { PeergreenServerEntry serverEntry = (PeergreenServerEntry) cell.getElement(); TableItem item = (TableItem) cell.getItem(); composite = new Composite((Composite) cell.getViewerRow().getControl(), SWT.BORDER_DASH); composite.setLayout(new FillLayout()); // Download button if assembly not installed if (serverEntry.isDownloadable()) { Button downloadButton = new Button(composite, SWT.NONE); downloadButton.setText("Download..."); downloadButton.setToolTipText("Download this version"); }//from www . j a v a 2 s . co m // Remove button if assembly is installed if (!serverEntry.isDownloadable() && (serversConfiguration.getDefaultEntry() != null && !serversConfiguration.getDefaultEntry().equals(serverEntry))) { Button removeButton = new Button(composite, SWT.NONE); removeButton.setText("Remove"); removeButton.setToolTipText("Remove this assembly"); removeButton .addSelectionListener(new RemoveEntryListener(serversConfiguration, serverEntry, tableViewer)); } // Update button if assembly has a new version available if (serverEntry.isUpdatable()) { Button updateButton = new Button(composite, SWT.NONE); updateButton.setText("Update..."); updateButton.setToolTipText("Update this assembly to a newer version"); } // Create editor TableEditor editor = new TableEditor(item.getParent()); editor.grabHorizontal = true; editor.grabVertical = true; editor.setEditor(composite, item, cell.getColumnIndex()); editor.layout(); }
From source file:com.peergreen.eclipse.osgi.preferences.provider.column.RadioButtonColumnLabelProvider.java
License:Apache License
@Override public void update(ViewerCell cell) { final PeergreenServerEntry serverEntry = (PeergreenServerEntry) cell.getElement(); TableItem item = (TableItem) cell.getItem(); TableEditor editor = new TableEditor(item.getParent()); Button radioButton = new Button((Composite) cell.getViewerRow().getControl(), SWT.RADIO); // It's the default selection if (serversConfiguration.getDefaultEntry() != null && serversConfiguration.getDefaultEntry().equals(serverEntry)) { radioButton.setSelection(true);//from w ww. j a va2s . c o m } // Downloadable so not ready, greyed radioButton.setEnabled(!serverEntry.isDownloadable()); radioButton.addSelectionListener( new RadioButtonSelectionListener(serversConfiguration, serverEntry, tableViewer, radioButton)); radioButton.pack(); editor.minimumWidth = radioButton.getSize().x; editor.horizontalAlignment = SWT.CENTER; editor.setEditor(radioButton, item, cell.getColumnIndex()); editor.layout(); }
From source file:com.rcpcompany.uibindings.extests.viewerBindings.ViewerItemMoveTest.java
License:Open Source License
/** * Checks the operation of the move command with focus on the resulting selection and focus *//* w w w. j av a 2 s .co m*/ @Test public void testOp() { try { final ICommandService cs = (ICommandService) myView.getSite().getService(ICommandService.class); final IHandlerService hs = (IHandlerService) myView.getSite().getService(IHandlerService.class); final ParameterizedCommand command = cs.deserialize(myCommandId); assertTrue(what + " is defined", command.getCommand().isDefined()); final Country country = myShop.getCountries().get(myRow); // LogUtils.debug(country, "" + country.getName()); postMouse(myTableViewer.getTable(), myColumn + myViewerBinding.getFirstTableColumnOffset(), myRow); yield(); assertTrue(what + " is not handled", command.getCommand().isHandled()); assertTrue(what + " is not defined", command.getCommand().isDefined()); ViewerCell viewerCell = myTableViewer.getColumnViewerEditor().getFocusCell(); assertEquals(what + " index wrong", myColumn + myViewerBinding.getFirstTableColumnOffset(), viewerCell.getColumnIndex()); assertEquals(what + " element wrong", country, viewerCell.getElement()); assertEquals(what + " item wrong", myTableViewer.getTable().getItem(myRow), viewerCell.getViewerRow().getItem()); assertEquals(what + " row element", country, viewerCell.getViewerRow().getElement()); assertEquals(4, myShop.getCountries().size()); hs.executeCommand(command, null); assertEquals(4, myShop.getCountries().size()); // Seq of items final List<Country> myResultList = new ArrayList<Country>(); for (int i = 0; i < mySeq.length(); i++) { final String s = mySeq.substring(i, i + 1); for (final Country c : myShop.getCountries()) { if (c.getName().equals(s)) { myResultList.add(c); break; } } } assertArrayEquals(myResultList.toArray(), myShop.getCountries().toArray()); // Selection final TableItem[] tableItems = myTable.getSelection(); assertEquals(1, tableItems.length); assertEquals(country, tableItems[0].getData()); // ISelection final ISelection selection = myTableViewer.getSelection(); assertTrue(selection instanceof IStructuredSelection); final IStructuredSelection ss = (IStructuredSelection) selection; assertEquals(1, ss.toArray().length); assertEquals(country, ss.getFirstElement()); // Viewer cell // Focus cell viewerCell = myTableViewer.getColumnViewerEditor().getFocusCell(); assertEquals(myColumn + myViewerBinding.getFirstTableColumnOffset(), viewerCell.getColumnIndex()); assertEquals(country, viewerCell.getElement()); assertEquals(myTableViewer.getTable().getItem(myNewRow), viewerCell.getViewerRow().getItem()); assertEquals(country, viewerCell.getViewerRow().getElement()); } catch (final Exception ex) { fail(ex.getMessage()); } }
From source file:com.rcpcompany.uibindings.extests.viewerBindings.ViewerSingleSelectionTest.java
License:Open Source License
/** * @param c the expected selected country * @param runnable a {@link Runnable} that will perform the selection *//*from w ww .j av a 2 s .co m*/ protected void checkSelection(Country c, Runnable runnable) { yield(); if (runnable != null) { final boolean[] selectionChangedSeen = new boolean[] { false }; final ISelectionChangedListener listener = new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { // LogUtils.debug(this, ""); selectionChangedSeen[0] = true; } }; myTableViewer.addSelectionChangedListener(listener); assertNoLog(runnable); yield(); myTableViewer.removeSelectionChangedListener(listener); assertTrue("no selection change seen", selectionChangedSeen[0]); } final int i = myShop.getCountries().indexOf(c); assertEquals(i, myTable.getSelectionIndex()); assertArrayEquals(new Object[] { c }, ((IStructuredSelection) myTableViewer.getSelection()).toArray()); assertEquals(c.getName(), myNameText.getText()); final ColumnViewerEditor columnViewerEditor = myTableViewer.getColumnViewerEditor(); assertNotNull(columnViewerEditor); final ViewerCell focusCell = columnViewerEditor.getFocusCell(); assertNotNull(focusCell); final ViewerRow viewerRow = focusCell.getViewerRow(); assertNotNull(viewerRow); assertEquals(c, viewerRow.getElement()); }
From source file:eu.esdihumboldt.hale.ui.instancevalidation.report.InstanceValidationReportDetailsLabelProvider.java
License:Open Source License
/** * @see org.eclipse.jface.viewers.StyledCellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell) *///from w w w. j a v a 2 s. co m @Override public void update(ViewerCell cell) { Object element = cell.getElement(); String label = getText(element); int newLine = label.indexOf('\n'); if (newLine > -1) label = label.substring(0, newLine) + " ..."; StyledString text = new StyledString(label); if (!(element instanceof InstanceValidationMessage)) { TreePath treePath = cell.getViewerRow().getTreePath(); boolean isLimited = contentProvider.isLimited(treePath); text.append(' '); if (!isLimited) text.append(MessageFormat.format("({0} warnings)", contentProvider.getMessageCount(treePath)), StyledString.COUNTER_STYLER); else text.append(MessageFormat.format("(showing {0} of {1})", InstanceValidationReportDetailsContentProvider.LIMIT, contentProvider.getMessageCount(treePath)), StyledString.COUNTER_STYLER); } cell.setText(text.getString()); cell.setStyleRanges(text.getStyleRanges()); cell.setImage(getImage(element)); super.update(cell); }
From source file:eu.esdihumboldt.hale.ui.views.data.internal.compare.DefinitionInstanceLabelProvider.java
License:Open Source License
/** * @see CellLabelProvider#update(ViewerCell) *//*w ww. j a v a 2s . c o m*/ @Override public void update(ViewerCell cell) { TreePath treePath = cell.getViewerRow().getTreePath(); InstanceEntry entry = findInstanceEntry(treePath); Object value = entry.value; InstanceValidationReport report = null; // If childDef is null we are at the top element. if (entry.definition && entry.childDef == null) { report = InstanceValidator.validate(instance); } boolean hasValue = false; if (entry.definition && value instanceof Instance) { hasValue = ((Instance) value).getValue() != null; } else if (!entry.definition && treePath.getSegmentCount() == 1) { // metadata root if (instance.getMetaDataNames().isEmpty()) { hasValue = true; value = null; } } StyledString styledString; if (value == null) { styledString = new StyledString("no value", StyledString.DECORATIONS_STYLER); } else if (value instanceof Group && !hasValue) { styledString = new StyledString("+", StyledString.QUALIFIER_STYLER); } else { if (value instanceof Instance) { value = ((Instance) value).getValue(); } // TODO some kind of conversion? String stringValue = value.toString(); /* * Values that are very large, e.g. string representations of very * complex geometries lead to * StyledCellLabelProvider.updateTextLayout taking a very long time, * rendering the application unresponsive when the data views are * displayed. As such, we reduce the string to a maximum size. */ if (stringValue.length() > MAX_STRING_LENGTH) { stringValue = stringValue.substring(0, MAX_STRING_LENGTH) + "..."; } styledString = new StyledString(stringValue, null); } // mark cell if there are other values if (entry.valueCount > 1) { String decoration = " " + MessageFormat.format(MULTIPLE_VALUE_FORMAT, entry.choice + 1, entry.valueCount); styledString.append(decoration, StyledString.COUNTER_STYLER); } cell.setText(styledString.toString()); cell.setStyleRanges(styledString.getStyleRanges()); if (report != null && !report.getWarnings().isEmpty()) cell.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK)); super.update(cell); }
From source file:eu.esdihumboldt.hale.ui.views.data.internal.compare.DefinitionInstanceTreeViewer.java
License:Open Source License
/** * @see InstanceViewer#createControls(Composite, SchemaSpaceID) *///from w w w . j a v a 2 s. c o m @Override public void createControls(final Composite parent, SchemaSpaceID schemaSpace) { main = new Composite(parent, SWT.NONE); main.setLayout(new TreeColumnLayout()); treeViewer = new TreeViewer(main, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); treeViewer.setContentProvider(new TypeMetaPairContentProvider(treeViewer, schemaSpace)); treeViewer.setLabelProvider(new DefinitionMetaCompareLabelProvider()); // Add an editor for selecting specific paths. editor = new TreeEditor(treeViewer.getTree()); editor.horizontalAlignment = SWT.RIGHT; treeViewer.getTree().addMouseMoveListener(new MouseMoveListener() { @Override public void mouseMove(MouseEvent e) { final ViewerCell cell = treeViewer.getCell(new Point(e.x, e.y)); // Selected cell changed? if (cell == null || editor.getItem() != cell.getItem() || editor.getColumn() != cell.getColumnIndex()) { // Clean up any previous editor control Control oldEditor = editor.getEditor(); if (oldEditor != null) { oldEditor.dispose(); editor.setEditor(null, null, 0); } } // No valid selected cell if (cell == null || cell.getColumnIndex() == 0) { return; } // cell didn't change if ((editor.getItem() == cell.getItem() && editor.getColumn() == cell.getColumnIndex())) { return; } Composite editorControl = new Composite(treeViewer.getTree(), SWT.NONE); GridLayoutFactory.fillDefaults().margins(0, 0).spacing(0, 0).numColumns(2).applyTo(editorControl); boolean hideCopy = false; // multi value selector // Quote the format first. Pattern.quote does the same, except, // that it checks the input for \Es. // Since we know that there will be no \Es in this case // do it ourselves to be safe from changes to Pattern.quote. String pattern = "\\Q" + DefinitionInstanceLabelProvider.MULTIPLE_VALUE_FORMAT + "\\E$"; pattern = pattern.replace("{0}", "\\E(\\d+)\\Q").replace("{1}", "\\E(\\d+)\\Q"); Matcher m = Pattern.compile(pattern).matcher(cell.getText()); if (m.find()) { // multi value element int current = Integer.parseInt(m.group(1)); int total = Integer.parseInt(m.group(2)); // Create the selection control. ComboViewer combo = new ComboViewer(editorControl); Integer[] values = new Integer[total]; for (int i = 1; i <= total; i++) values[i - 1] = i; combo.setContentProvider(ArrayContentProvider.getInstance()); combo.setInput(values); combo.setSelection(new StructuredSelection(current)); combo.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection() instanceof IStructuredSelection) { // Update label provider and refresh viewer. labelProviders.get(cell.getColumnIndex()).selectPath( cell.getViewerRow().getTreePath(), (Integer) (((IStructuredSelection) event.getSelection()) .getFirstElement())); treeViewer.refresh(cell.getElement(), true); } } }); } else { /* * only one value - so we can safely determine if the copy * button should be shown */ Object value = labelProviders.get(cell.getColumnIndex()) .findInstanceEntry(cell.getViewerRow().getTreePath()).getValue(); if (value instanceof Instance) { value = ((Instance) value).getValue(); } hideCopy = value == null || value.toString().isEmpty(); } // copy button if (!hideCopy) { Button button = new Button(editorControl, SWT.PUSH | SWT.FLAT); button.setImage( PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_COPY)); button.setToolTipText("Copy string value"); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // determine text value Object value = labelProviders.get(cell.getColumnIndex()) .findInstanceEntry(cell.getViewerRow().getTreePath()).getValue(); if (value instanceof Instance) { value = ((Instance) value).getValue(); } if (value != null) { final String textValue = value.toString(); if (!textValue.isEmpty()) { // empty string is // invalid // copy content to clipboard Clipboard clipBoard = new Clipboard(Display.getCurrent()); clipBoard.setContents(new Object[] { textValue }, new Transfer[] { TextTransfer.getInstance() }); clipBoard.dispose(); } } } }); } // calculate editor size Point size = editorControl.computeSize(SWT.DEFAULT, SWT.DEFAULT); editor.minimumHeight = size.y; editor.minimumWidth = size.x; editor.setEditor(editorControl, (TreeItem) cell.getItem(), cell.getColumnIndex()); } }); maep = new MetadataCompareActionProvider(treeViewer); maep.setup(); treeViewer.setComparator(new DefinitionComparator()); treeViewer.getTree().setHeaderVisible(true); treeViewer.getTree().setLinesVisible(true); ColumnViewerToolTipSupport.enableFor(treeViewer); setInput(null, null); }
From source file:eu.esdihumboldt.hale.ui.views.data.internal.compare.MetadataCompareActionProvider.java
License:Open Source License
/** * @see eu.esdihumboldt.hale.ui.views.data.internal.MetadataActionProvider#retrieveMetadata(org.eclipse.jface.viewers.ViewerCell) *///from ww w . ja v a 2s . c om @Override protected Pair<Object, Object> retrieveMetadata(ViewerCell cell) { if (cell.getViewerRow().getTreePath().getFirstSegment() instanceof Set<?>) { if (cell.getElement() instanceof Set<?>) { return null; } String key = cell.getElement().toString(); List<Object> values = instances.get(cell.getColumnIndex() - 1).getMetaData(key); Object value = values.get(labelProviders.get(cell.getColumnIndex()).getMetaDataChoice(key)); return new Pair<Object, Object>(key, value); } else return null; }
From source file:eu.esdihumboldt.hale.ui.views.data.internal.explore.InstanceExplorer.java
License:Open Source License
/** * @see InstanceViewer#createControls(Composite, SchemaSpaceID) *//*from w w w . j a v a 2 s .c o m*/ @Override public void createControls(Composite parent, SchemaSpaceID schemaSpace) { main = new Composite(parent, SWT.NONE); main.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).create()); // selector composite selectorComposite = new Composite(main, SWT.NONE); selectorComposite.setLayoutData(GridDataFactory.swtDefaults().create()); selectorComposite.setLayout(GridLayoutFactory.fillDefaults().create()); // viewer composite Composite viewerComposite = new Composite(main, SWT.NONE); viewerComposite.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create()); TreeColumnLayout layout = new TreeColumnLayout(); viewerComposite.setLayout(layout); viewer = new TreeViewer(viewerComposite, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); viewer.getTree().setLinesVisible(true); // set content provider viewer.setContentProvider(new InstanceContentProvider()); viewer.setAutoExpandLevel(TreeViewer.ALL_LEVELS); // TODO set label provider? // add definition columns TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("Definition"); column.setLabelProvider(new TreeColumnViewerLabelProvider( new PairLabelProvider(true, new DefinitionMetaLabelProvider(false, true)))); layout.setColumnData(column.getColumn(), new ColumnWeightData(1)); // add value column column = new TreeViewerColumn(viewer, SWT.LEFT); column.getColumn().setText("Value"); final InstanceValueLabelProvider instanceLabelProvider = new InstanceValueLabelProvider(); column.setLabelProvider(instanceLabelProvider); // new PairLabelProvider(false, new LabelProvider()))); ColumnViewerToolTipSupport.enableFor(viewer); layout.setColumnData(column.getColumn(), new ColumnWeightData(1)); MetadataActionProvider maep = new MetadataExploreActionProvider(viewer); maep.setup(); // Add an editor for copying instance values editor = new TreeEditor(viewer.getTree()); editor.horizontalAlignment = SWT.RIGHT; viewer.getTree().addMouseMoveListener(new MouseMoveListener() { @Override public void mouseMove(MouseEvent e) { final ViewerCell cell = viewer.getCell(new Point(e.x, e.y)); // Selected cell changed? if (cell == null || editor.getItem() != cell.getItem() || editor.getColumn() != cell.getColumnIndex()) { // Clean up any previous editor control Control oldEditor = editor.getEditor(); if (oldEditor != null) { oldEditor.dispose(); editor.setEditor(null, null, 0); } } // No valid selected cell if (cell == null || cell.getColumnIndex() == 0) { return; } // cell didn't change if ((editor.getItem() == cell.getItem() && editor.getColumn() == cell.getColumnIndex())) { return; } // determine instance value Object value = ((Pair<?, ?>) cell.getViewerRow().getTreePath().getLastSegment()).getSecond(); if (value instanceof Instance) { value = ((Instance) value).getValue(); } // copy button if (value != null) { final String textValue = value.toString(); if (!textValue.isEmpty()) { // empty string invalid for // clipboard Button button = new Button(viewer.getTree(), SWT.PUSH | SWT.FLAT); button.setImage( PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_COPY)); button.setToolTipText("Copy string value"); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // copy content to clipboard Clipboard clipBoard = new Clipboard(Display.getCurrent()); clipBoard.setContents(new Object[] { textValue }, new Transfer[] { TextTransfer.getInstance() }); clipBoard.dispose(); } }); // calculate editor size Point size = button.computeSize(SWT.DEFAULT, SWT.DEFAULT); editor.minimumHeight = size.y; editor.minimumWidth = size.x; editor.setEditor(button, (TreeItem) cell.getItem(), cell.getColumnIndex()); } } } }); update(); }
From source file:eu.esdihumboldt.hale.ui.views.data.internal.explore.InstanceValueLabelProvider.java
License:Open Source License
/** * @see CellLabelProvider#update(ViewerCell) *//* w ww . j av a 2s .c o m*/ @Override public void update(ViewerCell cell) { TreePath treePath = cell.getViewerRow().getTreePath(); Object element = treePath.getLastSegment(); Definition<?> definition = null; Object value = ((Pair<?, ?>) element).getSecond(); if (((Pair<?, ?>) element).getFirst() instanceof Definition) definition = (Definition<?>) ((Pair<?, ?>) element).getFirst(); InstanceValidationReport report = null; if (definition instanceof ChildDefinition<?>) report = InstanceValidator.validate(value, (ChildDefinition<?>) ((Pair<?, ?>) element).getFirst()); else if (definition instanceof TypeDefinition) report = InstanceValidator.validate((Instance) value); boolean hasValue = false; if (value instanceof Instance) { hasValue = ((Instance) value).getValue() != null; } StyledString styledString; if (value == null) { styledString = new StyledString("no value", StyledString.DECORATIONS_STYLER); } else if (value instanceof Group && !hasValue) { styledString = new StyledString("+", StyledString.QUALIFIER_STYLER); } else { if (value instanceof Instance) { value = ((Instance) value).getValue(); } // TODO some kind of conversion? String stringValue = value.toString(); /* * Values that are very large, e.g. string representations of very * complex geometries lead to * StyledCellLabelProvider.updateTextLayout taking a very long time, * rendering the application unresponsive when the data views are * displayed. As such, we reduce the string to a maximum size. */ if (stringValue.length() > MAX_STRING_LENGTH) { stringValue = stringValue.substring(0, MAX_STRING_LENGTH) + "..."; } styledString = new StyledString(stringValue, null); } cell.setText(styledString.toString()); cell.setStyleRanges(styledString.getStyleRanges()); if (report != null && !report.getWarnings().isEmpty()) cell.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK)); super.update(cell); }