"В классе Controller должен быть метод public void exit(), который не кидает исключения."
Что нужно сделать не могу понять что не так?
package com.javarush.task.task32.task3209;
import com.javarush.task.task32.task3209.listeners.FrameListener;
import com.javarush.task.task32.task3209.listeners.TabbedPaneChangeListener;
import com.javarush.task.task32.task3209.listeners.UndoListener;
import javax.swing.*;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class View extends JFrame implements ActionListener {
private Controller controller;
//это будет панель с двумя вкладками
private JTabbedPane tabbedPane = new JTabbedPane();
//это будет компонент для визуального редактирования html. Он будет размещен на первой вкладке.
private JTextPane htmlTextPane = new JTextPane();
//это будет компонент для редактирования html в виде текста, он будет отображать код html (теги и их содержимое).
private JEditorPane plainTextPane = new JEditorPane();
private UndoManager undoManager = new UndoManager();
private UndoListener undoListener = new UndoListener(undoManager);
public View(){
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
ExceptionHandler.log(e);
}
}
public Controller getController() {
return controller;
}
public void setController(Controller controller) {
this.controller = controller;
}
@Override
public void actionPerformed(ActionEvent actionEvent){ // этот метод наследуется от интерфейса ActionListener и будет вызваться при выборе пунктов меню, у которых наше представление указано в виде слушателя событий.
String actionCommand = actionEvent.getActionCommand();
switch (actionCommand){
case "Новый":
controller.createNewDocument();
break;
case "Открыть":
controller.openDocument();
break;
case "Сохранить":
controller.saveDocument();
break;
case "Сохранить как...":
controller.saveDocumentAs();
break;
case "Выход":
controller.exit();
break;
case "О программе":
showAbout();
break;
}
}
public void init(){
initGui();
FrameListener frameListener = new FrameListener(this);
this.addWindowListener(frameListener);
this.setVisible(true);
}
public void initMenuBar(){//oтвечает за инициализацию меню
JMenuBar menuBar = new JMenuBar();
MenuHelper.initFileMenu(this, menuBar);
MenuHelper.initEditMenu(this,menuBar);
MenuHelper.initStyleMenu(this,menuBar);
MenuHelper.initAlignMenu(this,menuBar);
MenuHelper.initColorMenu(this,menuBar);
MenuHelper.initFontMenu(this,menuBar);
MenuHelper.initHelpMenu(this,menuBar);
getContentPane().add(menuBar,BorderLayout.NORTH);
}
public void initEditor(){//oтвечает за инициализацию панелей редактора
htmlTextPane.setContentType("text/html");
JScrollPane htmlScrollPane = new JScrollPane(htmlTextPane);
tabbedPane.add("HTML", htmlScrollPane);
JScrollPane txtScrollPane = new JScrollPane(plainTextPane);
tabbedPane.add("Текст",txtScrollPane);
tabbedPane.setPreferredSize(new Dimension(300,300));
tabbedPane.addChangeListener(new TabbedPaneChangeListener(this));
getContentPane().add(tabbedPane,BorderLayout.CENTER);
}
public void initGui(){// oтвечает за инициализацию графического интерфейса
this.initMenuBar();
this.initEditor();
this.pack();
}
public void selectedTabChanged(){
int selectedComponent = tabbedPane.getSelectedIndex();
if(selectedComponent==0){
controller.setPlainText(plainTextPane.getText());
} else if (selectedComponent==1){
plainTextPane.setText(controller.getPlainText());
}
resetUndo();
}
public boolean canUndo(){
return undoManager.canUndo();
}
public boolean canRedo(){
return undoManager.canRedo();
}
public UndoListener getUndoListener(){
return undoListener;
}
public void undo(){
try {
undoManager.undo();
} catch (CannotUndoException e) {
ExceptionHandler.log(e);
}
}
public void redo(){
try {
undoManager.redo();
} catch (CannotRedoException e) {
ExceptionHandler.log(e);
}
}
public void resetUndo(){
undoManager.discardAllEdits();
}
public boolean isHtmlTabSelected(){
return tabbedPane.getSelectedIndex()==0;
}
public void selectHtmlTab(){
tabbedPane.setSelectedIndex(0);
resetUndo();
}
public void update(){
htmlTextPane.setDocument(controller.getDocument());
}
public void showAbout(){
JOptionPane.showMessageDialog(null,"Редактор HTML - velsion 1.0","О программе",JOptionPane.INFORMATION_MESSAGE );
}
}