@Override public boolean saveAll(boolean confirm) { Collection<MPart> dirtyParts = getDirtyParts(); if (dirtyParts.isEmpty()) { return true; } if (saveHandler != null) { return saveHandler.saveParts(dirtyParts, confirm); } for (MPart dirtyPart : dirtyParts) { if (!savePart(dirtyPart, false)) { return false; } } return true; }
@Override public boolean savePart(MPart part, boolean confirm) { if (!part.isDirty()) { return true; } if (saveHandler != null) { return saveHandler.save(part, confirm); } Object client = part.getObject(); try { ContextInjectionFactory.invoke(client, Persist.class, part.getContext()); } catch (InjectionException e) { log("Failed to persist contents of part", "Failed to persist contents of part ({0})", //$NON-NLS-1$ //$NON-NLS-2$ part.getElementId(), e); return false; } catch (RuntimeException e) { log("Failed to persist contents of part via DI", //$NON-NLS-1$ "Failed to persist contents of part ({0}) via DI", part.getElementId(), e); //$NON-NLS-1$ return false; } return true; }
@Override public Save promptToSave(MPart dirtyPart) { Object object = dirtyPart.getObject(); if (object instanceof CompatibilityPart) { IWorkbenchPart part = ((CompatibilityPart) object).getPart(); ISaveablePart saveable = SaveableHelper.getSaveable(part); if (saveable != null) { if (!saveable.isSaveOnCloseNeeded()) { return Save.NO; } return SaveableHelper.savePart(saveable, part, WorkbenchWindow.this, true) ? Save.NO : Save.CANCEL; } } return defaultSaveHandler.promptToSave(dirtyPart); }