📄 moviemodel.java
字号:
import java.io.*;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MovieModel extends WmvcModel { private int currentMovieIndex; private Vector theList; private final int FILE_ID=48879; private boolean listChanged; private boolean editsMade; private File myFile; public ListIterator getMovieListIterator(){ return theList.listIterator(); } public boolean getListChanged(){ return listChanged; } public boolean getEditsMade(){ return editsMade; } public int getCurrentMovieIndex(){ return currentMovieIndex; } public int getNumberOfMovies(){ return theList.size(); } public File getFile(){ return myFile; } public MovieModel(){ editsMade=false; listChanged=false; theList=new Vector(); myFile=null; } public void setCurrentMovieIndex(int index){ if(theList==null||theList.size()==0) return; if(index<0) index=theList.size()-1; if(index>=theList.size()) index=0; currentMovieIndex=index; notifyViews(); } public void addMovie(Movie movie){ if(movie==null) return; editsMade=true; listChanged=true; ListIterator it=getMovieListIterator(); int nextI=0; while(it.hasNext()){ nextI=it.nextIndex(); Movie m=(Movie)it.next(); String adding=movie.getTitle(); String curName=m.getTitle(); if(adding.compareToIgnoreCase(curName)<=0) break; } if(!it.hasNext()){ theList.add(movie); setCurrentMovieIndex(theList.size()-1); }else{ theList.add(nextI,movie); setCurrentMovieIndex(nextI); } } public void deleteCurrentMovie(){ if(theList.size()<=0){ return; } editsMade=true; listChanged=true; theList.removeElementAt(currentMovieIndex); setCurrentMovieIndex(currentMovieIndex-1); } public void replaceCurrentMovie(Movie movie){ if(movie==null) return; theList.setElementAt(movie,currentMovieIndex); editsMade=true; listChanged=true; notifyViews(); } public boolean saveMovies(){ return saveMoviesAs(myFile); } public boolean saveMoviesAs(File file){ if(file!=null){ try{ DataOutputStream out=new DataOutputStream( new BufferedOutputStream(new FileOutputStream(file))); out.writeInt(FILE_ID); ListIterator it=getMovieListIterator(); while(it.hasNext()){ Movie m=(Movie)it.next(); m.writeMovie(out); } out.flush(); out.close(); myFile=file; }catch(IOException e){ JOptionPane.showMessageDialog( WmvcApp.getFrame(), "Error opening file:"+e, "MovieCat Error", JOptionPane.ERROR_MESSAGE); return false; } }else{ return false; } editsMade=false; return true; } public boolean openMovies(File file){ if(file!=null){ myFile=file; try{ DataInputStream in=new DataInputStream( new BufferedInputStream( new FileInputStream(file))); if(in.readInt()!=FILE_ID){ in.close(); myFile=null; JOptionPane.showMessageDialog( WmvcApp.getFrame(), file.getName()+ "is not a valid MovieCat file.", "Movie Error", JOptionPane.ERROR_MESSAGE); return false; } while(true){ Movie m=new Movie(); if(!m.readMovie(in)) break; theList.add(m); } }catch(IOException e){ JOptionPane.showMessageDialog( WmvcApp.getFrame(), "Error reading file:"+e, "MovieCat Error", JOptionPane.ERROR_MESSAGE); myFile=null; return false; } editsMade=false; listChanged=true; notifyViews(); return true; }else{ return false; } } public boolean closeMovies(){ myFile=null; theList.clear(); editsMade=false; listChanged=true; notifyViews(); return true; } public Movie getCurrentMovie(){ if(currentMovieIndex<0||currentMovieIndex>=theList.size()) return null; else if(theList.size()==0) return null; else return (Movie)theList.elementAt(currentMovieIndex); } public void notifyViews(){ super.notifyViews(); listChanged=false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -