blob: 60526fbf277ef8208b3d575be60fdf7334ae6a7c [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2008-2010 See4sys and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* See4sys - Initial API and implementation
* Elektrobit - [572592] Prompt for model saving on project close
*
* </copyright>
*/
package org.eclipse.sphinx.emf.workspace.ui.saving;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.sphinx.emf.model.IModelDescriptor;
import org.eclipse.sphinx.emf.workspace.saving.ModelSaveManager;
import org.eclipse.ui.Saveable;
/**
* Basic implementation of saveable for model.
*/
public class BasicModelSaveable extends Saveable implements IBasicModelSaveable {
protected static final String SAVEABLE_LABEL_PREFIX = "saveableFor"; //$NON-NLS-1$
/**
* The identifier of the model this saveable is associated to.
*/
private IModelDescriptor modelDescriptor;
/**
* Constructor.
*
* @param modelDescriptor
* The descriptor of the model to use in order to correctly associate this saveable to a specific model
* (cannot be null).
*/
public BasicModelSaveable(IModelDescriptor modelDescriptor) {
Assert.isNotNull(modelDescriptor);
this.modelDescriptor = modelDescriptor;
}
/**
* @return The descriptor of the model this saveable is associated to.
*/
@Override
public final IModelDescriptor getModelDescriptor() {
return modelDescriptor;
}
/*
* @see org.eclipse.ui.Saveable#isDirty()
*/
@Override
public boolean isDirty() {
return ModelSaveManager.INSTANCE.isDirty(modelDescriptor);
}
/*
* @see org.eclipse.ui.Saveable#doSave(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public void doSave(final IProgressMonitor monitor) throws CoreException {
ModelSaveManager.INSTANCE.saveModel(modelDescriptor, false, monitor);
}
/*
* @see org.eclipse.ui.Saveable#getName()
*/
@Override
public String getName() {
StringBuilder resourcesNames = new StringBuilder();
resourcesNames.append(modelDescriptor.getRoot().getName());
for (IResource resource : modelDescriptor.getReferencedRoots()) {
resourcesNames.append(" + "); //$NON-NLS-1$
resourcesNames.append(resource.getName());
}
return resourcesNames.toString();
}
/*
* @see org.eclipse.ui.Saveable#getImageDescriptor()
*/
@Override
public ImageDescriptor getImageDescriptor() {
return null;
}
/*
* @see org.eclipse.ui.Saveable#getToolTipText()
*/
@Override
public String getToolTipText() {
return modelDescriptor.getMetaModelDescriptor().getName();
}
/*
* @see org.eclipse.ui.Saveable#equals(java.lang.Object)
*/
@Override
public boolean equals(Object object) {
if (object instanceof BasicModelSaveable) {
return modelDescriptor.equals(((BasicModelSaveable) object).modelDescriptor);
}
return false;
}
/*
* @see org.eclipse.ui.Saveable#hashCode()
*/
@Override
public int hashCode() {
return modelDescriptor.hashCode();
}
@Override
public String toString() {
return SAVEABLE_LABEL_PREFIX + "_" + modelDescriptor.toString(); //$NON-NLS-1$
}
}