package com.sun.j2ee.blueprints.admin.client;
import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.*;
import javax.swing.border.SoftBevelBorder;
import javax.swing.table.*;
import java.util.Vector;
public class OrdersApprovePanel extends JPanel implements
PropertyChangeListener {
private JTable orderTable;
private DataSource.OrdersApproveTableModel tableModel;
private TableSorter sorter;
private DefaultTableCellRenderer statusRenderer;
private DefaultTableCellRenderer headerRenderer;
private JComboBox cellOptions = new JComboBox();
private JButton approveButton;
private JButton denyButton;
private JButton commitButton;
public OrdersApprovePanel(DataSource.OrdersApproveTableModel tableModel) {
this.tableModel = tableModel;
createUI();
}
private void createUI() {
cellOptions.addItem(PetStoreProxy.Order.PENDING);
cellOptions.addItem(PetStoreProxy.Order.APPROVED);
cellOptions.addItem(PetStoreProxy.Order.DENIED);
setLayout(new BorderLayout());
setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
add(createTable(), BorderLayout.CENTER);
add(createButtonPanel(), BorderLayout.SOUTH);
}
private JPanel createButtonPanel() {
JPanel panel = new JPanel(new FlowLayout());
approveButton =
new JButton(PetStoreAdminClient.getString("ApproveButton.label"));
approveButton.setMnemonic(
PetStoreAdminClient.getMnemonic("ApproveButton.mnemonic"));
approveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int[] rows = orderTable.getSelectedRows();
for (int i = 0; i < rows.length; i++) {
sorter.setValueAt(PetStoreProxy.Order.APPROVED,
rows[i], 4);
orderTable.repaint();
}
}
});
panel.add(approveButton);
denyButton =
new JButton(PetStoreAdminClient.getString("DenyButton.label"));
denyButton.setMnemonic(
PetStoreAdminClient.getMnemonic("DenyButton.mnemonic"));
denyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int[] rows = orderTable.getSelectedRows();
for (int i = 0; i < rows.length; i++) {
sorter.setValueAt(PetStoreProxy.Order.DENIED, rows[i], 4);
orderTable.repaint();
}
}
});
panel.add(denyButton);
commitButton =
new JButton(PetStoreAdminClient.getString("CommitButton.label"));
commitButton.setMnemonic(
PetStoreAdminClient.getMnemonic("CommitButton.mnemonic"));
commitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tableModel.commit();
}
});
panel.add(commitButton);
return panel;
}
private JComponent createTable() {
sorter = new TableSorter(tableModel);
orderTable = new JTable(sorter);
sorter.addMouseListenerToHeaderInTable(orderTable);
orderTable.getTableHeader().setReorderingAllowed(false);
orderTable.setRowSelectionAllowed(true);
orderTable.setBorder(BorderFactory.createEtchedBorder());
TableColumn statusColumn = orderTable.getColumn(
PetStoreAdminClient.getString("OrdersTable.status"));
statusColumn.setCellEditor(new DefaultCellEditor(cellOptions));
statusRenderer = new DefaultTableCellRenderer() {
public void setValue(Object value) {
String str = (String)value;
if (PetStoreProxy.Order.APPROVED.equals(str)) {
setBackground(Color.green);
setText(str);
} else if (PetStoreProxy.Order.DENIED.equals(str)) {
setBackground(Color.red);
setText(str);
} else if (PetStoreProxy.Order.PENDING.equals(str)) {
setBackground(Color.yellow);
setText(str);
} else {
super.setValue(str);
}
}
};
statusColumn.setCellRenderer(statusRenderer);
orderTable.setRowHeight(cellOptions.getPreferredSize().height);
return new JScrollPane(orderTable);
}
public void propertyChange(PropertyChangeEvent e) {
String property = e.getPropertyName();
if (DataSource.ORDER_DATA_CHANGED.equals(property)) {
sorter.tableChanged(null);
TableColumn statusColumn = orderTable.getColumn(
PetStoreAdminClient.getString("OrdersTable.status"));
statusColumn.setCellEditor(new DefaultCellEditor(cellOptions));
statusColumn.setCellRenderer(statusRenderer);
} else if (DataSource.DISABLE_ACTIONS.equals(property)) {
approveButton.setEnabled(false);
denyButton.setEnabled(false);
commitButton.setEnabled(false);
} else if (DataSource.ENABLE_ACTIONS.equals(property)) {
approveButton.setEnabled(true);
denyButton.setEnabled(true);
commitButton.setEnabled(true);
}
}
}