Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.25 KB | None | 0 0
  1. package main_package;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.TextArea;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.io.File;
  9. import java.io.FileInputStream;
  10. import java.io.FileNotFoundException;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.rmi.RemoteException;
  14. import java.text.DateFormat;
  15. import java.text.SimpleDateFormat;
  16. import java.util.ArrayList;
  17. import java.util.Calendar;
  18.  
  19. import javax.swing.JFileChooser;
  20. import javax.swing.JFrame;
  21. import javax.swing.JMenu;
  22. import javax.swing.JMenuBar;
  23. import javax.swing.JMenuItem;
  24. import javax.swing.JScrollPane;
  25. import javax.swing.JTable;
  26. import javax.swing.JTextField;
  27. import javax.swing.JTree;
  28. import javax.swing.table.DefaultTableModel;
  29. import javax.swing.tree.TreeModel;
  30.  
  31.  
  32.  
  33. public class ClientWindow extends JFrame
  34. implements ActionListener
  35. {
  36. private static final long serialVersionUID = 1L;
  37.  
  38. // -------- WINDOW ELEMENTS ------------------
  39. public static TextArea textArea ;
  40. private JMenuItem loadFilesItem, loadFoldersItem, exitItem;
  41.  
  42. private DateFormat dateFormat;
  43. private Calendar cal;
  44.  
  45. private DefaultTableModel model;
  46. private JTable table;
  47. private JScrollPane scrPane;
  48. // ----- FILE TREE ---------------------------//
  49.  
  50. private File root; // korzeń drzewa
  51. private FileTreeModel treeModel;
  52. // -------- RMI ELEMENTS ---------------------
  53. private Client client;
  54. private File[] selectedFiles;
  55. private ArrayList<File> files_to_transport;
  56. private ArrayList<String> paths;
  57.  
  58. JScrollPane scrollpane;
  59. public ClientWindow() {
  60.  
  61. // --------- INITIALIZE WINDOW ELEMENTS --------------------------
  62. setTitle("Remote Archiver Client ");
  63. setSize(600,400);
  64. setLayout(new BorderLayout());
  65.  
  66. JMenuBar menuBar = new JMenuBar();
  67. JMenu fileMenu = new JMenu("File");
  68. loadFilesItem = new JMenuItem("Load files...");
  69. loadFoldersItem = new JMenuItem("Load folders...");
  70. exitItem = new JMenuItem("Exit");
  71.  
  72.  
  73. dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  74. cal = Calendar.getInstance();
  75.  
  76. textArea = new TextArea();
  77. textArea.setEditable(false);
  78. textArea.setBackground(Color.WHITE);
  79. textArea.setForeground(new Color(0,100f/255f,0));
  80. textArea.append("[" + dateFormat.format(cal.getTime()) + "]: " + "Remote archiver client started.");
  81.  
  82. model = new DefaultTableModel(new Object[][] {}, new Object[] { "Name", "Size" });
  83. table = new JTable(model);
  84. scrPane = new JScrollPane(table);
  85.  
  86. // ----- Inicjalizacja drzewa plików ------------
  87.  
  88.  
  89.  
  90. final JTree tree = new JTree();
  91.  
  92.  
  93. scrollpane = new JScrollPane(tree);
  94.  
  95.  
  96.  
  97. // ----------------------------------------------
  98. this.add(scrPane,BorderLayout.BEFORE_LINE_BEGINS);
  99. this.add(scrollpane);
  100. this.add(textArea,BorderLayout.SOUTH);
  101.  
  102. scrPane.getViewport().setBackground(Color.WHITE);
  103.  
  104. System.setSecurityManager(new SecurityManager());
  105. client = new Client();
  106. files_to_transport = new ArrayList<File>();
  107. paths = new ArrayList<String>();
  108.  
  109. // ---------------- Przesłanie pliku/plików --------------------------
  110.  
  111. loadFilesItem.addActionListener(new ActionListener() {
  112. public void actionPerformed(ActionEvent ae) {
  113.  
  114. JFileChooser fileChooser = new JFileChooser();
  115. fileChooser.setMultiSelectionEnabled(true);
  116.  
  117. if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
  118. selectedFiles = fileChooser.getSelectedFiles();
  119.  
  120. for(int i = 0; i < selectedFiles.length; i++)
  121. {
  122. InputStream is = null;
  123. try {
  124. is = new FileInputStream(selectedFiles[i]);
  125. } catch (FileNotFoundException e) {
  126. e.printStackTrace();
  127. }
  128. client.SendFile(is, selectedFiles[i].getName(), selectedFiles[i].length());
  129. }
  130. }}});
  131.  
  132. // ---------------- Przesłanie folderu/folderów ------------------------
  133.  
  134. loadFoldersItem.addActionListener(new ActionListener() {
  135. public void actionPerformed(ActionEvent ae) {
  136.  
  137. JFileChooser fileChooser = new JFileChooser();
  138. fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  139.  
  140. if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
  141. {
  142. // Przygotowanie do odseparowywania folderów nadrzędnych ze ścieżki pliku -----------------
  143. File directory = fileChooser.getSelectedFile();
  144. String folder_path_main = directory.getPath();
  145.  
  146. root = new File(folder_path_main);
  147. treeModel = new FileTreeModel(root);
  148. tree.setModel(treeModel);
  149.  
  150.  
  151.  
  152. int pos_dir_name = folder_path_main.indexOf(directory.getName());
  153. folder_path_main = folder_path_main.substring(0, pos_dir_name);
  154.  
  155.  
  156. // -------- Pobranie plików z drzewa folderów -------------
  157. files_to_transport.clear();
  158. ScanDirectory(directory, files_to_transport);
  159. selectedFiles = new File[files_to_transport.size()];
  160. for(int i = 0; i < files_to_transport.size(); i++)
  161. selectedFiles[i] = files_to_transport.get(i);
  162.  
  163. for(int i = 0; i < selectedFiles.length; i++)
  164. {
  165. // ---- Odseparowanie ścieżek nadrzędnych ---------------------
  166. int pos = selectedFiles[i].getPath().indexOf(folder_path_main)+folder_path_main.length();
  167. String edited_path = selectedFiles[i].getPath().substring(pos);
  168. // ---- Zamiana backslashy -------------------------
  169. edited_path = edited_path.replace("\\", "/");
  170. // ---- Wysłanie pliku przez serwer ----------------
  171. InputStream is = null;
  172. try {
  173. is = new FileInputStream(selectedFiles[i]);
  174. } catch (FileNotFoundException e) {
  175. e.printStackTrace();
  176. }
  177. client.SendFile(is, edited_path, selectedFiles[i].length());
  178. }
  179. }}});
  180.  
  181. fileMenu.add(loadFilesItem);
  182. fileMenu.add(loadFoldersItem);
  183. fileMenu.add(exitItem);
  184. fileMenu.addSeparator();
  185.  
  186. menuBar.add(fileMenu);
  187.  
  188. setJMenuBar(menuBar);
  189. }
  190.  
  191. public void actionPerformed(ActionEvent e) {
  192.  
  193. }
  194. private void ScanDirectory(File input_directory, ArrayList<File> output_files)
  195. {
  196. File[] selectedElem = input_directory.listFiles();
  197.  
  198. for(int i = 0; i < selectedElem.length; i++)
  199. {
  200. if(selectedElem[i] != null)
  201. {
  202. if(selectedElem[i].isFile())
  203. {
  204. String s = selectedElem[i].getName();
  205. String s1 = "Thumbs.db";
  206. if(!s1.equals(s))
  207. {
  208. output_files.add(selectedElem[i]);
  209. }
  210. }
  211. if(selectedElem[i].isDirectory())
  212. {
  213. ScanDirectory(selectedElem[i], output_files);
  214. }
  215. }
  216. }
  217. }
  218. public static void main(String[] args) {
  219.  
  220. ClientWindow okno=new ClientWindow();
  221.  
  222. okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  223. okno.setVisible(true);
  224. }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement