/**************************************************************************************************
* Copyright (c) 2011 Fabian Steeg. 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
* <p/>
* Contributors: Fabian Steeg - initial API and implementation
*************************************************************************************************/
package de.uni_koeln.ub.drc.ui.views;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Widget;
import de.uni_koeln.ub.drc.ui.DrcUiActivator;
/**
* Helper methods for working with tables.
*
* @author Fabian Steeg (fsteeg)
*/
public class TableHelper {
private TableHelper() {
/* Static helper class. */
}
static void clearWidgets(Table table) {
TableItem[] items = table.getItems();
for (int i = 0; i < items.length; i++) {
if (!items[i].isDisposed()) {
Object data = items[i].getData();
if (data != null && data instanceof Widget[]) {
Widget[] widgets = (Widget[]) data;
for (Widget widget : widgets) {
if (widget != null) {
widget.dispose();
}
}
}
}
}
}
static Link insertLink(final Table table, final TableItem item,
final String author, int index) {
if (!author.equals(DrcUiActivator.OCR_ID)) {
TableEditor editor = new TableEditor(table);
Link link = new Link(table, SWT.NONE);
link.setText("<a>" + item.getText(index) + "</a>"); //$NON-NLS-1$//$NON-NLS-2$
item.setText(index, ""); //$NON-NLS-1$
link.pack();
editor.minimumWidth = link.getSize().x;
editor.minimumHeight = link.getSize().y;
editor.horizontalAlignment = SWT.LEFT;
editor.setEditor(link, item, index);
addLinkListener(author, link);
return link;
}
return null;
}
private static void addLinkListener(final String author, final Link link) {
link.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
launch();
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
launch();
}
private void launch() {
Program.launch(DrcUiActivator.PROFILE_ROOT + author);
}
});
}
}