Save on close – Inhalt einer View automatisch bei beenden speichern

Ich benütze für dieses Mal eine Online-Source-Datenbank (hier kickjava.com).

Hier kann man den Sourcecode von Java-Klassen schön formatiert und meistens verlinkt betrachten.

Die Syntax ist recht einfach, so dass man schnell eigenen Anfragen über die URL starten kann:

z.B. http://kickjava.com/src/org/eclipse/ui/internal/EditorManager.java.htm

org.eclipse.ui.internal.WorkbenchPage

public void hideView(IViewReference ref) {

….

if (view instanceof ISaveablePart){
ISaveablePart saveable = (ISaveablePart)view;
if (saveable.isSaveOnCloseNeeded()) {
IWorkbenchWindow window = view.getSite().getWorkbenchWindow();
boolean success = EditorManager.saveAll(Collections.singletonList(view), true, true, false, window);
if (!success) {
// the user cancelled.
return;
}
promptedForSave = true;
}
}
}

….

nun das org.eclipse.ui.internal.EditorManager.saveAll


979 public boolean saveAll(boolean confirm, boolean closing, boolean addNonPartSources) {

980 // Get the list of dirty editors and views. If it is
981
// empty just return.
982
ISaveablePart[] parts = page.getDirtyParts();
983 if (parts.length == 0) {
984 return true;
985 }
986 // saveAll below expects a mutable list
987
List JavaDoc dirtyParts = new ArrayList JavaDoc(parts.length);
988 for (int i = 0; i < parts.length; i++) {
989 dirtyParts.add(parts[i]);
990 }
991
992 // If confirmation is required ..
993
return saveAll(dirtyParts, confirm, closing, addNonPartSources, window);
994 }
995

Also alle, die dirty sind werden abgespeichert.

Zusammenfassend:

Das Interface ISaveablePart implementieren

isSaveOnCloseNeeded implementieren

isDirty implementieren

(wenn isDirty true zurückgibt, dann erscheint ein kleines Sternchen neben der Tab-Überschrift, so wie man es von Eclipse-Editoren kennt, in denen man editiert hat)

Tags: , , ,

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Log Out / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Log Out / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Log Out / Ändern )

Verbinde mit %s


Follow

Get every new post delivered to your Inbox.