~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: 2007-02-04 01:41:23 UTC
  • Revision ID: james.westby@ubuntu.com-20070204014123-9pv7okph0iaiqkvw
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

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'