package rtt.ui.handlers.config; import java.util.List; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; import org.eclipse.jface.dialogs.Dialog; import rtt.core.archive.configuration.Configuration; import rtt.ui.content.ReloadInfo; import rtt.ui.content.ReloadInfo.Content; import rtt.ui.content.configuration.ConfigurationContent; import rtt.ui.content.main.ProjectContent; import rtt.ui.dialogs.ConfigurationDialog; import rtt.ui.handlers.AbstractSelectionHandler; import rtt.ui.model.RttProject; /** * This handler is used to edit an existing {@link Configuration}. * @author Christian Oelsner <C.Oelsner@gmail.com> * */ public class ConfigEditHandler extends AbstractSelectionHandler implements IHandler { @Override public Object doExecute(ExecutionEvent event) throws ExecutionException { ProjectContent projectContent = this.getProjectContent(event); ConfigurationContent configContent = getSelectedObject( ConfigurationContent.class, event); RttProject project = projectContent.getProject(); ConfigurationDialog configDialog = new ConfigurationDialog( getParentShell(event), project, configContent.getConfiguration()); configDialog.setTitle("Modify Configuration ..."); configDialog.setMessage("Modify an existing Configuration."); configDialog.setNameEditable(false); configDialog.setDefault(configContent.isDefault()); if (configDialog.open() == Dialog.OK) { try { String configName = configDialog.getConfigName(); String parserClass = configDialog.getInitNodeName(); List<String> cpEntries = configDialog.getClasspathEntries(); project.setConfiguration(configName, parserClass, cpEntries, configDialog.isDefault()); projectContent.reload(new ReloadInfo(Content.CONFIGURATION)); } catch (Exception exception) { throw new ExecutionException("Could not modify configuration.", exception); } } return null; } }