# Service darstellen



## Gast2 (2. Okt 2008)

Hallo zusammen,

www.eclipse.org/articles/Article-Concurrency/jobs-api.html
hieraus hab ich mein code bsp. aufgebaut


```
Job job = new Job("Use initiated job") {
        protected IStatus run(IProgressMonitor monitor) {
           //monitor.beginTask("Long Running Job",100);
           for(int i = 0;i< 10;i++) {
             try
            {
              Thread.sleep(1000l);
              //new SubProgressMonitor(monitor, 10);
              System.out.println("work"+i*10);
            }
            catch (InterruptedException e)
            {
              e.printStackTrace();
            }
            finally{
              monitor.done();
            }
           if (monitor.isCanceled()) return Status.CANCEL_STATUS;
          }
           return Status.OK_STATUS;

     }
        }
     };
  job.setUser(true);
  job.schedule();
```

die Konsolenausgabe bekomme ich aber ich bekomme nichts angezeigt(progressbar) was muss ich hierfür noch tun, was habe ich vergessen??
thx...


----------



## Wildcard (2. Okt 2008)

das beginTask fehlt noch.


----------



## Gast2 (2. Okt 2008)

hatte ich drin siehst du oben auskommentiert...
wenn ich das einkommentiere macht es keine änderung...


----------



## Wildcard (2. Okt 2008)

Ein worked(int) hast du auch nicht drin.


----------



## Gast2 (2. Okt 2008)

ok alles klar versuch ich mal... stand in dem link nicht drin....


----------



## Wildcard (2. Okt 2008)

Vielleicht hat es aber schonmal funktioniert und du hast die always run in background checkbox aktiviert.


----------



## Gast2 (3. Okt 2008)

ja muss ich aber dann nicht wie in eclipse den prozess irgendwo unten in so einer progressarea(gelb) angezeigt bekommen??? Aber ich hab keine checkbox angeklickt bin ich mir sicher...

sowas mein ich...


----------



## Wildcard (3. Okt 2008)

Bei einem user Task sollte eigentlich ein Dialog hochkommen. Wird der Job denn ausgeführt?


----------



## Gast2 (3. Okt 2008)

ja ich seh auf der konsole die ausgabe


```
System.out.println("work"+i*10);
```

aber wie gesagt ich hab das worked(int) noch nicht eingebaut muss ich erst noch versuchen...


----------



## Gast2 (3. Okt 2008)

```
Job job = new Job("Use initiated job") 
    {
        protected IStatus run(IProgressMonitor monitor) 
        {
           monitor.beginTask("Use initiated job",100);
           for(int i = 0;i< 10;i++) {
             try
            {
              Thread.sleep(1000l);
              monitor.worked(i*10);
              //new SubP.ogressMonitor(monitor, 10);
              System.out.println("work"+i*10);
            }
            catch (InterruptedException e)
            {
              e.printStackTrace();
            }
            finally{
              monitor.done();
            }
           if (monitor.isCanceled()) return Status.CANCEL_STATUS;
          }
           return Status.OK_STATUS;

        }
  };
  job.setUser(true);
  job.schedule();
  
  job.addJobChangeListener(new JobChangeAdapter() {
      public void done(IJobChangeEvent event) {
      if (event.getResult().isOK())
         System.out.println("Job completed successfully");
         else
         System.out.println("Job did not complete successfully");
      }
   });
```

Konsolen Ausgabe

```
work0
work10
work20
work30
work40
work50
work60
work70
work80
work90
```

aber ich seh nichts...=(


----------



## Wildcard (3. Okt 2008)

Vielleicht fehlt dir ja ein PlugIn? Zeigt die Progress View etwas an?


----------



## Gast2 (3. Okt 2008)

nee ich hab keine progress view muss ich die speziell noch irgendwie anlegen????


----------



## Wildcard (3. Okt 2008)

Show View -> Progress. Wenn dieser Eintrag nicht existiert, fehlt dir das PlugIn.


----------



## Gast2 (3. Okt 2008)

> Show View -> Progress. Wenn dieser Eintrag nicht existiert, fehlt dir das PlugIn.



versthe nicht was du meinst??? wo soll ich show view machen??? in meinem eclipse????
also in meinem eclipse show view progress hab ich es...


habe das jetzt mal eingefügt

```
<view
            name="Progress View"
            icon="icons/progress.png"
            category="org.eclipse.ui"
            class="org.eclipse.ui.ExtensionFactory:progressView"
            id="org.eclipse.ui.views.ProgressView">
       </view>
```


```
try {
	PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ID_PROGRESSVIEW);
} catch (PartInitException e1) {
	// TODO Auto-generated catch block
	e1.printStackTrace();
}
```

und danach job.schedule aber leider wird immer noch nichts angezeigt aber job läuft...

EDIT: hast du nicht ein kleines bsp wo bei dir läuft???


----------



## Gast2 (4. Okt 2008)

```
configurer.setShowProgressIndicator(true);
```

okay wenn ich das hier mache bekomm ich den dialog allerdings ohne progressbar ??? was muss ich hierfür noch einstellen??

thx


----------



## Gast2 (4. Okt 2008)

ich komme meinem ziel imemr näher.... hab jetzt alles ein bischen umgestellt und jetzt wird auch meine progressbar angezeigt... doch leider ist diese wenn i=5 auf 100% warum das????

```
Job job = new Job("Use initiated job")
        {
            protected IStatus run(final IProgressMonitor monitor)
            {
               mMonitor = monitor;
               try
               {
               monitor.beginTask("Use initiated job",10);
               for(int i = 0;i< 10;i++) {
            	  if (monitor.isCanceled()) return Status.CANCEL_STATUS;
				  
                  Thread.sleep(1000l);
                  monitor.worked(i);
                  System.out.println("work"+i);
                    
                }
               }
                catch (InterruptedException e)
                {
                  e.printStackTrace();
                }
                finally{
                  monitor.done();
                }
                    
               return Status.OK_STATUS;

            }
      };
```


----------



## Gast2 (4. Okt 2008)

ah jetzt hab ich es verstanden das worked gibt an um wieviel ich es erhöhen muss d.h. in eienr schleife immer um 1 nicht um i =)


----------



## Gast2 (6. Okt 2008)

ok nochmal ne frage
ich hab jetzt links unten schön mein job angezeigt wenn man da drauf klickt bekommt man den job in einer view angezeigt... kann ich irgendwie bestimmen wo die view angzeigt wird so ist mein aufbau gerade... und ich möchte gerne dass der job nicht zu anderen views hinzukommt sondern drunter einen eigene platz bekomme.

--------------------------
|---Editor------|Views-|
--------------------------


meine vorstellung :

--------------------------
|---Editor-----|-Views-|
 --------------------------
|---jobs-----------------|
---------------------------


aber ich möchte den platz erst belegen wenn es jobs gibt d.h. nicht von vorne herein ein leere page anzeigen. Ist sowas möglich???

EDIT


```
private static final String ID_PROGRESSVIEW =
    "org.eclipse.ui.views.ProgressView";

  public void createInitialLayout(IPageLayout layout)
  {
    final IPlaceholderFolderLayout placeholderFolderLayout =
      layout.createPlaceholderFolder(ID_PROGRESSVIEW, IPageLayout.BOTTOM, 0.08f,
        IPageLayout.ID_EDITOR_AREA);
    placeholderFolderLayout.addPlaceholder(ID_PROGRESSVIEW);
```

also soweit hab ich es, aber die progress view nimmt unten nicht den ganzen platz ein(vertikal)

sieht quasi so aus... 
--------------------------
|---Editor-----|-Views-|
 ---------------|---------|
|---jobs-------|---------|
---------------------------


----------



## Gast2 (6. Okt 2008)

ok einfach die reihenfolge ändern...


----------

