package jdepend.client.ui.command;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import jdepend.client.core.config.CommandConfMgr;
import jdepend.client.core.config.GroupConf;
import jdepend.client.ui.JDependCooper;
import jdepend.framework.exception.JDependException;
import jdepend.framework.util.BundleUtil;
/**
* The <code>GroupIngoreListSettingDialog</code> displays the about information.
*
* @author <b>Abner</b>
*
*/
public final class GroupIngoreListSettingDialog extends JDialog {
private JDependCooper frame;
private String currentGroup;
private JTextArea filteredPackages;
/**
* Constructs an <code>AboutDialog</code> with the specified parent frame.
*
* @param parent
* Parent frame.
*/
public GroupIngoreListSettingDialog(JDependCooper parent, String name) {
super(parent);
this.frame = parent;
this.currentGroup = name;
setTitle("增加组");
setResizable(false);
getContentPane().setLayout(new BorderLayout());
setSize(650, 380);
this.setLocationRelativeTo(null);// 窗口在屏幕中间显示
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JPanel content = new JPanel(new BorderLayout());
panel.add(BorderLayout.WEST, new JLabel("过滤列表:"));
filteredPackages = new JTextArea();
GroupConf group = null;
try {
group = CommandConfMgr.getInstance().getTheGroup(currentGroup);
} catch (JDependException e1) {
e1.printStackTrace();
}
if (group != null) {
StringBuilder filteredPackagesBuffer = new StringBuilder();
for (String filteredPackage : group.getFilteredPackages()) {
filteredPackagesBuffer.append(filteredPackage);
filteredPackagesBuffer.append("\n");
}
filteredPackages.setText(filteredPackagesBuffer.toString());
filteredPackages.setCaretPosition(0);
}
panel.add(new JScrollPane(filteredPackages));
content.add(BorderLayout.CENTER, panel);
JPanel buttonBar = new JPanel(new FlowLayout());
buttonBar.add(createSaveButton());
buttonBar.add(createCloseButton());
this.add(BorderLayout.CENTER, content);
this.add(BorderLayout.SOUTH, buttonBar);
}
/**
* Creates and returns a button with the specified label.
*
* @param label
* Button label.
* @return Button.
*/
private JButton createCloseButton() {
JButton button = new JButton(BundleUtil.getString(BundleUtil.Command_Close));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
return button;
}
private JButton createSaveButton() {
JButton button = new JButton(BundleUtil.getString(BundleUtil.Command_Save));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveIngoreList(e);
}
});
return button;
}
private void saveIngoreList(ActionEvent e) {
List<String> filteredPackageList = new ArrayList<String>();
for (String filteredPackage : filteredPackages.getText().split("\n")) {
filteredPackageList.add(filteredPackage);
}
try {
GroupConf group = CommandConfMgr.getInstance().getTheGroup(currentGroup);
group.setFilteredPackages(filteredPackageList);
CommandConfMgr.getInstance().updateGroups();
frame.getGroupPanel().refreshGroup();
dispose();
} catch (Exception ex) {
Component source = (Component) e.getSource();
JOptionPane.showMessageDialog(source, ex.getMessage(), "alert", JOptionPane.ERROR_MESSAGE);
}
}
}