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 | } |