package xxx;
import java.lang.reflect.InvocationTargetException;
/**
* Not used
* @author zero
*
*/
public class MyProgressMonitorDialog extends TitleAreaDialog {
private ProgressMonitorPart canvas;
/**
* Create the dialog.
* @param parentShell
*/
public MyProgressMonitorDialog(Shell parentShell) {
super(parentShell);
}
/**
* Create contents of the dialog.
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent) {
setTitle("Import ");
Composite area = (Composite) super.createDialogArea(parent);
Composite container = new Composite(area, SWT.NONE);
container.setLayout(new GridLayout(1, false));
container.setLayoutData(new GridData(GridData.FILL_BOTH));
canvas = new ProgressMonitorPart(container, null);
canvas.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
// canvas.setLayout(new GridLayout());
// GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).span(1, 1).grab(true, false).applyTo(canvas);
return area;
}
@Override
protected void okPressed() {
try {
canvas.attachToCancelComponent(getButton(IDialogConstants.CANCEL_ID));
ModalContext.run(new OP(), true,canvas, getShell().getDisplay());
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
class OP implements IRunnableWithProgress{
@Override
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
int s = 157654;
monitor.beginTask("op", s);
for (int i = 0; i < s; i++) {
if(monitor.isCanceled()){
return;
}
System.out.println(i);
System.out.println(i);
System.out.println(i);
System.out.println(i);
monitor.worked(1);
}
monitor.done();
}
}
/**
* Create contents of the button bar.
* @param parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
true);
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, false);
}
/**
* Return the initial size of the dialog.
*/
@Override
protected Point getInitialSize() {
return new Point(488, 358);
}
public static void main(String[] args) {
MyProgressMonitorDialog dialog=new MyProgressMonitorDialog(new Shell());
dialog.open();
}
}