/**
*
*/
package de.hannesniederhausen.storynotes.ui.internal.handler;
import javax.inject.Inject;
import javax.inject.Named;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IPreferencesService;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.osgi.service.prefs.Preferences;
import de.hannesniederhausen.storynotes.model.File;
import de.hannesniederhausen.storynotes.model.service.IModelProviderService;
/**
* @author Hannes Niederhausen
*
*/
public class SaveAsHandler extends CommandStackHandler {
@Inject
private IModelProviderService modelProviderService;
@Inject
@Named(IServiceConstants.ACTIVE_SHELL)
private Shell shell;
@Inject
IPreferencesService preferencesService;
@Execute
public void execute() {
FileDialog dlg = new FileDialog(shell, SWT.SAVE);
dlg.setFilterExtensions(new String[] { "*.stn" });
dlg.setText("Save File...");
IEclipsePreferences root = preferencesService.getRootNode();
Preferences storynotesprefs = root.node("/storynotes");
String lastPath = storynotesprefs.get("lastpath", "./.");
dlg.setFilterPath(lastPath);
String filename = dlg.open();
if (filename != null) {
File file = modelProviderService.getFile();
file.setFilename(filename);
modelProviderService.saveFile();
if (getCommandStack()!=null)
((BasicCommandStack)getCommandStack()).saveIsDone();
storynotesprefs.put("lastpath", filename.substring(0, filename.lastIndexOf(java.io.File.separator))+"/.");
}
}
public boolean canExecute() {
File file = modelProviderService.getFile();
return file != null;
}
}