|
RLEFrEnd |
|
/* * ToDo: * * */ import java.awt.*; import java.applet.*; import java.awt.event.*; import java.net.URL; import java.io.*; import java.util.zip.*; /** * RLEFrEnd - Tim Tyler 2001. * * A front end for RLE.<P> * This code has been placed in the public domain.<P> * You can do what you like with it.<P> * Note that this code comes with no warranty.<P> * */ public class RLEFrEnd extends java.applet.Applet implements ActionListener { static String document_base; static String java_version; static String directory_separator; static URL base_url; static Applet applet; static Panel input, output, input1, input2, input3; static Panel output1, output2, output3, output4, output5; static Frame frame; static boolean application = false; final static boolean development_version = false; static int i=0, j=0, k=0, n=0; static Checkbox checkbox_iv; static TextField original_file_textfield; static TextField compressed_file_textfield; static TextField decompressed_file_textfield; static TextField key_textfield; static Button original_file_button; static Button compressed_file_button; static Button decompressed_button; static Button encrypt_button; static Button decrypt_button; // constructor public RLEFrEnd() { setLayout(new BorderLayout()); Font std_font = new Font("Helevetica", Font.BOLD, 16); output5 = new Panel(); output5.setBackground(Color.lightGray); Label label_temp; Panel panel_basic = new Panel(); panel_basic.setLayout(new BorderLayout()); Panel panel_west = new Panel(); panel_west.setLayout(new GridLayout(3,1)); panel_west.setBackground(Color.lightGray); Panel panel_east = new Panel(); panel_east.setLayout(new GridLayout(3,1)); Panel panel_centre = new Panel(); panel_centre.setLayout(new GridLayout(3,1)); panel_centre.setBackground(Color.lightGray); label_temp = new Label("Original file:", Label.RIGHT); label_temp.setFont(std_font); panel_west.add(label_temp,BorderLayout.WEST); original_file_textfield = new TextField("",99); original_file_textfield.setFont(std_font); panel_centre.add(original_file_textfield,BorderLayout.CENTER); original_file_button = new Button("Browse"); original_file_button.setFont(std_font); original_file_button.addActionListener(this); panel_east.add(original_file_button,BorderLayout.EAST); Panel panel_compressed_file = new Panel(); label_temp = new Label("Compressed file:", Label.RIGHT); label_temp.setFont(std_font); panel_west.add(label_temp); compressed_file_textfield = new TextField("",99); compressed_file_textfield.setFont(std_font); panel_centre.add(compressed_file_textfield); compressed_file_button = new Button("Browse"); compressed_file_button.setFont(std_font); compressed_file_button.addActionListener(this); panel_east.add(compressed_file_button); Panel panel_decompressed = new Panel(); label_temp = new Label("Decompressed file:", Label.RIGHT); label_temp.setFont(std_font); panel_west.add(label_temp); decompressed_file_textfield = new TextField("",99); decompressed_file_textfield.setFont(std_font); panel_centre.add(decompressed_file_textfield); decompressed_button = new Button("Browse"); decompressed_button.setFont(std_font); decompressed_button.addActionListener(this); panel_east.add(decompressed_button); output5.setLayout(new GridLayout(1,2)); encrypt_button = new Button("Compress"); encrypt_button.setFont(std_font); encrypt_button.addActionListener(this); output5.add(encrypt_button); decrypt_button = new Button("Decompress"); decrypt_button.setFont(std_font); decrypt_button.addActionListener(this); output5.add(decrypt_button); panel_basic.add(panel_west,BorderLayout.WEST); panel_basic.add(panel_centre,BorderLayout.CENTER); panel_basic.add(panel_east,BorderLayout.EAST); add(panel_basic,BorderLayout.CENTER); add(output5,BorderLayout.SOUTH); } void enableButtons(boolean flag) { encrypt_button.setEnabled(flag); decrypt_button.setEnabled(flag); } public void actionPerformed(ActionEvent ev) { if (ev.getSource() == encrypt_button) { enableButtons(false); try { compress(); } catch (Exception e) { printf("Error while encrypting:"); e.printStackTrace(); } enableButtons(true); } if (ev.getSource() == decrypt_button) { enableButtons(false); try { decompress(); } catch (Exception e) { printf("Error while decrypting:"); e.printStackTrace(); } enableButtons(true); } if (ev.getSource() == compressed_file_button) { browseEncryptedFile(); } if (ev.getSource() == decompressed_button) { browseDecryptedFile(); } if (ev.getSource() == original_file_button) { browseOriginalFile(); } } void getDocBase() { if (document_base == null) { // get Java version... java_version = System.getProperty("java.version"); directory_separator = System.getProperty("file.separator"); if (application) { try { document_base = System.getProperty("user.dir"); base_url = new URL("file:/" + document_base + directory_separator); } catch (Exception e2) { printf("Error getting application base: " + e2.toString()); } } else { try { // base_url = getDocumentBase(); // applet base_url = getCodeBase(); // applet document_base = base_url.toString(); String base_url_s = base_url.toString(); // applet // trailing "."...? if (base_url_s.indexOf("/.") > 0) { printf("Warning: slash-fullstop in URL - truncating URL to avoid bug."); document_base = document_base.substring(0, document_base.length() - 2); base_url = new URL(base_url_s.substring(0, base_url_s.length() - 1)); } } catch (Exception e) { printf("Error getting applet base: " + e.toString()); } } } } static void compress() throws Exception { RLE rle = new RLE(); String original_file = original_file_textfield.getText(); String compressed_file = compressed_file_textfield.getText(); rle.compress(original_file, compressed_file); } static void decompress() throws Exception { UNRLE unrle = new UNRLE(); String compressed_file = compressed_file_textfield.getText(); String decompressed_file = decompressed_file_textfield.getText(); unrle.decompress(compressed_file, decompressed_file); } static void browseOriginalFile() { FileDialog fd = new FileDialog(frame, "Select file", FileDialog.LOAD); fd.setFile("input.dat"); fd.show(); String returnedstring = fd.getFile(); if (returnedstring != null) { if (!returnedstring.equals("")) { original_file_textfield.setText(fd.getDirectory() + returnedstring); } } } static void browseEncryptedFile() { FileDialog fd = new FileDialog(frame, "Select file", FileDialog.LOAD); fd.setFile("input.dat"); fd.show(); String returnedstring = fd.getFile(); if (returnedstring != null) { if (!returnedstring.equals("")) { compressed_file_textfield.setText(fd.getDirectory() + returnedstring); } } } static void browseDecryptedFile() { FileDialog fd = new FileDialog(frame, "Select file", FileDialog.LOAD); fd.setFile("output.dat"); fd.show(); String returnedstring = fd.getFile(); if (returnedstring != null) { if (!returnedstring.equals("")) { decompressed_file_textfield.setText(fd.getDirectory() + returnedstring); } } } static void printf(String s) { System.out.println(s); } public static void main(String args[]) { application = true; RLEFrEnd applet = new RLEFrEnd(); frame = new TTAppletFrame("BIRLE",(Applet)applet,512,150); Image image = frame.createImage(29,29); Graphics g = image.getGraphics(); g.setColor(Color.black); g.fillRect(0,0,30,30); g.setColor(Color.yellow); g.drawRect(0,0,28,28); for (int i = 1; i < 14; i++) { int temp = i * 14; g.setColor(new Color((temp << 12) | (temp ^ 0xFF))); g.drawRect(i,i,28 - i - i,28 - i - i); } frame.setIconImage(image); } }
|
RLEFrEnd |
|