package org.herac.tuxguitar.carbon.opendoc; import org.eclipse.swt.SWT; import org.herac.tuxguitar.gui.TuxGuitar; import org.herac.tuxguitar.gui.actions.ActionLock; import org.herac.tuxguitar.gui.actions.file.FileActionUtils; import org.herac.tuxguitar.gui.helper.SyncThread; import org.herac.tuxguitar.gui.util.ConfirmDialog; public class OpenDocAction { public static void saveAndOpen(final String file){ ActionLock.lock(); TuxGuitar.instance().getPlayer().reset(); if(TuxGuitar.instance().getFileHistory().isUnsavedFile()){ ConfirmDialog confirm = new ConfirmDialog(TuxGuitar.getProperty("file.save-changes-question")); confirm.setDefaultStatus( ConfirmDialog.STATUS_CANCEL ); int status = confirm.confirm(ConfirmDialog.BUTTON_YES | ConfirmDialog.BUTTON_NO | ConfirmDialog.BUTTON_CANCEL, ConfirmDialog.BUTTON_YES); if(status == ConfirmDialog.STATUS_CANCEL){ ActionLock.unlock(); return; } if(status == ConfirmDialog.STATUS_YES){ final String fileName = FileActionUtils.getFileName(); if(fileName == null){ ActionLock.unlock(); return; } TuxGuitar.instance().loadCursor(SWT.CURSOR_WAIT); new Thread(new Runnable() { public void run() { if(!TuxGuitar.isDisposed()){ FileActionUtils.save(fileName); new SyncThread(new Runnable() { public void run() { if(!TuxGuitar.isDisposed()){ TuxGuitar.instance().loadCursor(SWT.CURSOR_ARROW); openFile( file ); } } }).start(); } } }).start(); return; } } openFile(file ); } protected static void openFile(final String url){ if(url == null){ ActionLock.unlock(); return; } TuxGuitar.instance().loadCursor(SWT.CURSOR_WAIT); new Thread(new Runnable() { public void run() { if(!TuxGuitar.isDisposed()){ FileActionUtils.open(url); TuxGuitar.instance().loadCursor(SWT.CURSOR_ARROW); ActionLock.unlock(); } } }).start(); } }