/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* JStenografer.java
*
* Created on 6-ott-2010, 14.16.46
*/
package jstenografer.graphics;
import com.sun.awt.AWTUtilities;
import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.filechooser.FileFilter;
import jstenografer.Stenografer;
import jstenografer.exception.NotBMPDestinationFile;
import jstenografer.exception.TooLongStringException;
/**
*
* @author Paolo
*/
public class JStenografer
extends javax.
swing.
JFrame {
/** Creates new form JStenografer */
public JStenografer() {
try {
UIManager.
setLookAndFeel(new NimbusLookAndFeel
());
}
initComponents();
this.initChooser();
}
private void initChooser() {
this.chooser.removeChoosableFileFilter(this.chooser.getAcceptAllFileFilter());
this.
chooser.
addChoosableFileFilter(new FileFilter() {
@Override
public boolean accept
(File f
) {
String ext
= f.
getPath().
substring(f.
getPath().
length() - 3
);
if (f.isDirectory() || ext.equalsIgnoreCase("png") || ext.equalsIgnoreCase("bmp") || ext.equalsIgnoreCase("gif") || ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg")) {
return true;
}
return false;
}
@Override
public String getDescription
() {
return "Immagini (bmp,gif,png,jpg)";
}
});
this.save.removeChoosableFileFilter(this.chooser.getAcceptAllFileFilter());
this.
save.
addChoosableFileFilter(new FileFilter() {
@Override
public boolean accept
(File f
) {
String ext
= f.
getPath().
substring(f.
getPath().
length() - 3
);
if (f.isDirectory() || ext.equalsIgnoreCase("bmp")) {
return true;
}
return false;
}
@Override
public String getDescription
() {
return "Immagini (bmp)";
}
});
}
/** 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() {
panel
= new javax.
swing.
JPanel();
immLabel
= new javax.
swing.
JLabel();
immPath
= new javax.
swing.
JLabel();
searchButton
= new javax.
swing.
JButton();
writeButton
= new javax.
swing.
JButton();
readButton
= new javax.
swing.
JButton();
toWriteLabel
= new javax.
swing.
JLabel();
readLabel
= new javax.
swing.
JLabel();
setTitle("JStenografer - by Paolo Ricciuti (C)");
setResizable(false);
immLabel.setText("Immagine: ");
searchButton.setText("Sfoglia");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
searchButtonActionPerformed(evt);
}
});
writeButton.setText("Scrivi messaggio");
writeButton.setEnabled(false);
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
writeButtonActionPerformed(evt);
}
});
readButton.setText("Leggi messaggio");
readButton.setEnabled(false);
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
readButtonActionPerformed(evt);
}
});
toWriteLabel.setText("Da scrivere: ");
toWrite.setColumns(20);
toWrite.setRows(5);
scroll1.setViewportView(toWrite);
readLabel.setText("Letto: ");
read.setColumns(20);
read.setEditable(false);
read.setRows(5);
scroll2.setViewportView(read);
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addComponent(immLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(immPath, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(searchButton))
.addGroup(panelLayout.createSequentialGroup()
.addComponent(writeButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(readButton))
.addGroup(panelLayout.createSequentialGroup()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(readLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(toWriteLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(scroll1, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 281,
Short.
MAX_VALUE)
.
addComponent(scroll2, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 281,
Short.
MAX_VALUE))))
.addGap(38, 38, 38))
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(immLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(immPath, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
.
addComponent(searchButton, javax.
swing.
GroupLayout.
Alignment.
LEADING, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(writeButton)
.addComponent(readButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(toWriteLabel)
.addComponent(scroll1, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(readLabel)
.addComponent(scroll2, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(35, 35, 35))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(panel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(panel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE)
);
java.
awt.
Dimension screenSize
= java.
awt.
Toolkit.
getDefaultToolkit().
getScreenSize();
setBounds((screenSize.width-416)/2, (screenSize.height-338)/2, 416, 338);
}// </editor-fold>//GEN-END:initComponents
private void searchButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_searchButtonActionPerformed
int retval = this.chooser.showOpenDialog(this);
this.choose = this.chooser.getSelectedFile();
this.immPath.setText(this.choose.getAbsolutePath());
String name
= this.
choose.
getAbsolutePath();
String ext
= name.
substring(name.
length() - 4
);
if (!ext.equalsIgnoreCase(".bmp")) {
this.writeButton.setEnabled(true);
this.readButton.setEnabled(false);
} else {
this.writeButton.setEnabled(false);
this.readButton.setEnabled(true);
}
}
}//GEN-LAST:event_searchButtonActionPerformed
private void writeButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_writeButtonActionPerformed
int retval = this.save.showSaveDialog(this);
String toSteno
= this.
toWrite.
getText();
try {
String name
= this.
save.
getSelectedFile().
getAbsolutePath();
String ext
= name.
substring(name.
length() - 4
);
File dest
= this.
save.
getSelectedFile();
if (!ext.equalsIgnoreCase(".bmp")) {
dest
= new File(name
+ ".bmp");
}
Stenografer.write(this.choose, toSteno, dest);
} catch (TooLongStringException ex) {
JOptionPane.
showMessageDialog(this,
"Stringa troppo lunga per essere salvata in questa foto.");
} catch (NotBMPDestinationFile ex) {
JOptionPane.
showMessageDialog(this,
"Il file di destinazione deve essere un file BMP");
}
JOptionPane.
showMessageDialog(this,
"Stenografia completata!");
}
}//GEN-LAST:event_writeButtonActionPerformed
private void readButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_readButtonActionPerformed
try {
this.read.setText(Stenografer.read(this.choose));
}
}//GEN-LAST:event_readButtonActionPerformed
/**
* @param args the command line arguments
*/
public static void main
(String args
[]) {
public void run() {
new JStenografer().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.
swing.
JLabel immLabel
;
private javax.
swing.
JLabel immPath
;
private javax.
swing.
JPanel panel
;
private javax.
swing.
JButton readButton
;
private javax.
swing.
JLabel readLabel
;
private javax.
swing.
JButton searchButton
;
private javax.
swing.
JLabel toWriteLabel
;
private javax.
swing.
JButton writeButton
;
// End of variables declaration//GEN-END:variables
}