import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.tracecompass.analysis.timing.core.segmentstore.AbstractSegmentStoreAnalysisModule;
import org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener;
import org.eclipse.tracecompass.common.core.NonNullUtils;
}
createColumns();
getTableViewer().getTable().addSelectionListener(new TableSelectionListener());
+ addPackListener();
fListener = new AnalysisProgressListener();
}
* @param dataInput
* New data input
*/
- public void updateModel(final @Nullable ISegmentStore<ISegment> dataInput) {
+ public void updateModel(final @Nullable Object dataInput) {
final TableViewer tableViewer = getTableViewer();
Display.getDefault().asyncExec(new Runnable() {
@Override
tableViewer.setItemCount(0);
return;
}
+ addPackListener();
tableViewer.setInput(dataInput);
SegmentStoreContentProvider contentProvider = (SegmentStoreContentProvider) getTableViewer().getContentProvider();
tableViewer.setItemCount(contentProvider.getSegmentCount());
if (TmfTraceManager.getInstance().getActiveTrace() == null) {
if (!getTableViewer().getTable().isDisposed()) {
getTableViewer().setInput(null);
+ getTableViewer().setItemCount(0);
refresh();
}
+
+ AbstractSegmentStoreAnalysisModule analysis = getAnalysisModule();
+ if ((analysis != null)) {
+ analysis.removeListener(fListener);
+ }
}
}
+
+ // ------------------------------------------------------------------------
+ // Helper methods
+ // ------------------------------------------------------------------------
+
+ /*
+ * Add the listener for SetData on the table
+ */
+ private void addPackListener() {
+ getControl().addListener(SWT.SetData, new Listener() {
+ @Override
+ public void handleEvent(@Nullable Event event) {
+ // Remove the listener before the pack
+ getControl().removeListener(SWT.SetData, this);
+
+ // Pack the column the first time data is set
+ TableViewer tableViewer = getTableViewer();
+ if (tableViewer != null) {
+ for (TableColumn col : tableViewer.getTable().getColumns()) {
+ col.pack();
+ }
+ }
+ }
+ });
+ }
}