3 import java.awt.Dimension;
\r
4 import java.awt.event.ActionEvent;
\r
5 import java.awt.event.ActionListener;
\r
6 import java.util.ArrayList;
\r
8 import javax.swing.JButton;
\r
9 import javax.swing.JDialog;
\r
10 import javax.swing.JPanel;
\r
11 import javax.swing.JScrollPane;
\r
12 import javax.swing.ListSelectionModel;
\r
13 import javax.swing.ScrollPaneConstants;
\r
14 import javax.swing.SpringLayout;
\r
15 import javax.swing.table.DefaultTableModel;
\r
18 public class JListSortDialog extends JDialog {
\r
20 private static final long serialVersionUID = 1L;
\r
22 private boolean reg = false;
\r
24 private ArrayList<String> rowData = null;
\r
26 private JPanel jpan = null;
\r
27 private JButton jbtn_update = null;
\r
28 private JButton jbtn_cancel = null;
\r
29 private JButton jbtn_sort = null;
\r
30 private JButton jbtn_remove = null;
\r
31 private JButton jbtn_up = null;
\r
32 private JButton jbtn_down = null;
\r
34 private JScrollPane jscr_entries = null;
\r
35 private JNETable jtbl_entries = null;
\r
41 public JListSortDialog(String wTitle, ArrayList<String> oList) {
\r
47 this.setModal(true);
\r
48 this.setTitle(wTitle);
\r
49 this.setContentPane(getJPan());
\r
51 // タイトルバーの高さも考慮する必要がある
\r
52 Dimension d = jpan.getPreferredSize();
\r
54 this.setPreferredSize(new Dimension(
\r
55 d.width+(this.getInsets().left+this.getInsets().right),
\r
56 d.height+(this.getInsets().top+this.getInsets().bottom)));
\r
57 this.setResizable(false);
\r
64 public boolean isRegistered() { return reg; }
\r
70 private JPanel getJPan() {
\r
73 jpan = new JPanel();
\r
74 jpan.setLayout(new SpringLayout());
\r
78 CommonSwingUtils.putComponentOn(jpan, getJScr_entries(), 400, 500, 10, y);
\r
80 CommonSwingUtils.putComponentOn(jpan, getJBtn_sort("ソート"), 100, 25, 10+400+10, y+500-(10+25)*8);
\r
82 CommonSwingUtils.putComponentOn(jpan, getJBtn_remove("削除"), 100, 25, 10+400+10, y+500-(10+25)*4);
\r
84 CommonSwingUtils.putComponentOn(jpan, getJBtn_up("上へ"), 100, 25, 10+400+10, y+500-(10+25)*2);
\r
85 CommonSwingUtils.putComponentOn(jpan, getJBtn_down("下へ"), 100, 25, 10+400+10, y+500-(10+25)*1);
\r
89 CommonSwingUtils.putComponentOn(jpan, getJBtn_update("更新"), 100, 25, 10+20, y);
\r
90 CommonSwingUtils.putComponentOn(jpan, getJBtn_cancel("キャンセル"), 100, 25, 10+400-(100+20), y);
\r
94 Dimension d = new Dimension(530,y);
\r
95 jpan.setPreferredSize(d);
\r
101 private JScrollPane getJScr_entries() {
\r
102 if (jscr_entries == null) {
\r
103 jscr_entries = new JScrollPane();
\r
104 jscr_entries.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
\r
105 jscr_entries.getVerticalScrollBar().setUnitIncrement(25);
\r
106 jscr_entries.setViewportView(getJTbl_entries());
\r
108 return jscr_entries;
\r
110 private JNETable getJTbl_entries() {
\r
111 if (jtbl_entries == null) {
\r
112 String[] colname = { "アイテム" };
\r
113 DefaultTableModel model = new DefaultTableModel(colname,0);
\r
114 jtbl_entries = new JNETable(model,false) {
\r
116 private static final long serialVersionUID = 1L;
\r
119 public Object getValueAt(int row, int column) {
\r
120 return rowData.get(row);
\r
123 public int getRowCount() {
\r
124 return rowData.size();
\r
127 jtbl_entries.getTableHeader().setReorderingAllowed(false);
\r
129 // 本来ならコンストラクタで指定できるべきであったが
\r
130 jtbl_entries.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
\r
132 return jtbl_entries;
\r
136 private JButton getJBtn_sort(String s) {
\r
137 if (jbtn_sort == null) {
\r
138 jbtn_sort = new JButton(s);
\r
139 jbtn_sort.addActionListener(new ActionListener() {
\r
141 public void actionPerformed(ActionEvent e) {
\r
142 ArrayList<String> tmpData = new ArrayList<String>();
\r
143 for ( String data : rowData ) {
\r
145 for ( ; index<tmpData.size(); index++ ) {
\r
146 String tmp = tmpData.get(index);
\r
147 if ( tmp.compareTo(data) > 0 ) {
\r
151 tmpData.add(index,data);
\r
155 for ( String tmp : tmpData ) {
\r
159 ((DefaultTableModel) jtbl_entries.getModel()).fireTableDataChanged();
\r
167 private JButton getJBtn_remove(String s) {
\r
168 if (jbtn_remove == null) {
\r
169 jbtn_remove = new JButton(s);
\r
170 jbtn_remove.addActionListener(new ActionListener() {
\r
172 public void actionPerformed(ActionEvent e) {
\r
173 int vrow = jtbl_entries.getSelectedRow();
\r
174 for ( int i=0; i<jtbl_entries.getSelectedRowCount(); i++ ) {
\r
175 rowData.remove(vrow);
\r
177 ((DefaultTableModel) jtbl_entries.getModel()).fireTableDataChanged();
\r
181 return jbtn_remove;
\r
185 private JButton getJBtn_up(String s) {
\r
186 if (jbtn_up == null) {
\r
187 jbtn_up = new JButton(s);
\r
188 jbtn_up.addActionListener(new ActionListener() {
\r
190 public void actionPerformed(ActionEvent e) {
\r
191 int vrow = jtbl_entries.getSelectedRow();
\r
192 int cnt = jtbl_entries.getSelectedRowCount();
\r
194 String a = rowData.get(vrow-1);
\r
195 for ( int i=0; i<cnt; i++ ) {
\r
196 rowData.set(vrow+i-1,rowData.get(vrow+i));
\r
198 rowData.set(vrow+cnt-1,a);
\r
199 ((DefaultTableModel) jtbl_entries.getModel()).fireTableDataChanged();
\r
200 jtbl_entries.setRowSelectionInterval(vrow-1, vrow-1+(cnt-1));
\r
207 private JButton getJBtn_down(String s) {
\r
208 if (jbtn_down == null) {
\r
209 jbtn_down = new JButton(s);
\r
210 jbtn_down.addActionListener(new ActionListener() {
\r
212 public void actionPerformed(ActionEvent e) {
\r
213 int vrow = jtbl_entries.getSelectedRow();
\r
214 int cnt = jtbl_entries.getSelectedRowCount();
\r
215 if ((vrow+cnt-1) <= jtbl_entries.getRowCount()-2) {
\r
216 String a = rowData.get(vrow+cnt);
\r
217 for ( int i=cnt-1; i>=0; i-- ) {
\r
218 rowData.set(vrow+i+1,rowData.get(vrow+i));
\r
220 rowData.set(vrow,a);
\r
221 ((DefaultTableModel) jtbl_entries.getModel()).fireTableDataChanged();
\r
222 jtbl_entries.setRowSelectionInterval(vrow+1, vrow+1+(cnt-1));
\r
231 private JButton getJBtn_update(String s) {
\r
232 if (jbtn_update == null) {
\r
233 jbtn_update = new JButton(s);
\r
234 jbtn_update.addActionListener(new ActionListener() {
\r
236 public void actionPerformed(ActionEvent e) {
\r
242 return jbtn_update;
\r
244 private JButton getJBtn_cancel(String s) {
\r
245 if (jbtn_cancel == null) {
\r
246 jbtn_cancel = new JButton(s);
\r
247 jbtn_cancel.addActionListener(new ActionListener() {
\r
249 public void actionPerformed(ActionEvent e) {
\r
255 return jbtn_cancel;
\r