ca.sqlpower.matchmaker.swingui.DeleteFolderDialog.java Source code

Java tutorial

Introduction

Here is the source code for ca.sqlpower.matchmaker.swingui.DeleteFolderDialog.java

Source

/*
 * Copyright (c) 2008, SQL Power Group Inc.
 *
 * This file is part of DQguru
 *
 * DQguru is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * DQguru is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
 */

package ca.sqlpower.matchmaker.swingui;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.border.EmptyBorder;

import ca.sqlpower.matchmaker.PlFolder;
import ca.sqlpower.matchmaker.Project;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class DeleteFolderDialog {

    private PlFolder folder;
    private JDialog dialog;
    private JFrame parent;
    private JRadioButton deleteAll;
    private JRadioButton moveContent;
    private ButtonGroup group;
    private JComboBox moveTo;
    private JButton okButton;
    private JButton cancelButton;

    private MatchMakerSwingSession session;

    public DeleteFolderDialog(PlFolder folder, JFrame parent, MatchMakerSwingSession session) {
        this.folder = folder;
        this.parent = parent;
        this.session = session;
    }

    public void buildUI() {
        FormLayout layout = new FormLayout("4dlu, pref, 4dlu", "4dlu,pref,4dlu,pref,4dlu, pref,4dlu,pref,4dlu");
        //1    2    3    4    5     6    7   8    9 
        CellConstraints cc = new CellConstraints();
        PanelBuilder pb = new PanelBuilder(layout);
        deleteAll = new JRadioButton("Delete all content");
        moveContent = new JRadioButton("Move to:");
        // default to move the contents
        moveContent.setSelected(true);
        moveTo = new JComboBox();
        List<PlFolder> folders = new ArrayList<PlFolder>();
        folders.addAll(session.getCurrentFolderParent().getChildren(PlFolder.class));
        folders.remove(folder);
        moveTo.setModel(new DefaultComboBoxModel(folders.toArray()));
        moveTo.setRenderer(new MatchMakerObjectComboBoxCellRenderer());
        okButton = new JButton(okAction);
        cancelButton = new JButton(cancelAction);

        group = new ButtonGroup();
        group.add(deleteAll);
        group.add(moveContent);
        pb.add(deleteAll, cc.xy(2, 2));
        pb.add(moveContent, cc.xy(2, 4));
        pb.add(moveTo, cc.xy(2, 6));

        if (folders.size() == 0) {
            moveContent.setEnabled(false);
            moveTo.setEnabled(false);
            deleteAll.setSelected(true);
        }

        pb.add(ButtonBarFactory.buildOKCancelBar(okButton, cancelButton), cc.xy(2, 8));

        dialog = new JDialog(parent, "Delete " + folder.getName() + " folder");
        pb.setBorder(new EmptyBorder(10, 10, 10, 10));
        dialog.setContentPane(pb.getPanel());

    }

    public void setVisible(boolean isVisible) {
        if (isVisible) {
            dialog.pack();
            dialog.setLocationRelativeTo(parent);
            dialog.setVisible(true);
        } else {
            dialog.setVisible(false);
        }
    }

    private Action okAction = new AbstractAction("Ok") {

        public void actionPerformed(ActionEvent e) {
            if (moveContent.getModel().isSelected()) {
                PlFolder newFolder = (PlFolder) moveTo.getSelectedItem();
                while (folder.getChildren().size() > 0) {
                    Project m = (Project) folder.getChildren().get(0);
                    session.move(m, newFolder);
                }
                session.getCurrentFolderParent().deleteAndRemoveChild(folder);
            } else if (deleteAll.getModel().isSelected()) {
                session.getCurrentFolderParent().deleteAndRemoveChild(folder);
            }
            dialog.dispose();
        }

    };

    private Action cancelAction = new AbstractAction("Cancel") {
        public void actionPerformed(ActionEvent e) {
            dialog.dispose();
        }
    };

}