# Menüeintrag nur bei einen bestimmten TableViewer



## SegFault (23. Dez 2009)

Ich versuch mich gerade bei den Commands ein zu arbeiten. 
Ich habe einen JFrame (bzw JDialog) dem ich eine TableViewer im Constructor übergeben, dann wird dieser Dialog dynamisch aufgebaut mit allen Spalten aus dem TableViewer. Der Dialog ist dazu da, Spalten deren breite auf 0 ist wieder sichtbar zu machen (Bzw Unsichtbar wenn die Spaltenbreite > 0). Nun muss ich ja irgendwie diesen Dialog per Command aufrufen. Habe auch schon ein Command gebaut was einen parameter hat und diesen Dialog aufruft. 
Nun die fragen
1.) Wie mache ich ein normales Menü was den Command nur dann Aktiviert wenn ein ViewPart mit TableViewer aktiv ist.
2.) Wie kann ich ein popupmenü mit den Command basteln nur für eine spezielle von TableViewer abgeleitete Klasse.


----------



## SegFault (31. Dez 2009)

das Problem besteht auch noch. Ich weiss immer noch nicht wie ich das sinnvoll löse. Zum Aufrufen des besagten Dialoges benötige ich eine Referenz auf den Viewer dessen Spalten ein-/ausgeblendet werden sollen. Aber wie komme ich an diesen während der ausführung des Commands ran? Kann ich z.B. irgendwie während der Programmausführung einen Command Parameter setzen? Kann ich irgendwie eine Expression definieren welche nur zutreffen wenn  bestimmte Views gerade aktiv sind und im Commandhandler einen Zeiger auf diese View bekommen? Sowas würde mir schon weiterhelfen.


----------



## Gast2 (31. Dez 2009)

SegFault hat gesagt.:


> das Problem besteht auch noch. Ich weiss immer noch nicht wie ich das sinnvoll löse. Zum Aufrufen des besagten Dialoges benötige ich eine Referenz auf den Viewer dessen Spalten ein-/ausgeblendet werden sollen. Aber wie komme ich an diesen während der ausführung des Commands ran? Kann ich z.B. irgendwie während der Programmausführung einen Command Parameter setzen? Kann ich irgendwie eine Expression definieren welche nur zutreffen wenn  bestimmte Views gerade aktiv sind und im Commandhandler einen Zeiger auf diese View bekommen? Sowas würde mir schon weiterhelfen.



Nr.1 kannst du mit einem PropertyTester machen...


----------



## SegFault (1. Jan 2010)

ich habs über eine expression gemacht mit der ich den activePart auf instanceof prüfe. und dann hole ich mir im handler so den activepart:


```
@Override
	public Object execute(ExecutionEvent event) throws ExecutionException 
	{
		IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
		IWorkbenchPage page = window.getActivePage();
		final IWorkbenchPart iwp = page.getActivePart();
        final UpdateableColumnTableView tv = (UpdateableColumnTableView)iwp;
		if (tv != null)
		{
			new HiddenColumnsDialog(iwp.getSite().getShell(),tv.getTableView());
		}
		return null;
	}
```

Das Cast klappt auf alle fälle da ja im expression geprüft wird ob der Typ stimmt. Damit klappts wunderbar. Trotz allem vielen Dank für die Hilfe.


----------

