2 Stimmen

Eclipse RCP: Wie kann man die Standard-SAVE-Schaltfläche in einem Editor sichtbar machen?

Ich glaube, dass es in Eclipse RCP Standardschaltflächen für SAVE und CANCEL gibt, die mit Editoren verbunden sind. Wie können wir diese Schaltflächen auf einem Editor erscheinen lassen.

Ich gehe davon aus, dass diese Schaltflächen standardmäßig unsichtbar sind, und möglicherweise gibt es eine Superklassenmethode, die überschrieben werden muss, damit die Schaltflächen SAVE CANCEL im Editor angezeigt werden. Ich kann mich erinnern, schon einmal von so etwas gehört zu haben. (Ich kann aber auch falsch liegen)

Aber wie können wir das erreichen? (PS: Ich bin nicht auf der Suche nach einer benutzerdefinierten SWT-Schaltfläche und nennen Sie es "SAVE". Ich bin auf der Suche nach einem Standard-SAVE-Taste, die mit dem Editor verbunden ist (wenn es so etwas gibt)).

3voto

VonC Punkte 1117238

Die Schaltflächen haben keinen direkten Bezug zu Ihren Redakteuren.
Sie müssen, als dort beschrieben) :

  • Menübeitrag hinzufügen, wobei commandId auf die Standard-Befehls-ID gesetzt ist, die in IWorkbenchActionDefinitionIds 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);
}
  • Dirty Flag hinzufügen in Editor Teil und Umsetzung isDirty() , setDirty() et clean() Methoden.

Update Februar 2013, von Benutzer s-d :

Hinweis: Das Hinzufügen der saveAction im ActionBarContributor ist in RCPs, die auf Indigo R2 (3.7.2) basieren, nicht mehr erforderlich.
Es genügt, die menuContribution , hinzufügen getCommandStack().markSaveLocation() zur Redaktion doSave() Methode, und überschreiben Sie commandStackChanged() wie folgt

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X