2009-07-20 2 views
2

Ich denke, es gibt Standard SAVE und CANCEL-Schaltflächen mit Editoren in Eclipse RCP zugeordnet. Wie machen wir diese Schaltflächen in einem Editor angezeigt?Eclipse RCP: Wie kann die Standard-SAVE-Schaltfläche in einem Editor sichtbar gemacht werden?

Ich nehme an, dass diese Schaltflächen standardmäßig nicht sichtbar sind und möglicherweise gibt es eine Superklassenmethode, die überschrieben werden muss, damit die SAVE CANCEL-Schaltflächen im Editor angezeigt werden. Ich erinnere mich, von so etwas gehört zu haben. (Ich kann aber falsch liegen)

In jedem Fall, wie erreichen wir das? (PS: Ich suche keine benutzerdefinierte SWT-Taste und nenne sie 'SAVE'. Ich suche nach einer Standard-SAVE-Taste, die dem Editor zugeordnet ist (falls es so etwas gibt)).

Antwort

3

Die Schaltflächen sind nicht direkt mit Ihren Editoren verknüpft.
Sie müssen, wie described there):

  • Menü Beitrag hinzufügen mit der commandId zum Standardbefehl id gesetzt, die in IWorkbenchActionDefinitionIds gefunden werden kann z.B. org.eclipse.ui.file.save

  • Erstellen Sie einen Befehl in ApplicationActionBarAdvisor.makeActions und registrieren Sie es.

:

protected void makeActions(final IWorkbenchWindow window) { 
    // Creates the actions and registers them. 
    // Registering is needed to ensure that key bindings work. 
    // The corresponding commands keybindings are defined in the plugin.xml 
    // file. 
    // Registering also provides automatic disposal of the actions when 
    // the window is closed. 
    saveAction = ActionFactory.SAVE.create(window); 
    register(saveAction); 
} 
  • schmutzige Flagge in Editor Teil hinzufügen und isDirty(), setDirty() und clean() Methoden implementieren.

Update Februar 2013 von user s-d:

Hinweis: Das Hinzufügen der saveAction im ActionBarContributor ist nicht mehr notwendig, in RCP basierend auf Indigo R2 (3.7.2).
Es genügt, die menuContribution, fügen an die Redaktion doSave() Methode hinzufügen und commandStackChanged() außer Kraft setzen, wie

public void commandStackChanged(EventObject event) { 
    firePropertyChange(PROP_DIRTY); 
    super.commandStackChanged(event); 
} 
+0

folgt @ s-d Sie für den vorgeschlagenen Änderung danken. – VonC