SlideWriter Application
Classes:
Thumbnail.java
Browsefilter.java
Slide.java
SlideTray.java
Feel free to contact me if you wish to have a zip file sent to you of the entire application.
/**
* SlideWriter by Steve Borga and Cory Goldfuss 3-20-1
* Program allows the creation and viewing of slide trays. A tray consists
* of several individual slides. A slide is then composed of an image, a title,
* and a short descriptive text about the slide. This program enables the user to
* create slides, add them to a tray and ultimately create a tray by adding several slides.
* In order to view the slide show, the user must save the current tray by selecting Save HTML File.
* This will write a HTML file to the selected directory which consists of an applet and several parameter
* tags which the applet uses. For more information about the other program, see the documentation of
* SlidePresenter.java
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.border.*;
import java.util.*;
import javax.swing.event.*;
public class SlideWriter extends JApplet implements ActionListener
{
// make an application - Standard method for most applets
public static void main(String s[]){
JFrame frame = new JFrame("SlideWriter");
frame.setResizable(false);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
SlideWriter appletObject = new SlideWriter();
appletObject.init();
appletObject.start();
frame.getContentPane().add(appletObject);
int w = frame.getWidth();
int h = frame.getHeight();
int width = appletObject.getWidth() + 10;
int height = appletObject.getHeight() + 20;
frame.setSize(width, height);
frame.show();
}
private Font titleFont;
private Slide mySlide = new Slide();
private SlideTray myTray = new SlideTray();
private TitledBorder imageBorder;
private LineBorder myBorder = new LineBorder( Color.black, 3 );
private File myImage, thisSlide, thisTray, thisHTML;
private ImageIcon selectedImage;
private String imageName;
private String fileName;
private String title; // title of slide
private String description; // description of slide
private String slideName;
private String trayName;
private String HTMLName;
private String shortSlideName; // stores slide names only, not the absolute path
private String shortTrayName; // stores tray names only, not the absolute path
private Color color = Color.black; // background color of slide
private Thumbnail tNail = new Thumbnail();
private java.util.List trayList = new ArrayList(); // stores the image names in a list
private java.util.List trayList2 = new ArrayList(); // stores entire paths in a list
private DefaultListModel listModel = new DefaultListModel(); // used for Lists
private PrintWriter fout; // file out for HTML code
// Declare menu items
private JMenuBar ourMenu = new JMenuBar();
private JMenu fileMenu = new JMenu("File");
private JMenu helpMenu = new JMenu("Help");
private JMenuItem aboutProg = new JMenuItem("About");
private JMenu newMenu = new JMenu("New");
private JMenuItem newSlide = new JMenuItem("Slide");
private JMenuItem newTray = new JMenuItem("Tray");
private JMenu saveMenu = new JMenu("Save");
private JMenuItem saveSlide = new JMenuItem("Slide");
private JMenuItem saveSlideTray = new JMenuItem("Slide Tray");
private JMenuItem saveHTML = new JMenuItem("HTML file");
private JMenu openMenu = new JMenu("Open");
private JMenuItem openSlide = new JMenuItem("Slide");
private JMenuItem slideFromTray = new JMenuItem("Slide from tray");
private JMenuItem openImage = new JMenuItem("Image");
private JMenuItem openSlideTray = new JMenuItem("Slide Tray");
private JMenuItem exitProg = new JMenuItem("Exit");
public void init()
{
// This line prevents the "Swing: checked access to system event queue" message seen in some browsers.
getRootPane().putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
// This code is automatically generated by Visual Cafe when you add
// components to the visual environment. It instantiates and initializes
// the components. To modify the code, only use code syntax that matches
// what Visual Cafe can generate, or Visual Cafe may be unable to back
// parse your Java file into its visual environment.
//{{INIT_CONTROLS
getContentPane().setLayout(null);
getContentPane().setBackground(java.awt.Color.black);
setSize(700,430);
previewPanel.setLayout(null);
getContentPane().add(previewPanel);
previewPanel.setBackground(java.awt.Color.magenta);
previewPanel.setBounds(20,5,640,380);
previewPanel.setVisible(false);
textPrevArea.setLineWrap(true);
textPrevArea.setWrapStyleWord(true);
textPrevArea.setDisabledTextColor(java.awt.Color.black);
textPrevArea.setEditable(false);
textPrevArea.setEnabled(false);
previewPanel.add(textPrevArea);
textPrevArea.setForeground(java.awt.Color.black);
textPrevArea.setFont(new Font("Dialog", Font.BOLD, 10));
textPrevArea.setBounds(348,67,240,180);
textPrevArea.setVisible(false);
exitButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
exitButton.setText("Exit Preview");
exitButton.setActionCommand("Exit Preview");
previewPanel.add(exitButton);
exitButton.setBounds(480,7,132,24);
exitButton.setVisible(false);
picturePrevPanel.setLayout(new GridLayout(1,1,0,0));
previewPanel.add(picturePrevPanel);
picturePrevPanel.setBounds(60,67,240,200);
picturePrevPanel.setVisible(false);
previousButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
previousButton.setText("Previous");
previousButton.setActionCommand("Previous");
previousButton.setMnemonic((int)'P');
previousButton.setEnabled(false);
previewPanel.add(previousButton);
previousButton.setFont(new Font("Dialog", Font.BOLD, 10));
previousButton.setBounds(180,283,100,30);
previousButton.setVisible(false);
nextButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
nextButton.setText("Next");
nextButton.setActionCommand("Next");
nextButton.setMnemonic((int)'N');
nextButton.setEnabled(false);
previewPanel.add(nextButton);
nextButton.setFont(new Font("Dialog", Font.BOLD, 10));
nextButton.setBounds(312,283,100,30);
nextButton.setVisible(false);
picturePanel.setLayout(new GridLayout(1,1,0,0));
getContentPane().add(picturePanel);
picturePanel.setBackground(java.awt.Color.white);
picturePanel.setBounds(50,20,240,180);
previewButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
previewButton.setText("Preview");
previewButton.setActionCommand("Preview");
getContentPane().add(previewButton);
previewButton.setBounds(48,300,132,36);
colorButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
colorButton.setText("Change Color");
colorButton.setActionCommand("Change Color");
getContentPane().add(colorButton);
colorButton.setBounds(48,240,132,40);
titleLabel.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
titleLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
titleLabel.setText("Title:");
getContentPane().add(titleLabel);
titleLabel.setBounds(360,20,48,40);
textLabel.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
textLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
textLabel.setText("Text:");
getContentPane().add(textLabel);
textLabel.setBounds(360,90,48,40);
descriptionScroll.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.TEXT_CURSOR));
getContentPane().add(descriptionScroll);
descriptionScroll.setBounds(408,90,240,102);
descriptionArea.setLineWrap(true);
descriptionArea.setWrapStyleWord(true);
descriptionArea.setDisabledTextColor(java.awt.Color.black);
descriptionScroll.add(descriptionArea);
descriptionArea.setFont(new Font("Dialog", Font.PLAIN, 11));
descriptionArea.setBounds(408,90,220,102);
getContentPane().add(titleField);
titleField.setFont(new Font("Serif", Font.PLAIN, 24));
titleField.setBounds(408,20,240,40);
addToTrayButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
addToTrayButton.setText("Add Slide");
addToTrayButton.setActionCommand("Add to Tray");
addToTrayButton.setAlignmentY(0.0F);
getContentPane().add(addToTrayButton);
addToTrayButton.setBounds(276,264,115,36);
removeButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
removeButton.setText("Remove Slide");
removeButton.setActionCommand("Remove Slide");
removeButton.setAlignmentY(0.0F);
getContentPane().add(removeButton);
removeButton.setBounds(276,312,115,36);
getContentPane().add(listPane);
listPane.setBounds(408,228,240,156);
trayListIndex.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
listPane.add(trayListIndex);
trayListIndex.setBounds(408,228,240,156);
trayLabel.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
trayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
trayLabel.setText("Tray:");
getContentPane().add(trayLabel);
trayLabel.setBounds(360,228,48,40);
//}}
// setup our menu
setJMenuBar( ourMenu );
ourMenu.add(fileMenu);
ourMenu.add(helpMenu);
helpMenu.add( aboutProg );
fileMenu.add(newMenu);
newMenu.add(newSlide);
newMenu.add(newTray);
fileMenu.add(new JSeparator());
fileMenu.add(openMenu);
openMenu.add(openSlide);
openMenu.add(slideFromTray);
openMenu.add(openSlideTray);
openMenu.add(openImage);
fileMenu.add(new JSeparator());
fileMenu.add(saveMenu);
saveMenu.add(saveSlide);
saveMenu.add(saveSlideTray);
saveMenu.add(saveHTML);
fileMenu.add(new JSeparator());
fileMenu.add(exitProg);
// add the Thumbnail panel to our image panel
picturePanel.add(tNail);
// create borders
createBorder( previewPanel, "" );
createBorder( picturePanel, "" );
createBorder( descriptionArea, "" );
// add listeners
openImage.addActionListener(this);
colorButton.addActionListener(this);
previewButton.addActionListener(this);
exitButton.addActionListener(this);
saveSlide.addActionListener(this);
openSlide.addActionListener(this);
newSlide.addActionListener(this);
exitProg.addActionListener(this);
aboutProg.addActionListener( this );
addToTrayButton.addActionListener(this);
saveSlideTray.addActionListener(this);
openSlideTray.addActionListener(this);
newTray.addActionListener(this);
slideFromTray.addActionListener(this);
removeButton.addActionListener(this);
saveHTML.addActionListener(this);
}
//{{DECLARE_CONTROLS
javax.swing.JPanel previewPanel = new javax.swing.JPanel();
javax.swing.JTextArea textPrevArea = new javax.swing.JTextArea();
javax.swing.JButton exitButton = new javax.swing.JButton();
javax.swing.JPanel picturePrevPanel = new javax.swing.JPanel();
javax.swing.JButton previousButton = new javax.swing.JButton();
javax.swing.JButton nextButton = new javax.swing.JButton();
javax.swing.JPanel picturePanel = new javax.swing.JPanel();
javax.swing.JButton previewButton = new javax.swing.JButton();
javax.swing.JButton colorButton = new javax.swing.JButton();
javax.swing.JLabel titleLabel = new javax.swing.JLabel();
javax.swing.JLabel textLabel = new javax.swing.JLabel();
java.awt.ScrollPane descriptionScroll = new java.awt.ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
javax.swing.JTextArea descriptionArea = new javax.swing.JTextArea();
javax.swing.JTextField titleField = new javax.swing.JTextField();
javax.swing.JButton addToTrayButton = new javax.swing.JButton();
javax.swing.JButton removeButton = new javax.swing.JButton();
java.awt.ScrollPane listPane = new java.awt.ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
javax.swing.JList trayListIndex = new javax.swing.JList(listModel);
javax.swing.JLabel trayLabel = new javax.swing.JLabel();
//}}
public void actionPerformed(ActionEvent ae){
if (ae.getSource() == newSlide){
// test to see if anything changed so user does not destroy current slide
if( mySlide.getColor() != color ||
mySlide.getText().compareTo(descriptionArea.getText().trim()) != 0 ||
mySlide.getTitle().compareTo(titleField.getText().trim()) != 0 ||
selectedImage != mySlide.getPhoto()
)
saveSlide();
reset();
}
if (ae.getSource() == previewButton){
// switch to preview
previewPanel.setVisible(true);
textPrevArea.setVisible(true);
exitButton.setVisible(true);
picturePrevPanel.setVisible(true);
previousButton.setVisible(true);
nextButton.setVisible(true);
previewButton.setVisible(false);
colorButton.setVisible(false);
descriptionArea.setVisible(false);
titleField.setVisible(false);
addToTrayButton.setVisible( false );
removeButton.setVisible( false );
trayListIndex.setVisible( false );
descriptionScroll.setVisible( false );
listPane.setVisible( false );
// move the image to the other panel
picturePrevPanel.add(tNail);
createBorder(picturePrevPanel, titleField.getText().trim());
textPrevArea.setText(descriptionArea.getText().trim());
}
if (ae.getSource() == saveSlide){
saveSlide();
}
if (ae.getSource() == colorButton){
// using the premade color chooser dialog
Color c = JColorChooser.showDialog( previewPanel, "Choose new background color", Color.black );
if ( c != null ){
color = c;
previewPanel.setBackground( color );
colorButton.setBackground( color );
textPrevArea.setBackground( color );
picturePrevPanel.setBackground( color );
tNail.setBackground( color );
}
return;
}
if (ae.getSource() == openImage){
JFileChooser fileChooser = new JFileChooser();
//only allow files
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
// set filter to just .jpg, .jpge, and .gif
BrowseFilter jpgFilter = new BrowseFilter(".jpg", "JPG files (*.jpg)");
BrowseFilter jpegFilter = new BrowseFilter(".jpeg", "JPEG files (*.jpeg)");
BrowseFilter gifFilter = new BrowseFilter(".gif", "Compuserve GIF (*.gif)");
fileChooser.addChoosableFileFilter( gifFilter );
fileChooser.addChoosableFileFilter( jpegFilter );
fileChooser.addChoosableFileFilter( jpgFilter );
fileChooser.setFileFilter( jpgFilter );
// handle results
int result = fileChooser.showOpenDialog( this );
if (result >= 0 ){
myImage = fileChooser.getSelectedFile();
try{
imageName = myImage.getAbsolutePath(); // get full path to file
}
catch ( NullPointerException npe ){
System.out.println( npe );
}
selectedImage = new ImageIcon( imageName );
tNail.setImage( selectedImage );
fileName = myImage.getName();
tNail.displayImage();
}
}
if (ae.getSource() == openSlide){
// passing an empty string to bring up FileChooser
openThisSlide("");
setSlide();
}
if (ae.getSource() == exitButton){
// exit preview mode
previewPanel.setVisible(false);
textPrevArea.setVisible(false);
exitButton.setVisible(false);
picturePrevPanel.setVisible(false);
previousButton.setVisible(false);
nextButton.setVisible(false);
previewButton.setVisible(true);
colorButton.setVisible(true);
descriptionArea.setVisible(true);
titleField.setVisible(true);
addToTrayButton.setVisible( true );
removeButton.setVisible( true );
trayListIndex.setVisible( true );
descriptionScroll.setVisible( true );
listPane.setVisible( true );
picturePanel.add(tNail);
}
if (ae.getSource() == exitProg){
System.exit(0); //this is pretty self explanatory
}
if (ae.getSource() == removeButton){
// remove selected slide from tray
int i = trayListIndex.getSelectedIndex();
trayList.remove(i);
trayList2.remove(i);
listModel.remove(i);
}
if (ae.getSource() == addToTrayButton){
// test if the slide has changed
if( mySlide.getColor() != color ||
mySlide.getText().compareTo(descriptionArea.getText().trim()) != 0 ||
mySlide.getTitle().compareTo(titleField.getText().trim()) != 0 ||
selectedImage != mySlide.getPhoto()
){
if (!saveSlide()) //if they won't save the slide
return; //we won't put it in the tray
}
// add slide before currently selected slide
int n = trayListIndex.getSelectedIndex();
if( n >= 0 && n < trayList.size()){
trayList.add(n, shortSlideName);
trayList2.add(n, slideName);
listModel.add(n, shortSlideName);
}
// unless nothing is selected then just add to end of list
else{
trayList.add(shortSlideName);
trayList2.add(slideName);
listModel.addElement(shortSlideName);
}
}
if( ae.getSource() == saveSlideTray){
myTray.setNames(trayList);
myTray.setPaths(trayList2);
saveTray();
}
if( ae.getSource() == openSlideTray){
openThisTray();
trayList.clear();
trayList2.clear();
listModel.clear();
// get individual slide information and show it in the list
trayList = myTray.getNames();
trayList2 = myTray.getPaths();
for(int i = 0; i < trayList.size(); i++){
listModel.addElement(trayList.get(i));
}
// open up first slide from tray automatically upon load
openThisSlide( (String)trayList2.get(0) );
shortSlideName = (String) trayList.get(0);
titleField.setText(mySlide.getTitle());
descriptionArea.setText(mySlide.getText());
selectedImage = mySlide.getPhoto();
fileName = mySlide.getPhotoName();
color = mySlide.getColor();
previewPanel.setBackground( color );
colorButton.setBackground( color );
textPrevArea.setBackground( color );
picturePrevPanel.setBackground( color );
tNail.setImage( selectedImage );
tNail.displayImage();
tNail.setBackground( color );
}
if( ae.getSource() == newTray){
trayList.clear();
trayList2.clear();
listModel.clear();
myTray = new SlideTray();
reset();
}
if (ae.getSource() == slideFromTray){
// open slide that is currently selected in the List
int n = trayListIndex.getSelectedIndex();
if( n >= 0 && n < trayList.size())
openThisSlide((String) trayList2.get(n));
// if nothing selected then open up first slide
else
openThisSlide((String) trayList2.get(0));
setSlide();
shortSlideName = (String) trayList.get(n);
}
if ( ae.getSource() == aboutProg ){
// give us credit - We hope this is a good thing to do
JOptionPane.showMessageDialog( this, "SlideWriter 1.0b\n" + "Copyright 2001 Borfuss Inc.", "SlideWriter 1.0b", JOptionPane.INFORMATION_MESSAGE);
}
if ( ae.getSource() == saveHTML){
// prepare tray for viewing as a presentation by saving the HTML file
// with parameters - See SlidePresenter.java for more information.
JFileChooser HTMLChooser = new JFileChooser();
HTMLChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
BrowseFilter HTMLFilter = new BrowseFilter(".html", "HTML files");
HTMLChooser.addChoosableFileFilter( HTMLFilter );
HTMLChooser.setFileFilter( HTMLFilter );
int result = HTMLChooser.showSaveDialog( this );
thisHTML = HTMLChooser.getSelectedFile();
try{
HTMLName = thisHTML.getAbsolutePath(); // get full path to file
}
catch ( NullPointerException npe ){
System.out.println( npe );
JOptionPane.showMessageDialog( this, "Please choose an HTML.", "No HTML Selected", JOptionPane.INFORMATION_MESSAGE);
}
if (!HTMLName.endsWith(".html"))
HTMLName = HTMLName + ".html";
try{
fout = new PrintWriter(new BufferedWriter(new FileWriter(HTMLName)));
}
catch( FileNotFoundException e ){}
catch( IOException e ){}
// write HTML file
Code removed becasue I didn't want to go through and make it work in a web browser.
This section writes the HTML file.
}
// used to make borders around JPanels on the fly
public void createBorder( JPanel c, String name ){
if (name != ""){
titleFont = new Font("Dialog", Font.PLAIN, 10);
imageBorder = new TitledBorder( myBorder, " " + name + " ");
imageBorder.setTitleFont( titleFont );
imageBorder.setTitleColor( Color.black );
c.setBorder( imageBorder );
}
else
c.setBorder( new TitledBorder( myBorder, ""));
}
// polymorphism with the createBorder method, in order to use the same call for a JTextArea
public void createBorder( JTextArea c, String name ){
if (name != ""){
imageBorder = new TitledBorder( myBorder, " " + name + " ");
c.setBorder( imageBorder );
}
else
c.setBorder( new TitledBorder( myBorder, ""));
}
/* Save current slide */
public boolean saveSlide(){
mySlide.setColor(color);
mySlide.setText(descriptionArea.getText().trim());
mySlide.setTitle(titleField.getText().trim());
mySlide.setPhotoName(fileName);
mySlide.setPhoto(selectedImage);
JFileChooser slideChooser = new JFileChooser();
slideChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
BrowseFilter sldFilter = new BrowseFilter(".sld", "Slide files (*.sld)");
BrowseFilter slideFilter = new BrowseFilter(".slide", "Slide files (*.slide)");
slideChooser.addChoosableFileFilter( sldFilter );
slideChooser.addChoosableFileFilter( slideFilter );
slideChooser.setFileFilter( sldFilter );
int result = slideChooser.showSaveDialog( this );
// safegaurd to prevent adding of blank slides to tray
// unless the slide's title is Easter Egg
if (result == slideChooser.CANCEL_OPTION ||
result == -1){
mySlide.setTitle("Easter Egg");
return false;
}
thisSlide = slideChooser.getSelectedFile();
shortSlideName = thisSlide.getName();
if (!shortSlideName.endsWith(".sld"))
shortSlideName = shortSlideName + ".sld";
try{
slideName = thisSlide.getAbsolutePath(); // get full path to file
}
catch ( NullPointerException npe ){
System.out.println( npe );
JOptionPane.showMessageDialog( this, "Please choose a slide.", "No Slide Selected", JOptionPane.INFORMATION_MESSAGE);
}
if (!slideName.endsWith(".sld"))
slideName = slideName + ".sld";
try{
ObjectOutputStream objectOut =
new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(slideName)));
objectOut.writeObject( mySlide );
objectOut.close();
}
// catch errors and do nothing with them
catch(NotSerializableException e){}
catch(InvalidClassException e){}
catch(IOException e){}
return true;
}
/* Open a slide */
public void openThisSlide(String s){
slideName = s;
// if no name is passed use FileChooser, else use slideName
if(s == ""){
JFileChooser slideChooser = new JFileChooser();
slideChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
BrowseFilter sldFilter = new BrowseFilter(".sld", "Slide files (*.sld)");
BrowseFilter slideFilter = new BrowseFilter(".slide", "Slide files (*.slide)");
slideChooser.addChoosableFileFilter( sldFilter );
slideChooser.addChoosableFileFilter( slideFilter );
slideChooser.setFileFilter( sldFilter );
int result = slideChooser.showOpenDialog( this );
thisSlide = slideChooser.getSelectedFile();
shortSlideName = thisSlide.getName();
try{
slideName = thisSlide.getAbsolutePath(); // get full path to file
}
catch ( NullPointerException npe ){
System.out.println( npe );
JOptionPane.showMessageDialog( this, "Please choose a slide.", "No Slide Selected", JOptionPane.INFORMATION_MESSAGE);
}
}
try{
ObjectInputStream objectIn =
new ObjectInputStream(
new BufferedInputStream(
new FileInputStream(slideName)));
mySlide = (Slide) objectIn.readObject();
objectIn.close();
}
catch(IOException e){}
catch(ClassNotFoundException e){}
}
/* Save Tray */
public boolean saveTray(){
JFileChooser trayChooser = new JFileChooser();
trayChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
BrowseFilter tryFilter = new BrowseFilter(".try", "Tray files (*.try)");
BrowseFilter trayFilter = new BrowseFilter(".tray", "Tray files (*.tray)");
trayChooser.addChoosableFileFilter( tryFilter );
trayChooser.addChoosableFileFilter( trayFilter );
trayChooser.setFileFilter( tryFilter );
int result = trayChooser.showSaveDialog( this );
if (result == trayChooser.CANCEL_OPTION)
return false;
thisTray = trayChooser.getSelectedFile();
shortTrayName = thisTray.getName();
if (!shortTrayName.endsWith(".try"))
shortTrayName = shortTrayName + ".try";
try{
trayName = thisTray.getAbsolutePath(); // get full path to file
}
catch ( NullPointerException npe ){
System.out.println( npe );
JOptionPane.showMessageDialog( this, "Please choose a tray.", "No Tray Selected", JOptionPane.INFORMATION_MESSAGE);
}
if (!trayName.endsWith(".try"))
trayName = trayName + ".try";
try{
ObjectOutputStream objectOut =
new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(trayName)));
objectOut.writeObject( myTray );
objectOut.close();
}
catch(NotSerializableException e){}
catch(InvalidClassException e){}
catch(IOException e){}
return true;
}
/* Open Tray */
public void openThisTray(){
JFileChooser trayChooser = new JFileChooser();
trayChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
BrowseFilter tryFilter = new BrowseFilter(".try", "Tray files (*.try)");
BrowseFilter trayFilter = new BrowseFilter(".tray", "Tray files (*.tray)");
trayChooser.addChoosableFileFilter( tryFilter );
trayChooser.addChoosableFileFilter( trayFilter );
trayChooser.setFileFilter( tryFilter );
int result = trayChooser.showOpenDialog( this );
thisTray = trayChooser.getSelectedFile();
shortTrayName = thisTray.getName();
try{
trayName = thisTray.getAbsolutePath(); // get full path to file
}
catch ( NullPointerException npe ){
System.out.println( npe );
JOptionPane.showMessageDialog( this, "Please choose a tray.", "No Tray Selected", JOptionPane.INFORMATION_MESSAGE);
}
try{
ObjectInputStream objectIn =
new ObjectInputStream(
new BufferedInputStream(
new FileInputStream(trayName)));
myTray = (SlideTray) objectIn.readObject();
objectIn.close();
}
catch(IOException e){}
catch(ClassNotFoundException e){}
}
// used for quick changing of GUI
private void reset(){
previewPanel.setVisible(false);
textPrevArea.setVisible(false);
exitButton.setVisible(false);
picturePrevPanel.setVisible(false);
previousButton.setVisible(false);
nextButton.setVisible(false);
previewButton.setVisible(true);
colorButton.setVisible(true);
descriptionArea.setVisible(true);
titleField.setVisible(true);
trayListIndex.setVisible( true );
addToTrayButton.setVisible( true );
removeButton.setVisible( true );
descriptionScroll.setVisible( true );
listPane.setVisible( true );
titleField.setText("");
descriptionArea.setText("");
picturePanel.remove(tNail);
tNail = new Thumbnail();
picturePanel.add(tNail);
picturePanel.setVisible(false);
picturePanel.setVisible(true);
}
// using current slide, setup the GUI accordingly
private void setSlide(){
titleField.setText(mySlide.getTitle());
descriptionArea.setText(mySlide.getText());
selectedImage = mySlide.getPhoto();
fileName = mySlide.getPhotoName();
color = mySlide.getColor();
previewPanel.setBackground( color );
colorButton.setBackground( color );
textPrevArea.setBackground( color );
picturePrevPanel.setBackground( color );
tNail.setImage( selectedImage );
tNail.displayImage();
tNail.setBackground( color );
}
}