/** * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * All rights reserved. This program and the accompanying materials are made available under * the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. * */ package gov.redhawk.ui.editor; import java.util.Arrays; import java.util.List; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.PlatformUI; /** * Implementation of EMFViewerElementSelector for TableViewer */ public class EMFTableViewerElementSelector extends EMFViewerElementSelector { private final TableViewer tableViewer; /** * Instantiates a new EMFTableViewerElementSelector. */ public EMFTableViewerElementSelector(final TableViewer tableViewer) { super(tableViewer); this.tableViewer = tableViewer; } /** * {@inheritDoc} */ @Override public void removeElement(final Object obj) { TableItem prevItem = null; final List<TableItem> items = Arrays.asList(this.tableViewer.getTable().getItems()); for (final TableItem item : items) { if (this.getItemObject(item) == obj) { if (prevItem != null) { selectElement(this.getItemObject(prevItem)); } else if (items.size() > 1) { final int index = this.tableViewer.getTable().indexOf(item); selectElement(this.getItemObject(this.tableViewer.getTable().getItem(index + 1))); } } prevItem = item; } this.refreshViewer(); } /** * {@inheritDoc} */ @Override public void selectElement(final Object obj) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { @Override public void run() { if (!EMFTableViewerElementSelector.this.tableViewer.getTable().isDisposed()) { EMFTableViewerElementSelector.this.tableViewer.refresh(); final Table table = EMFTableViewerElementSelector.this.tableViewer.getTable(); final List<TableItem> items = Arrays.asList(table.getItems()); for (final TableItem item : items) { if (getItemObject(item) == obj) { EMFTableViewerElementSelector.this.tableViewer.setSelection(new StructuredSelection( item.getData())); } } } } }); } }