net.sf.webphotos.action.AcaoAdicionarFoto.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.webphotos.action.AcaoAdicionarFoto.java

Source

/**
 * 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());
        }
    }
}