/*
 * 作成日: 2007/12/22
 */
package asandatabasebrowser.action;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JOptionPane;

import net.sourceforge.swingx.jspread.JSpread;

import asandatabasebrowser.Global;
import asandatabasebrowser.AsanDatabaseBrowser;
import asandatabasebrowser.model.DbData;
import asandatabasebrowser.model.EditingRecord;
import asandatabasebrowser.view.DbTableFrame2;


public class RecordDeleteAction extends AbstractAction {
	DbTableFrame2 frame;
	public RecordDeleteAction(DbTableFrame2 frame) {
		super("RecordDelete");
		assert frame != null;
		this.frame = frame;
		putValue(SHORT_DESCRIPTION, "選択されたレコードを削除します");
		putValue(LONG_DESCRIPTION, "選択されたレコードを削除します");
		putValue(SMALL_ICON, Global.recordDeleteIcon);
	}
	public void actionPerformed(ActionEvent ev) {
		AsanDatabaseBrowser tools = AsanDatabaseBrowser.theApp;
		DbData data = frame.tableView.data;
		boolean[] sels = frame.tableView.getSheet().getSelectionArray(JSpread.ROW);
		// 選択されているか？
		boolean exist = false;
		for (int i=0; i<sels.length; i++) {
			if (sels[i]) {
				exist = true;
				break;
			}
		}
		if (! exist) {
			tools.showMessage(frame, 
					"レコードが選択されていません。", 
					null, JOptionPane.ERROR_MESSAGE);
			return;
		}
		// 編集中のレコードがあるか？
		for (int i=0; i<sels.length; i++) {
			if (sels[i] && data.getMode(i) != DbData.NONE) {
				tools.showMessage(frame, 
						"すでに編集中のレコードがあります。", 
						null, JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		// 編集状態にする
		for (int i=0; i<sels.length; i++) {
			if (sels[i]) {
				data.setRecord(i, new EditingRecord(DbData.DELETE, data.getRecord(i)));
			}
		}
		
//		int[] rows = frame.tableView.getSelectedRecordIndex();
//		if (rows.length == 0) {
//			tools.showMessage(frame, 
//					"レコードが選択されていません。", 
//					null, JOptionPane.ERROR_MESSAGE);
//			return;
//		}
//		// チェック
//		for (int i=0; i<rows.length; i++) {
//			if (data.getMode(rows[i]) != DbData.NONE) {
//				tools.showMessage(frame, 
//						"すでに編集中のレコードがあります。", 
//						null, JOptionPane.ERROR_MESSAGE);
//				return;
//			}
//		}
//		// 編集状態にする
//		for (int i=0; i<rows.length; i++) {
//			data.setRecord(rows[i], new EditingRecord(DbData.DELETE, data.getRecord(rows[i])));
//			//view.setHeaderValueAt(getValue(SMALL_ICON), JSpread.ROW, rows[i]);
//		}
		frame.setData(data);
		frame.updateActionState();
	}
}
