Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Mit einer XdevProgressBar lässt sich der Fortschritt eines laufenden Prozesses visualisieren. Der Fortschritt wird mit Hilfe eines Wertes zwischen 0.0 und 1.0 angegeben. Um den aktuellen Fortschritt eines Prozesses anzeigen zu können, müssen Sie zuvor dessen Gesamtumfang ermitteln. In vielen Fällen ist das Anzeigen eines Fortschritt-Rads ausreichend, das dem Anwender lediglich signalisiert, dass gerade ein Prozess mit unbestimmter Dauer läuft. Diese Variante ist einfacher umzusetzen. Soll der Fortschritt jedoch in Echtzeit angezeigt oder die Oberfläche in einer anderen Form aktualisiert werden, muss der

Wenn Sie den jedoch den Fortschritt in Echtzeit anzeigen, neben der XdevProgressBar noch weitere UI-Komponenten aktualisieren oder die Oberfläche während eines Hintergrundprozesses nicht sperren möchten, müssen Sie den Prozess in einem eigenen, parallel ablaufenden Thread ausgeführt werdenausführen und bei jeder Änderung die Oberfläche im Browser aktualisieren.

  

 

Wichtige Events:
  • valueChange - Wird ausgelöst, wenn sich der Fortschritt ändert. 

...

  • Fortschritts-Rad solange Prozess dauert - Zeigt lediglich ein Fortschritts-Rad an, dasden aktuellen Fortschritt in der XdevProgressBar an.  

    Code Block
    languagejava
    themeConfluence
    private void button_buttonClick(Button.ClickEvent event) {
    	Window popup = PopupWindow.For(new ProgressView()).closable(false).draggable(false).resizable(false).modal(true).show();
    
    	UI.getCurrent().push();
    
    	try {
    
    		// Start your process here
    
    	} catch (InterruptedException e) {
    		e.printStackTrace();
    	}
    
    	popup.close();
    }

    Selektieren Sie in der ProgressView bei XdevProgressBar > Properties > Indeterminate.

  • XdevProgressBar dynamisch aktualisieren - Zeigt den aktuellen Fortschritt in der XdevProgressBar an. Der gesamte Prozess muss in einem eigenem Thread laufen. Da der Thread auf dem Server abläuft und die XdevProgressBar im Browser davon nichts mitbekommt, muss für jede Aktualisierung der XdevProgressBar durch den Methodenaufruf getUI().access(()→progressBar.setValue(value)); ein Server Push durchgeführt werden.  

    Code Block
    languagejava
    themeConfluence
    private void progressBar_attach(ClientConnector.AttachEvent event) {	
     
            // Find out the lenght of your process in total. The value is 1.0.
     
    		// Starts a new thread on the serverside
    		Runnable task = ()->{			 
    	
    			// Start your process. Find out the current progress and store it in 'value'. Value must be between 0.1 and 1.0.			
    				
    				// Server Push to update in the ProgressBar in the Browser 
    				getUI().access(()->progressBar.setValue(value));			
    			
    		};
    		new Thread(new RunnableAccessWrapper(task)).start();	
    }

    Image Added


Zur XdevProgressBar Javadoc

...