package windowsform;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import core.business.Service;
import java.awt.event.*;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ServiceChooseForAddMore extends JInternalFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JButton btnOk = new JButton();
JButton btnCancel = new JButton();
BorderLayout borderLayout2 = new BorderLayout();
Object[] columnNames = {"Select", "Service ID", "Service Name", "Amount"};
Object[][] dataEmpty = {{false, 0, "",0}};
DefaultTableModel model;
JTable tblService;
JInternalFrame owner;
public ServiceChooseForAddMore(JInternalFrame owner) {
try {
this.owner = owner;
jbInit();
this.setClosable(true);
this.setMaximizable(true);
this.setVisible(true);
this.setSize(350, 200);
this.setResizable(true);
loadAllService();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void loadAllService(){
try {
ResultSet rs= Service.getAllService();
int i = 0;
while(rs.next()){
//model.insertRow(++i, new Object[]{false, 8, "serviceName", 8.9});
model.insertRow(i++, new Object[]{false, rs.getInt("serviceID"), rs.getString("serviceName"), rs.getDouble("serviceAmount")});
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(borderLayout1);
jPanel1.setPreferredSize(new Dimension(10, 50));
jPanel1.setLayout(null);
btnOk.setBounds(new Rectangle(108, 13, 77, 27));
btnOk.setText("Ok");
btnCancel.setText("Cancel");
btnCancel.setBounds(new Rectangle(197, 13, 77, 27));
jPanel2.setDebugGraphicsOptions(0);
jPanel2.setLayout(borderLayout2);
this.getContentPane().add(jPanel1, BorderLayout.SOUTH);
jPanel1.add(btnCancel, null);
jPanel1.add(btnOk, null);
this.getContentPane().add(jPanel2, BorderLayout.CENTER);
model = new DefaultTableModel(null, columnNames) {
private static final long serialVersionUID = 1L;
@Override public Class<?> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
};
tblService = new JTable(model) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override public void updateUI() {
super.updateUI();
//XXX: Nimbus
TableCellRenderer r = getDefaultRenderer(Boolean.class);
if(r instanceof JComponent) {
((JComponent)r).updateUI();
}
}
@Override public Component prepareEditor(TableCellEditor editor, int row, int column) {
Component c = super.prepareEditor(editor, row, column);
if(c instanceof JCheckBox) {
JCheckBox b = (JCheckBox)c;
b.setBackground(getSelectionBackground());
b.setBorderPainted(true);
}
return c;
}
};
jPanel2.add(tblService, BorderLayout.CENTER);
btnCancel.addActionListener(new ServiceChooseForAddMore_btnCancel_actionAdapter(this));
btnOk.addActionListener(new ServiceChooseForAddMore_btnOk_actionAdapter(this));
}
void btnOk_actionPerformed(ActionEvent e) {
int rowcount = tblService.getModel().getRowCount();
int j=0;
double total = 0;
for(int i=0; i<rowcount; i++){
if(tblService.getModel().getValueAt(i, 0).toString() == "true"){
int sevID = (Integer) tblService.getModel().getValueAt(i, 1);
((AddCheckinServiceForm)owner).tblModelService.insertRow(j++, new Object[]{sevID, tblService.getModel().getValueAt(i, 2), tblService.getModel().getValueAt(i, 3)});
total += Double.parseDouble(tblService.getModel().getValueAt(i, 3)+ "");
}
}
double totalcost = Double.parseDouble(((AddCheckinServiceForm)owner).txtTotalAmt.getText())+ total;
((AddCheckinServiceForm)owner).txtTotalAmt.setText(totalcost + "");
this.setVisible(false);
}
void btnCancel_actionPerformed(ActionEvent e) {
this.setVisible(false);
}
}
class ServiceChooseForAddMore_btnOk_actionAdapter implements java.awt.event.ActionListener {
ServiceChooseForAddMore adaptee;
ServiceChooseForAddMore_btnOk_actionAdapter(ServiceChooseForAddMore adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnOk_actionPerformed(e);
}
}
class ServiceChooseForAddMore_btnCancel_actionAdapter implements java.awt.event.ActionListener {
ServiceChooseForAddMore adaptee;
ServiceChooseForAddMore_btnCancel_actionAdapter(ServiceChooseForAddMore adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnCancel_actionPerformed(e);
}
}
/*
class HeaderRenderer extends JCheckBox implements TableCellRenderer {
private static final long serialVersionUID = 1L;
private final JLabel label = new JLabel("Check All");
private int targetColumnIndex;
public HeaderRenderer(JTableHeader header, int index) {
super((String)null);
this.targetColumnIndex = index;
setOpaque(false);
setFont(header.getFont());
header.addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) {
JTableHeader header = (JTableHeader)e.getSource();
JTable table = header.getTable();
TableColumnModel columnModel = table.getColumnModel();
int vci = columnModel.getColumnIndexAtX(e.getX());
int mci = table.convertColumnIndexToModel(vci);
if(mci == targetColumnIndex) {
TableColumn column = columnModel.getColumn(vci);
Object v = column.getHeaderValue();
boolean b = Status.DESELECTED.equals(v)?true:false;
TableModel m = table.getModel();
for(int i=0; i<m.getRowCount(); i++) m.setValueAt(b, i, mci);
column.setHeaderValue(b?Status.SELECTED:Status.DESELECTED);
//header.repaint();
}
}
});
}
@Override public Component getTableCellRendererComponent(JTable tbl, Object val, boolean isS, boolean hasF, int row, int col) {
TableCellRenderer r = tbl.getTableHeader().getDefaultRenderer();
JLabel l =(JLabel)r.getTableCellRendererComponent(tbl, val, isS, hasF, row, col);
if(targetColumnIndex==tbl.convertColumnIndexToModel(col)) {
if(val instanceof Status) {
switch((Status)val) {
case SELECTED: setSelected(true); setEnabled(true); break;
case DESELECTED: setSelected(false); setEnabled(true); break;
case INDETERMINATE: setSelected(true); setEnabled(false); break;
}
}else{
setSelected(true); setEnabled(false);
}
label.setIcon(new ComponentIcon(this));
l.setIcon(new ComponentIcon(label));
l.setText(null); //XXX: Nimbus???
// l.setHorizontalAlignment(SwingConstants.CENTER);
//}else{
// l.setHorizontalAlignment(SwingConstants.LEFT);
}
// System.out.println("getHeaderRect: " + tbl.getTableHeader().getHeaderRect(col));
// System.out.println("getPreferredSize: " + l.getPreferredSize());
// System.out.println("getMaximunSize: " + l.getMaximumSize());
// System.out.println("----");
// if(l.getPreferredSize().height>1000) { //XXX: Nimbus???
// System.out.println(l.getPreferredSize().height);
// Rectangle rect = tbl.getTableHeader().getHeaderRect(col);
// l.setPreferredSize(new Dimension(0, rect.height));
// }
return l;
}
// @Override public void updateUI() {
// setText(null); //XXX: Nimbus???
// super.updateUI();
// }
}
class HeaderCheckBoxHandler implements TableModelListener{
private final JTable table;
private final int targetColumnIndex;
public HeaderCheckBoxHandler(JTable table, int index) {
this.table = table;
this.targetColumnIndex = index;
}
@Override public void tableChanged(TableModelEvent e) {
if(e.getType()==TableModelEvent.UPDATE && e.getColumn()==targetColumnIndex) {
int vci = table.convertColumnIndexToView(targetColumnIndex);
TableColumn column = table.getColumnModel().getColumn(vci);
if(!Status.INDETERMINATE.equals(column.getHeaderValue())) {
column.setHeaderValue(Status.INDETERMINATE);
}else{
boolean selected = true, deselected = true;
TableModel m = table.getModel();
for(int i=0; i<m.getRowCount(); i++) {
Boolean b = (Boolean)m.getValueAt(i, targetColumnIndex);
selected &= b; deselected &= !b;
if(selected==deselected) return;
}
if(selected) {
column.setHeaderValue(Status.SELECTED);
}else if(deselected) {
column.setHeaderValue(Status.DESELECTED);
}else{
return;
}
}
JTableHeader h = table.getTableHeader();
h.repaint(h.getHeaderRect(vci));
}
}
}
enum Status { SELECTED, DESELECTED, INDETERMINATE }
class ComponentIcon implements Icon{
private final JComponent cmp;
public ComponentIcon(JComponent cmp) {
this.cmp = cmp;
}
@Override public int getIconWidth() {
return cmp.getPreferredSize().width;
}
@Override public int getIconHeight() {
return cmp.getPreferredSize().height;
}
@Override public void paintIcon(Component c, Graphics g, int x, int y) {
SwingUtilities.paintComponent(g, cmp, (Container)c, x, y, getIconWidth(), getIconHeight());
}
}
*/