~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/actions/file/ImportSongAction.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Created on 17-dic-2005
 
3
 *
 
4
 * TODO To change the template for this generated file go to
 
5
 * Window - Preferences - Java - Code Style - Code Templates
 
6
 */
 
7
package org.herac.tuxguitar.gui.actions.file;
 
8
 
 
9
import org.eclipse.swt.SWT;
 
10
import org.eclipse.swt.events.TypedEvent;
 
11
import org.herac.tuxguitar.gui.TuxGuitar;
 
12
import org.herac.tuxguitar.gui.actions.Action;
 
13
import org.herac.tuxguitar.gui.actions.ActionLock;
 
14
import org.herac.tuxguitar.gui.helper.SyncThread;
 
15
import org.herac.tuxguitar.gui.util.ConfirmDialog;
 
16
import org.herac.tuxguitar.gui.util.FileChooser;
 
17
import org.herac.tuxguitar.io.base.TGSongImporter;
 
18
 
 
19
/**
 
20
 * @author julian
 
21
 * 
 
22
 * TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
 
23
 */
 
24
public class ImportSongAction extends Action {
 
25
        public static final String NAME = "action.file.import";
 
26
        
 
27
        public ImportSongAction() {
 
28
                super(NAME, AUTO_LOCK | AUTO_UPDATE);
 
29
        }
 
30
        
 
31
        protected int execute(final TypedEvent event){
 
32
                TuxGuitar.instance().getPlayer().reset();
 
33
                
 
34
                if(TuxGuitar.instance().getFileHistory().isUnsavedFile()){
 
35
                        ConfirmDialog confirm = new ConfirmDialog(TuxGuitar.getProperty("file.save-changes-question"));
 
36
                        confirm.setDefaultStatus( ConfirmDialog.STATUS_CANCEL );
 
37
                        int status = confirm.confirm(ConfirmDialog.BUTTON_YES | ConfirmDialog.BUTTON_NO | ConfirmDialog.BUTTON_CANCEL, ConfirmDialog.BUTTON_YES);
 
38
                        if(status == ConfirmDialog.STATUS_CANCEL){
 
39
                                return AUTO_UNLOCK;
 
40
                        }
 
41
                        if(status == ConfirmDialog.STATUS_YES){
 
42
                                final String fileName = FileActionUtils.getFileName();
 
43
                                if(fileName == null){
 
44
                                        return AUTO_UNLOCK;
 
45
                                }
 
46
                                TuxGuitar.instance().loadCursor(SWT.CURSOR_WAIT);
 
47
                                new Thread(new Runnable() {
 
48
                                        public void run() {
 
49
                                                if(!TuxGuitar.isDisposed()){
 
50
                                                        FileActionUtils.save(fileName);
 
51
                                                        new SyncThread(new Runnable() {
 
52
                                                                public void run() {
 
53
                                                                        if(!TuxGuitar.isDisposed()){
 
54
                                                                                TuxGuitar.instance().loadCursor(SWT.CURSOR_ARROW);
 
55
                                                                                importFile(event.widget.getData());
 
56
                                                                        }
 
57
                                                                }
 
58
                                                        }).start();
 
59
                                                }
 
60
                                        }
 
61
                                }).start();
 
62
                                return 0;
 
63
                        }
 
64
                }
 
65
                importFile(event.widget.getData());
 
66
                
 
67
                return 0;
 
68
        }
 
69
        
 
70
        protected void importFile(Object data){
 
71
                final TGSongImporter importer = (TGSongImporter)data;
 
72
                final String path = FileChooser.instance().open(TuxGuitar.instance().getShell(),importer.getFileFormat());
 
73
                if(path == null || !importer.configure(false)){
 
74
                        ActionLock.unlock();
 
75
                        return;
 
76
                }
 
77
                
 
78
                TuxGuitar.instance().loadCursor(SWT.CURSOR_WAIT);
 
79
                new Thread(new Runnable() {
 
80
                        public void run() {
 
81
                                if(!TuxGuitar.isDisposed()){
 
82
                                        FileActionUtils.importSong(importer, path);
 
83
                                        TuxGuitar.instance().loadCursor(SWT.CURSOR_ARROW);
 
84
                                        ActionLock.unlock();
 
85
                                }
 
86
                        }
 
87
                }).start();
 
88
        }
 
89
}