Java tutorial
/* * Copyright 2009 Eko Kurniawan Khannedy. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * under the License. */ package com.pos.spatobiz.app.view.karyawan; import com.pos.spatobiz.app.controller.karyawan.BatalUbahKaryawanController; import com.pos.spatobiz.app.controller.karyawan.CariUbahKaryawanController; import com.pos.spatobiz.app.controller.karyawan.UbahKaryawanController; import com.pos.spatobiz.app.view.widget.DateBox; import com.pos.spatobiz.app.view.widget.ImageChooser; import com.pos.spatobiz.app.view.widget.RedLabel; import com.pos.spatobiz.app.view.widget.TextBoxTransfer; import com.pos.spatobiz.app.view.widget.WhiteLabel; import com.pos.spatobiz.app.view.widget.WhiteTextArea; import com.pos.spatobiz.common.entity.JenisKelamin; import com.pos.spatobiz.common.entity.Karyawan; import com.pos.spatobiz.common.error.SpatoBizException; import echo.gokil.desktop.swing.Button; import echo.gokil.desktop.swing.Panel; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import javax.swing.ButtonGroup; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.JRadioButton; import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.SwingConstants; import javax.swing.text.DateFormatter; import javax.swing.text.DefaultFormatterFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * * @author echo */ public class UbahKaryawan extends Panel implements ApplicationContextAware, InitializingBean { private static final long serialVersionUID = 1L; private ApplicationContext applicationContext; private CariUbahKaryawanController cariUbahKaryawanController; private BatalUbahKaryawanController batalUbahKaryawanController; private UbahKaryawanController ubahKaryawanController; private Karyawan karyawan; /** Creates new form TambahKaryawan */ public UbahKaryawan() { initComponents(); } public void setCariUbahKaryawanController(CariUbahKaryawanController cariUbahKaryawanController) { this.cariUbahKaryawanController = cariUbahKaryawanController; buttonCari.addActionListener(cariUbahKaryawanController); } public void setBatalUbahKaryawanController(BatalUbahKaryawanController batalUbahKaryawanController) { this.batalUbahKaryawanController = batalUbahKaryawanController; buttonBatal.addActionListener(batalUbahKaryawanController); } public void setUbahKaryawanController(UbahKaryawanController ubahKaryawanController) { this.ubahKaryawanController = ubahKaryawanController; buttonUbah.addActionListener(ubahKaryawanController); } public Karyawan getKaryawan() throws SpatoBizException { if (karyawan == null) { throw new SpatoBizException("Silahkan tekan tombol cari dulu"); } else if (karyawan.getId() == null) { throw new SpatoBizException("Silahkan tekan tombol cari dulu"); } boolean valid = true; if (textKode.getText().isEmpty()) { errorKode.setText("Kode tidak boleh kosong"); valid = false; } else { errorKode.setText(""); } if (textNama.getText().isEmpty()) { errorNama.setText("Nama tidak boleh kosong"); valid = false; } else { errorNama.setText(""); } if (textAlamat.getText().isEmpty()) { errorAlamat.setText("Alamat tidak boleh kosong"); valid = false; } else { errorAlamat.setText(""); } if (textEmail.getText().isEmpty()) { } else { if (textEmail.getText().contains("@") && textEmail.getText().contains(".")) { errorEmail.setText(""); } else { errorEmail.setText("Email tidak valid"); valid = false; } } if (!valid) { throw new SpatoBizException("Data karyawan belum lengkap"); } karyawan.setAlamat(textAlamat.getText()); karyawan.setEmail(textEmail.getText()); if (radioPria.isSelected()) { karyawan.setJenisKelamin(JenisKelamin.Pria); } else { karyawan.setJenisKelamin(JenisKelamin.Wanita); } karyawan.setKode(textKode.getText()); karyawan.setNama(textNama.getText()); karyawan.setPhoto(imageChooser.getImage()); karyawan.setTanggalLahir((Date) textTanggalLahir.getValue()); karyawan.setTelepon(textTelepon.getText()); return karyawan; } public void setKaryawan(Karyawan karyawan) { this.karyawan = karyawan; textAlamat.setText(karyawan.getAlamat()); textEmail.setText(karyawan.getEmail()); textKode.setText(karyawan.getKode()); textNama.setText(karyawan.getNama()); textTanggalLahir.setValue(karyawan.getTanggalLahir()); textTelepon.setText(karyawan.getTelepon()); if (karyawan.getJenisKelamin() == JenisKelamin.Pria) { radioPria.setSelected(true); } else { radioWanita.setSelected(true); } imageChooser.setImage(karyawan.getPhoto()); } @Override public void onOpen() throws Exception { errorAlamat.setText("Alamat tidak boleh kosong"); errorEmail.setText(""); errorKode.setText("Kode tidak boleh kosong"); errorNama.setText("Nama tidak boleh kosong"); errorTanggalLahir.setText(""); errorTelepon.setText(""); textAlamat.setText(""); textEmail.setText(""); textKode.setText(""); textNama.setText(""); textTanggalLahir.setValue(new Date()); textTelepon.setText(""); imageChooser.setImage(null); if (karyawan != null) { karyawan.setId(null); } } public JRadioButton getRadioPria() { return radioPria; } public JRadioButton getRadioWanita() { return radioWanita; } public WhiteTextArea getTextAlamat() { return textAlamat; } public TextBoxTransfer getTextEmail() { return textEmail; } public TextBoxTransfer getTextKode() { return textKode; } public TextBoxTransfer getTextNama() { return textNama; } public DateBox getTextTanggalLahir() { return textTanggalLahir; } public TextBoxTransfer getTextTelepon() { return textTelepon; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jeniskelamin = new ButtonGroup(); labelKode = new WhiteLabel(); labelNama = new WhiteLabel(); labelTanggalLahir = new WhiteLabel(); labelAlamat = new WhiteLabel(); textKode = new TextBoxTransfer(); textNama = new TextBoxTransfer(); textTanggalLahir = new DateBox(); textAlamat = new WhiteTextArea(); errorKode = new RedLabel(); errorNama = new RedLabel(); errorTanggalLahir = new RedLabel(); errorAlamat = new RedLabel(); textTelepon = new TextBoxTransfer(); labelTelepon = new WhiteLabel(); labelEmail = new WhiteLabel(); labelJenisKelamin = new WhiteLabel(); labelPhoto = new WhiteLabel(); textEmail = new TextBoxTransfer(); radioPria = new JRadioButton(); radioWanita = new JRadioButton(); errorTelepon = new RedLabel(); errorEmail = new RedLabel(); imageChooser = new ImageChooser(); buttonBatal = new Button(); buttonUbah = new Button(); buttonCari = new Button(); setBackground(new Color(0, 0, 0)); labelKode.setHorizontalAlignment(SwingConstants.RIGHT); labelKode.setText("Kode :"); labelNama.setHorizontalAlignment(SwingConstants.RIGHT); labelNama.setText("Nama :"); labelTanggalLahir.setHorizontalAlignment(SwingConstants.RIGHT); labelTanggalLahir.setText("Tanggal Lahir :"); labelAlamat.setHorizontalAlignment(SwingConstants.RIGHT); labelAlamat.setText("Alamat :"); textTanggalLahir.setFormatterFactory( new DefaultFormatterFactory(new DateFormatter(DateFormat.getDateInstance(DateFormat.LONG)))); textTanggalLahir.setPreferredSize(new Dimension(120, 24)); textTanggalLahir.setValue(new Date()); errorKode.setText("error kode"); errorNama.setText("error nama"); errorTanggalLahir.setText("error tanggal lahir"); errorAlamat.setText("error alamat"); labelTelepon.setHorizontalAlignment(SwingConstants.RIGHT); labelTelepon.setText("Telepon :"); labelEmail.setHorizontalAlignment(SwingConstants.RIGHT); labelEmail.setText("Email :"); labelJenisKelamin.setHorizontalAlignment(SwingConstants.RIGHT); labelJenisKelamin.setText("Jenis Kelamin :"); labelPhoto.setHorizontalAlignment(SwingConstants.RIGHT); labelPhoto.setText("Photo :"); jeniskelamin.add(radioPria); radioPria.setFont(new Font("Tahoma", 1, 11)); radioPria.setForeground(new Color(255, 255, 255)); radioPria.setSelected(true); radioPria.setText("Pria"); radioPria.setOpaque(false); jeniskelamin.add(radioWanita); radioWanita.setFont(new Font("Tahoma", 1, 11)); radioWanita.setForeground(new Color(255, 255, 255)); radioWanita.setText("Wanita"); radioWanita.setOpaque(false); errorTelepon.setText("error telepon"); errorEmail.setText("error email"); buttonBatal.setMnemonic('B'); buttonBatal.setText("Batal"); buttonUbah.setMnemonic('U'); buttonUbah.setText("Ubah"); buttonCari.setText("Cari"); GroupLayout layout = new GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING).addGroup(layout .createSequentialGroup().addContainerGap() .addGroup(layout.createParallelGroup(Alignment.LEADING).addGroup(Alignment.TRAILING, layout.createSequentialGroup().addGroup(layout.createParallelGroup(Alignment.LEADING) .addGroup(layout.createParallelGroup(Alignment.TRAILING, false) .addComponent(labelPhoto, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelJenisKelamin, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelEmail, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createParallelGroup(Alignment.TRAILING, false) .addComponent(labelTelepon, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelTanggalLahir, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelAlamat, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelNama, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelKode, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addPreferredGap(ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(Alignment.TRAILING) .addComponent(textAlamat, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) .addComponent(textNama, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) .addComponent(textTanggalLahir, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) .addComponent(textTelepon, GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) .addGroup(Alignment.LEADING, layout.createSequentialGroup().addComponent(radioPria) .addPreferredGap(ComponentPlacement.UNRELATED) .addComponent(radioWanita)) .addComponent(imageChooser, Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 253, GroupLayout.PREFERRED_SIZE) .addComponent(textEmail, GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(textKode, GroupLayout.DEFAULT_SIZE, 339, Short.MAX_VALUE) .addPreferredGap(ComponentPlacement.UNRELATED) .addComponent(buttonCari, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) .addGap(4, 4, 4) .addGroup(layout.createParallelGroup(Alignment.LEADING) .addComponent(errorKode, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorNama, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorTanggalLahir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorAlamat, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorTelepon, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorEmail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) .addGroup(Alignment.TRAILING, layout.createSequentialGroup() .addComponent(buttonUbah, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED).addComponent(buttonBatal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) .addContainerGap())); layout.setVerticalGroup(layout.createParallelGroup(Alignment.LEADING).addGroup(layout .createSequentialGroup().addContainerGap() .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(labelKode, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(textKode, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorKode, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(buttonCari, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(labelNama, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(textNama, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorNama, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(labelTanggalLahir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(textTanggalLahir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorTanggalLahir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.LEADING) .addComponent(labelAlamat, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(textAlamat, GroupLayout.PREFERRED_SIZE, 88, GroupLayout.PREFERRED_SIZE) .addComponent(errorAlamat, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(textTelepon, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(labelTelepon, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorTelepon, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(labelEmail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(textEmail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(errorEmail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(labelJenisKelamin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(radioPria).addComponent(radioWanita)) .addPreferredGap(ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(Alignment.LEADING) .addComponent(labelPhoto, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(imageChooser, GroupLayout.PREFERRED_SIZE, 189, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(Alignment.BASELINE) .addComponent(buttonBatal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(buttonUbah, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addContainerGap())); }// </editor-fold>//GEN-END:initComponents public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } public void afterPropertiesSet() throws Exception { setTitle(applicationContext.getMessage("ubahkaryawan.title", null, Locale.getDefault())); } // Variables declaration - do not modify//GEN-BEGIN:variables protected Button buttonBatal; protected Button buttonCari; protected Button buttonUbah; protected RedLabel errorAlamat; protected RedLabel errorEmail; protected RedLabel errorKode; protected RedLabel errorNama; protected RedLabel errorTanggalLahir; protected RedLabel errorTelepon; protected ImageChooser imageChooser; protected ButtonGroup jeniskelamin; protected WhiteLabel labelAlamat; protected WhiteLabel labelEmail; protected WhiteLabel labelJenisKelamin; protected WhiteLabel labelKode; protected WhiteLabel labelNama; protected WhiteLabel labelPhoto; protected WhiteLabel labelTanggalLahir; protected WhiteLabel labelTelepon; protected JRadioButton radioPria; protected JRadioButton radioWanita; protected WhiteTextArea textAlamat; protected TextBoxTransfer textEmail; protected TextBoxTransfer textKode; protected TextBoxTransfer textNama; protected DateBox textTanggalLahir; protected TextBoxTransfer textTelepon; // End of variables declaration//GEN-END:variables }