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

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/gui/actions/system/DisposeAction.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.system;
 
8
 
 
9
import org.eclipse.swt.SWT;
 
10
import org.eclipse.swt.events.ShellEvent;
 
11
import org.eclipse.swt.events.TypedEvent;
 
12
import org.herac.tuxguitar.gui.TuxGuitar;
 
13
import org.herac.tuxguitar.gui.actions.Action;
 
14
import org.herac.tuxguitar.gui.actions.file.FileActionUtils;
 
15
import org.herac.tuxguitar.gui.helper.SyncThread;
 
16
import org.herac.tuxguitar.gui.marker.MarkerList;
 
17
import org.herac.tuxguitar.gui.system.config.TGConfigKeys;
 
18
import org.herac.tuxguitar.gui.system.config.TGConfigManager;
 
19
import org.herac.tuxguitar.gui.table.TGTableViewer;
 
20
import org.herac.tuxguitar.gui.util.ConfirmDialog;
 
21
 
 
22
/**
 
23
 * @author julian
 
24
 * 
 
25
 * TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
 
26
 */
 
27
public class DisposeAction extends Action {
 
28
        public static final String NAME = "action.system.dispose";
 
29
        
 
30
        public DisposeAction() {
 
31
                super(NAME, AUTO_LOCK);
 
32
        }
 
33
        
 
34
        protected int execute(TypedEvent e){
 
35
                if(e instanceof ShellEvent){
 
36
                        TuxGuitar.instance().getPlayer().reset();
 
37
                        
 
38
                        if(TuxGuitar.instance().getFileHistory().isUnsavedFile()){
 
39
                                ConfirmDialog confirm = new ConfirmDialog(TuxGuitar.getProperty("file.save-changes-question"));
 
40
                                confirm.setDefaultStatus( ConfirmDialog.STATUS_CANCEL );
 
41
                                int status = confirm.confirm(ConfirmDialog.BUTTON_YES | ConfirmDialog.BUTTON_NO | ConfirmDialog.BUTTON_CANCEL, ConfirmDialog.BUTTON_YES);
 
42
                                if(status == ConfirmDialog.STATUS_CANCEL){
 
43
                                        return AUTO_UNLOCK;
 
44
                                }
 
45
                                if(status == ConfirmDialog.STATUS_YES){
 
46
                                        final String fileName = FileActionUtils.getFileName();
 
47
                                        if(fileName == null){
 
48
                                                return AUTO_UNLOCK;
 
49
                                        }
 
50
                                        TuxGuitar.instance().loadCursor(SWT.CURSOR_WAIT);
 
51
                                        new Thread(new Runnable() {
 
52
                                                public void run() {
 
53
                                                        if(!TuxGuitar.isDisposed()){
 
54
                                                                FileActionUtils.save(fileName);
 
55
                                                                TuxGuitar.instance().loadCursor(SWT.CURSOR_ARROW);
 
56
                                                                
 
57
                                                                exit();
 
58
                                                        }
 
59
                                                }
 
60
                                        }).start();
 
61
                                        return 0;
 
62
                                }
 
63
                        }
 
64
                        exit();
 
65
                }
 
66
                return 0;
 
67
        }
 
68
        
 
69
        protected void exit(){
 
70
                new SyncThread(new Runnable() {
 
71
                        public void run() {
 
72
                                TuxGuitar.instance().lock();
 
73
                                closeModules();
 
74
                                saveConfig();
 
75
                                dispose();
 
76
                                TuxGuitar.instance().unlock();
 
77
                        }
 
78
                }).start();
 
79
        }
 
80
        
 
81
        protected void saveConfig(){
 
82
                TGConfigManager config = TuxGuitar.instance().getConfig();
 
83
                
 
84
                config.setProperty(TGConfigKeys.LAYOUT_MODE,getEditor().getTablature().getViewLayout().getMode());
 
85
                config.setProperty(TGConfigKeys.LAYOUT_STYLE,getEditor().getTablature().getViewLayout().getStyle());
 
86
                config.setProperty(TGConfigKeys.SHOW_PIANO,!TuxGuitar.instance().getPianoEditor().isDisposed());
 
87
                config.setProperty(TGConfigKeys.SHOW_MATRIX,!TuxGuitar.instance().getMatrixEditor().isDisposed());
 
88
                config.setProperty(TGConfigKeys.SHOW_FRETBOARD,TuxGuitar.instance().getFretBoardEditor().isVisible());
 
89
                config.setProperty(TGConfigKeys.SHOW_MIXER,!TuxGuitar.instance().getMixer().isDisposed());
 
90
                config.setProperty(TGConfigKeys.SHOW_TRANSPORT,!TuxGuitar.instance().getTransport().isDisposed());
 
91
                config.setProperty(TGConfigKeys.SHOW_MARKERS,!MarkerList.instance().isDisposed());
 
92
                config.setProperty(TGConfigKeys.MAXIMIZED,TuxGuitar.instance().getShell().getMaximized());
 
93
                config.setProperty(TGConfigKeys.WIDTH,TuxGuitar.instance().getShell().getClientArea().width);
 
94
                config.setProperty(TGConfigKeys.HEIGHT,TuxGuitar.instance().getShell().getClientArea().height);
 
95
                config.setProperty(TGConfigKeys.EDITOR_MOUSE_MODE,getEditor().getTablature().getEditorKit().getMouseMode());
 
96
                config.setProperty(TGConfigKeys.MATRIX_GRIDS,TuxGuitar.instance().getMatrixEditor().getGrids());
 
97
                
 
98
                TuxGuitar.instance().getConfig().save();
 
99
        }
 
100
        
 
101
        protected void closeModules(){
 
102
                TuxGuitar.instance().getPlayer().close();
 
103
                TuxGuitar.instance().getPluginManager().closePLugins();
 
104
        }
 
105
        
 
106
        protected void dispose(){
 
107
                TGTableViewer.disposeColors();
 
108
                TuxGuitar.instance().getSongManager().clearSong();
 
109
                TuxGuitar.instance().getFretBoardEditor().dispose();
 
110
                TuxGuitar.instance().getTablatureEditor().getTablature().dispose();
 
111
                TuxGuitar.instance().getIconManager().disposeIcons();
 
112
                TuxGuitar.instance().getShell().dispose();
 
113
                TuxGuitar.instance().getDisplay().dispose();
 
114
        }
 
115
}
 
 
b'\\ No newline at end of file'