Toolbar Button gegenseitig verriegeln

Status
Nicht offen für weitere Antworten.

Nud3l

Gesperrter Benutzer
Hallo


ich mochte in der Toolbar einen Start und Stop Button einbauen. Nur soll eben der Startbutton nur gedrückt werden wenn das ding noch nicht läuft und umgekehrt der Stopbutton.

Ich habe versucht mit

Java:
selectionChanged(IAction action, ISelection selection)

zuarbeiten aber irgendwie bekomme ich nur Fenster wechsel mit, aber nicht mit wenn ich was in der Toolbar drücke.

Mein nächster Ansatz war dann mit meine observer zuarbeiten den ich wieso brauch um mein ding zu starten nur komme ich nicht an die Action rann.

Zum Schluss habe ich es mit Commands probiert aber ich habe irgendwie voll die Probleme damit bekommen


Java:
public class StopCommand extends AbstractHandler {

  public Object execute(ExecutionEvent event) throws ExecutionException {
    System.out.println("StopCommand -- execute");
    this.setEnabled(true);
    return null;
  }
}[

[XML]
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="sbh.ocit.mockups.commands.StopCommand"
id="myOcitSimulation.Stoppcommand"
name="Stopp ">
</command>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="toolbar:eek:rg.eclipse.ui.main.toolbar">
<toolbar
id="myOcitSimulation.toolbar">
<command
commandId="myOcitSimulation.Stoppcommand"
disabledIcon="icons/bundles/114/1/.cp/icons/full/etool16/new_testcase.gif"
icon="icons/eclipse/org.eclipse.ant.ui/icons/full/dlcl16/refresh.gif"
label="Stopp"
style="push">
</command>
</toolbar>
</menuContribution>
</extension>
[/XML]

Irgendwie bekomme ich keine Reaktion wenn ich auf dem Button in der Toolbar drücke.

Bei CommandID kann ich mit Browse meinen Command finden und auswählen aber es läuft trotzdem nicht..

Ich weiß so langsam nicht mehr weiter...
 
G

Gonzo17

Gast
Was ist denn "das Ding"? Gibts irgendnen Status, an dem man erkennen kann, ob es läuft oder nicht? Weil wenn ja, dann könntest du nen Listener auf "das Ding" setzen und je nach Status die Buttons aktivieren/deaktivieren.
 

Nud3l

Gesperrter Benutzer
Ja, daran habe ich auch schon gedacht. Nur weiß ich nicht wie ich auf die Button zu greife ist ja ähnlich mit den Ansatz der observer.

In der Action Klasse komme ich nie an den Button ran nur in der Methode
Java:
public void run(IAction action) {
in der Übergebenen IAction schaffe ich es den Button Status zu ändern.
 

Nud3l

Gesperrter Benutzer
Ok das Ding ist eine Simulation ich habe eine boolean Variable isrunning auf der ich eigentlich von überall zu greifen kann.

Das Problem ist ja nicht das ich nicht mit bekomme ob die Simulation läuft oder nicht nur das die tollbar Buttons für mich nicht erreichbar sind.

Hier mein rum probier Klasse

Java:
public class StopSimulatonActionDelegate extends AbstractHandler implements 
                                        IWorkbenchWindowActionDelegate,
                                        Observer  {

  private IWorkbenchWindow window;


  public void dispose() {
  }

  public void init(IWorkbenchWindow window) {
    this.window = window;
    OcitsimulationSingleton.getInstance().addObserver(this);
//    this.setEnabled(false);
//    this.setBaseEnabled(false);
  }

  public void run(IAction action) {


    if (OcitsimulationSingleton.getInstance().isSimulationRunning()) {

      try {
        OcitServerStart.stop();
        OcitsimulationSingleton.getInstance().stopTimer();
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      MessageDialog.openInformation(window.getShell(), "Simulation ", "Simulation wurde gestoppt");
    }
    

  }

  public void update(Observable o, Object arg) {
   
    System.out.println("StopSimulatonActionDelegate -- update"); 
    
    if(OcitsimulationSingleton.getInstance().isSimulationRunning()){
      this.setEnabled(true);
    }else{
    this.setEnabled(false);
  }}

  public Object execute(ExecutionEvent event) throws ExecutionException {
    System.out.println("StopSimulatonActionDelegate -- execute"); 
    return null;
  }

  public void selectionChanged(IAction action, ISelection selection) {
    // TODO Auto-generated method stub
    
  }

}

this.setEnabled(true); klappt nicht
mit action.setEnabled(false); in der run Methode schon.

Vielleicht kann man über this.window.getWorkbench(). irgendwie an den Toolbar Butten kommen aber ich weiß nicht wie..
 
G

Gonzo17

Gast
Java:
public void selectionChanged(IAction action, ISelection selection) {
// ...	
}

Probier doch mal ob du mit dieser Methode weiterkommst.
Ich weiß nicht genau auf welche Selektierungen der reagiert, aber wenn der auf alle möglichen Klicks achtet, dann ja wohl auch, sobald du per Klick deine Simulation ausführst. Probier damit mal rum. Kannst ja auch beim Debuggen mal schaun, welche Werte "selection" und "action" haben.
 

Nud3l

Gesperrter Benutzer
Ok das Ding ist eine Simulation ich habe eine boolean Variable isrunning auf der ich eigentlich von überall zu greifen kann.

Das Problem ist ja nicht das ich nicht mit bekomme ob die Simulation läuft oder nicht nur das die tollbar Buttons für mich nicht erreichbar sind.

Hier mein rum probier Klasse

Java:
public class StopSimulatonActionDelegate extends AbstractHandler implements 
                                        IWorkbenchWindowActionDelegate,
                                        Observer  {

  private IWorkbenchWindow window;


  public void dispose() {
  }

  public void init(IWorkbenchWindow window) {
    this.window = window;
    OcitsimulationSingleton.getInstance().addObserver(this);
//    this.setEnabled(false);
//    this.setBaseEnabled(false);
  }

  public void run(IAction action) {


    if (OcitsimulationSingleton.getInstance().isSimulationRunning()) {

      try {
        OcitServerStart.stop();
        OcitsimulationSingleton.getInstance().stopTimer();
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      MessageDialog.openInformation(window.getShell(), "Simulation ", "Simulation wurde gestoppt");
    }
    

  }

  public void update(Observable o, Object arg) {
   
    System.out.println("StopSimulatonActionDelegate -- update"); 
    
    if(OcitsimulationSingleton.getInstance().isSimulationRunning()){
      this.setEnabled(true);
    }else{
    this.setEnabled(false);
  }}

  public Object execute(ExecutionEvent event) throws ExecutionException {
    System.out.println("StopSimulatonActionDelegate -- execute"); 
    return null;
  }

  public void selectionChanged(IAction action, ISelection selection) {
    // TODO Auto-generated method stub
    
  }

}

this.setEnabled(true); klappt nicht
mit action.setEnabled(false); in der run Methode schon.

Vielleicht kann man über this.window.getWorkbench(). irgendwie an den Toolbar Butten kommen aber ich weiß nicht wie..
 

Nud3l

Gesperrter Benutzer
Ich habe es jetzt ganz anders gelöst habe jetzt nur einen button bei dem ich immer alles ändere also vom start zum stop butten und zurück
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Probleme mit Toolbar Konfiguartion in e4 Anwendung. Plattformprogrammierung 0
TheWhiteShadow RCP Zustand von Editor Toolbar ToggleButton aktualisieren Plattformprogrammierung 0
dzim RCP Sichtbarkeit von Toolbar-Elementen Plattformprogrammierung 19
dzim RCP Aktivieren/Deaktivieren von Toolbar-Items Plattformprogrammierung 12
H Toolbar durch Perspektivenwechseln ändern ? Plattformprogrammierung 2
M Eclipse RCP: überflüssige Icons in einer Toolbar Plattformprogrammierung 6
M Command in Toolbar aktiv wenn View nicht aktiv Plattformprogrammierung 2
K TextFeld in einer ToolBar Plattformprogrammierung 2
Saxony Zugriff auf Commands in Toolbar Plattformprogrammierung 9
G Toolbar + combobox Plattformprogrammierung 4
G eclipse rcp, pulldown menü, toolbar Plattformprogrammierung 3
T OSGi e4 Apllication x-Close button shown dialogMessage Plattformprogrammierung 0
A Eclipse undo/redo button reagiert nicht auf Änderungen in der OperationHistory Plattformprogrammierung 5
S RCP Menu Contribution - Menü Button wird als inaktiv angezeigt Plattformprogrammierung 11
S Plugin: View beim Button-Klick austauschen Plattformprogrammierung 7
P Fenster größe durch einen Button während des Programm läuft verändern Plattformprogrammierung 7
P Per Button einen RMI Server starten bzw. beenden Plattformprogrammierung 9

Ähnliche Java Themen


Oben