Java tutorial
/** * Copyright 2008 WebPhotos * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.sf.webphotos.action; import java.awt.event.ActionEvent; import java.io.File; import javax.swing.AbstractAction; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JTable; import net.sf.webphotos.Album; import net.sf.webphotos.gui.PainelWebFotos; import net.sf.webphotos.gui.util.ImageFilter; import net.sf.webphotos.gui.util.TableModelFoto; import net.sf.webphotos.gui.util.TableSorter; import net.sf.webphotos.util.Util; import org.apache.commons.configuration.Configuration; /** * Adiciona novas fotos. Mantm variveis do diretrio, tabela, largura da * coluna, ttulo da caixa de dilogo e lista de crditos. */ public class AcaoAdicionarFoto extends AbstractAction { private static final long serialVersionUID = 8331561928830049243L; private static File diretorioInicial; private JFileChooser fileChooser; private final JTable tbFotos; private final String larguraColunasFotos; private final String titulo; private final JComboBox lstCreditosTabelaFotos; /** * Construtor da classe. Recebe 3 parmetros. A tabela de fotos, um combobox * e um ttulo para a caixa de dilogo. Inicia um objeto de * {@link net.sf.webphotos.util.Config Config} para receber os dados do * Folder. Seta os valores do diretrio inicial, tabela de fotos, creditos, * largura da coluna e ttulo. * * @param tabela Tabela das fotos. * @param combo Lista. * @param tituloDialogo Ttulo da caixa de dilogo. */ public AcaoAdicionarFoto(JTable tabela, JComboBox combo, String tituloDialogo) { Configuration c = Util.getConfig(); diretorioInicial = Util.getFolder("diretorioAdicionarFotos"); tbFotos = tabela; lstCreditosTabelaFotos = combo; larguraColunasFotos = c.getString("colunas2"); titulo = tituloDialogo; } /** * Mtodo responsvel pela ao de insero das fotos. Inicia um objeto * JFileChooser para a escolha do arquivo e faz a configurao. Testa se o * diretrio inicial vlido e depois faz a implantao da foto. Atualiza a * tabela, ajusta as colunas, aciona o flag de * {@link net.sf.webphotos.gui.PainelWebFotos#alteracaoDetectada() alteracaoDetectada}() * e armazena o ltimo diretrio lido. * * @param e Evento da ao de adio de foto. */ @Override public void actionPerformed(ActionEvent e) { fileChooser = new JFileChooser(); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.setFileFilter(new ImageFilter()); fileChooser.setDialogTitle(titulo); fileChooser.setApproveButtonText("Ok"); fileChooser.setApproveButtonToolTipText("Adiciona as fotos selecionadas ao lbum"); fileChooser.setMultiSelectionEnabled(true); if (diretorioInicial != null && diretorioInicial.isDirectory()) { fileChooser.setCurrentDirectory(diretorioInicial); } int retornoFc = fileChooser.showOpenDialog(null); if (retornoFc == JFileChooser.APPROVE_OPTION && fileChooser.getSelectedFiles().length > 0) { Album.getAlbum().adicionarFotos(fileChooser.getSelectedFiles()); /** * aqui o codigo que atualiza a tabela */ TableModelFoto.getModel().update(); TableModelFoto.getModel().fireTableDataChanged(); tbFotos.setModel(new TableSorter(TableModelFoto.getModel(), tbFotos.getTableHeader())); tbFotos.getColumnModel().getColumn(2) .setCellEditor(new javax.swing.DefaultCellEditor(lstCreditosTabelaFotos)); /** * ajusta colunas */ Util.ajustaLargura(tbFotos, larguraColunasFotos); tbFotos.repaint(); /** * liga o flag de alterao realiza */ PainelWebFotos.alteracaoDetectada(); /** * armazena o ltimo diretrio lido */ diretorioInicial = null; diretorioInicial = new File(fileChooser.getSelectedFiles()[0].getParent()); } } }