<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSWT_JFace_Eclipse%2FProgressBar</id>
		<title>Java/SWT JFace Eclipse/ProgressBar - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSWT_JFace_Eclipse%2FProgressBar"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/ProgressBar&amp;action=history"/>
		<updated>2026-04-21T23:20:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/ProgressBar&amp;diff=5658&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/ProgressBar&amp;diff=5658&amp;oldid=prev"/>
				<updated>2010-06-01T05:55:47Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:55, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/ProgressBar&amp;diff=5657&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/ProgressBar&amp;diff=5657&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A progress bar dialog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.net.MalformedURLException;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import org.eclipse.jface.resource.ImageDescriptor;&lt;br /&gt;
import org.eclipse.jface.resource.ImageRegistry;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.custom.CLabel;&lt;br /&gt;
import org.eclipse.swt.dnd.Clipboard;&lt;br /&gt;
import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;
import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;
import org.eclipse.swt.layout.GridData;&lt;br /&gt;
import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.ruposite;&lt;br /&gt;
import org.eclipse.swt.widgets.Dialog;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Label;&lt;br /&gt;
import org.eclipse.swt.widgets.ProgressBar;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
/**&lt;br /&gt;
 * progress bar dialog.&lt;br /&gt;
 * the first, you must know your app execute times,&lt;br /&gt;
 * you need implement two method: &lt;br /&gt;
 * &lt;br /&gt;
 * process(int times);&lt;br /&gt;
 * initGuage();&lt;br /&gt;
 * &lt;br /&gt;
 * you can implements method:&lt;br /&gt;
 *  &lt;br /&gt;
 * cleanUp()&lt;br /&gt;
 * doBefore()&lt;br /&gt;
 * doAfter() &lt;br /&gt;
 * @author yin_zhiguo&lt;br /&gt;
 *         yin_zhiguo@hotmail.ru&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public abstract class ProgressBarDialog extends Dialog {&lt;br /&gt;
    private Label processMessageLabel; //info of process finish &lt;br /&gt;
    private Button cancelButton; //cancel button&lt;br /&gt;
    private Composite cancelComposite;&lt;br /&gt;
    private Label lineLabel;//&lt;br /&gt;
    private Composite progressBarComposite;//&lt;br /&gt;
    private CLabel message;//&lt;br /&gt;
    private ProgressBar progressBar = null; //&lt;br /&gt;
    private Object result; //&lt;br /&gt;
    private Shell shell; //&lt;br /&gt;
    private Display display = null; &lt;br /&gt;
    &lt;br /&gt;
    protected volatile boolean isClosed = false;//closed state&lt;br /&gt;
    &lt;br /&gt;
    protected int executeTime = 50;//process times&lt;br /&gt;
    protected String processMessage = &amp;quot;process......&amp;quot;;//procress info&lt;br /&gt;
    protected String shellTitle = &amp;quot;Progress...&amp;quot;; //&lt;br /&gt;
    protected Image processImage = SWTUtil.getImageOfMessage();//image&lt;br /&gt;
    protected boolean mayCancel = true; //cancel&lt;br /&gt;
    protected int processBarStyle = SWT.SMOOTH; //process bar style&lt;br /&gt;
  public void setMayCancel(boolean mayCancel) {&lt;br /&gt;
    this.mayCancel = mayCancel;&lt;br /&gt;
  }&lt;br /&gt;
    public void setExecuteTime(int executeTime) {&lt;br /&gt;
        this.executeTime = executeTime;&lt;br /&gt;
    }&lt;br /&gt;
    public void setProcessImage(Image processImage) {&lt;br /&gt;
    this.processImage = processImage;&lt;br /&gt;
  }&lt;br /&gt;
  public void setProcessMessage(String processInfo) {&lt;br /&gt;
    this.processMessage = processInfo;&lt;br /&gt;
  }&lt;br /&gt;
  public ProgressBarDialog(Shell parent) {&lt;br /&gt;
        super(parent);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    public abstract void initGuage();&lt;br /&gt;
    public Object open() {&lt;br /&gt;
        createContents(); //create window&lt;br /&gt;
        shell.open();&lt;br /&gt;
        shell.layout();&lt;br /&gt;
        &lt;br /&gt;
        //start work&lt;br /&gt;
        new ProcessThread(executeTime).start();&lt;br /&gt;
        Display display = getParent().getDisplay();&lt;br /&gt;
        while (!shell.isDisposed()) {&lt;br /&gt;
            if (!display.readAndDispatch()) {&lt;br /&gt;
                display.sleep();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
    protected void createContents() {&lt;br /&gt;
        shell = new Shell(getParent(), SWT.TITLE | SWT.PRIMARY_MODAL);&lt;br /&gt;
        display = shell.getDisplay();&lt;br /&gt;
        final GridLayout gridLayout = new GridLayout();&lt;br /&gt;
        gridLayout.verticalSpacing = 10;&lt;br /&gt;
        shell.setLayout(gridLayout);&lt;br /&gt;
        shell.setSize(483, 181);&lt;br /&gt;
        shell.setText(shellTitle);&lt;br /&gt;
        final Composite composite = new Composite(shell, SWT.NONE);&lt;br /&gt;
        composite.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));&lt;br /&gt;
        composite.setLayout(new GridLayout());&lt;br /&gt;
        message = new CLabel(composite, SWT.NONE);&lt;br /&gt;
        message.setImage(processImage);&lt;br /&gt;
        message.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));&lt;br /&gt;
        message.setText(processMessage);&lt;br /&gt;
        progressBarComposite = new Composite(shell, SWT.NONE);&lt;br /&gt;
        progressBarComposite.setLayoutData(new GridData(GridData.FILL,&lt;br /&gt;
                GridData.CENTER, false, false));&lt;br /&gt;
        progressBarComposite.setLayout(new FillLayout());&lt;br /&gt;
        progressBar = new ProgressBar(progressBarComposite, processBarStyle);&lt;br /&gt;
        progressBar.setMaximum(executeTime);&lt;br /&gt;
        processMessageLabel = new Label(shell, SWT.NONE);&lt;br /&gt;
        processMessageLabel.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));&lt;br /&gt;
        lineLabel = new Label(shell, SWT.HORIZONTAL | SWT.SEPARATOR);&lt;br /&gt;
        lineLabel.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));&lt;br /&gt;
        cancelComposite = new Composite(shell, SWT.NONE);&lt;br /&gt;
        cancelComposite.setLayoutData(new GridData(GridData.END,&lt;br /&gt;
                GridData.CENTER, false, false));&lt;br /&gt;
        final GridLayout gridLayout_1 = new GridLayout();&lt;br /&gt;
        gridLayout_1.numColumns = 2;&lt;br /&gt;
        cancelComposite.setLayout(gridLayout_1);&lt;br /&gt;
        cancelButton = new Button(cancelComposite, SWT.NONE);&lt;br /&gt;
        cancelButton.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
            public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
                isClosed = true;&lt;br /&gt;
                //System.out.println(isClosed);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        cancelButton.setLayoutData(new GridData(78, SWT.DEFAULT));&lt;br /&gt;
        cancelButton.setText(&amp;quot;cancel&amp;quot;);&lt;br /&gt;
        cancelButton.setEnabled(this.mayCancel);&lt;br /&gt;
    }&lt;br /&gt;
    protected abstract String process(int times);&lt;br /&gt;
&lt;br /&gt;
    protected void cleanUp()&lt;br /&gt;
    {&lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void doBefore()&lt;br /&gt;
    {&lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void doAfter()&lt;br /&gt;
    {&lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
    class ProcessThread extends Thread {&lt;br /&gt;
        private int max = 0;&lt;br /&gt;
        private volatile boolean shouldStop = false;&lt;br /&gt;
        ProcessThread(int max) {&lt;br /&gt;
            this.max = max;&lt;br /&gt;
        }&lt;br /&gt;
        public void run() {&lt;br /&gt;
          doBefore();&lt;br /&gt;
            for (final int[] i = new int[] {1}; i[0] &amp;lt;= max; i[0]++) &lt;br /&gt;
            {&lt;br /&gt;
                //&lt;br /&gt;
                final String info = process(i[0]);&lt;br /&gt;
                if (display.isDisposed()) {&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                display.syncExec(new Runnable() {&lt;br /&gt;
                    public void run() {&lt;br /&gt;
                        if (progressBar.isDisposed()) {&lt;br /&gt;
                            return;&lt;br /&gt;
                        }&lt;br /&gt;
                        //&lt;br /&gt;
                        processMessageLabel.setText(info);&lt;br /&gt;
                        //&lt;br /&gt;
                        progressBar.setSelection(i[0]);&lt;br /&gt;
                        //&lt;br /&gt;
                        if (i[0] == max || isClosed) {&lt;br /&gt;
                            if (isClosed) {&lt;br /&gt;
                                shouldStop = true;//&lt;br /&gt;
                                cleanUp();//&lt;br /&gt;
                            }&lt;br /&gt;
                            shell.close();//&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
                if (shouldStop) {&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            doAfter();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  public void setShellTitle(String shellTitle) {&lt;br /&gt;
    this.shellTitle = shellTitle;&lt;br /&gt;
  }&lt;br /&gt;
  public void setProcessBarStyle(boolean pStyle) {&lt;br /&gt;
    if(pStyle)&lt;br /&gt;
      this.processBarStyle = SWT.SMOOTH;&lt;br /&gt;
    else&lt;br /&gt;
      this.processBarStyle = SWT.NONE;&lt;br /&gt;
      &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class DemoProgressBar extends ProgressBarDialog {&lt;br /&gt;
  &lt;br /&gt;
  private String[] info = null;&lt;br /&gt;
  &lt;br /&gt;
  public DemoProgressBar(Shell parent) {&lt;br /&gt;
       super(parent);&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
  @Override&lt;br /&gt;
  public void initGuage() {&lt;br /&gt;
    info = new String[100];&lt;br /&gt;
    for (int i = 0; i &amp;lt; info.length; i++) {&lt;br /&gt;
      info[i] = &amp;quot;process task &amp;quot; + i + &amp;quot;.&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    this.setExecuteTime(100);&lt;br /&gt;
    this.setMayCancel(true);&lt;br /&gt;
    this.setProcessMessage(&amp;quot;please waiting....&amp;quot;);&lt;br /&gt;
    this.setShellTitle(&amp;quot;Demo&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  protected String process(int arg0) {&lt;br /&gt;
    try{&lt;br /&gt;
      Thread.sleep((long)(Math.random() * 300));&lt;br /&gt;
    }catch(Exception e){e.printStackTrace();}&lt;br /&gt;
    &lt;br /&gt;
    return info[arg0 - 1];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class SWTUtil {&lt;br /&gt;
&lt;br /&gt;
    private static ImageRegistry imageRegistry = new ImageRegistry();&lt;br /&gt;
    private static Clipboard clipboard = new Clipboard(Display.getCurrent());&lt;br /&gt;
    &lt;br /&gt;
    private static final String ___IMAGE_Of_MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    static{&lt;br /&gt;
      imageRegistry.put(___IMAGE_Of_MESSAGE, ImageDescriptor.createFromURL(newURL(&amp;quot;file:icons/info2.gif&amp;quot;)));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private SWTUtil(){}&lt;br /&gt;
    &lt;br /&gt;
    public static URL newURL(String url_name) {&lt;br /&gt;
        try {&lt;br /&gt;
            return new URL(url_name);&lt;br /&gt;
        } catch (MalformedURLException e) {&lt;br /&gt;
            throw new RuntimeException(&amp;quot;Malformed URL &amp;quot; + url_name, e);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public static void registryImage(String id, String urlName)&lt;br /&gt;
    {&lt;br /&gt;
      imageRegistry.put(id, ImageDescriptor.createFromURL(newURL(urlName)));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public static Image getImage(String id)&lt;br /&gt;
    {&lt;br /&gt;
      return imageRegistry.get(id);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static Clipboard getClipboard() {&lt;br /&gt;
        return clipboard;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    public static Image getImageOfMessage()&lt;br /&gt;
    {&lt;br /&gt;
      return imageRegistry.get(___IMAGE_Of_MESSAGE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class PBDialogDemo extends Shell {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    try {&lt;br /&gt;
      Display display = Display.getDefault();&lt;br /&gt;
      PBDialogDemo shell = new PBDialogDemo(display, SWT.SHELL_TRIM);&lt;br /&gt;
      shell.open();&lt;br /&gt;
      shell.layout();&lt;br /&gt;
      while (!shell.isDisposed()) {&lt;br /&gt;
        if (!display.readAndDispatch())&lt;br /&gt;
          display.sleep();&lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public PBDialogDemo(Display display, int style) {&lt;br /&gt;
    super(display, style);&lt;br /&gt;
    createContents();&lt;br /&gt;
  }&lt;br /&gt;
  protected void createContents() {&lt;br /&gt;
    setText(&amp;quot;ProgressBar Dialog&amp;quot;);&lt;br /&gt;
    setSize(218, 98);&lt;br /&gt;
    setLayout(new FillLayout());&lt;br /&gt;
    final Button openProgressbarDialogButton = new Button(this, SWT.NONE);&lt;br /&gt;
    openProgressbarDialogButton.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        DemoProgressBar dpb = new DemoProgressBar(PBDialogDemo.this);&lt;br /&gt;
        dpb.initGuage();&lt;br /&gt;
        dpb.open();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    openProgressbarDialogButton.setText(&amp;quot;Open ProgressBar Dialog&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
  protected void checkSubclass() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Count Numbers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * All Right Reserved. &lt;br /&gt;
 * Copyright (c) 1998, 2004 Jackwind Li Guojie&lt;br /&gt;
 * &lt;br /&gt;
 * Created on 2004-3-31 1:19:00 by JACK&lt;br /&gt;
 * $Id$&lt;br /&gt;
 * &lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.events.PaintEvent;&lt;br /&gt;
import org.eclipse.swt.events.PaintListener;&lt;br /&gt;
import org.eclipse.swt.graphics.Font;&lt;br /&gt;
import org.eclipse.swt.graphics.FontMetrics;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.layout.GridData;&lt;br /&gt;
import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.ProgressBar;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class CountNumbers {&lt;br /&gt;
  Display display = new Display();&lt;br /&gt;
  Shell shell = new Shell(display);&lt;br /&gt;
  Button button;&lt;br /&gt;
  ProgressBar progressBar;&lt;br /&gt;
  &lt;br /&gt;
  public CountNumbers() {&lt;br /&gt;
    GridLayout gridLayout = new GridLayout(1, true);&lt;br /&gt;
    shell.setLayout(gridLayout);&lt;br /&gt;
    &lt;br /&gt;
    button = new Button(shell, SWT.BORDER);&lt;br /&gt;
    button.setText(&amp;quot;Start to count&amp;quot;);    &lt;br /&gt;
    &lt;br /&gt;
    progressBar = new ProgressBar(shell, SWT.SMOOTH);&lt;br /&gt;
    progressBar.setMinimum(0);&lt;br /&gt;
    progressBar.setMaximum(10);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    final Thread countThread = new Thread(){&lt;br /&gt;
      public void run() {&lt;br /&gt;
        for(int i=0; i&amp;lt;=10; i++) {&lt;br /&gt;
          final int num = i;&lt;br /&gt;
          try {&lt;br /&gt;
            Thread.sleep(1000);&lt;br /&gt;
          } catch (InterruptedException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
          }&lt;br /&gt;
          &lt;br /&gt;
          shell.getDisplay().asyncExec(new Runnable(){&lt;br /&gt;
            public void run() {&lt;br /&gt;
              if(button.isDisposed() || progressBar.isDisposed())&lt;br /&gt;
                return;&lt;br /&gt;
              button.setText(&amp;quot;Counting: &amp;quot; + num);&lt;br /&gt;
              progressBar.setSelection(num);&lt;br /&gt;
              //progressBar.redraw();&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    button.addListener(SWT.Selection, new Listener() {&lt;br /&gt;
      public void handleEvent(Event event) {&lt;br /&gt;
        button.setEnabled(false);&lt;br /&gt;
        countThread.start();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    progressBar.addPaintListener(new PaintListener() {&lt;br /&gt;
      public void paintControl(PaintEvent e) {&lt;br /&gt;
        System.out.println(&amp;quot;PAINT&amp;quot;);&lt;br /&gt;
        // string to draw. &lt;br /&gt;
        String string = (progressBar.getSelection() * 1.0 /(progressBar.getMaximum()-progressBar.getMinimum()) * 100) + &amp;quot;%&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        Point point = progressBar.getSize();&lt;br /&gt;
        Font font = new Font(shell.getDisplay(),&amp;quot;Courier&amp;quot;,10,SWT.BOLD);&lt;br /&gt;
        e.gc.setFont(font);&lt;br /&gt;
        e.gc.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));&lt;br /&gt;
        &lt;br /&gt;
        FontMetrics fontMetrics = e.gc.getFontMetrics();&lt;br /&gt;
        int stringWidth = fontMetrics.getAverageCharWidth() * string.length();&lt;br /&gt;
        int stringHeight = fontMetrics.getHeight();&lt;br /&gt;
        &lt;br /&gt;
        e.gc.drawString(string, (point.x-stringWidth)/2 , (point.y-stringHeight)/2, true);&lt;br /&gt;
        font.dispose();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  &lt;br /&gt;
    button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;
    progressBar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;
    shell.setSize(300, 100);&lt;br /&gt;
    shell.open();&lt;br /&gt;
    //textUser.forceFocus();&lt;br /&gt;
    // Set up the event loop.&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch()) {&lt;br /&gt;
        // If no more entries in event queue&lt;br /&gt;
        display.sleep();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  private void init() {&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new CountNumbers();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Demonstrates ProgressBar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Send questions, comments, bug reports, etc. to the authors:&lt;br /&gt;
//Rob Warner (rwarner@interspatial.ru)&lt;br /&gt;
//Robert Harris (rbrt_harris@yahoo.ru)&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.layout.*;&lt;br /&gt;
import org.eclipse.swt.widgets.*;&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates ProgressBar&lt;br /&gt;
 */&lt;br /&gt;
public class ProgressBarExample {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    Shell shell = new Shell(display);&lt;br /&gt;
    shell.setLayout(new GridLayout());&lt;br /&gt;
    &lt;br /&gt;
    // Create a smooth progress bar&lt;br /&gt;
    ProgressBar pb1 = new ProgressBar(shell, SWT.HORIZONTAL | SWT.SMOOTH);&lt;br /&gt;
    pb1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;
    pb1.setMinimum(0);&lt;br /&gt;
    pb1.setMaximum(30);&lt;br /&gt;
    &lt;br /&gt;
    // Create an indeterminate progress bar&lt;br /&gt;
    ProgressBar pb2 = new ProgressBar(shell, SWT.HORIZONTAL | SWT.INDETERMINATE);&lt;br /&gt;
    pb2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));&lt;br /&gt;
    &lt;br /&gt;
    // Start the first progress bar&lt;br /&gt;
    new LongRunningOperation(display, pb1).start();&lt;br /&gt;
    &lt;br /&gt;
    shell.open();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch()) {&lt;br /&gt;
        display.sleep();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
/**&lt;br /&gt;
 * This class simulates a long running operation&lt;br /&gt;
 */&lt;br /&gt;
class LongRunningOperation extends Thread {&lt;br /&gt;
  private Display display;&lt;br /&gt;
  private ProgressBar progressBar;&lt;br /&gt;
  public LongRunningOperation(Display display, ProgressBar progressBar) {&lt;br /&gt;
    this.display = display;&lt;br /&gt;
    this.progressBar = progressBar;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public void run() {&lt;br /&gt;
    // Perform work here--this operation just sleeps&lt;br /&gt;
    for (int i = 0; i &amp;lt; 30; i++) {&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(1000);&lt;br /&gt;
      } catch (InterruptedException e) {&lt;br /&gt;
        // Do nothing&lt;br /&gt;
      }&lt;br /&gt;
      display.asyncExec(new Runnable() {&lt;br /&gt;
        public void run() {&lt;br /&gt;
          if (progressBar.isDisposed()) return;&lt;br /&gt;
          &lt;br /&gt;
          // Increment the progress bar&lt;br /&gt;
          progressBar.setSelection(progressBar.getSelection() + 1);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ProgressBar Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.ProgressBar;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class ProgressBarExample {&lt;br /&gt;
  Display d;&lt;br /&gt;
  Shell s;&lt;br /&gt;
  ProgressBarExample() {&lt;br /&gt;
    d = new Display();&lt;br /&gt;
    s = new Shell(d);&lt;br /&gt;
    s.setSize(250, 250);&lt;br /&gt;
    &lt;br /&gt;
    s.setText(&amp;quot;A ProgressBar Example&amp;quot;);&lt;br /&gt;
    final ProgressBar pb = new ProgressBar(s, SWT.HORIZONTAL);&lt;br /&gt;
    pb.setMinimum(0);&lt;br /&gt;
    pb.setMaximum(100);&lt;br /&gt;
    pb.setSelection(50);&lt;br /&gt;
    pb.setBounds(10, 10, 200, 20);&lt;br /&gt;
    s.open();&lt;br /&gt;
    while (!s.isDisposed()) {&lt;br /&gt;
      if (!d.readAndDispatch())&lt;br /&gt;
        d.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    d.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main() {&lt;br /&gt;
    new ProgressBarExample();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ProgressBar Examples ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * All Right Reserved. &lt;br /&gt;
 * Copyright (c) 1998, 2004 Jackwind Li Guojie&lt;br /&gt;
 * &lt;br /&gt;
 * Created on 2004-3-31 0:13:36 by JACK&lt;br /&gt;
 * $Id$&lt;br /&gt;
 * &lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Label;&lt;br /&gt;
import org.eclipse.swt.widgets.ProgressBar;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class ProgressBarExamples {&lt;br /&gt;
  Display display = new Display();&lt;br /&gt;
  Shell shell = new Shell(display);&lt;br /&gt;
  public ProgressBarExamples() {&lt;br /&gt;
    init();&lt;br /&gt;
    &lt;br /&gt;
    ProgressBar pb1 = new ProgressBar(shell, SWT.NULL);&lt;br /&gt;
    final ProgressBar pb2 = new ProgressBar(shell, SWT.SMOOTH);&lt;br /&gt;
    ProgressBar pb3 = new ProgressBar(shell, SWT.INDETERMINATE);&lt;br /&gt;
    &lt;br /&gt;
//    pb2.addPaintListener(new PaintListener() {&lt;br /&gt;
//      public void paintControl(PaintEvent e) {&lt;br /&gt;
//        Point point = pb2.getSize();&lt;br /&gt;
//        &lt;br /&gt;
//        Font font = new Font(shell.getDisplay(),&amp;quot;Courier&amp;quot;,10,SWT.BOLD);&lt;br /&gt;
//        e.gc.setFont(font);&lt;br /&gt;
//        e.gc.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));&lt;br /&gt;
//        &lt;br /&gt;
//        FontMetrics fontMetrics = e.gc.getFontMetrics();&lt;br /&gt;
//        int stringWidth = fontMetrics.getAverageCharWidth() * 4;&lt;br /&gt;
//        int stringHeight = fontMetrics.getHeight();&lt;br /&gt;
//        &lt;br /&gt;
//        e.gc.drawString(&amp;quot;60%&amp;quot;, (point.x-stringWidth)/2 , (point.y-stringHeight)/2, true);&lt;br /&gt;
//        font.dispose();&lt;br /&gt;
//      }&lt;br /&gt;
//    });&lt;br /&gt;
    &lt;br /&gt;
    pb1.setSelection(60);&lt;br /&gt;
    pb2.setSelection(60);&lt;br /&gt;
    &lt;br /&gt;
    pb1.setBounds(100, 10, 200, 20);&lt;br /&gt;
    pb2.setBounds(100, 40, 200, 20);&lt;br /&gt;
    //pb3.setBounds(100, 70, 200, 20);&lt;br /&gt;
    &lt;br /&gt;
    Label label = new Label(shell, SWT.NULL);&lt;br /&gt;
    label.setText(&amp;quot;(default)&amp;quot;);&lt;br /&gt;
    Label label2 = new Label(shell, SWT.NULL);&lt;br /&gt;
    label2.setText(&amp;quot;SWT.SMOOTH&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    label.setAlignment(SWT.RIGHT);&lt;br /&gt;
    label2.setAlignment(SWT.RIGHT);&lt;br /&gt;
    label.setBounds(10, 10, 80, 20);&lt;br /&gt;
    label2.setBounds(10, 40, 80, 20);&lt;br /&gt;
    &lt;br /&gt;
    shell.pack();&lt;br /&gt;
    shell.open();&lt;br /&gt;
    //textUser.forceFocus();&lt;br /&gt;
    // Set up the event loop.&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch()) {&lt;br /&gt;
        // If no more entries in event queue&lt;br /&gt;
        display.sleep();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  private void init() {&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new ProgressBarExamples();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update a progress bar (from the UI thread) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * ProgressBar example snippet: update a progress bar (from the UI thread)&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.ProgressBar;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class Snippet57 {&lt;br /&gt;
public static void main (String [] args) {&lt;br /&gt;
  Display display = new Display ();&lt;br /&gt;
  Shell shell = new Shell (display);&lt;br /&gt;
  ProgressBar bar = new ProgressBar (shell, SWT.SMOOTH);&lt;br /&gt;
  bar.setBounds (10, 10, 200, 32);&lt;br /&gt;
  shell.open ();&lt;br /&gt;
  for (int i=0; i&amp;lt;=bar.getMaximum (); i++) {&lt;br /&gt;
    try {Thread.sleep (100);} catch (Throwable th) {}&lt;br /&gt;
    bar.setSelection (i);&lt;br /&gt;
  }&lt;br /&gt;
  while (!shell.isDisposed ()) {&lt;br /&gt;
    if (!display.readAndDispatch ()) display.sleep ();&lt;br /&gt;
  }&lt;br /&gt;
  display.dispose ();&lt;br /&gt;
}&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update a SWT progress bar (from another thread) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * ProgressBar example snippet: update a progress bar (from another thread)&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.ProgressBar;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class Snippet56 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    final Display display = new Display();&lt;br /&gt;
    Shell shell = new Shell(display);&lt;br /&gt;
    final ProgressBar bar = new ProgressBar(shell, SWT.SMOOTH);&lt;br /&gt;
    bar.setBounds(10, 10, 200, 32);&lt;br /&gt;
    shell.open();&lt;br /&gt;
    final int maximum = bar.getMaximum();&lt;br /&gt;
    new Thread() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        for (final int[] i = new int[1]; i[0] &amp;lt;= maximum; i[0]++) {&lt;br /&gt;
          try {&lt;br /&gt;
            Thread.sleep(100);&lt;br /&gt;
          } catch (Throwable th) {&lt;br /&gt;
          }&lt;br /&gt;
          if (display.isDisposed())&lt;br /&gt;
            return;&lt;br /&gt;
          display.asyncExec(new Runnable() {&lt;br /&gt;
            public void run() {&lt;br /&gt;
              if (bar.isDisposed())&lt;br /&gt;
                return;&lt;br /&gt;
              bar.setSelection(i[0]);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }.start();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>