Thread overview
Does org.eclipse.core.jobs works now?
Apr 12, 2009
yidabu
Apr 12, 2009
Frank Benoit
org.eclipse.core.jobs works test case
Apr 12, 2009
yidabu
Apr 13, 2009
Frank Benoit
Apr 13, 2009
yidabu
Apr 14, 2009
Frank Benoit
the Job Window not shown
Apr 14, 2009
yidabu
April 12, 2009
I run a background thread by Job, the app crashing on runtime exception:

No symbols available from sxs.dll
sxs.dll loaded at 0x75e90000
Unhandled D Exception (tango.core.Exception.IOException
 "<console> :: The handle is invalid.") at KERNEL32.dll (0x7c812a5b) thread(3356)
->us
#0 ?? () from KERNEL32.dll


the job is do some local IO, but not access to GUI resource.



-- 
yidabu <yidabu.spam@gmail.com> http://www.dsource.org/projects/dwin

D 语言-中文(D Chinese): http://www.d-programming-language-china.org/ http://bbs.d-programming-language-china.org/ http://dwin.d-programming-language-china.org/ http://scite4d.d-programming-language-china.org/


April 12, 2009
yidabu schrieb:
> I run a background thread by Job, the app crashing on runtime exception:
> 
> No symbols available from sxs.dll
> sxs.dll loaded at 0x75e90000
> Unhandled D Exception (tango.core.Exception.IOException
>  "<console> :: The handle is invalid.") at KERNEL32.dll (0x7c812a5b) thread(3356)
> ->us
> #0 ?? () from KERNEL32.dll
> 
> 
> the job is do some local IO, but not access to GUI resource.
> 
> 
> 

I think it was never tested.
If you can provide a test case, i try to fix existing problems.
April 12, 2009
Exception with test case:

3249 Fatal dwt - java\util\HashSet.d 31: implementation missing in file java\util\HashSet.d line 31
3255 Fatal dwt - java\util\HashSet.d 31: Please create a bug report at http://www.dsource.org/projects/dwt
3261 Fatal dwt - java\util\HashSet.d 31: exiting ...


the code:

/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 * D Port:
 *     Thomas Demmer <t_demmer AT web DOT de>
 *******************************************************************************/
module org.eclipse.swt.snippets.Snippet44;

/*
 * Cursor example snippet: set the hand cursor into a control
 *
 * For a list of all SWT example snippets see
 * http://www.eclipse.org/swt/snippets/
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

import java.lang.all;

import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.IJobChangeListener;
import tango.io.Stdout;

class MyJob : Job
{
    this(char[] name) {
        super(name);
    }

    public IStatus run(IProgressMonitor monitor) {
        Stdout.formatln("doing job");
        return Status.OK_STATUS;
    }
}


void main (String [] args) {
    Display display = new Display ();
    Cursor cursor = new Cursor (display, SWT.CURSOR_HAND);
    Shell shell = new Shell (display);
    shell.open ();
    Button b = new Button (shell, 0);
    b.setBounds (10, 10, 200, 200);
    b.addListener (SWT.Selection, new class() Listener{
        public void handleEvent (Event e) {
            //b.setCursor (cursor);
            auto job = new MyJob("test");
            job.schedule();
            job.join;
            Stdout.formatln("job done");
        }
    });
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    cursor.dispose ();
    display.dispose ();
}



-- 
yidabu <yidabu.spam@gmail.com> http://www.dsource.org/projects/dwin/

D 语言-中文(D Chinese): http://www.d-programming-language-china.org/ http://bbs.d-programming-language-china.org/ http://dwin.d-programming-language-china.org/ http://scite4d.d-programming-language-china.org/


April 13, 2009
yidabu schrieb:
> Exception with test case:
> 
> 3249 Fatal dwt - java\util\HashSet.d 31: implementation missing in file java\util\HashSet.d line 31
> 3255 Fatal dwt - java\util\HashSet.d 31: Please create a bug report at http://www.dsource.org/projects/dwt
> 3261 Fatal dwt - java\util\HashSet.d 31: exiting ...
> 
> 
> the code:
> 

I did some fixes
April 13, 2009
On Mon, 13 Apr 2009 13:58:46 +0200
Frank Benoit <keinfarbton@googlemail.com> wrote:

> yidabu schrieb:
> > Exception with test case:
> > 
> > 3249 Fatal dwt - java\util\HashSet.d 31: implementation missing in file java\util\HashSet.d line 31
> > 3255 Fatal dwt - java\util\HashSet.d 31: Please create a bug report at http://www.dsource.org/projects/dwt
> > 3261 Fatal dwt - java\util\HashSet.d 31: exiting ...
> > 
> > 
> > the code:
> > 
> 
> I did some fixes


no changes found


-- 
yidabu <yidabu.spam@gmail.com> http://www.dsource.org/projects/dwin/

D 语言-中文(D Chinese): http://www.d-programming-language-china.org/ http://bbs.d-programming-language-china.org/ http://dwin.d-programming-language-china.org/ http://scite4d.d-programming-language-china.org/


April 14, 2009
yidabu schrieb:
> On Mon, 13 Apr 2009 13:58:46 +0200
> Frank Benoit <keinfarbton@googlemail.com> wrote:
> 
>> yidabu schrieb:
>>> Exception with test case:
>>>
>>> 3249 Fatal dwt - java\util\HashSet.d 31: implementation missing in file java\util\HashSet.d line 31
>>> 3255 Fatal dwt - java\util\HashSet.d 31: Please create a bug report at http://www.dsource.org/projects/dwt
>>> 3261 Fatal dwt - java\util\HashSet.d 31: exiting ...
>>>
>>>
>>> the code:
>>>
>> I did some fixes
> 
> 
> no changes found
> 
> 

hm, I forgot to upload. :/
April 14, 2009
On Mon, 13 Apr 2009 13:58:46 +0200
Frank Benoit <keinfarbton@googlemail.com> wrote:

> yidabu schrieb:
> > Exception with test case:
> > 
> > 3249 Fatal dwt - java\util\HashSet.d 31: implementation missing in file java\util\HashSet.d line 31
> > 3255 Fatal dwt - java\util\HashSet.d 31: Please create a bug report at http://www.dsource.org/projects/dwt
> > 3261 Fatal dwt - java\util\HashSet.d 31: exiting ...
> > 
> > 
> > the code:
> > 
> 
> I did some fixes


Click on the button, the Job windows like this:

http://www.javaeye.com/upload/picture/pic/20475/90879eeb-bee8-3177-9ed5-f56fe1519fae.jpg

is not shown.


the test case:

/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 * D Port:
 *     Thomas Demmer <t_demmer AT web DOT de>
 *******************************************************************************/
module org.eclipse.swt.snippets.Snippet44;

/*
 * Cursor example snippet: set the hand cursor into a control
 *
 * For a list of all SWT example snippets see
 * http://www.eclipse.org/swt/snippets/
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

import java.lang.all;

import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.IJobChangeListener;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;

import tango.io.Stdout;
import tango.text.convert.Format;

class MyJob : Job
{
    this(char[] name) {
        super(name);
    }

    public IStatus run(IProgressMonitor monitor) {
        monitor.beginTask("test job", 50);
        for(int i; i < 50; i++)
        {
            monitor.subTask( Format("job {}", i) );
            Stdout.formatln("job {}", i);
            monitor.worked(i);
            if (monitor.isCanceled())
                return Status.CANCEL_STATUS;
            getThread.sleep(1);
            //Stdout.formatln("doing job");
        }
        monitor.done();
        return Status.OK_STATUS;
    }
}


void main (String [] args) {
    Display display = new Display ();
    Cursor cursor = new Cursor (display, SWT.CURSOR_HAND);
    Shell shell = new Shell (display);
    shell.open ();
    Button b = new Button (shell, 0);
    b.setBounds (10, 10, 200, 200);
    b.addListener (SWT.Selection, new class() Listener{
        public void handleEvent (Event e) {
            //b.setCursor (cursor);
            auto job = new MyJob("test");
            job.addJobChangeListener(new class JobChangeAdapter {
                public void done(IJobChangeEvent event) {
                    if (event.getResult().isOK())
                        Stdout.formatln("Job completed successfully");
                    else
                        Stdout.formatln("Job did not complete successfully");
                }
                });
            job.setUser(true);
            job.schedule();
            job.join;
        }
    });
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    cursor.dispose ();
    display.dispose ();
}









-- 
yidabu <yidabu.spam@gmail.com> http://www.dsource.org/projects/dwin/

D 语言-中文(D Chinese): http://www.d-programming-language-china.org/ http://bbs.d-programming-language-china.org/ http://dwin.d-programming-language-china.org/ http://scite4d.d-programming-language-china.org/