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.profile.utilityspace.LinearAdditiveUtilitySpace; import tudelft.utilities.logging.Reporter; public class LoadAction extends GuiAction { public LoadAction(Reporter log) { super("Open", log); putValue(SHORT_DESCRIPTION, "Load the profile"); putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); } @Override public void actionPerformed(ActionEvent e) { load(ProfileEditor.getInstance().getModel()); } public void load(LinearAdditiveUtilitySpaceModel model) { try { JFileChooser chooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter( "JSON file", "json"); chooser.setFileFilter(filter); int selection = chooser.showOpenDialog(null); if (selection != JFileChooser.APPROVE_OPTION) return; File file = chooser.getSelectedFile(); LinearAdditiveUtilitySpace profi = jackson.readValue(file, LinearAdditiveUtilitySpace.class); model.setCurrentValue(profi); } catch (Exception e1) { log.log(Level.WARNING, "Failed to read file " + ": " + e1.getMessage()); e1.printStackTrace(); } } }