diff options
2 files changed, 18 insertions, 1 deletions
diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/CustomPersistencyBehavior.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/CustomPersistencyBehavior.java index c9dae7be0..0ab11f26f 100644 --- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/CustomPersistencyBehavior.java +++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/CustomPersistencyBehavior.java @@ -77,6 +77,12 @@ public class CustomPersistencyBehavior extends DefaultPersistencyBehavior { } } + @Override + protected boolean shouldSave(Resource resource) { + // assume all resources we want to save have tracking modification enabled, see ModificationTrackingEnabler + return resource.isTrackingModification() && super.shouldSave(resource); + } + protected boolean validateResourcesBeforeSave(final IProgressMonitor monitor){ final RunnableWithResult<Boolean> runnable = new RunnableWithResult.Impl<Boolean>() { diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/ModificationTrackingEnabler.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/ModificationTrackingEnabler.java index f738ef7c2..35cd4fe21 100644 --- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/ModificationTrackingEnabler.java +++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/ModificationTrackingEnabler.java @@ -10,12 +10,16 @@ package org.eclipse.etrice.ui.common.base.editor; +import java.util.Set; + import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.transaction.ResourceSetChangeEvent; import org.eclipse.emf.transaction.ResourceSetListenerImpl; import org.eclipse.emf.transaction.TransactionalEditingDomain; +import com.google.common.collect.Sets; + /** * description * @@ -24,6 +28,8 @@ import org.eclipse.emf.transaction.TransactionalEditingDomain; */ public class ModificationTrackingEnabler extends ResourceSetListenerImpl { + private final Set<String> fileExtensions = Sets.newHashSet("structure", "behavior", "room"); + /* (non-Javadoc) * @see org.eclipse.emf.transaction.ResourceSetListenerImpl#setTarget(org.eclipse.emf.transaction.TransactionalEditingDomain) */ @@ -47,8 +53,13 @@ public class ModificationTrackingEnabler extends ResourceSetListenerImpl { protected void setTrackingModification() { ResourceSet rs = getTarget().getResourceSet(); for (Resource r : rs.getResources()) { - if (!r.isTrackingModification()) + if (shouldTrack(r) && !r.isTrackingModification()) r.setTrackingModification(true); } } + + protected boolean shouldTrack(Resource resource) { + String fileExt = resource.getURI().fileExtension(); + return fileExtensions.contains(fileExt.toLowerCase()); + } } |