| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| TableModelFoto |
|
| 2.090909090909091;2,091 |
| 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.gui.util; | |
| 17 | ||
| 18 | import javax.swing.table.*; | |
| 19 | import net.sf.webphotos.Album; | |
| 20 | import net.sf.webphotos.PhotoDTO; | |
| 21 | import net.sf.webphotos.gui.PainelWebFotos; | |
| 22 | ||
| 23 | /** | |
| 24 | * Gera o modelo da tabela de fotos. | |
| 25 | */ | |
| 26 | public class TableModelFoto extends AbstractTableModel { | |
| 27 | ||
| 28 | private static final long serialVersionUID = -3797898104363613961L; | |
| 29 | 3 | private static final TableModelFoto instancia = new TableModelFoto(); |
| 30 | private Object[][] fotoTabela; | |
| 31 | private String[] fotoColunas; | |
| 32 | ||
| 33 | 3 | private TableModelFoto() { |
| 34 | 3 | } |
| 35 | ||
| 36 | /** | |
| 37 | * Retorna a instância da própria classe. | |
| 38 | * @return Retorna um TableModelFoto. | |
| 39 | */ | |
| 40 | public static TableModelFoto getModel() { | |
| 41 | 84 | return instancia; |
| 42 | } | |
| 43 | ||
| 44 | /** | |
| 45 | * Armazena os dados de fotos em duas variáveis da classe. | |
| 46 | * Na variável fotoTabela, as fotos e seus dados específicos. | |
| 47 | * E na variável fotoColunas somente os dados específicos. | |
| 48 | */ | |
| 49 | public void update() { | |
| 50 | 33 | fotoTabela = Album.getAlbum().getFotosArray(); |
| 51 | 33 | fotoColunas = Album.getAlbum().getFotosColunas(); |
| 52 | 33 | } |
| 53 | ||
| 54 | /** | |
| 55 | * Recebe um número referente a uma coluna e retorna o valor da coluna através do vetor fotoColunas. | |
| 56 | * @param column Número referente a coluna. | |
| 57 | * @return Retorna o valor contido na coluna. | |
| 58 | */ | |
| 59 | @Override | |
| 60 | public String getColumnName(int column) { | |
| 61 | 54 | return fotoColunas[column]; |
| 62 | } | |
| 63 | ||
| 64 | /** | |
| 65 | * Retorna o total de colunas, contando o número de posições no vetor fotoColunas. | |
| 66 | * @return Retorna o total de colunas. | |
| 67 | */ | |
| 68 | @Override | |
| 69 | public int getColumnCount() { | |
| 70 | 72 | if (fotoColunas == null) { |
| 71 | 0 | return 0; |
| 72 | } | |
| 73 | 72 | return fotoColunas.length; |
| 74 | } | |
| 75 | ||
| 76 | /** | |
| 77 | * Retorna o total de linhas, contando o número de posições no vetor fotoTabela. | |
| 78 | * @return Retorna o total de linhas. | |
| 79 | */ | |
| 80 | @Override | |
| 81 | public int getRowCount() { | |
| 82 | 222 | if (fotoTabela == null) { |
| 83 | 0 | return 0; |
| 84 | } | |
| 85 | 222 | return fotoTabela.length; |
| 86 | } | |
| 87 | ||
| 88 | /** | |
| 89 | * Busca um valor contido na matriz fotoTabela e retorna um Object. | |
| 90 | * Recebe como parâmetro um índice de linha e um de coluna para efetuar a procura. | |
| 91 | * @param line Número da linha. | |
| 92 | * @param column Número da coluna. | |
| 93 | * @return Retorna o valor encontrado em um Object. | |
| 94 | */ | |
| 95 | @Override | |
| 96 | public Object getValueAt(int line, int column) { | |
| 97 | 96 | return fotoTabela[line][column]; |
| 98 | } | |
| 99 | ||
| 100 | /** | |
| 101 | * Recebe um valor e os índices da matriz e seta esse valor na matriz fotoTabela. | |
| 102 | * Checa se a foto possui ID ou nome, depois testa se o valor é de legenda ou crédito e implanta na matriz fotoTabela. | |
| 103 | * @param value Valor a ser implantado. | |
| 104 | * @param line Número da linha. | |
| 105 | * @param column Número da coluna. | |
| 106 | */ | |
| 107 | @Override | |
| 108 | public void setValueAt(Object value, int line, int column) { | |
| 109 | // testar para verificar se fotoID é um número ou um nome de arquivo | |
| 110 | 6 | int fotoID = 0; |
| 111 | 6 | String nomeFoto = ""; |
| 112 | try { | |
| 113 | 6 | fotoID = Integer.parseInt(fotoTabela[line][0].toString()); |
| 114 | 6 | } catch (Exception e) { |
| 115 | 6 | nomeFoto = fotoTabela[line][0].toString(); |
| 116 | 0 | } |
| 117 | ||
| 118 | // Qual campo está editando ? | |
| 119 | 6 | if (column == 1) { |
| 120 | // usuário está editando coluna legenda | |
| 121 | // atualiza o modelo | |
| 122 | 6 | fotoTabela[line][column] = value; |
| 123 | // atualiza objeto foto | |
| 124 | 6 | if (fotoID > 0) { |
| 125 | 0 | Album.getAlbum().getFoto(fotoID).setLegenda((String) value); |
| 126 | } else { | |
| 127 | 6 | Album.getAlbum().getFoto(nomeFoto).setLegenda((String) value); |
| 128 | } | |
| 129 | // ajusta o texto da legenda | |
| 130 | 6 | PainelWebFotos.getTxtLegenda().setText((String) value); |
| 131 | 0 | } else if (column == 2) { |
| 132 | // usuário está editando coluna crédito (combobox) | |
| 133 | 0 | fotoTabela[line][column] = value; |
| 134 | 0 | if (fotoID > 0) { |
| 135 | 0 | Album.getAlbum().getFoto(fotoID).setCreditoNome((String) value); |
| 136 | } else { | |
| 137 | 0 | Album.getAlbum().getFoto(nomeFoto).setCreditoNome((String) value); |
| 138 | } | |
| 139 | 0 | int indice = PhotoDTO.getLstCreditosIndex((String) value); |
| 140 | // soma 1 ao indice, pois o primeiro value é espaço vazio | |
| 141 | //PainelWebFotos.getLstCreditos().setSelectedIndex(indice + 1); | |
| 142 | // FIXME : Retornar comportamento original com linha em branco | |
| 143 | 0 | PainelWebFotos.getLstCreditos().setSelectedIndex(indice); |
| 144 | } | |
| 145 | 6 | } |
| 146 | ||
| 147 | /** | |
| 148 | * Checa se o número de colunas é maior que zero e retorna <I>true</I>, caso contrário retorna <I>false</I>. | |
| 149 | * TODO: avaliar a funcionalidade desse método. | |
| 150 | * @param line Número da linha. | |
| 151 | * @param column Número da coluna. | |
| 152 | * @return Retorna um valor lógico. | |
| 153 | */ | |
| 154 | @Override | |
| 155 | public boolean isCellEditable(int line, int column) { | |
| 156 | 0 | if (column > 0) { |
| 157 | 0 | return true; |
| 158 | } | |
| 159 | 0 | return false; |
| 160 | } | |
| 161 | ||
| 162 | /** | |
| 163 | * Retorna a classe do objeto encontrado na matriz fotoTabela. | |
| 164 | * Busca a partir do valor do número da coluna recebido como parâmetro. | |
| 165 | * @param column Número da coluna. | |
| 166 | * @return Retorna uma classe. | |
| 167 | */ | |
| 168 | @Override | |
| 169 | public Class<? extends Object> getColumnClass(int column) { | |
| 170 | 36 | return fotoTabela[0][column].getClass(); |
| 171 | } | |
| 172 | ||
| 173 | @Override | |
| 174 | public Object clone() throws CloneNotSupportedException { | |
| 175 | 0 | throw new CloneNotSupportedException("Singleton Object"); |
| 176 | } | |
| 177 | } |