www.pudn.com > lxc.rar > MainView.java


import java.io.*;
import java.util.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;

public class MainView extends WmvcView {
	private JFileChooser fc;
	private MovieEditor theMovieEditor;
	private MovieModel myModel;
	
	public MainView(){
		myModel=(MovieModel)WmvcApp.getModel();
		myModel.addView(this);
		
		fc=new JFileChooser(new File(System.getProperty("user.dir")));
		createControls();
		theMovieEditor=MovieEditor.getInstance();
		theMovieEditor.initialize();
	}
	
	public boolean closingCurrentMovie(boolean ask){
		if(myModel.getEditsMade()){
			if(ask){
				switch(JOptionPane.showConfirmDialog(
					WmvcApp.getFrame(),
					"The movie list has changed since you"
					+"last svae it.\n"
					+"Save the current movie list?",
					"Movie List has changed",
					JOptionPane.YES_NO_CANCEL_OPTION)){
					case JOptionPane.NO_OPTION:
						return true;
					case JOptionPane.CANCEL_OPTION:
					case JOptionPane.CLOSED_OPTION:
						return false;
					default:
						break;			
				}
				if(myModel.getFile()==null){
					int retV=
						fc.showSaveDialog(WmvcApp.getFrame());
					if(retV==JFileChooser.APPROVE_OPTION){
						File file=fc.getSelectedFile();
						if(!myModel.saveMoviesAs(file)){
							return false;
						}else{
							myModel.closeMovies();
							return true;
						}
					}else{
						return false;
					}			
				}
				myModel.saveMovies();
				myModel.closeMovies();		
			}
			
		}
		return true;
	}
	
	private void createControls(){
		JMenu fileMenu=new JMenu("File");
		WmvcMenuItemCtl fileOpen=new WmvcMenuItemCtl(
			fileMenu,"Open Movie List",
			null,'O',null,
			new WmvcExecutor(){
				public void execute(ActionEvent e){
					if(!closingCurrentMovie(true)){
						return;
					}
					int retV=fc.showOpenDialog(WmvcApp.getFrame());
					if(retV==JFileChooser.APPROVE_OPTION){
						File file=fc.getSelectedFile();
						myModel.openMovies(file);
					}	
				}
			});
		WmvcMenuItemCtl fileSave=new WmvcMenuItemCtl(fileMenu,
			"Sava Movie List",
			null,'S',null,
			new WmvcExecutor(){
				public void execute(ActionEvent e){
					if(myModel.getFile()==null){
						JOptionPane.showMessageDialog(
							WmvcApp.getFrame(),
							"No movie file name specified.\n"
							+"Use \"Save MoveList As\" instead.",
							"No file name specified",
							JOptionPane.ERROR_MESSAGE
							);
					}else{
						myModel.saveMovies();
					}
				}
			});
		WmvcMenuItemCtl fileSaveAs=new WmvcMenuItemCtl(fileMenu,
				"Save Movie List As",null,'A',null,
				new WmvcExecutor(){
					public void execute(ActionEvent e){
						int retV=
							fc.showSaveDialog(WmvcApp.getFrame());
						if(retV==JFileChooser.APPROVE_OPTION){
							File file=fc.getSelectedFile();
							myModel.saveMoviesAs(file);
						}	
					}
				}	
			);
		WmvcApp.addMenu(fileMenu);
		JMenu editMenu=new JMenu("Edit");
		WmvcMenuItemCtl editEdit=new WmvcMenuItemCtl(editMenu,
				"Edit Current Momie",null,'E',null,
				new WmvcExecutor(){
					public void execute(ActionEvent e){
						Movie edited=theMovieEditor.showDialog(
								WmvcApp.getFrame(),
								myModel.getCurrentMovie());
								myModel.replaceCurrentMovie(edited);													
					}
				}
			);
		WmvcMenuItemCtl editNew=new WmvcMenuItemCtl(
			editMenu,"Add New Movie",null,'A',null,
			new WmvcExecutor(){
				public void execute(ActionEvent e){
					Movie blank=new Movie();
					Movie newMovie=MovieEditor.getInstance().showDialog(
						WmvcApp.getFrame(),blank
					);
					myModel.addMovie(newMovie);
				}
			}
		);
		
		WmvcMenuItemCtl editRemove=new WmvcMenuItemCtl(
			editMenu,"Remove CurrentMovie",null,'R',null,
			new WmvcExecutor(){
				public void execute(ActionEvent e){
					myModel.deleteCurrentMovie();
				}
			}
		);
		
		WmvcApp.addMenu(editMenu);
		
		WmvcTBButtonCtl toolOpen=new WmvcTBButtonCtl(
			"Open",null,
			"Open an Exsiting Movie List",
			fileOpen.getWmvcExecutor()
		);
		
		WmvcTBButtonCtl toolAdd=new WmvcTBButtonCtl(
			"Add",null,
			"Add a new movie",
			editNew.getWmvcExecutor()
		);						
	}
}