OSDN Git Service

32635fee2003c1e1b33add7362f5fab37c8edbc0
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / mds / OpenItemsAction.java
1 package jp.sourceforge.stigmata.ui.swing.mds;
2
3 /*
4  * $Id$
5  */
6
7 import java.awt.event.ActionEvent;
8
9 import javax.swing.AbstractAction;
10 import javax.swing.Icon;
11 import javax.swing.JOptionPane;
12 import javax.swing.JScrollPane;
13 import javax.swing.JTable;
14 import javax.swing.table.DefaultTableModel;
15
16 import jp.sourceforge.talisman.i18n.MessageManager;
17 import jp.sourceforge.talisman.mds.Item;
18 import jp.sourceforge.talisman.mds.ui.swing.ItemsOpenEvent;
19 import jp.sourceforge.talisman.mds.ui.swing.ItemsOpenListener;
20 import jp.sourceforge.talisman.mds.ui.swing.ItemsSelectionEvent;
21 import jp.sourceforge.talisman.mds.ui.swing.ItemsSelectionListener;
22 import jp.sourceforge.talisman.mds.ui.swing.MdsPane;
23
24 /**
25  * 
26  * @author Haruaki Tamada
27  * @version $Revision$
28  */
29 public class OpenItemsAction extends AbstractAction{
30     private static final long serialVersionUID = 5956900396146338537L;
31
32     private MdsPane mdsPane;
33     private MessageManager mm;
34     private boolean selectedItemFlag = false;
35
36     public OpenItemsAction(MdsPane initMdsPane, MessageManager initMm){
37         super(initMm.getMessages().get("openallitems.label"));
38
39         this.mdsPane = initMdsPane;
40         this.mm = initMm;
41         if(initMm.getMessages().hasValue("openitems.icon")){
42             Icon icon = initMm.getMessages().getIcon("openitems.icon");
43             putValue(SMALL_ICON, icon);
44         }
45         initMdsPane.addItemsSelectionListener(new ItemsSelectionListener(){
46             public void valueChanged(ItemsSelectionEvent e){
47                 Item[] items = mdsPane.getSelectedItems();
48                 selectedItemFlag = items.length != 0;
49                 if(selectedItemFlag){
50                     putValue(AbstractAction.NAME, mm.getMessages().get("openitems.label"));
51                 }
52                 else{
53                     putValue(AbstractAction.NAME, mm.getMessages().get("openallitems.label"));
54                 }
55             }
56         });
57         initMdsPane.addItemsOpenListener(new ItemsOpenListener(){
58             public void itemOpened(ItemsOpenEvent e){
59                 showItems(e.getItems());
60             }
61         });
62     }
63
64     public void actionPerformed(ActionEvent e){
65         Item[] items;
66         if(selectedItemFlag){
67             items = mdsPane.getSelectedItems();
68         }
69         else{
70             items = mdsPane.getItems();
71         }
72         if(items.length > 0){
73             showItems(items);
74         }
75     }
76
77     private void showItems(Item[] items){
78         DefaultTableModel model = new DefaultTableModel();
79         model.addColumn(mm.getMessages().get("openitems.namelabel"));
80         model.addColumn(mm.getMessages().get("openitems.xlabel"));
81         model.addColumn(mm.getMessages().get("openitems.ylabel"));
82
83         for(Item item : items){
84             Object[] values = new Object[3];
85             values[0] = item.getName();
86             values[1] = item.get(0);
87             values[2] = item.get(1);
88             model.addRow(values);
89         }
90         JTable table = new JTable(model);
91         JScrollPane scroll = new JScrollPane(
92             table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
93             JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
94         );
95
96         JOptionPane.showMessageDialog(
97             mdsPane, scroll, mm.getMessages().get("selected.items.title"),
98             JOptionPane.INFORMATION_MESSAGE
99         );
100     }
101 }