package org.gudy.azureus2.ui.swt.views.table; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.gudy.azureus2.core3.util.AERunnable; import org.gudy.azureus2.ui.swt.Utils; import com.aelitis.azureus.ui.common.table.TableGroupRowRunner; import com.aelitis.azureus.ui.common.table.TableView; /** * Listener primarily for Menu Selection. Implement run(TableRowCore) and it * will get called for each row the user has selected. */ public abstract class TableSelectedRowsListener extends TableGroupRowRunner implements Listener { private final TableView<?> tv; private final boolean getOffSWT; public TableSelectedRowsListener(TableView<?> impl, boolean getOffSWT) { tv = impl; this.getOffSWT = getOffSWT; } /** * triggers the event off of the SWT thread * @param impl */ public TableSelectedRowsListener(TableView<?> impl) { tv = impl; this.getOffSWT = true; } /** Event information passed in via the Listener. Accessible in * run(TableRowSWT). */ protected Event event; /** Process the trapped event. This function does not need to be overidden. * @param e event information */ public final void handleEvent(Event e) { event = e; if (getOffSWT) { Utils.getOffOfSWTThread(new AERunnable() { public void runSupport() { tv.runForSelectedRows(TableSelectedRowsListener.this); } }); } else { tv.runForSelectedRows(this); } } }