Subversion Repositories svn.mios

Rev

Rev 698 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 698 Rev 738
Line 34... Line 34...
34
import org.midibox.sidedit.SIDSysexInfo;
34
import org.midibox.sidedit.SIDSysexInfo;
35
35
36
public class FileHandler {
36
public class FileHandler {
37
    final JFileChooser fc = new JFileChooser();
37
    final JFileChooser fc = new JFileChooser();
38
    private InitPatches initPatches;
38
    private InitPatches initPatches;
-
 
39
39
    public FileHandler(InitPatches initPatches) {
40
    public FileHandler(InitPatches initPatches) {
40
        fc.addChoosableFileFilter(new SysExFilter());
41
        fc.addChoosableFileFilter(new SysExFilter());
41
        this.initPatches = initPatches;
42
        this.initPatches = initPatches;
42
    }
43
    }
43
44
44
    public void savePatchBank(Bank b, int bankNumber) {
45
    public void savePatchBank(Bank b, int bankNumber) {
45
        try {
46
        try {
46
            saveData(getBankDumpSysex(b, bankNumber));
47
            saveData(getBankDumpSysex(b, bankNumber));
47
        } catch (IOException e) {
48
        } catch (IOException e) {
-
 
49
            JOptionPane.showMessageDialog(null,
48
            JOptionPane.showMessageDialog(null,"An error has occurred while writing the file!", "Error",JOptionPane.ERROR_MESSAGE);
50
                    "An error has occurred while writing the file!", "Error",
-
 
51
                    JOptionPane.ERROR_MESSAGE);
49
        }
52
        }
50
    }
53
    }
51
54
52
    public void savePatch(Patch p, int bankNumber, int patchNumber) {
55
    public void savePatch(Patch p, int bankNumber, int patchNumber) {
53
        try {
56
        try {
Line 63... Line 66...
63
        Bank b = null;
66
        Bank b = null;
64
        try {
67
        try {
65
            byte[] data = loadData();
68
            byte[] data = loadData();
66
            if (data != null) {
69
            if (data != null) {
67
                String s = MidiUtils.getHexString(data).replace(" ", "");
70
                String s = MidiUtils.getHexString(data).replace(" ", "");
68
                if ((isEnsemble && (s.length() == 128 * Bank.ensembleSize || s.length() == 64 * Bank.ensembleSize)) || (!isEnsemble && (s.length() == 128 * Bank.patchSize || s.length() == 64 * Bank.patchSize))) {
71
                if ((isEnsemble && (s.length() == 128 * Bank.ensembleSize || s
-
 
72
                        .length() == 64 * Bank.ensembleSize))
-
 
73
                        || (!isEnsemble && (s.length() == 128 * Bank.patchSize || s
-
 
74
                                .length() == 64 * Bank.patchSize))) {
69
                    Bank tempBank = new Bank(receiver,isEnsemble, initPatches);
75
                    Bank tempBank = new Bank(receiver, isEnsemble, initPatches);
70
                    String status = tempBank.parseBankSyx(s);
76
                    String status = tempBank.parseBankSyx(s);
71
                    if (statusCheck(status)) {
77
                    if (statusCheck(status)) {
72
                        b = tempBank;
78
                        b = tempBank;
73
                    }
79
                    }
74
                } else {
80
                } else {
75
                    if (isEnsemble) {
81
                    if (isEnsemble) {
-
 
82
                        JOptionPane
-
 
83
                                .showMessageDialog(
-
 
84
                                        null,
76
                        JOptionPane.showMessageDialog(null, "This file does not contain a bank with 64 or 128 valid ensembles!","Error", JOptionPane.ERROR_MESSAGE);
85
                                        "This file does not contain a bank with 64 or 128 valid ensembles!",
-
 
86
                                        "Error", JOptionPane.ERROR_MESSAGE);
77
                    } else {
87
                    } else {
-
 
88
                        JOptionPane
-
 
89
                                .showMessageDialog(
-
 
90
                                        null,
78
                        JOptionPane.showMessageDialog(null, "This file does not contain a bank with 64 or 128 valid patches!","Error", JOptionPane.ERROR_MESSAGE);
91
                                        "This file does not contain a bank with 64 or 128 valid patches!",
-
 
92
                                        "Error", JOptionPane.ERROR_MESSAGE);
79
                    }
93
                    }
80
                }
94
                }
81
            }
95
            }
82
        } catch (IOException e) {
96
        } catch (IOException e) {
83
            JOptionPane.showMessageDialog(null,
97
            JOptionPane.showMessageDialog(null,
Line 92... Line 106...
92
        try {
106
        try {
93
            byte[] data = loadData();
107
            byte[] data = loadData();
94
            if (data != null) {
108
            if (data != null) {
95
                String s = MidiUtils.getHexString(data).replace(" ", "");              
109
                String s = MidiUtils.getHexString(data).replace(" ", "");
96
                if (isEnsemble && (s.length() != Bank.ensembleSize)) {
110
                if (isEnsemble && (s.length() != Bank.ensembleSize)) {
-
 
111
                    JOptionPane.showMessageDialog(null,
97
                    JOptionPane.showMessageDialog(null,"This file does not contain a valid ensemble!",  "Error", JOptionPane.ERROR_MESSAGE);
112
                            "This file does not contain a valid ensemble!",
-
 
113
                            "Error", JOptionPane.ERROR_MESSAGE);
98
                } else if (!isEnsemble && (s.length() != Bank.patchSize)) {
114
                } else if (!isEnsemble && (s.length() != Bank.patchSize)) {
-
 
115
                    JOptionPane.showMessageDialog(null,
99
                    JOptionPane.showMessageDialog(null,"This file does not contain a valid patch!", "Error", JOptionPane.ERROR_MESSAGE);
116
                            "This file does not contain a valid patch!",
-
 
117
                            "Error", JOptionPane.ERROR_MESSAGE);
100
                } else {
118
                } else {
101
                    Patch tempPatch;
119
                    Patch tempPatch;
102
                    if (isEnsemble) {
120
                    if (isEnsemble) {
103
                        tempPatch = new Patch(receiver,256, initPatches);
121
                        tempPatch = new Patch(receiver, 256, initPatches);
104
                    } else {
122
                    } else {
Line 207... Line 225...
207
        if (bankNumber==-1) {
225
        if (bankNumber == -1) {
208
            strMessage = SIDSysexInfo.hardEnsembleDumpSysex;
226
            strMessage = SIDSysexInfo.hardEnsembleDumpSysex;
209
            strMessage = strMessage.replace("<ensemble>", patchStr);           
227
            strMessage = strMessage.replace("<ensemble>", patchStr);
210
        } else {
228
        } else {
211
            strMessage = SIDSysexInfo.hardPatchDumpSysex;
229
            strMessage = SIDSysexInfo.hardPatchDumpSysex;
212
            strMessage = strMessage.replace("<bank>", "0" + Integer.toHexString(bankNumber));
230
            strMessage = strMessage.replace("<bank>", "0"
-
 
231
                    + Integer.toHexString(bankNumber));
213
            strMessage = strMessage.replace("<patch>", patchStr);
232
            strMessage = strMessage.replace("<patch>", patchStr);
214
        }      
233
        }
215
        strMessage = strMessage.replace("<device>", "00");     
234
        strMessage = strMessage.replace("<device>", "00");
216
        String s = "<data><checksum>";
235
        String s = "<data><checksum>";
217
        return p.getSysex(strMessage.substring(0, strMessage.indexOf(s)),strMessage.substring(strMessage.lastIndexOf(s)+s.length()));
236
        return p.getSysex(strMessage.substring(0, strMessage.indexOf(s)),
-
 
237
                strMessage.substring(strMessage.lastIndexOf(s) + s.length()));
218
    }
238
    }
219
   
239
220
    private boolean statusCheck(String status) {
240
    private boolean statusCheck(String status) {
221
        boolean b = false;
241
        boolean b = false;
222
        if (status == "succesful") {
242
        if (status == "succesful") {