/** * */ package org.goko.common.handlers; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.inject.Named; import org.apache.commons.lang3.StringUtils; import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.goko.core.common.exception.GkException; import org.goko.core.common.exception.GkTechnicalException; import org.goko.core.controller.IControllerConfigurationFileExporter; import org.goko.core.log.GkLog; /** * Handler to export controller configuration * * @author PsyKo */ public class ControllerConfigurationFileExporterHandler { private static final GkLog LOG = GkLog.getLogger(ControllerConfigurationFileExporterHandler.class); @Execute public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell, IControllerConfigurationFileExporter exporter) throws GkException { FileDialog dialog = new FileDialog(shell); dialog.setText("Open configuration file..."); dialog.setFilterExtensions(new String[]{"*."+exporter.getFileExtension()}); String filepath = dialog.open(); if(StringUtils.isBlank(filepath)){ return; } if(StringUtils.startsWith(exporter.getFileExtension(), ".")){ filepath += exporter.getFileExtension(); }else{ filepath += "."+exporter.getFileExtension(); } try { File file = new File(filepath); if(!file.exists()){ file.createNewFile(); } exporter.exportTo(new FileOutputStream(file)); MessageDialog.openInformation(shell, "Success", "Configuration successfully exported."); } catch (IOException e) { LOG.error(e); throw new GkTechnicalException(e); } } @CanExecute public boolean canExecute(IControllerConfigurationFileExporter exporter) throws GkException{ return exporter.canExport(); } }