OSDN Git Service

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