Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main_package;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.TextArea;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.rmi.RemoteException;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import javax.swing.JFileChooser;
- import javax.swing.JFrame;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.JTextField;
- import javax.swing.JTree;
- import javax.swing.table.DefaultTableModel;
- import javax.swing.tree.TreeModel;
- public class ClientWindow extends JFrame
- implements ActionListener
- {
- private static final long serialVersionUID = 1L;
- // -------- WINDOW ELEMENTS ------------------
- public static TextArea textArea ;
- private JMenuItem loadFilesItem, loadFoldersItem, exitItem;
- private DateFormat dateFormat;
- private Calendar cal;
- private DefaultTableModel model;
- private JTable table;
- private JScrollPane scrPane;
- // ----- FILE TREE ---------------------------//
- private File root; // korzeń drzewa
- private FileTreeModel treeModel;
- // -------- RMI ELEMENTS ---------------------
- private Client client;
- private File[] selectedFiles;
- private ArrayList<File> files_to_transport;
- private ArrayList<String> paths;
- JScrollPane scrollpane;
- public ClientWindow() {
- // --------- INITIALIZE WINDOW ELEMENTS --------------------------
- setTitle("Remote Archiver Client ");
- setSize(600,400);
- setLayout(new BorderLayout());
- JMenuBar menuBar = new JMenuBar();
- JMenu fileMenu = new JMenu("File");
- loadFilesItem = new JMenuItem("Load files...");
- loadFoldersItem = new JMenuItem("Load folders...");
- exitItem = new JMenuItem("Exit");
- dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
- cal = Calendar.getInstance();
- textArea = new TextArea();
- textArea.setEditable(false);
- textArea.setBackground(Color.WHITE);
- textArea.setForeground(new Color(0,100f/255f,0));
- textArea.append("[" + dateFormat.format(cal.getTime()) + "]: " + "Remote archiver client started.");
- model = new DefaultTableModel(new Object[][] {}, new Object[] { "Name", "Size" });
- table = new JTable(model);
- scrPane = new JScrollPane(table);
- // ----- Inicjalizacja drzewa plików ------------
- final JTree tree = new JTree();
- scrollpane = new JScrollPane(tree);
- // ----------------------------------------------
- this.add(scrPane,BorderLayout.BEFORE_LINE_BEGINS);
- this.add(scrollpane);
- this.add(textArea,BorderLayout.SOUTH);
- scrPane.getViewport().setBackground(Color.WHITE);
- System.setSecurityManager(new SecurityManager());
- client = new Client();
- files_to_transport = new ArrayList<File>();
- paths = new ArrayList<String>();
- // ---------------- Przesłanie pliku/plików --------------------------
- loadFilesItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setMultiSelectionEnabled(true);
- if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
- selectedFiles = fileChooser.getSelectedFiles();
- for(int i = 0; i < selectedFiles.length; i++)
- {
- InputStream is = null;
- try {
- is = new FileInputStream(selectedFiles[i]);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- client.SendFile(is, selectedFiles[i].getName(), selectedFiles[i].length());
- }
- }}});
- // ---------------- Przesłanie folderu/folderów ------------------------
- loadFoldersItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
- {
- // Przygotowanie do odseparowywania folderów nadrzędnych ze ścieżki pliku -----------------
- File directory = fileChooser.getSelectedFile();
- String folder_path_main = directory.getPath();
- root = new File(folder_path_main);
- treeModel = new FileTreeModel(root);
- tree.setModel(treeModel);
- int pos_dir_name = folder_path_main.indexOf(directory.getName());
- folder_path_main = folder_path_main.substring(0, pos_dir_name);
- // -------- Pobranie plików z drzewa folderów -------------
- files_to_transport.clear();
- ScanDirectory(directory, files_to_transport);
- selectedFiles = new File[files_to_transport.size()];
- for(int i = 0; i < files_to_transport.size(); i++)
- selectedFiles[i] = files_to_transport.get(i);
- for(int i = 0; i < selectedFiles.length; i++)
- {
- // ---- Odseparowanie ścieżek nadrzędnych ---------------------
- int pos = selectedFiles[i].getPath().indexOf(folder_path_main)+folder_path_main.length();
- String edited_path = selectedFiles[i].getPath().substring(pos);
- // ---- Zamiana backslashy -------------------------
- edited_path = edited_path.replace("\\", "/");
- // ---- Wysłanie pliku przez serwer ----------------
- InputStream is = null;
- try {
- is = new FileInputStream(selectedFiles[i]);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- client.SendFile(is, edited_path, selectedFiles[i].length());
- }
- }}});
- fileMenu.add(loadFilesItem);
- fileMenu.add(loadFoldersItem);
- fileMenu.add(exitItem);
- fileMenu.addSeparator();
- menuBar.add(fileMenu);
- setJMenuBar(menuBar);
- }
- public void actionPerformed(ActionEvent e) {
- }
- private void ScanDirectory(File input_directory, ArrayList<File> output_files)
- {
- File[] selectedElem = input_directory.listFiles();
- for(int i = 0; i < selectedElem.length; i++)
- {
- if(selectedElem[i] != null)
- {
- if(selectedElem[i].isFile())
- {
- String s = selectedElem[i].getName();
- String s1 = "Thumbs.db";
- if(!s1.equals(s))
- {
- output_files.add(selectedElem[i]);
- }
- }
- if(selectedElem[i].isDirectory())
- {
- ScanDirectory(selectedElem[i], output_files);
- }
- }
- }
- }
- public static void main(String[] args) {
- ClientWindow okno=new ClientWindow();
- okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- okno.setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement