Viewübergreifen Aktionen (ViewListener)

gmaringer

Mitglied
Hallo!
Hab wieder mal eine Frage! wie kann ich viewübergreifend aktionen durchführen! hab in einem View1 eine Tabelle! wenn ich eine Zeile in der Tabelle auswähle soll in dem anderen View2 details zu dem Tabelleneintrag angezeigt werden!

d.h. wenn ich eine andere Zeile auswähle soll sie View2 ändern und die Details des Eintrags anzeigen!

2. wie kann ich 2 views gleichzeitig öffnen und schließen?
d.h. wenn ich View1 öffne soll View2 auch geöffnet werden
d.h. wenn ich view1 schließe soll auch View2 geschlossen werden

es soll aber nicht view1 beinflusst werden wenn ich view2 schließe!

Danke für jede Antwort!
mgerhard
 
Hallo,

also um einen View zu öffnen brauchst Du diese Funktion:
Code:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("DeinView.view");

Um den zweiten View zu aktualisieren, also Deine Werte anzuzeigen, die selektiert wurden, kannst Du Dir in View 2 Setter-Methoden schreiben, in die Du die Werte übergibst, die angezeigt werden sollen und direkt in die Textfelder, Tabellen oder ähnliches schreiben. Jetzt fragst Du nur noch in View 1 ab, was selektiert wurde, öffnest View 2 und zeigst die Werte an.

gruß klaus.
 
Hallo Kladi!
Um den zweiten View zu aktualisieren, also Deine Werte anzuzeigen, die selektiert wurden, kannst Du Dir in View 2 Setter-Methoden schreiben, in die Du die Werte übergibst, die angezeigt werden sollen und direkt in die Textfelder, Tabellen oder ähnliches schreiben.

Wie meinst du settermethoden kann ich die in Eclipse für einen View schreiben oder in der Klasse wo mein View erstellt wird(viel. hast du ein kleines Bsp.)

Jetzt fragst Du nur noch in View 1 ab, was selektiert wurde, öffnest View 2 und zeigst die Werte an.

Funkt. das dann nur wenn ich den View öffne oder auch während der Aktion d.h. wenn ich in View1 etwas anderes selektiere das sich View 2 dann aktualisiert?
 
Hallo,

falls du deine Tabelle Zeilenweise markierst, könntest du über einen MouseListener abfragen welche Zeile du angeklickt hast, könntest dir von dann aus dieser Zeile die Daten holen und eine Methode aus dem zweiten Dialog aufrufen, bei der du die deine Daten übergibst.

Ich hoffe das war soweit verständlich.

MFG

zEriX
 
Hallo gmaringer,

wir haben uns die Views durch Eclipse erstellen lassen und dann einfach die Setter-Methoden hinzugefügt. Das ganze sieht ungefähr so aus:
Code:
public class DeinView extends ViewPart {

	public static final String ID	= "DeinView.view";
	private static Text txt_meinText;
	
	public DeinView() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void createPartControl(Composite parent) {

		Composite banner = new Composite(parent, SWT.NONE);
		banner.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false));
		GridLayout layout = new GridLayout();
		layout.marginHeight = 5;
		layout.marginWidth = 10;
		layout.numColumns = 2;
		banner.setLayout(layout);
		
		txt_meinText = new Text(banner, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.WRAP);
		txt_meinText.setBounds(10, 10, 100, 50);
		

	}

	@Override
	public void setFocus() {
		// TODO Auto-generated method stub

	}
	
	public static void setMeinText(String paText) {
		txt_meinText.setText(paText);
	}

}

gruß klaus.
 
Danke!
Das ist schon das was ich suche!
Jetzt will ich nur noch wissen wie du in einem anderen View die Methode
Code:
               public static void setMeinText(String paText) {
		txt_meinText.setText(paText);
	}
aufrufst!
 
Hi gmaringer,

das ist ganz einfach.

Wir haben unsere Views in einem package abgelegt, dieses heißt: de.firma.programmname.views
Um jetzt die Methode setMeinText des Views DeinView aufzurufen, machst Du
Code:
de.firma.programmname.views.DeinView.setMeinText("Ausgewählter Text");

gruß klaus.
 
Hallo gmaringer,

so ging es uns auch, als wir auf das Problem stießen, aber die Lösung ist, wie Du ja selbst siehst sehr simpel.

gruß klaus.
 
Zurück