?? mainview.java
字號:
/* MainView - Top level view/controller for the MovieCat * * This is the main view/controller. * The main view/controller interacts with the model for * the global commands like open and save list in a file. * Copyright (c) 2001, Bruce E. Wampler */import java.io.*;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.filechooser.*;public class MainView extends WmvcView{ private JFileChooser fc; // instance of a file chooser private MovieEditor theMovieEditor; // instance of editor private MovieModel myModel; // local copy of model reference public MainView() { myModel = (MovieModel) WmvcApp.getModel(); myModel.addView(this); // Create file chooser dialog. We will tell it to open // in the "user.dir" directory, which will usually be // the "current directory" when the program was started. // This will let the user use the "Start In" setting // on Windows, for example. fc = new JFileChooser( // file chooser in current dir. new File(System.getProperty("user.dir"))); createControls(); // Create controls - menus,toolbar theMovieEditor = MovieEditor.getInstance(); // editor theMovieEditor.initialize(); } public boolean closingCurrentMovie(boolean ask) { // Check if current movie has changed, ask if want to // save. Returns true if saved or didn't want to save, // false if save fails or user cancels. if (myModel.getEditsMade()) { if (ask) // interactive closing { switch (JOptionPane.showConfirmDialog( WmvcApp.getFrame(), "The movie list has changed since you " + "last saved it.\n" + "Save the current movie list?", "Movie List Has Changed", JOptionPane.YES_NO_CANCEL_OPTION)) { case JOptionPane.NO_OPTION: return true; // don't save, but done case JOptionPane.CANCEL_OPTION: case JOptionPane.CLOSED_OPTION: return false; default: break; // YES } 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() { // This is the Controller for this view. It creates the // menu & toolbar, and implements all the control code, // mostly in anonymous WmvcExecutor classes. // MenuBar: File JMenu fileMenu = new JMenu("File"); // File->Open Movie List WmvcMenuItemCtl fileOpen = new WmvcMenuItemCtl(fileMenu, "Open Movie List","images/open-16.gif", 'O', null /* no accel */, new WmvcExecutor() { public void execute(ActionEvent event) { if (!closingCurrentMovie(true)) return; int retV = fc.showOpenDialog(WmvcApp.getFrame()); if (retV == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); myModel.openMovies(file); } } }); // File->Save Movie List WmvcMenuItemCtl fileSave = new WmvcMenuItemCtl(fileMenu, "Save Movie List","images/save-16.gif", 'S', null /* no accel */, new WmvcExecutor() { public void execute(ActionEvent event) { if (myModel.getFile() == null) { JOptionPane.showMessageDialog( WmvcApp.getFrame(), "No movie file name specified.\n" + "Use \"Save MovieList As\" instead.", "No file name specified", JOptionPane.ERROR_MESSAGE); } else myModel.saveMovies(); } }); // File->Save Movie List WmvcMenuItemCtl fileSaveAs = new WmvcMenuItemCtl( fileMenu, "Save Movie List As","images/gray.gif", 'A', null /* no accel */, new WmvcExecutor() { public void execute(ActionEvent event) { int retV = fc.showSaveDialog(WmvcApp.getFrame()); if (retV == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); myModel.saveMoviesAs(file); } } }); WmvcApp.addMenu(fileMenu); // Add to app menu // MenuBar: Edit JMenu editMenu = new JMenu("Edit"); // Edit->Edit Current Movie WmvcMenuItemCtl editEdit = new WmvcMenuItemCtl(editMenu, "Edit Current Movie","images/gray.gif", 'E', null /* no accel */, new WmvcExecutor() { public void execute(ActionEvent event) { Movie edited = theMovieEditor.showDialog( WmvcApp.getFrame(), myModel.getCurrentMovie()); myModel.replaceCurrentMovie(edited); } }); // Edit->Add New Movie WmvcMenuItemCtl editNew = new WmvcMenuItemCtl(editMenu, "Add New Movie","images/addmovie-16.gif", 'A', null /* no accel */, new WmvcExecutor() { public void execute(ActionEvent event) { Movie blank = new Movie(); Movie newMovie = theMovieEditor.showDialog( WmvcApp.getFrame(), blank); myModel.addMovie(newMovie); } }); // Edit->Remove Current Movie WmvcMenuItemCtl editRemove = new WmvcMenuItemCtl( editMenu, "Remove Current Movie","images/delx.gif", 'R', null /* no accel */, new WmvcExecutor() { public void execute(ActionEvent event) { myModel.deleteCurrentMovie(); } }); WmvcApp.addMenu(editMenu); // Add to app menu // ToolBar: Open WmvcTBButtonCtl toolOpen = new WmvcTBButtonCtl( "Open","images/open-16.gif", "Open an Existing Movie List", fileOpen.getWmvcExecutor()); // reuse fileopen exec // ToolBar: Add WmvcTBButtonCtl toolAdd = new WmvcTBButtonCtl( "Add Movie", "images/addmovie-16.gif", "Add a new movie", editNew.getWmvcExecutor()); // reuse editNew exec }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -