/** * Accionado quando se faz clique no botao para extrair um ficheiro. * * <p>Permite extrair o conteudo de um ficheiro selecionado pelo utilizador. A extracção só será * possivel caso o objecto selecionado seja um ficheiro. * * <p>É lançado uma excepção caso a extracção falhe. * * @param evt */ private void jMenuItem6ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem6ActionPerformed try { // verificar a seleccão int row = jTable1.getSelectedRow(); Object obj = jTable1.getModel().getValueAt(row, 0); if (obj instanceof RFPFileHeader) { final JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File dir = fc.getCurrentDirectory(); File dest = fc.getSelectedFile(); if ((int) (((RFPFileHeader) obj).getFlags() & RFPBinaryFile.RFP_COMPRESSED) == RFPBinaryFile.RFP_COMPRESSED) { rfpFile.decompressFile(((RFPFileHeader) obj).getFilenameId(), dest.getPath()); } else { rfpFile.extractFile(((RFPFileHeader) obj).getFilenameId(), dest.getPath()); } } } else { JOptionPane.showMessageDialog( null, "Impossivel extrair ficheiro.", "Extração de Ficheiro", JOptionPane.ERROR_MESSAGE); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossivel extrair ficheiro.", "Extração de Ficheiro", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem6ActionPerformed
/** * Accionado quando se faz clique no botao para criar um ficheiro RFP. * * <p>Cria um novo ficheiro RFP. Pergunta ao utilizador o caminho onde será guardado o ficheiro. * Fecha o ficheiro RFP actual caso exista e faz um reset ao conteudo da tabela, mostrando de * seguida o conteudo do novo ficheiro RFP. * * <p>É lançado uma excepção caso seja impossivel criar o ficheiro na directoria de destino. * * @param evt */ private void jMenuItem14ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem14ActionPerformed try { final JFileChooser fc = new JFileChooser(); int returnVal = fc.showSaveDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File dir = fc.getCurrentDirectory(); File file = fc.getSelectedFile(); if (rfpFile != null && !rfpFile.isClosed()) rfpFile.closeRFP(); this.resetTable(); this.resetVariables(); rfpFile = new RFPBinaryFile(file.getName(), dir.getPath()); rfpFile.openRFP(); rfpFile.generateEmptyFile(); rfpFile.readContents(); nativePath = dir.getPath(); this.showRFPContents(); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossivel criar ficheiro rfp.", "Novo Ficheiro RFP", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem14ActionPerformed
/** * Accionado quando se faz clique no botao para abrir um ficheiro RFP Permite selecionar um * ficheiro rfp escolhido pelo utilizador. Fecha o ficheiro actual caso este exista e faz um reset * ao conteu do actual da tabela, mostrando de seguida os novos conteudos do ficheiro escolhido. * * <p>É lançado uma excepção caso seja feito um duplo clique sem selecção. * * @param evt */ private void jMenuItem2ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem2ActionPerformed try { final JFileChooser fc = new JFileChooser(); RFPFileFilter filter = new RFPFileFilter(); fc.addChoosableFileFilter(filter); int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); File dir = fc.getCurrentDirectory(); // fechar o ficheiro actual if (rfpFile != null && !rfpFile.isClosed()) rfpFile.closeRFP(); resetTable(); resetVariables(); rfpFile = new RFPBinaryFile(file.getName(), dir.getPath()); rfpFile.openRFP(); rfpFile.readContents(); nativePath = dir.getPath(); showRFPContents(); } } catch (Exception e) { JOptionPane.showMessageDialog( null, "Impossivel abrir o ficheiro rfp.", "Abrir Ficheiro RFP", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem2ActionPerformed
/** * Mostra o conteudo do ficheiro RFP para a directoria actual. Faz uma pesquisa pelas pastas e * ficheiros que estão dentro da directoria actual. */ public void showRFPContents() { javax.swing.table.DefaultTableModel model = new javax.swing.table.DefaultTableModel(); // contar a quantidade de linhas int rows = rfpFile.countDirFilesAtParent(currDirectoryId); model.setNumRows(rows); model.setColumnCount(3); model.setColumnIdentifiers(new String[] {"Nome", "Tamanho", "CRC"}); int rowCount = 0; for (RFPDirectoryHeader dir : rfpFile.getDirectoryList()) { if (dir.getParentId() == currDirectoryId) { // model.setValueAt("", rowCount, 0); model.setValueAt(dir, rowCount, 0); model.setValueAt("", rowCount, 1); model.setValueAt("", rowCount, 2); rowCount++; } } for (RFPFileHeader file : rfpFile.getFileList()) { if (file.getDirectoryId() == currDirectoryId) { model.setValueAt(file, rowCount, 0); model.setValueAt(file.getSize(), rowCount, 1); // converter o CRC para uppercase e hexadecimal model.setValueAt(Integer.toHexString(file.getCrc32()).toUpperCase(), rowCount, 2); rowCount++; } } this.jTable1.setModel(model); }
/** * Accionado quando se faz clique no botao para gerar um ficheiro RFP de testes vazio. * * <p>É lançado uma excepção caso seja impossivel gerar o ficheiro na directoria actual. * * @param evt */ private void jMenuItem16ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem16ActionPerformed try { RFPBinaryFile rfp = new RFPBinaryFile("teste.rfp", ""); rfp.generateEmptyFile(); } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossivel gerar ficheiro rfp.", "Gerar Ficheiro RFP", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem16ActionPerformed
/** * Accionado quando se faz clique no botao para extrair uma directoria do ficheiro RFP. * * <p>Permite extrair uma directoria do ficheiro RFP na pasta de destino escolhida pelo * utilizador. * * <p>Se o objecto selecionado for uma directoria, irá então ser extraido o conteúdo dessa mesma * directoria. * * <p>É lançado uma excepção caso seja impossivel extrair os conteúdos da directoria selecionada. * * @param evt */ private void jMenuItem11ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem11ActionPerformed try { // verificar a seleccão int row = jTable1.getSelectedRow(); Object obj = jTable1.getModel().getValueAt(row, 0); if (obj instanceof RFPDirectoryHeader) { final JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File dir = fc.getCurrentDirectory(); File dest = fc.getSelectedFile(); rfpFile.extractAll(((RFPDirectoryHeader) obj).getId(), dest.getPath()); } } else { JOptionPane.showMessageDialog( null, "Impossível extrair directoria.", "Extrair Directoria", JOptionPane.ERROR_MESSAGE); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossível extrair directoria.", "Extrair Directoria", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem11ActionPerformed
/** * Accionado quando se faz clique no botao para remover uma directoria. * * <p>Permite remover uma directoria e todo o seu conteudo. A remoção só será possivel caso o * objecto selecionado seja uma directoria. * * <p>É lançado uma excepção caso a eliminação falhe. * * @param evt */ private void jMenuItem9ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem9ActionPerformed try { // verificar a seleccão int row = jTable1.getSelectedRow(); Object obj = jTable1.getModel().getValueAt(row, 0); if (obj instanceof RFPDirectoryHeader) { rfpFile.removeDirectory(((RFPDirectoryHeader) obj).getId()); showRFPContents(); } else { JOptionPane.showMessageDialog( null, "Impossível Excluir Directoria.", "Exclusão de Directoria", JOptionPane.ERROR_MESSAGE); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossível Excluir Directoria.", "Exclusão de Directoria", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem9ActionPerformed
/** * Accionado quando se faz clique no botao para testar a integridade do ficheiro RFP. * * <p>É lançado uma excepção caso a integridade falhe. * * @param evt */ private void jMenuItem13ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem13ActionPerformed try { rfpFile.testIntegrity(); } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Corrupção detectada.", "Falha no Teste de Integridade", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem13ActionPerformed
/** * Accionado quando se faz clique no botao para fechar um ficheiro RFP Fecha o ficheiro RFP * actual, limpando o conteudo da tabela. * * <p>É lançado uma excepção caso seja feito um duplo clique sem selecção. * * @param evt */ private void jMenuItem3ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem3ActionPerformed try { rfpFile.closeRFP(); resetVariables(); resetTable(); } catch (IOException ex) { JOptionPane.showMessageDialog( null, "Impossivel fechar o ficheiro rfp.", "Fechar Ficheiro RFP", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem3ActionPerformed
/** * Accionado quando se faz clique no botao para adicionar um ficheiro ao ficheiro RFP. Permite * adicionar um ficheiro escolhido pelo utilizador.. * * <p>É lançado uma excepção caso seja impossivel adicionar o ficheiro. * * @param evt */ private void jMenuItem4ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem4ActionPerformed try { final JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); File dir = fc.getCurrentDirectory(); rfpFile.addFile(file.getName(), dir.getPath(), RFPBinaryFile.RFP_NO_FLAG); showRFPContents(); } } catch (Exception e) { JOptionPane.showMessageDialog( null, "Impossível adicionar ficheiro.", "Adicionar Ficheiro", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem4ActionPerformed
/** * Accionado quando se faz clique no botao para criar uma directoria. * * <p>Cria uma nova pasta na directoria actual. Se não for introduzido um nome, será mostrado uma * mensagem de erro. * * <p>É lançado uma excepção caso não seja possivel criar a directoria. * * @param evt */ private void jMenuItem10ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem10ActionPerformed try { String input = JOptionPane.showInputDialog("Nome do directorio"); if (input.length() > 0) { rfpFile.makeDirectory(this.currDirectoryId, input); this.showRFPContents(); } else { JOptionPane.showMessageDialog( null, "Nome de directoria invalida", "Adicionar Directoria", JOptionPane.INFORMATION_MESSAGE); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossível Criar Directoria.", "Criação de Directoria", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem10ActionPerformed
/** * Accionado quando se faz clique no botao para extrair todos os ficheiros. * * <p>Permite extrair todo o conteudo do ficheiro rfp para a directoria selecionada pelo * utilizador. * * <p>É lançado uma excepção caso a extracção falhe. * * @param evt */ private void jMenuItem7ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem7ActionPerformed try { // verificar a seleccão final JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File dir = fc.getCurrentDirectory(); File dest = fc.getSelectedFile(); rfpFile.extractAll(0, dest.getPath()); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossivel extrair todos os ficheiros.", "Extrair Todos Os Ficheiros", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem7ActionPerformed
/** * Accionado quando se faz duplo clique com o rato na tabela. Activa o botao que permite retornar * a pasta anterior e se o objecto selecionado for uma pasta, muda os conteudos da tabela para o * conteudo da nova pasta. * * <p>O duplo clique só é valido caso o objecto selecionado seja uma directoria. * * <p>É lançado uma excepção caso seja feito um duplo clique sem selecção. * * @param evt */ private void mouseClicked(java.awt.event.MouseEvent evt) { // GEN-FIRST:event_mouseClicked if (evt.getClickCount() == 2) { // clique duplo try { int row = jTable1.getSelectedRow(); Object obj = jTable1.getModel().getValueAt(row, 0); if (obj instanceof RFPDirectoryHeader) { upDir.setEnabled(true); this.resetTable(); this.currDirectoryId = ((RFPDirectoryHeader) obj).getId(); rfpFile.setCurrDirectory(currDirectoryId); showRFPContents(); } } catch (Exception ex) { } } } // GEN-LAST:event_mouseClicked
/** * Accionado quando se faz clique no botao para visualizar um ficheiro * * <p>É lançado uma excepção caso a visualizacao falhe. * * @param evt */ private void jMenuItem12ActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jMenuItem12ActionPerformed // TODO add your handling code here: try { int row = jTable1.getSelectedRow(); Object obj = jTable1.getModel().getValueAt(row, 0); if (obj instanceof RFPFileHeader) { rfpFile.showFileContent(((RFPFileHeader) obj).getFilenameId()); } else { JOptionPane.showMessageDialog( null, "Impossivel visualizar o ficheiro", "Falha ao visualizar ficheiro", JOptionPane.ERROR_MESSAGE); } } catch (Exception ex) { JOptionPane.showMessageDialog( null, "Impossivel visualizar o ficheiro", "Falha ao visualizar ficheiro", JOptionPane.ERROR_MESSAGE); } } // GEN-LAST:event_jMenuItem12ActionPerformed