public boolean close() throws IOException { if (isDirty()) { Object[] options = { SikuliIDEI18N._I("yes"), SikuliIDEI18N._I("no"), SikuliIDEI18N._I("cancel") }; int ans = JOptionPane.showOptionDialog( this, SikuliIDEI18N._I("msgAskSaveChanges", getCurrentShortFilename()), SikuliIDEI18N._I("dlgAskCloseTab"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (ans == JOptionPane.CANCEL_OPTION || ans == JOptionPane.CLOSED_OPTION) { return false; } else if (ans == JOptionPane.YES_OPTION) { if (saveFile() == null) { return false; } } else { SikuliIDE.getInstance().getTabPane().resetLastClosed(); } if (_srcBundleTemp) { FileManager.deleteTempDir(_srcBundlePath); } setDirty(false); } if (_srcBundlePath != null) { ImagePath.remove(_srcBundlePath); } return true; }
public String saveAsFile(boolean accessingAsFile) throws IOException { File file = new SikuliIDEFileChooser(SikuliIDE.getInstance(), accessingAsFile).save(); if (file == null) { return null; } String bundlePath = FileManager.slashify(file.getAbsolutePath(), false); if (!file.getAbsolutePath().endsWith(".sikuli")) { bundlePath += ".sikuli"; } if (FileManager.exists(bundlePath)) { int res = JOptionPane.showConfirmDialog( null, SikuliIDEI18N._I("msgFileExists", bundlePath), SikuliIDEI18N._I("dlgFileExists"), JOptionPane.YES_NO_OPTION); if (res != JOptionPane.YES_OPTION) { return null; } } else { FileManager.mkdir(bundlePath); } try { saveAsBundle(bundlePath, (SikuliIDE.getInstance().getCurrentFileTabTitle())); if (Settings.isMac()) { if (!Settings.handlesMacBundles) { makeBundle(bundlePath, accessingAsFile); } } } catch (IOException iOException) { } return getCurrentShortFilename(); }