Menüpunkt aktivieren, wenn entsprechender TabFolder Reiter aktiviert wurde

haudek

Grünschnabel
Hallo zusammen,
könnte ihr mir ein Tipp geben?


ich habe ein Hautpfenster (mittels SWT) mit 2 TabFoldern und jeweils mehreren Reitern.
Ausserdem habe ich im Hauptfenster eine Menüleiste.

Jetzt habe ich folgende Probleme:
  1. ich möchte meine Menüsteuerung in eine eigene Klasse auslagern. (Menüpunkt aktiv/ nicht aktiv). Je nach aktiviertem Tabfolder-Reiter soll der entsprechende Menüpunkt im Menü aktiv sein. Hier weis ich nicht wie ich meine ausgelagerte Menüsteuerung aufrufen muss?
  2. Welcher Listener muss ich beim Aktivieren des Reiters beim Reiter verwenden. Der von mir bisher benutzte Listener reagiert nicht, wenn ich den Reiter anklicke bzw. auswähle.
    Habe ich da, irgendwo ein Denkfehler bei der Definition 'TabItem tabItem11' und 'Wettbewerber.addFocusListener....."

zum besseren Verständnis ein paar Code Schnipsel (u.a. mit dem VE erstellt):

Ich weiss nun nicht wo ich meine Fehler mache!?

Hauptfenster:
Java:
.....
MenuItem WettbewerberMenueItem = new MenuItem(BearbeitenMenue, SWT.CASCADE);
WettbewerberMenueItem.setText("Wettbewerber");
WettbewerberMenueItem.setEnabled(false);
WettbewerberMenueItem.setSelection(true);
....
........
  stamm_tabFolder = new TabFolder(RechtsComposite, SWT.NONE);
  createKdstamm();
  createWettbewerber();

  stamm_tabFolder.setLayoutData(gridData44);

  TabItem tabItem = new TabItem(stamm_tabFolder, SWT.NONE);
  tabItem.setText("Stammdaten");
  tabItem.setControl(Stammdaten);

  TabItem tabItem11 = new TabItem(stamm_tabFolder, SWT.NONE);
  tabItem11.setText("Wettbewerber");
  tabItem11.setControl(Wettbewerber);

private void createWettbewerber() {
....
   Wettbewerber = new Composite(stamm_tabFolder, SWT.NONE);  
   Wettbewerber.setSize(new Point(800, 300));
   Wettbewerber.setLayout(gridLayout11);
   Wettbewerber.addFocusListener(new org.eclipse.swt.events.FocusAdapter() {
	public void focusGained(org.eclipse.swt.events.FocusEvent e) {
		System.out.println("test ob reiter aktiviert);
                MenueSteuerung.wettbewerber(tabItem11);
 	}
});

KLasse Menüsteuerung:
Java:
public class MenueSteuerung {

   public static void wettbewerber(MenuItem WettbewerberMenue){
	
 	WettbewerberMenue.setEnabled(true);
		
   }
}
 
Zuletzt bearbeitet:
Servus zusammen
falls das Thema noch jemanden interessieren sollte.
Ich habe nun eine Lösungen gefunden:
Ein Listener beim Tabfolder und ein Listener beim Menü, und verbunden habe die Listener mit der Steuerungsvariable.
viele Grüße

Code:
..
protected int menusteuerungStammTabfolder = -1;
....
stamm_tabFolder.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
 	public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
		switch (stamm_tabFolder.getSelectionIndex()){
		case 0: 
			menusteuerungStammTabfolder = stamm_tabFolder.getSelectionIndex();
			break;
		case 1:
			menusteuerungStammTabfolder = stamm_tabFolder.getSelectionIndex();
			break;
		case 2:
			menusteuerungStammTabfolder = stamm_tabFolder.getSelectionIndex();
			break;
		case 3:
			menusteuerungStammTabfolder = stamm_tabFolder.getSelectionIndex();
			break;
		case 4:
		        menusteuerungStammTabfolder = stamm_tabFolder.getSelectionIndex();
			break;
		}

			
	}
});
......
......
BearbeitenMenue.addListener(SWT.Show, new Listener() {
     public void handleEvent(Event event) { 
	  if (menusteuerungStammTabfolder == 1){
		WettbewerberMenueItem.setEnabled(true);	
	  }
	  else{
	       WettbewerberMenueItem.setEnabled(false);		
	  }
	  if (menusteuerungStammTabfolder == 2){
	      Kundenzufriedenheit_MenueItem.setEnabled(true);
	  }
	  else{
	      Kundenzufriedenheit_MenueItem.setEnabled(false);
	  }
    }
});
 
Zurück