package com.tibco.as.spacebar.ui.editor.action; import java.text.MessageFormat; import java.util.List; import org.eclipse.jface.dialogs.ProgressIndicator; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import com.tibco.as.spacebar.ui.SWTFactory; import com.tibco.as.space.SpaceDef.PersistencePolicy; import com.tibco.as.space.Tuple; public class TupleSizeDialog extends TitleAreaDialog implements ITupleSizeListener { private final static String MESSAGE = "Tuple size: {0} bytes"; private List<Tuple> tuples; private ProgressIndicator progressIndicator; private TupleSizeJob job; public TupleSizeDialog(Shell parentShell, List<Tuple> tuples) { super(parentShell); this.tuples = tuples; } @Override public void create() { super.create(); setTitle("Tuple Size"); setMessage("Tuple size:"); } @Override protected Control createDialogArea(Composite parent) { Composite area = (Composite) super.createDialogArea(parent); Composite container = SWTFactory.createComposite(area, 1, 1, GridData.FILL_BOTH); updateLabel(null); progressIndicator = new ProgressIndicator(container); GridDataFactory.defaultsFor(progressIndicator).grab(true, false) .applyTo(progressIndicator); progressIndicator.beginAnimatedTask(); job = new TupleSizeJob(tuples); job.addListener(this); job.schedule(); return area; } @Override public void tupleSize(Long size) { updateLabel(size); } private void updateLabel(final Long size) { if (size == null) { return; } if (!getShell().isDisposed()) { getShell().getDisplay().asyncExec(new Runnable() { @Override public void run() { if (!getShell().isDisposed()) { setMessage(MessageFormat.format(MESSAGE, size)); } } }); } } @Override public boolean close() { if (job != null) { job.cancel(); } return super.close(); } @Override public void done() { if (!getShell().isDisposed()) { getShell().getDisplay().asyncExec(new Runnable() { @Override public void run() { if (!getShell().isDisposed()) { progressIndicator.done(); } } }); } } public static void main(String[] args) { System.out.println(PersistencePolicy.class.getName()); } }