20 package net.sf.gridarta.gui.dialog.browsearchetypes;
22 import java.awt.BorderLayout;
23 import java.awt.Component;
24 import java.awt.Dimension;
25 import java.awt.event.ItemEvent;
26 import java.awt.event.ItemListener;
27 import java.awt.event.MouseEvent;
28 import java.awt.event.MouseListener;
30 import java.io.IOException;
31 import java.util.Collection;
32 import java.util.TreeSet;
33 import javax.swing.BoxLayout;
34 import javax.swing.DefaultComboBoxModel;
35 import javax.swing.ImageIcon;
36 import javax.swing.JButton;
37 import javax.swing.JComboBox;
38 import javax.swing.JDialog;
39 import javax.swing.JFileChooser;
40 import javax.swing.JOptionPane;
41 import javax.swing.JPanel;
42 import javax.swing.JScrollPane;
43 import javax.swing.JTable;
44 import javax.swing.ListSelectionModel;
45 import javax.swing.ScrollPaneConstants;
46 import javax.swing.SwingUtilities;
47 import javax.swing.WindowConstants;
48 import javax.swing.event.ListSelectionEvent;
49 import javax.swing.event.ListSelectionListener;
50 import javax.swing.table.JTableHeader;
51 import javax.swing.table.TableColumnModel;
62 import net.
sf.japi.swing.action.ActionBuilder;
63 import net.
sf.japi.swing.action.ActionBuilderFactory;
64 import net.
sf.japi.swing.action.ActionMethod;
65 import org.jetbrains.annotations.NotNull;
82 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
146 private final JFileChooser
chooser =
new JFileChooser();
159 public BrowseArchetypesDialog(@NotNull
final Component parentComponent, @NotNull
final ArchetypeChooserControl<G, A, R> archetypeChooserControl, @NotNull
final ObjectChooser<G, A, R> objectChooser, @NotNull
final ArchetypeSet<G, A, R> archetypeSet, @NotNull
final ImageIcon closingIcon) {
177 final ListSelectionListener listSelectionListener =
new ListSelectionListener() {
180 public void valueChanged(@NotNull
final ListSelectionEvent e) {
185 archetypesTable.getSelectionModel().addListSelectionListener(listSelectionListener);
187 tableHeader.setReorderingAllowed(
true);
189 tableHeader.setDefaultRenderer(renderer);
190 final MouseListener mouseListener =
new MouseListener() {
195 private boolean pressed;
198 public void mouseClicked(@NotNull
final MouseEvent e) {
201 if (SwingUtilities.isLeftMouseButton(e)) {
203 final int viewColumn = columnModel.getColumnIndexAtX(e.getX());
204 final int columnIndex =
archetypesTable.convertColumnIndexToModel(viewColumn);
205 final int offsetX = renderer.
getX(columnIndex);
207 for (
int i = 0; i < columnIndex; i++) {
208 cx += columnModel.getColumn(i).getWidth();
210 final int ex = e.getX();
211 if (offsetX >= 0 && ex - cx >= offsetX) {
213 if (attribute !=
null) {
224 public void mousePressed(@NotNull
final MouseEvent e) {
229 public void mouseReleased(@NotNull
final MouseEvent e) {
233 public void mouseEntered(@NotNull
final MouseEvent e) {
237 public void mouseExited(@NotNull
final MouseEvent e) {
241 tableHeader.addMouseListener(mouseListener);
244 final ItemListener itemListener =
new ItemListener() {
247 public void itemStateChanged(@NotNull
final ItemEvent e) {
255 final JPanel addAttributePanel =
new JPanel();
256 addAttributePanel.setLayout(
new BoxLayout(addAttributePanel, BoxLayout.LINE_AXIS));
259 addAttributePanel.add(
new JButton(
ACTION_BUILDER.createAction(
false,
"browseArchetypesSave",
this)));
260 setOptions(
new Object[] { addAttributePanel });
266 dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
268 dialog.setResizable(
true);
270 dialog.setMinimumSize(
new Dimension(200, 200));
271 dialog.setSize(
new Dimension(800, 600));
272 dialog.setLocationRelativeTo(parentComponent);
294 final JPanel mainPanel =
new JPanel(
new BorderLayout());
299 scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
300 scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
302 mainPanel.add(scrollPane, BorderLayout.CENTER);
319 chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
320 chooser.setMultiSelectionEnabled(
false);
322 final int returnVal =
chooser.showSaveDialog(
this);
323 if (returnVal == JFileChooser.APPROVE_OPTION) {
324 File file =
chooser.getSelectedFile();
327 file =
new File(file.getParentFile(), file.getName() +
".csv");
330 }
catch (
final IOException ex) {
331 ACTION_BUILDER.showMessageDialog(
this,
"browseArchetypesSaveIOException", file, ex.getMessage());
343 if (attributeName ==
null) {