List of usage examples for org.eclipse.jface.viewers ViewerCell setImage
public void setImage(Image image)
From source file:net.sf.jmoney.importer.matcher.PatternMatchingDialog.java
License:Open Source License
private Control createPatternMatchingTableControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(2, false)); // Create the table viewer to display the pattern matching rules patternViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION); // Set up the table final Table table = patternViewer.getTable(); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(patternViewer, new FocusCellOwnerDrawHighlighter(patternViewer)); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(patternViewer) { @Override/*w w w . j av a2 s . c om*/ protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TableViewerEditor.create(patternViewer, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); // Set the content and label providers patternViewer.setContentProvider(new PatternContentProvider()); patternViewer.setSorter(new PatternSorter()); ColumnViewerToolTipSupport.enableFor(patternViewer); // Add the columns TableViewerColumn column1 = new TableViewerColumn(patternViewer, SWT.LEFT); column1.getColumn().setWidth(40); column1.getColumn().setText(""); column1.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { MemoPattern pattern = (MemoPattern) cell.getElement(); if (isMemoPatternValid(pattern) != null) { cell.setImage(errorImage); } else { cell.setImage(null); } } @Override public String getToolTipText(Object element) { MemoPattern pattern = (MemoPattern) element; return isMemoPatternValid(pattern); } }); column1.setEditingSupport(new EditingSupport(patternViewer) { @Override protected boolean canEdit(Object element) { return false; } @Override protected CellEditor getCellEditor(Object element) { return null; } @Override protected Object getValue(Object element) { return null; } @Override protected void setValue(Object element, Object value) { } }); addColumn(MemoPatternInfo.getPatternAccessor(), "<html>The pattern is a Java regular expression that is matched against the memo in the downloadable file.<br>For each record from the bank, the first row in this table with a matching pattern is used.</html>"); addColumn(MemoPatternInfo.getCheckAccessor(), "The value to be put in the check field. The values in this table may contain {0}, [1} etc. where the number matches the group number in the Java regular expression."); addColumn(MemoPatternInfo.getMemoAccessor(), "The value to be put in the memo field. The values in this table may contain {0}, [1} etc. where the number matches the group number in the Java regular expression."); addColumn(MemoPatternInfo.getAccountAccessor(), "The account to be used for entries that match this pattern."); addColumn(MemoPatternInfo.getDescriptionAccessor(), "The value to be put in the description field. The values in this table may contain {0}, [1} etc. where the number matches the group number in the Java regular expression."); /* * Set the account as the input object that contains the list of pattern * matching rules. */ patternViewer.setInput(account); // Pack the columns for (int i = 0, n = table.getColumnCount(); i < n; i++) { table.getColumn(i).pack(); } // Turn on the header and the lines table.setHeaderVisible(true); table.setLinesVisible(true); // Create the button area Control buttonAreaControl = createButtonArea(composite); buttonAreaControl.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true)); return composite; }
From source file:net.sf.jmoney.reconciliation.reconcilePage.ImportOptionsDialog.java
License:Open Source License
private Control createPatternMatchingTableControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(2, false)); // Create the table viewer to display the pattern matching rules viewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION); // Set up the table final Table table = viewer.getTable(); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer)); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) { @Override/*from w ww . jav a2 s . co m*/ protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TableViewerEditor.create(viewer, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); // Set the content and label providers viewer.setContentProvider(new PatternContentProvider()); viewer.setSorter(new PatternSorter()); ColumnViewerToolTipSupport.enableFor(viewer); // Add the columns TableViewerColumn column1 = new TableViewerColumn(viewer, SWT.LEFT); column1.getColumn().setWidth(40); column1.getColumn().setText(""); column1.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { MemoPattern pattern = (MemoPattern) cell.getElement(); if (isMemoPatternValid(pattern) != null) { cell.setImage(errorImage); } else { cell.setImage(null); } } @Override public String getToolTipText(Object element) { MemoPattern pattern = (MemoPattern) element; return isMemoPatternValid(pattern); } }); column1.setEditingSupport(new EditingSupport(viewer) { @Override protected boolean canEdit(Object element) { return false; } @Override protected CellEditor getCellEditor(Object element) { return null; } @Override protected Object getValue(Object element) { return null; } @Override protected void setValue(Object element, Object value) { } }); addColumn(MemoPatternInfo.getPatternAccessor(), "<html>The pattern is a Java regular expression that is matched against the memo in the downloadable file.<br>For each record from the bank, the first row in this table with a matching pattern is used.</html>"); addColumn(MemoPatternInfo.getCheckAccessor(), "The value to be put in the check field. The values in this table may contain {0}, [1} etc. where the number matches the group number in the Java regular expression."); addColumn(MemoPatternInfo.getMemoAccessor(), "The value to be put in the memo field. The values in this table may contain {0}, [1} etc. where the number matches the group number in the Java regular expression."); addColumn(MemoPatternInfo.getAccountAccessor(), "The account to be used for entries that match this pattern."); addColumn(MemoPatternInfo.getDescriptionAccessor(), "The value to be put in the description field. The values in this table may contain {0}, [1} etc. where the number matches the group number in the Java regular expression."); /* * Set the account as the input object that contains the list of pattern * matching rules. */ viewer.setInput(account); // Pack the columns for (int i = 0, n = table.getColumnCount(); i < n; i++) { table.getColumn(i).pack(); } // Turn on the header and the lines table.setHeaderVisible(true); table.setLinesVisible(true); // Create the button area Control buttonAreaControl = createButtonArea(composite); buttonAreaControl.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true)); return composite; }
From source file:net.sf.jmoney.views.feedback.FeedbackView.java
License:Open Source License
private Control createTable(Composite parent) { viewer = new TreeViewer(parent, /*SWT.MULTI |*/ SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION); viewer.setContentProvider(new StatusContentProvider()); // viewer.setSorter(sorter); viewer.addFilter(filter);/*from ww w .j a v a2 s . c om*/ Tree tree = viewer.getTree(); tree.setHeaderVisible(true); tree.setLinesVisible(true); TreeViewerColumn statusColumn = new TreeViewerColumn(viewer, SWT.LEFT); statusColumn.getColumn().setText("Status"); statusColumn.getColumn().setWidth(100); statusColumn.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { IStatus statusElement = (IStatus) cell.getElement(); switch (statusElement.getSeverity()) { case IStatus.CANCEL: cell.setImage(JMoneyPlugin.createImage("status_canceled.gif")); break; case IStatus.ERROR: cell.setImage(JMoneyPlugin.createImage("status_error.gif")); break; case IStatus.WARNING: cell.setImage(JMoneyPlugin.createImage("status_warning.gif")); break; case IStatus.INFO: cell.setImage(JMoneyPlugin.createImage("status_info.gif")); break; case IStatus.OK: cell.setImage(JMoneyPlugin.createImage("status_ok.gif")); break; } } }); TreeViewerColumn descriptionColumn = new TreeViewerColumn(viewer, SWT.LEFT); descriptionColumn.getColumn().setText("Description"); descriptionColumn.getColumn().setWidth(300); descriptionColumn.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { IStatus statusElement = (IStatus) cell.getElement(); cell.setText(statusElement.getMessage()); } }); // Create the pop-up menu MenuManager menuMgr = new MenuManager(); menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); getSite().registerContextMenu(menuMgr, viewer); Control control = viewer.getControl(); Menu menu = menuMgr.createContextMenu(control); control.setMenu(menu); return control; }
From source file:net.sf.smbt.ui.ableton.views.AbletonLiveView.java
License:LGPL
private TreeViewerColumn createTableViewerColumn(String title, int bound) { final TreeViewerColumn viewerColumn = new TreeViewerColumn(subDetailsViewer, SWT.NONE); final TreeColumn column = viewerColumn.getColumn(); column.setText(title);//from ww w.j ava 2 s . com column.setWidth(bound); column.setResizable(true); column.setMoveable(true); viewerColumn.setLabelProvider(new StyledCellLabelProvider() { @Override protected void paint(Event event, Object element) { if (element instanceof LiveScene) { TreeItem treeItem = (TreeItem) event.item; Object obj = treeItem.getData(viewerColumn.getColumn().getText() + "#clip"); if (obj != null) { LiveClip c = (LiveClip) obj; super.paint(event, element); if (((LiveScene) element).getSceneID() == lastSceneID) { int width = 0; int height = event.height - 4; int x = event.x; int y = event.y + 2; float l = c.getLength(); float p = c.getPosition(); if (p > 0 && l > 0) { float ratio = p / l; width = Float.valueOf(ratio * (float) viewerColumn.getColumn().getWidth()) .intValue(); event.gc.setAlpha(100); event.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); event.gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); event.gc.fillRoundRectangle(x, y, width, height, 2, 2); event.gc.setAlpha(255); event.gc.drawRoundRectangle(x, y, width, height, 2, 2); } } } else { super.paint(event, element); } } else { super.paint(event, element); } } @Override public void update(ViewerCell cell) { super.update(cell); if (cell.getElement() instanceof LiveScene) { LiveScene scene = (LiveScene) cell.getElement(); int idx = cell.getColumnIndex(); if (liveController.getLiveApp().getTracks().size() > idx) { LiveTrack track = liveController.getLiveApp().getTracks().get(idx); for (LiveClip c : track.getClips()) { if (scene.getSceneID() == c.getClipID()) { cell.setText(c.getClipName()); //cell.getStyleRanges(); /* switch(c.getClipState()) { case PLAYING: case TRIGGERED: cell.setImage(playImage); //break; case STOP: cell.setImage(stopImage); break; default: cell.setImage(stopImage); break; };*/ cell.setImage(lastSceneID == scene.getSceneID() ? playImage : stopImage); if (c.getColor() != null) { cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK)); cell.setBackground(c.getColor()); } cell.getItem().setData(track.getTrackName() + "#clip", c); break; } else { cell.setForeground(GUIToolkit.FG); cell.setBackground(GUIToolkit.BG); } } } } } }); return viewerColumn; }
From source file:net.sf.smbt.ui.dmx.editors.DMXMultiPageEditor.java
License:LGPL
private TreeViewerColumn createTableViewerColumn(final TreeViewer treeViewer, final AdapterFactoryLabelProvider labelProvider, String title, int bound) { final TreeViewerColumn viewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); final TreeColumn column = viewerColumn.getColumn(); column.setText(title);/* w w w .jav a2s . c o m*/ column.setWidth(bound); column.setResizable(true); column.setMoveable(true); viewerColumn.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(ViewerCell cell) { super.update(cell); Object[] children = ((ITreeContentProvider) treeViewer.getContentProvider()) .getElements(dmxProject.getFixtureDefinitions()); int start = 0; int end = 0; for (Object o : children) { if (o instanceof FixtureDefinition) { FixtureDefinition def = (FixtureDefinition) o; List<Channel> channels = def.getChannel(); if (!def.getMode().isEmpty()) { end += channels.size(); start = end - channels.size(); if (def.equals(cell.getElement())) { end--; break; } } } } int idx = cell.getColumnIndex(); if (idx == 0) { cell.setText("0"); } else if (idx == 1) { cell.setText(start + " - " + end); } else if (idx == 2) { cell.setText(labelProvider.getText(cell.getElement())); cell.setImage(labelProvider.getImage(cell.getElement())); } else if (idx == 3) { cell.setImage(DMXGraphicsUtil.INSTANCE.getDMXFixtureJumpersImage(start)); } } }); return viewerColumn; }
From source file:net.ssehub.easy.producer.ui.productline_editor.configuration.AbstractConfigurationLabelProvider.java
@Override public void update(ViewerCell cell) { Object element = cell.getElement(); int index = cell.getVisualIndex(); String text = getColumnText(element, index); cell.setText(text);/* w w w .j a va 2s . c o m*/ cell.setImage(getColumnImage(element, index)); if (ColumnType.ERROR == columType(index) && null != text) { cell.setForeground(ERROR_COLOR); } else { cell.setForeground(getForeground(element)); } cell.setBackground(getBackground(element)); }
From source file:net.tourbook.preferences.PrefPageAppearanceColors.java
License:Open Source License
/** * create columns/* w w w . j a v a 2 s. c o m*/ */ private void defineAllColumns(final TreeColumnLayout treeLayout, final Tree tree) { final int numberOfHorizontalImages = 5; final int trailingOffset = 10; final int itemHeight = tree.getItemHeight(); final int colorWidth = (itemHeight + GraphColorPainter.GRAPH_COLOR_SPACING) * numberOfHorizontalImages + trailingOffset; TreeColumn tc; TreeViewerColumn tvc; // 1. column: color item/color definition tvc = new TreeViewerColumn(_colorViewer, SWT.TRAIL); tc = tvc.getColumn(); tvc.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(final ViewerCell cell) { final Object element = cell.getElement(); if (element instanceof ColorDefinition) { cell.setText(((ColorDefinition) (element)).getVisibleName()); } else if (element instanceof GraphColorItem) { cell.setText(((GraphColorItem) (element)).getName()); } else { cell.setText(UI.EMPTY_STRING); } } }); treeLayout.setColumnData(tc, new ColumnWeightData(1, true)); // 2. column: color for definition/item tvc = new TreeViewerColumn(_colorViewer, SWT.TRAIL); tc = tvc.getColumn(); tvc.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(final ViewerCell cell) { final Object element = cell.getElement(); if (element instanceof ColorDefinition) { cell.setImage(_graphColorPainter.drawColorDefinitionImage((ColorDefinition) element, numberOfHorizontalImages)); } else if (element instanceof GraphColorItem) { cell.setImage(_graphColorPainter.drawGraphColorImage(// (GraphColorItem) element, numberOfHorizontalImages)); } else { cell.setImage(null); } } }); treeLayout.setColumnData(tc, new ColumnPixelData(colorWidth, true)); }
From source file:net.tourbook.preferences.PrefPageTags.java
License:Open Source License
private void createUI_20_TagViewer(final Composite parent) { /*//from w w w . j a va2 s. c om * create tree layout */ final Composite layoutContainer = new Composite(parent, SWT.NONE); GridDataFactory.fillDefaults()// .grab(true, true).hint(200, 100).applyTo(layoutContainer); final TreeColumnLayout treeLayout = new TreeColumnLayout(); layoutContainer.setLayout(treeLayout); /* * create viewer */ final Tree tree = new Tree(layoutContainer, SWT.H_SCROLL | SWT.V_SCROLL // | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); tree.setHeaderVisible(false); tree.setLinesVisible(getPreferenceStore().getBoolean(ITourbookPreferences.VIEW_LAYOUT_DISPLAY_LINES)); _tagViewer = new TreeViewer(tree); _tagViewer.setContentProvider(new TagViewerContentProvicer()); _tagViewer.setComparator(new TagViewerComparator()); _tagViewer.setUseHashlookup(true); _tagViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(final DoubleClickEvent event) { final Object selection = ((IStructuredSelection) _tagViewer.getSelection()).getFirstElement(); if (selection instanceof TVIPrefTag) { // tag is selected onRenameTourTag(); } else if (selection instanceof TVIPrefTagCategory) { // expand/collapse current item final TreeViewerItem tourItem = (TreeViewerItem) selection; if (_tagViewer.getExpandedState(tourItem)) { _tagViewer.collapseToLevel(tourItem, 1); } else { _tagViewer.expandToLevel(tourItem, 1); } } } }); _tagViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { enableButtons(); } }); _tagViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { @Override public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } @Override public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } @Override public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ISelection selection = _tagViewer.getSelection(); // System.out.println("dragStart"); transfer.setSelection(selection); transfer.setSelectionSetTime(_dragStartTime = event.time & 0xFFFFFFFFL); event.doit = !selection.isEmpty(); } }); _tagViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new TagDropAdapter(this, _tagViewer)); /* * create columns */ TreeViewerColumn tvc; TreeColumn tvcColumn; // column: tags + tag categories tvc = new TreeViewerColumn(_tagViewer, SWT.TRAIL); tvcColumn = tvc.getColumn(); tvc.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(final ViewerCell cell) { final StyledString styledString = new StyledString(); final Object element = cell.getElement(); if (element instanceof TVIPrefTag) { final TourTag tourTag = ((TVIPrefTag) element).getTourTag(); styledString.append(tourTag.getTagName(), UI.TAG_STYLER); cell.setImage(tourTag.isRoot() ? _imgTagRoot : _imgTag); } else if (element instanceof TVIPrefTagCategory) { final TVIPrefTagCategory tourTagCategoryItem = (TVIPrefTagCategory) element; final TourTagCategory tourTagCategory = tourTagCategoryItem.getTourTagCategory(); cell.setImage(_imgTagCategory); styledString.append(tourTagCategory.getCategoryName(), UI.TAG_CATEGORY_STYLER); // get number of categories final int categoryCounter = tourTagCategory.getCategoryCounter(); final int tagCounter = tourTagCategory.getTagCounter(); if (categoryCounter == -1 && tagCounter == -1) { // styledString.append(" ...", StyledString.COUNTER_STYLER); } else { String categoryString = UI.EMPTY_STRING; if (categoryCounter > 0) { categoryString = "/" + categoryCounter; //$NON-NLS-1$ } styledString.append(" " + tagCounter + categoryString, StyledString.QUALIFIER_STYLER); //$NON-NLS-1$ } } else { styledString.append(element.toString()); } cell.setText(styledString.getString()); cell.setStyleRanges(styledString.getStyleRanges()); } }); treeLayout.setColumnData(tvcColumn, new ColumnWeightData(100, true)); }
From source file:net.tourbook.preferences.PrefPageTourTypeFilterList.java
License:Open Source License
private void createUI_10_FilterViewer(final Composite parent) { final TableLayoutComposite layouter = new TableLayoutComposite(parent, SWT.NONE); GridDataFactory.fillDefaults().grab(true, true).hint(200, SWT.DEFAULT).applyTo(layouter); final Table table = new Table(layouter, (SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION)); table.setHeaderVisible(false);//from w ww. j a v a 2 s .c o m table.setLinesVisible(false); TableViewerColumn tvc; _filterViewer = new TableViewer(table); // column: name + image tvc = new TableViewerColumn(_filterViewer, SWT.NONE); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final TourTypeFilter filter = ((TourTypeFilter) cell.getElement()); final int filterType = filter.getFilterType(); String filterName = null; Image filterImage = null; // set filter name/image switch (filterType) { case TourTypeFilter.FILTER_TYPE_DB: final TourType tourType = filter.getTourType(); filterName = tourType.getName(); filterImage = UI.getInstance().getTourTypeImage(tourType.getTypeId()); break; case TourTypeFilter.FILTER_TYPE_SYSTEM: filterName = filter.getSystemFilterName(); filterImage = UI.IMAGE_REGISTRY.get(UI.IMAGE_TOUR_TYPE_FILTER_SYSTEM); break; case TourTypeFilter.FILTER_TYPE_TOURTYPE_SET: filterName = filter.getTourTypeSet().getName(); filterImage = UI.IMAGE_REGISTRY.get(UI.IMAGE_TOUR_TYPE_FILTER); break; default: break; } cell.setText(filterName); cell.setImage(filterImage); } }); layouter.addColumnData(new ColumnWeightData(1)); _filterViewer.setContentProvider(new IStructuredContentProvider() { @Override public void dispose() { } @Override public Object[] getElements(final Object inputElement) { return _filterList.toArray(); } @Override public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { } }); _filterViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { onSelectFilter(); } }); _filterViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(final DoubleClickEvent event) { onRenameFilterSet(); } }); /* * set drag adapter */ _filterViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { @Override public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } @Override public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } @Override public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ISelection selection = _filterViewer.getSelection(); transfer.setSelection(selection); transfer.setSelectionSetTime(_dragStartViewerLeft = event.time & 0xFFFFFFFFL); event.doit = !selection.isEmpty(); } }); /* * set drop adapter */ final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_filterViewer) { private Widget _tableItem; @Override public void dragOver(final DropTargetEvent dropEvent) { // keep table item _tableItem = dropEvent.item; super.dragOver(dropEvent); } @Override public boolean performDrop(final Object data) { if (data instanceof StructuredSelection) { final StructuredSelection selection = (StructuredSelection) data; if (selection.getFirstElement() instanceof TourTypeFilter) { final TourTypeFilter filterItem = (TourTypeFilter) selection.getFirstElement(); final int location = getCurrentLocation(); final Table filterTable = _filterViewer.getTable(); /* * check if drag was startet from this filter, remove the filter item before * the new filter is inserted */ if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dragStartViewerLeft) { _filterViewer.remove(filterItem); } int filterIndex; if (_tableItem == null) { _filterViewer.add(filterItem); filterIndex = filterTable.getItemCount() - 1; } else { // get index of the target in the table filterIndex = filterTable.indexOf((TableItem) _tableItem); if (filterIndex == -1) { return false; } if (location == LOCATION_BEFORE) { _filterViewer.insert(filterItem, filterIndex); } else if (location == LOCATION_AFTER || location == LOCATION_ON) { _filterViewer.insert(filterItem, ++filterIndex); } } // reselect filter item _filterViewer.setSelection(new StructuredSelection(filterItem)); // set focus to selection filterTable.setSelection(filterIndex); filterTable.setFocus(); _isModified = true; return true; } } return false; } @Override public boolean validateDrop(final Object target, final int operation, final TransferData transferType) { final ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); if (selection instanceof StructuredSelection) { final Object dragFilter = ((StructuredSelection) selection).getFirstElement(); if (target == dragFilter) { return false; } } if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType) == false) { return false; } return true; } }; _filterViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, viewerDropAdapter); }
From source file:net.tourbook.preferences.PrefPageTourTypeFilterList.java
License:Open Source License
private void createUI_20_TourTypeViewer(final Composite parent) { final TableLayoutComposite layouter = new TableLayoutComposite(parent, SWT.NONE); GridDataFactory.fillDefaults().grab(true, true).hint(200, SWT.DEFAULT).applyTo(layouter); final Table table = new Table(layouter, (SWT.CHECK | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION)); table.setHeaderVisible(false);//from w w w . j a v a 2s . com table.setLinesVisible(false); _tourTypeViewer = new CheckboxTableViewer(table); TableViewerColumn tvc; // column: name tvc = new TableViewerColumn(_tourTypeViewer, SWT.NONE); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final TourType tourType = ((TourType) cell.getElement()); cell.setText(tourType.getName()); cell.setImage(UI.getInstance().getTourTypeImage(tourType.getTypeId())); } }); layouter.addColumnData(new ColumnWeightData(1)); _tourTypeViewer.setContentProvider(new IStructuredContentProvider() { @Override public void dispose() { } @Override public Object[] getElements(final Object inputElement) { return _tourTypes.toArray(); } @Override public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { } }); _tourTypeViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStateChanged(final CheckStateChangedEvent event) { _isModified = true; } }); _tourTypeViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { onSelectTourType(); } }); _tourTypeViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(final DoubleClickEvent event) { /* * invert check state */ final TourType tourType = (TourType) ((StructuredSelection) _tourTypeViewer.getSelection()) .getFirstElement(); final boolean isChecked = _tourTypeViewer.getChecked(tourType); _tourTypeViewer.setChecked(tourType, !isChecked); // getSelectedTourTypes(); } }); }