Coverage Report - net.sf.webphotos.action.AcaoAdicionarFoto
 
Classes in this File Line Coverage Branch Coverage Complexity
AcaoAdicionarFoto
100%
30/30
50%
4/8
3
 
 1  
 /**
 2  
  * Copyright 2008 WebPhotos
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *      http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package net.sf.webphotos.action;
 17  
 
 18  
 import java.awt.event.ActionEvent;
 19  
 import java.io.File;
 20  
 import javax.swing.AbstractAction;
 21  
 import javax.swing.JComboBox;
 22  
 import javax.swing.JFileChooser;
 23  
 import javax.swing.JTable;
 24  
 import net.sf.webphotos.Album;
 25  
 import net.sf.webphotos.gui.PainelWebFotos;
 26  
 import net.sf.webphotos.gui.util.ImageFilter;
 27  
 import net.sf.webphotos.gui.util.TableModelFoto;
 28  
 import net.sf.webphotos.gui.util.TableSorter;
 29  
 import net.sf.webphotos.util.Util;
 30  
 import org.apache.commons.configuration.Configuration;
 31  
 
 32  
 /**
 33  
  * Adiciona novas fotos. Mantém variáveis do diretório, tabela, largura da
 34  
  * coluna, título da caixa de diálogo e lista de créditos.
 35  
  */
 36  
 public class AcaoAdicionarFoto extends AbstractAction {
 37  
 
 38  
     private static final long serialVersionUID = 8331561928830049243L;
 39  
     private static File diretorioInicial;
 40  
     private JFileChooser fileChooser;
 41  
     private JTable tbFotos;
 42  
     private String larguraColunasFotos;
 43  
     private String titulo;
 44  
     private JComboBox lstCreditosTabelaFotos;
 45  
 
 46  
     /**
 47  
      * Construtor da classe. Recebe 3 parâmetros. A tabela de fotos, um combobox
 48  
      * e um título para a caixa de diálogo. Inicia um objeto de
 49  
      * {@link net.sf.webphotos.util.Config Config} para receber os dados do
 50  
      * Folder. Seta os valores do diretório inicial, tabela de fotos, creditos,
 51  
      * largura da coluna e título.
 52  
      *
 53  
      * @param tabela Tabela das fotos.
 54  
      * @param combo Lista.
 55  
      * @param tituloDialogo Título da caixa de diálogo.
 56  
      */
 57  6
     public AcaoAdicionarFoto(JTable tabela, JComboBox combo, String tituloDialogo) {
 58  6
         Configuration c = Util.getConfig();
 59  6
         diretorioInicial = Util.getFolder("diretorioAdicionarFotos");
 60  6
         tbFotos = tabela;
 61  6
         lstCreditosTabelaFotos = combo;
 62  6
         larguraColunasFotos = c.getString("colunas2");
 63  6
         titulo = tituloDialogo;
 64  6
     }
 65  
 
 66  
     /**
 67  
      * Método responsável pela ação de inserção das fotos. Inicia um objeto
 68  
      * JFileChooser para a escolha do arquivo e faz a configuração. Testa se o
 69  
      * diretório inicial é válido e depois faz a implantação da foto. Atualiza a
 70  
      * tabela, ajusta as colunas, aciona o flag de
 71  
      * {@link net.sf.webphotos.gui.PainelWebFotos#alteracaoDetectada() alteracaoDetectada}()
 72  
      * e armazena o último diretório lido.
 73  
      *
 74  
      * @param e Evento da ação de adição de foto.
 75  
      */
 76  
     @Override
 77  
     public void actionPerformed(ActionEvent e) {
 78  6
         fileChooser = new JFileChooser();
 79  6
         fileChooser.setAcceptAllFileFilterUsed(false);
 80  6
         fileChooser.setFileFilter(new ImageFilter());
 81  6
         fileChooser.setDialogTitle(titulo);
 82  6
         fileChooser.setApproveButtonText("Ok");
 83  6
         fileChooser.setApproveButtonToolTipText("Adiciona as fotos selecionadas ao álbum");
 84  6
         fileChooser.setMultiSelectionEnabled(true);
 85  
 
 86  6
         if (diretorioInicial != null && diretorioInicial.isDirectory()) {
 87  6
             fileChooser.setCurrentDirectory(diretorioInicial);
 88  
         }
 89  
 
 90  6
         int retornoFc = fileChooser.showOpenDialog(null);
 91  
 
 92  6
         if (retornoFc == JFileChooser.APPROVE_OPTION && fileChooser.getSelectedFiles().length > 0) {
 93  6
             Album.getAlbum().adicionarFotos(fileChooser.getSelectedFiles());
 94  
 
 95  
             /**
 96  
              * aqui o codigo que atualiza a tabela
 97  
              */
 98  6
             TableModelFoto.getModel().update();
 99  6
             TableModelFoto.getModel().fireTableDataChanged();
 100  6
             tbFotos.setModel(new TableSorter(TableModelFoto.getModel(), tbFotos.getTableHeader()));
 101  6
             tbFotos.getColumnModel().getColumn(2).setCellEditor(new javax.swing.DefaultCellEditor(lstCreditosTabelaFotos));
 102  
 
 103  
             /**
 104  
              * ajusta colunas
 105  
              */
 106  6
             Util.ajustaLargura(tbFotos, larguraColunasFotos);
 107  6
             tbFotos.repaint();
 108  
 
 109  
             /**
 110  
              * liga o flag de alteração realiza
 111  
              */
 112  6
             PainelWebFotos.alteracaoDetectada();
 113  
 
 114  
             /**
 115  
              * armazena o último diretório lido
 116  
              */
 117  6
             diretorioInicial = null;
 118  6
             diretorioInicial = new File(fileChooser.getSelectedFiles()[0].getParent());
 119  
         }
 120  6
     }
 121  
 }