outsourced the file dialog part to method

This commit is contained in:
fros4943 2006-10-23 16:13:12 +00:00
parent e528b527e6
commit 34785be0a8

View file

@ -26,11 +26,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: ContikiCFS.java,v 1.2 2006/10/21 10:41:58 fros4943 Exp $ * $Id: ContikiCFS.java,v 1.3 2006/10/23 16:13:12 fros4943 Exp $
*/ */
package se.sics.cooja.contikimote.interfaces; package se.sics.cooja.contikimote.interfaces;
import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -186,47 +187,13 @@ public class ContikiCFS extends MoteInterface implements ContikiMoteInterface {
uploadButton.addActionListener(new ActionListener() { uploadButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
byte[] fileData = readDialogFileBytes(null);
// Choose file
File file = null;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new java.io.File("."));
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setDialogTitle("Select Contiki executable (.ce)");
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
} else
return;
// Read file data
long fileSize = file.length();
byte[] fileData = new byte[(int)fileSize];
FileInputStream fileIn;
DataInputStream dataIn;
int offset = 0;
int numRead = 0;
try {
fileIn = new FileInputStream(file);
dataIn = new DataInputStream(fileIn);
while (offset < fileData.length
&& (numRead = dataIn.read(fileData, offset, fileData.length - offset)) >= 0) {
offset += numRead;
}
dataIn.close();
fileIn.close();
} catch (Exception ex) {
logger.debug("Exception ex: " + ex);
return;
}
// Write file data to CFS // Write file data to CFS
if (fileData != null)
setFilesystemData(fileData); setFilesystemData(fileData);
logger.info("Done! (" + numRead + " bytes written to CFS)"); logger.info("Done! (" + fileData.length + " bytes written to CFS)");
} }
}); });
@ -270,4 +237,49 @@ public class ContikiCFS extends MoteInterface implements ContikiMoteInterface {
public void setConfigXML(Collection<Element> configXML) { public void setConfigXML(Collection<Element> configXML) {
} }
/**
* Opens a file dialog and returns the contents of the selected fileor null if dialog aborted.
*
* @param parent Dialog parent, may be null
* @return Binary contents of user selected file
*/
public static byte[] readDialogFileBytes(Component parent) {
// Choose file
File file = null;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new java.io.File("."));
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setDialogTitle("Select Contiki executable (.ce)");
if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
} else
return null;
// Read file data
long fileSize = file.length();
byte[] fileData = new byte[(int) fileSize];
FileInputStream fileIn;
DataInputStream dataIn;
int offset = 0;
int numRead = 0;
try {
fileIn = new FileInputStream(file);
dataIn = new DataInputStream(fileIn);
while (offset < fileData.length
&& (numRead = dataIn.read(fileData, offset, fileData.length - offset)) >= 0) {
offset += numRead;
}
dataIn.close();
fileIn.close();
} catch (Exception ex) {
logger.debug("Exception ex: " + ex);
return null;
}
return fileData;
}
} }