package jada.ngeditor; import com.google.common.annotations.Beta; import jada.ngeditor.controller.CommandProcessor; import jada.ngeditor.model.GUI; import jada.ngeditor.model.GuiEditorModel; import jada.ngeditor.model.elements.specials.GUseControls; import jada.ngeditor.model.elements.specials.GUseStyle; import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; import java.util.Observable; import java.util.Observer; import javax.swing.AbstractAction; import javax.swing.JFileChooser; import javax.swing.JOptionPane; @Beta public class AddControlsAction extends AbstractAction implements Observer { private transient GUI gui; public AddControlsAction() { super(); CommandProcessor.getInstance().getObservable().addObserver(AddControlsAction.this); } @Override public void actionPerformed(final ActionEvent e) { final JFileChooser chooser = new JFileChooser(gui.getAssetFolder()); final int result = chooser.showOpenDialog(null); if (result == JFileChooser.APPROVE_OPTION) { GUseControls controls = new GUseControls(); controls.setFilename(this.createReletive(chooser.getSelectedFile())); gui.addLoadUseControls(controls); } } @Override public void update(Observable o, Object arg) { if(o instanceof GuiEditorModel){ GuiEditorModel meditor = (GuiEditorModel) o; gui = meditor.getCurrent(); } } private String createReletive(File selected) { File assets = gui.getAssetFolder(); String res = ""; String parentPath = selected.getParent(); String absAssets = assets.getAbsolutePath(); if (!parentPath.contains(absAssets)) { try { absAssets = assets.getCanonicalPath(); if (!parentPath.contains(absAssets)) { JOptionPane.showMessageDialog(null, "Sorry you can't relativize this file. Tip : the file must be inside the assets folder"); } else { res = assets.toURI().relativize(selected.toURI()).getPath(); } } catch (IOException ex) { JOptionPane.showMessageDialog(null, "Sorry you can't relativize this file"); } } else { res = assets.toURI().relativize(selected.toURI()).getPath(); } return res; } }