package geniusweb.actions; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.File; import java.util.logging.Level; import javax.swing.JFileChooser; import javax.swing.KeyStroke; import javax.swing.filechooser.FileNameExtensionFilter; import geniusweb.domaineditor.ProfileEditor; import geniusweb.domaineditor.model.profile.LinearAdditiveUtilitySpaceModel; import geniusweb.issuevalue.Domain; import tudelft.utilities.logging.Reporter; public class SaveDomainAction extends GuiAction { public SaveDomainAction(Reporter log) { super("Save Domain", log); putValue(SHORT_DESCRIPTION, "Save the domain only"); putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK + ActionEvent.SHIFT_MASK)); } @Override public void actionPerformed(ActionEvent e) { save(ProfileEditor.getInstance().getModel()); } /** * Save a model. * * @param model the {@link LinearAdditiveUtilitySpaceModel} to be saved */ protected void save(LinearAdditiveUtilitySpaceModel model) { try { Domain domain = model.getCurrentValue().getDomain(); JFileChooser chooser = new JFileChooser(); chooser.setSelectedFile(new File(domain.getName() + ".json")); FileNameExtensionFilter filter = new FileNameExtensionFilter( "JSON file", "json"); chooser.setFileFilter(filter); int selection = chooser.showSaveDialog(null); if (selection != JFileChooser.APPROVE_OPTION) return; File file = chooser.getSelectedFile(); jackson.writeValue(file, domain); } catch (Exception e) { log.log(Level.WARNING, "Failed to save:" + e.getMessage()); e.printStackTrace(); } } }