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

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/gui/util/FileChooser.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 08-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.util;
8
 
 
9
 
import org.eclipse.swt.SWT;
10
 
import org.eclipse.swt.widgets.FileDialog;
11
 
import org.eclipse.swt.widgets.Shell;
12
 
import org.herac.tuxguitar.gui.TuxGuitar;
13
 
 
14
 
/**
15
 
 * @author julian
16
 
 * 
17
 
 * TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
18
 
 */
19
 
public class FileChooser {
20
 
    
21
 
    public static FilterFormat OPEN_FORMAT = instance().new FilterFormat(new String[] {  "*.tg;*.gp3;*.gp4;*.gp5;*.ptb" },new String[] {  "Suported Files (*.tg,*.gp3,*.gp4,*.gp5,*.ptb)"});
22
 
    
23
 
    public static FilterFormat IMPORT_MIDI_FORMAT = instance().new FilterFormat(new String[] { "*.mid" },new String[] { "Suported Files (*.mid)" });    
24
 
    
25
 
    public static FilterFormat SAVE_FORMAT = instance().new FilterFormat(new String[] { "*.gp4", "*.gp3", "*.tg" },null);
26
 
    
27
 
    public static FilterFormat EXPORT_MIDI_FORMAT = instance().new FilterFormat(new String[] { "*.mid" },null);
28
 
    
29
 
    public static FilterFormat EXPORT_PDF_FORMAT = instance().new FilterFormat(new String[] { "*.pdf" },null);
30
 
    
31
 
    public static FilterFormat EXPORT_ASCII_FORMAT = instance().new FilterFormat(new String[] { "*.tab" },null);
32
 
    
33
 
    public static FilterFormat ALL_FORMAT = instance().new FilterFormat(null,null);
34
 
        
35
 
        private static FileChooser instance;
36
 
        
37
 
    public FileChooser() {
38
 
    }    
39
 
 
40
 
    public static FileChooser instance() {
41
 
        if(instance == null){
42
 
                instance = new FileChooser();
43
 
        }
44
 
                return instance;
45
 
        }
46
 
        
47
 
    public String open(Shell parent,FilterFormat format) {      
48
 
        FileDialog dialog = new FileDialog(parent,SWT.OPEN);
49
 
        dialog.setFilterPath(getPath());
50
 
        dialog.setFileName(getFileName(format));
51
 
        dialog.setFilterNames(format.filterNames);        
52
 
        dialog.setFilterExtensions(format.filterExtensions);                
53
 
        return dialog.open();
54
 
    }
55
 
    
56
 
    public String save(Shell parent, FilterFormat format) {     
57
 
        FileDialog dialog = new FileDialog(parent,SWT.SAVE);        
58
 
        dialog.setFilterPath(getPath());
59
 
        dialog.setFileName(getFileName(format));
60
 
        dialog.setFilterNames(format.filterNames);
61
 
        dialog.setFilterExtensions(format.filterExtensions);
62
 
        return dialog.open();
63
 
    }    
64
 
 
65
 
    private String getPath(){           
66
 
        return TuxGuitar.instance().getFileHistory().getFilePath();
67
 
    }
68
 
    
69
 
    private String getFileName(FilterFormat format){
70
 
        if(format == null || format.filterExtensions == null){
71
 
                return null;
72
 
        }
73
 
        String fileName = TuxGuitar.instance().getFileHistory().getFileName();          
74
 
        for(int i = 0; i < format.filterExtensions.length; i ++){
75
 
                String fileExtension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();
76
 
                int startIndex = format.filterExtensions[i].indexOf(fileExtension);
77
 
                int endIndex = fileExtension.length() + startIndex;
78
 
                if(startIndex > 0 && (endIndex == format.filterExtensions[i].length() || format.filterExtensions[i].charAt(endIndex) == ';')){                  
79
 
                        return fileName;
80
 
                }
81
 
        }       
82
 
        if(format.filterExtensions.length > 0 && fileName.lastIndexOf('.') > 0){                
83
 
                int index = fileName.lastIndexOf('.');
84
 
                return (fileName.substring(0,fileName.lastIndexOf('.')) + format.filterExtensions[0].substring(format.filterExtensions[0].lastIndexOf('.')));                   
85
 
        }
86
 
        return null;
87
 
    }
88
 
    
89
 
    private class FilterFormat{
90
 
        private String[] filterExtensions;
91
 
        private String[] filterNames;
92
 
                
93
 
        private FilterFormat(String[] filterExtensions, String[] filterNames) {
94
 
                        this.filterExtensions = filterExtensions;
95
 
                        this.filterNames = filterNames;
96
 
                }               
97
 
    }
98
 
}
 
 
b'\\ No newline at end of file'