package tampilan;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.text.PlainDocument;
import database.Config;
import database.dbDTransaksi;
import database.dbProducts;
import database.dbSupplier;
import database.dbTransaksi;
import java.awt.*;
import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.Timer;
import javax.swing.UIManager;
import tampilan.Manage_supp.ButtonEditor;
import tampilan.Manage_supp.ButtonRenderer;
import tampilan.Manage_supp.Final_editSupp;
import tampilan.Restock_prod.Pencarian;
public class Utama extends JFrame {
public Masuk ms = new Masuk("");
public dbProducts dp = new dbProducts();
public dbTransaksi trans = new dbTransaksi();
public dbDTransaksi dtrans = new dbDTransaksi();
private JPanel panelTitle = new JPanel();
private JPanel panelTengah = new JPanel();
private JPanel panelReport = new JPanel();
private JPanel panelDetail = new JPanel();
private JPanel panelDetail2 = new JPanel();
private JMenuBar menu = new JMenuBar();
private Connection koneksi;
public boolean cekKlik = false;
// Master Administrator
public JMenu Administrator = new JMenu("Administrator");
public JMenuItem tmbUser = new JMenuItem("Tambah User");
public JMenuItem gantiUser = new JMenuItem("Ganti Password");
public JMenuItem editUser = new JMenuItem("Manage User");
public JMenuItem logout = new JMenuItem("Log out");
// Master Supplier
public JMenu mSupp = new JMenu("Master Supplier");
public JMenuItem tmbSupp = new JMenuItem("Tambah Supplier");
public JMenuItem mngSupp = new JMenuItem("Manage Supplier");
// public JMenuItem editSupp = new JMenuItem("Edit Supplier");
// public JMenuItem hpsSupp = new JMenuItem("Hapus User");
// public JMenuItem lhtSupp = new JMenuItem("Lihat User");
// Master Produk
public JMenu mProduk = new JMenu("Master Produk");
public JMenuItem tmbProduk = new JMenuItem("Tambah Produk");
public JMenuItem mngProduk = new JMenuItem("Manage Produk");
public JMenuItem restockProduk = new JMenuItem("Restock Produk");
// Master Laporan
public JMenu mReport = new JMenu("Report");
public JMenuItem rSales = new JMenuItem("Report Penjualan");
// Report
public JMenu laporan = new JMenu("Laporan");
// About
// GUI
private JLabel lblTitle = new JLabel(
"<HTML><H1><Center>Apotik K24 Sidoarjo</Center></H1></HTML>");
// GUI Penjualan
private JLabel lblIdTransaksi = new JLabel("Kode Transasksi");
private JLabel lblNoTransaksi = new JLabel("");
private JLabel lblWaktu = new JLabel("Taanggal / Jam ");
private JLabelTime lblTime = new JLabelTime();
private JLabel lblNama = new JLabel("Nama Petugas : ");
private JLabel lblNama2 = new JLabel("");
private JLabel lblKode = new JLabel("Kode Barang");
private JTextField txtKode = new JTextField();
private JLabel lblNotif = new JLabel("Enter untuk cari");
private JLabel lblNamaB = new JLabel("Nama Barang");
private JTextField txtNamaB = new JTextField();
private JLabel lblHarga = new JLabel("Harga Barang");
private JTextField txtHarga = new JTextField();
private JLabel lblStock = new JLabel ("Stock");
private JLabel lblStockA = new JLabel("-");
private JLabel lblJumlah = new JLabel("Jumlah Beli");
private JTextField txtJumlah = new JTextField();
private JButton btnTambah = new JButton("Tambah");
private JPanel panelTotal = new JPanel();
private JLabel lblRp = new JLabel("<html><h1>Rp.</h1></html>");
private JLabel lblTotal = new JLabel("<HTML><H1>0</H1></HTML>");
// GUI Table
private DefaultTableModel dataModel = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int column) {
if (column >= 5) {
return true;
} else {
return false;
}
}
};
private JTable table = new JTable(dataModel);
private JScrollPane scroll = new JScrollPane(table);
private JButton btnBayar = new JButton("Bayar");
public JMenu help = new JMenu("Help");
public JMenuItem about = new JMenuItem("About");
//Update Data
public String idProd;
public String namaProd;
public String hargaProd;
public String jumlahProd;
public int rowx;
public int columnx;
public int cekStock;
public Utama(String title) {
super(title);
// super.setResizable(false);
super.setSize(800, 600);
super.setLocationRelativeTo(null);
super.setExtendedState(getExtendedState() | MAXIMIZED_BOTH);
super.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
panelTitle.setLayout(new FlowLayout());
panelTengah.setLayout(new BoxLayout(panelTengah, BoxLayout.PAGE_AXIS));
panelTotal.setLayout(new GridBagLayout());
panelDetail.setLayout(new FlowLayout());
panelDetail2.setLayout(new FlowLayout());
panelReport.setLayout(new GridBagLayout());
scroll.setPreferredSize(new Dimension(700, 200));
GridBagConstraints c = new GridBagConstraints();
Container kontainer = getContentPane();
panelReport.setMaximumSize(new Dimension(700, 340));
panelDetail.setMaximumSize(new Dimension(800, 270));
panelDetail2.setMaximumSize(new Dimension(800, 280));
kontainer.setLayout(new BorderLayout());
panelReport.setBorder(BorderFactory
.createTitledBorder("Data Penjualan"));
panelDetail.setBorder(BorderFactory
.createTitledBorder("Detail Penjualan"));
try {
Class.forName(Config.DATABASE_DRIVER).newInstance();
koneksi = DriverManager.getConnection(Config.URL, Config.username,
Config.password);
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
JLabel lblJudul = new JLabel(
"<HTML><H!>Program Maintenance Data Product</H1></HTML>");
lblJudul.setForeground(Color.WHITE);
// panelAtas.setBackground(Color.BLACK);
// panelAtas.add(lblJudul);
// Administrator
menu.add(Administrator);
Administrator.add(tmbUser);
Administrator.add(gantiUser);
Administrator.add(editUser);
Administrator.add(logout);
// Master Supplier
menu.add(mSupp);
mSupp.add(tmbSupp);
mSupp.add(mngSupp);
// mSupp.add(editSupp);
// mSupp.add(hpsSupp);
// mSupp.add(lhtSupp);
// Master Produk
menu.add(mProduk);
mProduk.add(tmbProduk);
mProduk.add(mngProduk);
mProduk.add(restockProduk);
setJMenuBar(menu);
// Master Report
menu.add(mReport);
mReport.add(rSales);
// Function Tombol Administrator
btnTambah();
btnGanti();
btnLogout();
btnManage();
// Function Tombol Supplier
btnTambahSupp();
btnManageSupp();
// Function Tombol Produk
btnTambahProd();
btnManageProd();
btnReStock();
// Function Cari
cariBarangKode();
cariBarangNama();
// Function Report
btnReport();
//Transaksi
btnTambahB();
isiKode();
isiPetugas();
btnBayar();
// GUI
lblTitle.setForeground(Color.WHITE);
panelTitle.setBackground(Color.BLACK);
panelTitle.add(lblTitle);
// GUI Penjualan
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(10, 10, 10, 10);
c.gridx = 0;
c.gridy = 0;
panelReport.add(lblIdTransaksi, c);
c.gridx = 1;
c.gridy = 0;
panelReport.add(lblNoTransaksi, c);
c.gridx = 2;
c.gridy = 0;
panelReport.add(lblNama, c);
c.gridx = 3;
c.gridy = 0;
lblNama2.setForeground(Color.RED);
panelReport.add(lblNama2, c);
// Total
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(10, 10, 10, 10);
c.gridx = 0;
c.gridy = 1;
lblRp.setForeground(Color.GREEN);
panelTotal.add(lblRp, c);
c.gridx = 1;
c.gridy = 1;
lblTotal.setForeground(Color.GREEN);
panelTotal.add(lblTotal, c);
// panelTotal.add(lblTotal, BorderLayout.NORTH);
c.gridx = 4;
c.gridy = 1;
panelTotal.setPreferredSize(new Dimension(200, 50));
panelTotal.setBackground(Color.BLACK);
panelReport.add(panelTotal, c);
c.gridx = 0;
c.gridy = 1;
panelReport.add(lblWaktu,c);
c.gridx = 2;
c.gridy = 1;
lblTime.start();
panelReport.add(lblTime,c);
c.gridx = 0;
c.gridy = 2;
panelReport.add(lblKode, c);
c.gridx = 2;
c.gridy = 2;
c.gridwidth = 1;
panelReport.add(txtKode, c);
c.gridx = 3;
c.gridy = 2;
panelReport.add(lblNotif, c);
c.gridx = 0;
c.gridy = 3;
panelReport.add(lblNamaB, c);
c.gridx = 2;
c.gridy = 3;
c.gridwidth = 2;
panelReport.add(txtNamaB, c);
c.gridx = 0;
c.gridy = 4;
panelReport.add(lblHarga, c);
c.gridx = 2;
c.gridy = 4;
c.gridwidth = 1;
txtHarga.setEnabled(false);
panelReport.add(txtHarga, c);
c.gridx = 0;
c.gridy = 5;
panelReport.add(lblJumlah, c);
c.gridx = 2;
c.gridy = 5;
c.gridwidth = 1;
panelReport.add(txtJumlah, c);
c.gridx = 2;
c.gridy = 6;
panelReport.add(btnTambah, c);
// Table
dataModel.addColumn("ID Produk");
dataModel.addColumn("Nama Produk");
dataModel.addColumn("Harga");
dataModel.addColumn("Jumlah");
dataModel.addColumn("Sub Total");
dataModel.addColumn("Edit");
dataModel.addColumn("Hapus");
/*Date now= new Date();
SimpleDateFormat fYear=new SimpleDateFormat("yy");
SimpleDateFormat fDate=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat fTime=new SimpleDateFormat("HH:mm:ss");
String thn=fYear.format(now);
String tanggal=fDate.format(now);
String waktu=fTime.format(now);*/
panelDetail.add(scroll);
btnBayar.setPreferredSize(new Dimension(100,30));
panelDetail.add(btnBayar);
panelDetail.add(panelDetail2);
panelTengah.add(panelReport);
panelTengah.add(panelDetail);
// panelTengah.setPreferredSize(new Dimension(700,400));
kontainer.add(panelTitle, BorderLayout.PAGE_START);
kontainer.add(panelTengah, BorderLayout.CENTER);
btnBayar.setEnabled(false);
}
public static void main(String[] argx) {
Utama tst = new Utama("Dahsboard Admin");
tst.setVisible(true);
}
public void isiPetugas() {
try {
Class.forName(Config.DATABASE_DRIVER).newInstance();
koneksi = DriverManager.getConnection(Config.URL, Config.username,
Config.password);
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
try{
String nama="";
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("select nama from Admin where username = '"+ms.user+"'");
while(rs.next()){
nama = rs.getString(1);
}
lblNama2.setText(nama);
}
catch(SQLException e){
e.printStackTrace();
}
}
public void isiKode(){
int urut = 1;
String idCek = lblNoTransaksi.getText();
String idtTrans = "TRX" + urut;
String cekId = "";
try {
Class.forName(Config.DATABASE_DRIVER).newInstance();
koneksi = DriverManager.getConnection(Config.URL, Config.username,
Config.password);
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
try {
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt
.executeQuery("SELECT idTrans FROM Transaksi WHERE idTrans = '"
+ idtTrans + "'");
while (rs.next()) {
cekId = rs.getString(1);
}
if (cekId.equals("")) {
lblNoTransaksi.setText(idtTrans);
}
else {
rs = stmt
.executeQuery("SELECT idTrans FROM Transaksi WHERE idTrans = '"
+ idCek + "'");
while (rs.next()) {
cekId = rs.getString(1);
}
if (!cekId.equals("")) {
boolean benar = false;
do {
urut += 1;
idtTrans = "TRX" + urut;
rs = stmt
.executeQuery("SELECT idTrans FROM Transaksi WHERE idTrans = '"
+ idtTrans + "'");
while (rs.next()) {
cekId = rs.getString(1);
}
if (cekId.equals(idtTrans)) {
benar = true;
} else {
benar = false;
lblNoTransaksi.setText(idtTrans);
}
} while (benar != false);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// function button Administrator
public void btnTambah() {
tmbUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Utama ut = new Utama("Utama");
TambahUser tmb = new TambahUser(ut, "Tambah User",
ModalityType.APPLICATION_MODAL);
tmb.setVisible(true);
}
});
}
public void btnLogout() {
logout.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
Masuk msk = new Masuk(".:: Login ::.");
msk.setVisible(true);
dispose();
msk.user = "";
}
});
}
public void btnGanti() {
gantiUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Utama ut = new Utama("");
Ganti_pass ganti = new Ganti_pass(ut, "Ganti Password",
ModalityType.APPLICATION_MODAL);
ganti.setVisible(true);
}
});
}
public void btnManage() {
editUser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Edit_user edit = new Edit_user("Manage User");
edit.setVisible(true);
}
});
}
// function button Supplier
public void btnTambahSupp() {
tmbSupp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Tambah_supp tambah = new Tambah_supp("Tambah Supplier");
tambah.setVisible(true);
tambah.setLocationRelativeTo(null);
}
});
}
public void btnManageSupp() {
mngSupp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Manage_supp mng = new Manage_supp("Manage Supplier");
mng.setVisible(true);
mng.setLocationRelativeTo(null);
}
});
}
// function button Produk
public void btnTambahProd() {
tmbProduk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Tambah_prod tmb = new Tambah_prod("Tambah Produk");
tmb.setVisible(true);
tmb.setLocationRelativeTo(null);
}
});
}
public void btnManageProd() {
mngProduk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Manage_prod mg = new Manage_prod("Manage Produk");
mg.setVisible(true);
mg.setLocationRelativeTo(null);
}
});
}
public void btnReStock(){
restockProduk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Utama owner = new Utama("");
Restock_prod re = new Restock_prod(owner, "Restock Produk", ModalityType.APPLICATION_MODAL);
re.setVisible(true);
re.setLocationRelativeTo(null);
}
});
}
//function button report
public void btnReport(){
rSales.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Utama ut = new Utama("");
Report rp = new Report(ut, "Report Penjualan", ModalityType.APPLICATION_MODAL);
rp.setVisible(true);
}
});
}
// function pencarian
public void cariBarangKode() {
txtKode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(txtKode.getText().equals("")){
JOptionPane.showMessageDialog(null, "Field Tidak Boleh Kosong", "Error!", JOptionPane.ERROR_MESSAGE);
}
else{
cekData(txtKode);
}
}
});
}
public void cariBarangNama() {
txtNamaB.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(txtNamaB.getText().equals("")){
JOptionPane.showMessageDialog(null, "Field Tidak Boleh Kosong", "Error!", JOptionPane.ERROR_MESSAGE);
}
else{
cekData2(txtNamaB);
}
}
});
}
public void cekData(JTextField text) {
String cek = "";
try {
Class.forName(Config.DATABASE_DRIVER).newInstance();
koneksi = DriverManager.getConnection(Config.URL, Config.username,
Config.password);
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
try {
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("select idProd from Products where idProd like '%"+ text.getText() +"%' ");
while (rs.next()) {
cek = rs.getString(1);
}
if (cek.equals("")) {
JOptionPane.showMessageDialog(null, "Data Tidak Ditemukan!",
"Data Not Found!", JOptionPane.ERROR_MESSAGE);
} else {
Utama u = new Utama("Utama");
Pencarian pc = new Pencarian(u, "Cari Produk");
pc.setVisible(true);
pc.setLocationRelativeTo(null);
pc.setResizable(false);
cekKlik = true;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void setTotal(){
int total=0;
int a = 0;
for(int i = table.getRowCount()-1; i > -1 ; i --){
a = Integer.parseInt(table.getValueAt(i,4).toString());
total +=a;
}
lblTotal.setText(""+total);
}
public void cekData2(JTextField text) {
String cek = "";
try {
Class.forName(Config.DATABASE_DRIVER).newInstance();
koneksi = DriverManager.getConnection(Config.URL, Config.username,
Config.password);
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
try {
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("select idProd from Products where nama like '%"+ text.getText() +"%' ");
while (rs.next()) {
cek = rs.getString(1);
}
if (cek.equals("")) {
JOptionPane.showMessageDialog(null, "Data Tidak Ditemukan!",
"Data Not Found!", JOptionPane.ERROR_MESSAGE);
} else {
Utama u = new Utama("Utama");
Pencarian pc = new Pencarian(u, "Cari Produk");
pc.setVisible(true);
pc.setLocationRelativeTo(null);
pc.setResizable(false);
cekKlik = false;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//Tansaksi
public void btnBayar(){
btnBayar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Utama ut = new Utama("");
Bayar byr = new Bayar(ut, "Bayar Transaksi", ModalityType.APPLICATION_MODAL, lblNoTransaksi, lblNama2, table);
byr.setVisible(true);
}
});
}
public void btnTambahB(){
btnTambah.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if((txtKode.getText().equals("")) && (txtNamaB.getText().equals(""))){
JOptionPane.showMessageDialog(null, "Field Tidak Boleh Kosong!", "Error!", JOptionPane.ERROR_MESSAGE);
}
else{
if (txtJumlah.getText().equals("")){
JOptionPane.showMessageDialog(null, "Field Jumlah Belum Diisi!", "Error!", JOptionPane.ERROR_MESSAGE);
}
else{
int stockA = Integer.parseInt(lblStockA.getText());
int stockB = Integer.parseInt(txtJumlah.getText());
if (stockB > stockA){
JOptionPane.showMessageDialog(null, "Stock tidak cukup!", "Error!", JOptionPane.ERROR_MESSAGE);
}
else{
String cek="" ;
Boolean benar = false;
for(int i = table.getRowCount()-1; i > -1 ; i--){
cek = table.getValueAt(i, 0).toString();
if(txtKode.getText().equals(cek)){
JOptionPane.showMessageDialog(null, "Gagal Tambah Produk Yang Sama! Silahkan Edit Detail Penjualan", "Error!", JOptionPane.ERROR_MESSAGE);
i =0;
benar = false;
cek ="1";
}
else{
benar = true;
cek="";
}
}
if((benar=true) && (cek.equals(""))){
int subTotal;
int harga = Integer.parseInt(txtHarga.getText());
int jumlah = Integer.parseInt(txtJumlah.getText());
subTotal = harga * jumlah;
table.getColumnModel().getColumn(5).setCellRenderer(new ButtonRenderer());
table.getColumnModel().getColumn(5)
.setCellEditor(new ButtonEditor(new JCheckBox()));
// tambah tombol hapus
table.getColumnModel().getColumn(6)
.setCellRenderer(new ButtonRenderer());
table.getColumnModel().getColumn(6)
.setCellEditor(new ButtonEditor(new JCheckBox()));
Object [] x = {txtKode.getText(),txtNamaB.getText(), txtHarga.getText(), txtJumlah.getText(), subTotal, "Edit", "Hapus"};
dataModel.addRow(x);
setTotal();
txtKode.grabFocus();
txtKode.setText("");
txtNamaB.setText("");
txtHarga.setText("");
txtJumlah.setText("");
if(table.getRowCount()==0){
btnBayar.setEnabled(false);
}
else{
btnBayar.setEnabled(true);
}
}
else {
benar = false;
cek ="";
}
}
}
}
}
});
}
// Dialog Pencarian
class Pencarian extends JDialog {
private JPanel panelDialog = new JPanel();
private Container kontainer = new Container();
private DefaultTableModel dataModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
private JTable table = new JTable(dataModel);
private JScrollPane scroll = new JScrollPane(table);
public Pencarian(Utama owner, String title) {
super(owner, title);
super.setLocationRelativeTo(null);
super.setSize(500, 470);
//super.setVisible(true);
dataModel.addColumn("ID");
dataModel.addColumn("Nama Produk");
dataModel.addColumn("ID Supplier");
dataModel.addColumn("Harga");
dataModel.addColumn("Stock");
table.setModel(dataModel);
kontainer = getContentPane();
kontainer.setLayout(new FlowLayout());
kontainer.add(scroll);
if(cekKlik=true){
dp.viewAllByTrans(txtKode, table, dataModel);
}
else if(cekKlik=false){
dp.viewAllByTrans2(txtNamaB, table, dataModel);
}
if (table.getRowCount() == 0) {
JOptionPane.showMessageDialog(null, "Data Tidak Ditemukan!",
"Data Not Found!", JOptionPane.ERROR_MESSAGE);
setVisible(false);
dispose();
setVisible(false);
dispose();
}
String solve = "Solve";
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enter, solve);
table.getActionMap().put(solve, new EnterAction());
clickData();
}
public void clickData() {
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
// JTable target = (JTable)e.getSource();
table = (JTable) e.getSource();
int row = table.getSelectedRow();
String id = table.getValueAt(row, 0).toString();
String nama = table.getValueAt(row, 1).toString();
String harga = table.getValueAt(row, 3).toString();
String stock = table.getValueAt(row, 4).toString();
txtKode.setText(id);
txtNamaB.setText(nama);
txtHarga.setText(harga);
lblStockA.setText(stock);
txtJumlah.grabFocus();
dispose();
}
}
});
}
private class EnterAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
table = (JTable) e.getSource();
int row = table.getSelectedRow();
String id = table.getValueAt(row, 0).toString();
String nama = table.getValueAt(row, 1).toString();
String harga = table.getValueAt(row, 3).toString();
String stock = table.getValueAt(row, 4).toString();
txtKode.setText(id);
txtNamaB.setText(nama);
txtHarga.setText(harga);
lblStockA.setText(stock);
txtJumlah.grabFocus();
dispose();
}
}
}
//Button Render
class ButtonRenderer extends JButton implements TableCellRenderer {
public ButtonRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(UIManager.getColor("Button.background"));
}
setText((value == null) ? "" : value.toString());
return this;
}
}
class ButtonEditor extends DefaultCellEditor {
protected JButton button;
private String label;
private boolean isDeleteRow = false;
private boolean isPushed;
public ButtonEditor(JCheckBox checkBox) {
super(checkBox);
button = new JButton();
button.setOpaque(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fireEditingStopped();
}
});
}
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
if (isSelected) {
button.setForeground(table.getSelectionForeground());
button.setBackground(table.getSelectionBackground());
} else {
button.setForeground(table.getForeground());
button.setBackground(table.getBackground());
}
// label = (value == null) ? "" : value.toString();
idProd = table.getValueAt(row, 0).toString();
namaProd = table.getValueAt(row, 1).toString();
hargaProd = table.getValueAt(row, 2).toString();
jumlahProd = table.getValueAt(row, 3).toString();
rowx = row;
columnx = column;
label = (value == null) ? "" : value.toString();
button.setText(label);
isPushed = true;
return button;
}
public Object getCellEditorValue() {
if (isPushed) {
//
//
// JOptionPane.showMessageDialog(button, username + ": Ouch!");
// System.out.println(label + ": Ouch!");
showEdit(rowx, columnx);
}
isPushed = false;
return new String(label);
}
public boolean stopCellEditing() {
isPushed = false;
return super.stopCellEditing();
}
protected void fireEditingStopped() {
super.fireEditingStopped();
if (isDeleteRow) {
DefaultTableModel tableModel = (DefaultTableModel) table
.getModel();
tableModel.removeRow(table.getSelectedRow());
table.addNotify();
// tableModel.fireTableDataChanged();
if(table.getRowCount()==0){
btnBayar.setEnabled(false);
}
else{
btnBayar.setEnabled(true);
}
}
isDeleteRow = false;
}
public void showEdit(int row, int column) {
if (column == 5) {
int cekX=0;
try{
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("select stock from Products where idProd = '"+ table.getValueAt(row, 0) +"'");
while (rs.next()){
cekX = rs.getInt(1);
}
}
catch(SQLException e){
e.printStackTrace();
}
Utama ut = new Utama("");
Final_editProd edit_final = new Final_editProd(ut,
"Edit Produk " + namaProd,
ModalityType.APPLICATION_MODAL, cekX);
edit_final.setVisible(true);
// edit_final.setLocationRelativeTo(null);
} else if (column == 6) {
int pilih = JOptionPane.showConfirmDialog(null,
"Yakin ingin menghapus " + namaProd + " ?",
"Delete Supplier?", JOptionPane.YES_NO_OPTION);
if (pilih == 0) {
try {
isDeleteRow = true;
int total = Integer.parseInt(lblTotal.getText());
int min = Integer.parseInt(table.getValueAt(row, 4).toString());
lblTotal.setText(""+ (total-min));
JOptionPane.showMessageDialog(null,
"Produk telah dihapus!", "Product Deleted!",
JOptionPane.INFORMATION_MESSAGE);
} catch (Exception e) {
// updateTable();
}
}
}
}
}
public class Final_editProd extends JDialog {
private Connection koneksi;
private dbSupplier sp = new dbSupplier();
Manage_supp mg = new Manage_supp("");
private int row = mg.rowx;
private String password;
private JLabel lblID = new JLabel("ID Produk :");
private JLabel lblNo = new JLabel("No");
private JLabel lblNama = new JLabel("Nama :");
private JTextField txtNama = new JTextField(15);
private JLabel lblharga = new JLabel("Harga :");
private JTextField txtHarga = new JTextField();
private JLabel lblStock = new JLabel("Stock :");
private JTextField txtStock = new JTextField();
private JLabel lblJumlah = new JLabel("Jumlah :");
private JTextField txtJumlah = new JTextField();
private JButton btnEdit = new JButton("Edit");
private JButton btnBatal = new JButton("Batal");
private JPanel panelEdit = new JPanel();
Container kontainer = getContentPane();
public Final_editProd(Utama mg, String title,
ModalityType modal, int cekZ) {
super(mg, title, modal);
super.setSize(400, 320);
// super.setVisible(true);
super.setLocationRelativeTo(null);
super.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
panelEdit.setVisible(true);
panelEdit.setLayout(new GridBagLayout());
kontainer.setLayout(new FlowLayout());
GridBagConstraints c = new GridBagConstraints();
panelEdit.setBorder(BorderFactory.createTitledBorder("Edit"));
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(10, 10, 10, 10);
c.gridx = 0;
c.gridy = 0;
panelEdit.add(lblID, c);
c.gridx = 1;
c.gridy = 0;
panelEdit.add(lblNo, c);
c.gridx = 0;
c.gridy = 1;
panelEdit.add(lblNama, c);
c.gridx = 1;
c.gridy = 1;
txtNama.setEnabled(false);
panelEdit.add(txtNama, c);
c.gridx = 0;
c.gridy = 2;
panelEdit.add(lblHarga, c);
c.gridx = 1;
c.gridy = 2;
txtHarga.setEnabled(false);
panelEdit.add(txtHarga, c);
c.gridx = 0;
c.gridy = 3;
panelEdit.add(lblStock, c);
c.gridx = 1;
c.gridy = 3;
txtStock.setEnabled(false);
panelEdit.add(txtStock, c);
c.gridx = 0;
c.gridy = 4;
panelEdit.add(lblJumlah, c);
c.gridx = 1;
c.gridy = 4;
panelEdit.add(txtJumlah, c);
c.gridx = 0;
c.gridy = 5;
btnEdit.setPreferredSize(new Dimension(150, 25));
panelEdit.add(btnEdit, c);
c.gridx = 1;
c.gridy = 5;
panelEdit.add(btnBatal, c);
kontainer.add(panelEdit);
lblNo.setText(table.getValueAt(row, 0).toString());
txtNama.setText(table.getValueAt(row, 1).toString());
txtHarga.setText(table.getValueAt(row, 2).toString());
txtStock.setText(""+ cekZ);
isiData();
btnBatal();
btnSimpan();
}
/*
* public static void main(String[] args) { // TODO Auto-generated
* method stub Final_edit f_edit = new Final_edit("Edit Supplier","");
* f_edit.setVisible(true); f_edit.setLocationRelativeTo(null);
*
* }
*/
public void btnBatal() {
btnBatal.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
dispose();
}
});
}
public void isiData(){
}
public void btnSimpan() {
btnEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//dp.editSupp(lblNo, txtNama, txtAlamat, txtTelp, table, rowx);
if(txtJumlah.getText().equals("")){
JOptionPane.showMessageDialog(null, "Jumlah Tidak Boleh Kosong!", "Error", JOptionPane.ERROR_MESSAGE);
}
else{
try {
Class.forName(Config.DATABASE_DRIVER).newInstance();
koneksi = DriverManager.getConnection(Config.URL, Config.username,
Config.password);
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | SQLException z) {
// TODO Auto-generated catch block
z.printStackTrace();
}
try{
int cek=0;
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("select stock from Products where idProd = '"+ lblNo.getText() +"'");
while (rs.next()){
cek = rs.getInt(1);
}
int cekB = Integer.parseInt(txtJumlah.getText());
if(cekB > cek){
JOptionPane.showMessageDialog(null, "Stock Tidak Cukup!", "Error", JOptionPane.ERROR_MESSAGE);
}
else{
table.setValueAt(txtJumlah.getText(), rowx, 3);
int Harga = Integer.parseInt(table.getValueAt(rowx, 2).toString());
int jumlah = Integer.parseInt(txtJumlah.getText());
int total = Harga * jumlah;
table.setValueAt(total, rowx, 4);
setTotal();
JOptionPane.showMessageDialog(null, "Berhasil Diupdate!", "Update Succes!", JOptionPane.INFORMATION_MESSAGE);
dispose();
}
}
catch(SQLException x){
x.printStackTrace();
}
}
}
});
}
}
// Dialog Barang
class Bayar extends JDialog {
private JPanel panelDialog = new JPanel();
private Container kontainer = new Container();
private JLabel lblIdTrans = new JLabel("ID Transaksi");
private JLabel lblIdTrans2 = new JLabel("");
private JLabel lblNama = new JLabel("Nama Petugas");
private JLabel lblNama2 = new JLabel("");
private JLabel lblTgl = new JLabel("Tanggal");
private JLabel lblTgl2 = new JLabel("");
private JLabel lblJam = new JLabel("Jam");
private JLabel lblJam2 = new JLabel("");
private JLabel lblTotal = new JLabel("Grand Total");
public JLabel lblTotal2 = new JLabel("");
private JLabel lblPaid = new JLabel("Bayar");
private JLabel lblPaid2 = new JLabel("");
private JLabel lblKembalian = new JLabel("Kembali");
private JLabel lblKembalian2 = new JLabel("");
private JLabel lblBayar = new JLabel("Masukkan Uang");
private JTextField txtBayar = new JTextField(10);
private DefaultTableModel dataModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
private JTable table = new JTable(dataModel);
private JScrollPane scroll = new JScrollPane(table);
private JPanel panelTransaksi = new JPanel();
private JPanel panelDetailT = new JPanel();
private Container kontainer2;
private JButton btnPay = new JButton("Bayar");
public Bayar(Utama owner, String title, ModalityType modal, JLabel id, JLabel nama, JTable table1) {
super(owner, title, modal);
super.setSize(500, 550);
super.setLocationRelativeTo(null);
super.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
super.setResizable(false);
//super.setVisible(true);
panelTransaksi.setLayout(new GridBagLayout());
panelDialog.setLayout(new GridBagLayout());
panelDetailT.setLayout(new FlowLayout());
kontainer2= getContentPane();
kontainer2.setLayout(new FlowLayout());
GridBagConstraints c = new GridBagConstraints();
panelTransaksi.setBorder(BorderFactory.createTitledBorder("Transaksi"));
dataModel.addColumn("ID");
dataModel.addColumn("Nama Produk");
dataModel.addColumn("Harga");
dataModel.addColumn("Jumlah");
dataModel.addColumn("Subtotal");
table.setModel(dataModel);
Date now= new Date();
SimpleDateFormat fYear=new SimpleDateFormat("yy");
SimpleDateFormat fDate=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat fTime=new SimpleDateFormat("HH:mm:ss");
String tanggal=fDate.format(now);
lblTgl2.setText(tanggal);
String waktu=fTime.format(now);
lblJam2.setText(waktu);
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(10,10,10,10);
c.gridx = 0;
c.gridy = 0;
panelTransaksi.add(lblIdTrans,c);
c.gridx = 1;
c.gridy = 0;
lblIdTrans2.setText(id.getText());
panelTransaksi.add(lblIdTrans2,c);
c.gridx = 0;
c.gridy = 1;
panelTransaksi.add(lblNama,c);
c.gridx = 1;
c.gridy = 1;
lblNama2.setText(nama.getText());
panelTransaksi.add(lblNama2,c);
c.gridx = 0;
c.gridy = 2;
panelTransaksi.add(lblTgl,c);
c.gridx = 1;
c.gridy = 2;
panelTransaksi.add(lblTgl2,c);
c.gridx = 2;
c.gridy = 2;
panelTransaksi.add(lblJam2,c);
scroll.setMaximumSize(new Dimension(470,100));
scroll.setPreferredSize(new Dimension(470,200));
panelDetailT.add(scroll);
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(10,10,10,10);
c.gridx = 2;
c.gridy = 0;
panelDialog.add(lblTotal,c);
c.gridx = 3;
c.gridy = 0;
panelDialog.add(lblTotal2,c);
c.gridx = 2;
c.gridy = 1;
panelDialog.add(lblPaid,c);
c.gridx = 3;
c.gridy = 1;
panelDialog.add(lblPaid2,c);
c.gridx = 2;
c.gridy = 2;
panelDialog.add(lblKembalian,c);
c.gridx = 3;
c.gridy = 2;
panelDialog.add(lblKembalian2,c);
c.gridx = 0;
c.gridy = 2;
panelDialog.add(lblBayar,c);
c.gridx = 1;
c.gridy = 2;
panelDialog.add(txtBayar,c);
c.gridx = 1;
c.gridy = 3;
panelDialog.add(btnPay,c);
kontainer2.add(panelTransaksi);
kontainer2.add(panelDetailT);
kontainer2.add(panelDialog);
setTable(table1, dataModel);
btnPaid();
}
public void setTable(JTable table1, DefaultTableModel dataModel){
int totalx = 0;
for(int i = table1.getRowCount()-1; i > -1 ; i--){
Object [] x = {table1.getValueAt(i, 0).toString(),table1.getValueAt(i, 1).toString(), table1.getValueAt(i, 2).toString(),
table1.getValueAt(i, 3).toString(), table1.getValueAt(i, 4).toString()};
dataModel.addRow(x);
totalx += Integer.parseInt(table1.getValueAt(i, 4).toString());
}
lblTotal2.setText(""+totalx);
}
public void btnPaid(){
btnPay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(txtBayar.getText().equals("")){
JOptionPane.showMessageDialog(null, "Field Tidak Boleh Kosong!", "Error", JOptionPane.ERROR_MESSAGE);
}
else{
int total = Integer.parseInt(lblTotal2.getText());
int bayar = Integer.parseInt(txtBayar.getText());
if(bayar < total){
JOptionPane.showMessageDialog(null, "Uang yang Anda masukkan kurang!", "Error!", JOptionPane.ERROR_MESSAGE);
}
else{
int totalz = Integer.parseInt(lblTotal2.getText());
int bayarz = Integer.parseInt(txtBayar.getText());
int akhir = bayarz - totalz;
btnPay.setVisible(false);
lblBayar.setVisible(false);
txtBayar.setVisible(false);
panelDialog.setBorder(BorderFactory.createTitledBorder("Pembayaran"));
lblPaid2.setText(""+bayarz);
lblKembalian2.setText(""+akhir);
trans.addTransaksi(lblIdTrans2, lblNama2, lblTgl2, lblJam2);
dtrans.addDTransaksi(lblIdTrans2, table);
}
}
}
});
}
//Time
}
public class JLabelTime extends JLabel implements ActionListener {
private String pattern = "dd MMMM yyyy, HH:m:ss";
private SimpleDateFormat format;
private Timer timer;
private Date date;
public JLabelTime() {
timer = new Timer(1000, this);
format = new SimpleDateFormat(pattern);
date = new Date();
}
public String getPattern() {
return pattern;
}
public Date getDate(){
return date;
}
public void setPattern(String pattern) {
this.pattern = pattern;
format = new SimpleDateFormat(pattern);
}
public void start() {
timer.start();
}
public void stop() {
timer.stop();
}
public void actionPerformed(ActionEvent e) {
date.setTime(System.currentTimeMillis());
setText(format.format(date));
}
}
}