RCP JFace Treeviewer speichern?

lam_tr

Top Contributor
Hallo zusammen,

ich hab eine View mit einer TreeViewer gebaut, die nix anderes als mein Laufwerk "C" abzubilden.
Ich hab den Input als new File("C:/") übergeben.
Kann ich irgendwie meinen TreeViewer als xml abspeichern?
Ich will das komplette Laufwerk als XML darstellen.

Gruss lam
 

Wildcard

Top Contributor
Man speichert keine Oberfläche, sondern Modelle. Der TreeViewer zeigt dir dann dieses Modell ab.
Du kannst die gewünschte Struktur zB mit EMF modellieren. EMF Modelle kannst du dann automatisch in einem TreeViewer anzeigen lassen und auch als XML speichern.
 

lam_tr

Top Contributor
Hi wildcard,

ich hab es über EMF gemacht, hab nur gedacht dass es auch schöne Varianten gibt ein Abbild des "Ordners" TreeViewers zu machen.

Weil ich beispielsweise ein Laufwerk durchlaufe, hängt meine Oberfläche auf, trotz des UI-Threads.
Gibts da eine Möglichkeit den Aufruf der Methode zum Durchlaufen des Laufwerks, ohne dass die UI einfriert?

Gruss lam
 

Wildcard

Top Contributor
Gibts da eine Möglichkeit den Aufruf der Methode zum Durchlaufen des Laufwerks, ohne dass die UI einfriert?
Zeitintensive Operationen dürfen nicht im UI Thread erfolgen.
Du hast im Prinzip 3 Möglichkeiten:
1. Erst ein komplettes Modell im Hintergrund aufbauen und das dann anzeigen
2. On-the-fly im Content Provider berechnen (diese Möglichkeit funktioniert nur wenn die Berechnung für ein einziges getChildren() nicht lange dauert
3. Einen Lazy Tree verwenden der asynchron nachlädt
 

lam_tr

Top Contributor
Hi Wildcard,

im Grunde genommen mache ich die Option 3.
Nach ein paar Sekunden beim betätigen des "Durchlaufs" blockiert die Methode
die UI, obwohl ich bis dahin noch nicht auf den TreeViewer zugreife, sondern nur
das Laufwerk durchiteriere und nebenbei das Modell befülle.

Beim Testen der Methode habe ich gemerkt dass er auf die gleiche Thread (=main) wie die UI (=main)
zugreift.

Java:
	@Override
	public void widgetSelected(SelectionEvent e) {
		
		PlatformUI.createDisplay().asyncExec(new Runnable() {
			
			@Override
			public void run() {
				System.out.println(Thread.currentThread().getName());

				TreeView view = (TreeView) RCPUtil.getInstance().findView(TreeView.ID);
				
				FolderUtil util = new FolderUtil();
				
				DirectoryDialog dd = new DirectoryDialog(new Shell());
				String choosePath = dd.open();
				File dir = null;
				
				if(choosePath!=null){
					dir = new File(choosePath);
		
				DriveCon con = ModelProvider.getInstance().createDrive();
				DriveFactory factory= DriveFactory.eINSTANCE;
										
				Folder folder = factory.createFolder();
		    	folder.setName(dir.getName());
		    	con.getEntries().add(folder);
				util.listDir(dir, folder);
				ModelProvider.getInstance().setDrive(con);					
				view.getViewer().setInput(ModelProvider.getInstance().getDrive());
//				view.getTreeViewer().expandToLevel(2);
				}
			}
		});
	}

Im Grunde genommen müsste es in einem separaten Thread (Hintergrund) laufen oder?
Wenn nicht, wie kann es tun, so dass die UI nicht einfriert?

Gruss lam
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M RCP Jface binding 2D Arrays Plattformprogrammierung 14
N RCP JFace Table - Header Text um -90° drehen Plattformprogrammierung 2
M RCP JFace Databinding von Color-Objekten Plattformprogrammierung 3
O JFace Data Binding Plattformprogrammierung 12
R JFace Databinding Problem Plattformprogrammierung 5
G JFace Databinding und ComboViewer Plattformprogrammierung 1
lumo JFace Databinding Plattformprogrammierung 10
J Wo finde ich die JFace Plug-ins? Plattformprogrammierung 2
L RCP TreeViewer Listener Problem Plattformprogrammierung 12
D RCP TreeViewer Plattformprogrammierung 5
dzim Root-Element in TreeViewer anzeigen? Plattformprogrammierung 6
G Text kopieren aus TreeViewer mit mehreren Spalten Plattformprogrammierung 6
J Variablen speichern? Plattformprogrammierung 2
B RCP Projekt settings speichern Plattformprogrammierung 2
P RCP An Datei speichern (Protokolldatei) Plattformprogrammierung 2
TheWhiteShadow RCP Editor Inhalt speichern Plattformprogrammierung 3
G RCP Resource in User home speichern Plattformprogrammierung 3
D Plugin - Properties ohne PropertyPage speichern Plattformprogrammierung 11
H GEF Modell/Diagramm im XML-Format speichern Plattformprogrammierung 6
musiKk RCP Eclipse: Speichern von Spaltenbreiten Plattformprogrammierung 9
T Speichern eines Objectes in einem Editor (mit isDirty) Plattformprogrammierung 6
S View speichern/laden beim schließen Plattformprogrammierung 14
S TableView einstellungen speichern Plattformprogrammierung 5
B Simple Action beim Speichern in Eclipse... Plattformprogrammierung 2
T GEF: Speichern Plattformprogrammierung 6
N Speichern von Einstellung Plattformprogrammierung 6
Spot84 speichern funktion aktivieren Plattformprogrammierung 3
K Position einer Multiple View speichern Plattformprogrammierung 6
N Eclipse RCP: Perspektiven speichern Plattformprogrammierung 6

Ähnliche Java Themen


Oben