/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tr.gov.turkiye.esignuidesk.view.pane;
import iaik.pkcs.pkcs11.TokenException;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import tr.gov.turkiye.esign.core.SmartCard;
import tr.gov.turkiye.esign.exception.SmartCardException;
import tr.gov.turkiye.esignuidesk.annotation.FocusOwner;
import tr.gov.turkiye.esignuidesk.config.Config;
import tr.gov.turkiye.esignuidesk.controller.LogicManager;
import tr.gov.turkiye.esignuidesk.data.UserData;
import tr.gov.turkiye.esignuidesk.props.ScreenProperties;
import tr.gov.turkiye.esignuidesk.support.Utils;
/**
* Last Pane which from where user can leave application.
*
* @author iakpolat
*/
public class DonePane extends javax.swing.JPanel {
/**
* Creates new form DonePane
*/
public DonePane() {
initComponents();
backBtn.setVisible(false);
setBounds(Config.DEF_PANEL_STARTING_X, Config.DEF_PANEL_STARTING_Y, Config.DEF_PANEL_WIDTH, Config.DEF_PANEL_HEIGHT);
}
@FocusOwner
public JButton getQuitBtn() {
return quitBtn;
}
/**
* 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() {
successLabel = new javax.swing.JLabel();
userAgreementScroller = new javax.swing.JScrollPane();
userAgreementArea = new javax.swing.JTextArea();
quitBtn = new javax.swing.JButton();
backBtn = new javax.swing.JButton();
saveBtn = new javax.swing.JButton();
setBackground(new java.awt.Color(255, 255, 255));
setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
setSize(new java.awt.Dimension(530, 250));
setLayout(null);
successLabel.setText(ScreenProperties.getValue("done_msg")
);
add(successLabel);
successLabel.setBounds(135, 50, 250, 16);
userAgreementScroller.setBorder(null);
userAgreementScroller.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
userAgreementScroller.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
userAgreementArea.setEditable(false);
userAgreementArea.setColumns(20);
userAgreementArea.setForeground(new java.awt.Color(0, 51, 255));
userAgreementArea.setLineWrap(true);
userAgreementArea.setRows(5);
userAgreementArea.setText(ScreenProperties.getValue("done_detailed_msg"));
userAgreementArea.setWrapStyleWord(true);
userAgreementArea.setBorder(null);
userAgreementArea.setFocusable(false);
userAgreementScroller.setViewportView(userAgreementArea);
add(userAgreementScroller);
userAgreementScroller.setBounds(80, 90, 370, 70);
quitBtn.setText(ScreenProperties.getValue("quit"));
quitBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
quitBtnActionPerformed(evt);
}
});
add(quitBtn);
quitBtn.setBounds(270, 170, 60, 29);
backBtn.setText(ScreenProperties.getValue("back"));
backBtn.setEnabled(false);
backBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
backBtnActionPerformed(evt);
}
});
add(backBtn);
backBtn.setBounds(30, 170, 60, 29);
saveBtn.setText(ScreenProperties.getValue("save"));
saveBtn.setMaximumSize(new java.awt.Dimension(80, 29));
saveBtn.setMinimumSize(new java.awt.Dimension(80, 29));
saveBtn.setPreferredSize(new java.awt.Dimension(80, 29));
saveBtn.setSize(new java.awt.Dimension(80, 29));
saveBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveBtnActionPerformed(evt);
}
});
add(saveBtn);
saveBtn.setBounds(190, 170, 80, 29);
}// </editor-fold>//GEN-END:initComponents
private void backBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backBtnActionPerformed
LogicManager.cancel(Config.DONE_PANE_ID);
}//GEN-LAST:event_backBtnActionPerformed
private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveBtnActionPerformed
JFileChooser chooser = new JFileChooser();
chooser.setSelectedFile(new File(chooser.getCurrentDirectory().getAbsolutePath()+File.separator+Config.defaultFileName+Utils.formatTime(new Date(System.currentTimeMillis()))));
int result = chooser.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION) {
File file = new File(chooser.getCurrentDirectory().getAbsolutePath());
if(file.canWrite()) {
BufferedOutputStream writer = null;
try {
writer = new BufferedOutputStream(new FileOutputStream(new File(chooser.getSelectedFile().getAbsolutePath())));
writer.write(UserData.signedUserAgreement, 0, UserData.signedUserAgreement.length);
} catch (IOException ex) {
Logger.getLogger(DonePane.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if(writer!=null)
writer.close();
} catch (IOException ex) {
Logger.getLogger(DonePane.class.getName()).log(Level.SEVERE, null, ex);
}
}
} else {
//Error message permission denied for file write operation.
}
} else if(result==JFileChooser.ERROR_OPTION) {
System.out.println("Error");
} else if(result==JFileChooser.CANCEL_OPTION) {
System.out.println("Cancel");
} else {
//New feature for file chooser probably. Should be implemented by new developer.
}
}//GEN-LAST:event_saveBtnActionPerformed
private void quitBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quitBtnActionPerformed
try {
LogicManager.smartCard.finalizeModule();
} catch (SmartCardException ex) {
Logger.getLogger(DonePane.class.getName()).log(Level.SEVERE, null, ex);
}
LogicManager.done(Config.DONE_PANE_ID);
}//GEN-LAST:event_quitBtnActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton backBtn;
private javax.swing.JButton quitBtn;
private javax.swing.JButton saveBtn;
private javax.swing.JLabel successLabel;
private javax.swing.JTextArea userAgreementArea;
private javax.swing.JScrollPane userAgreementScroller;
// End of variables declaration//GEN-END:variables
}