示例#1
0
  /**
   * 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
示例#2
0
  /**
   * 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
示例#3
0
  /**
   * 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
示例#4
0
  /**
   * 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);
  }
示例#5
0
 /**
  * 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
示例#6
0
  /**
   * 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
示例#7
0
  /**
   * 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
示例#8
0
  /**
   * 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
示例#9
0
  /**
   * 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
示例#10
0
 /**
  * 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
示例#11
0
  /**
   * 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
示例#12
0
  /**
   * 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
示例#13
0
  /**
   * 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
示例#14
0
 /**
  * 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