package controller.subcontroller; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Observable; import java.util.logging.Level; import java.util.logging.Logger; import controller.interfaces.ICmdFieldReplacer; import model.structure.FieldReplacerData; import model.util.WindowUtils; import view.subview.id3.FieldReplacerView; public class FieldReplacerController extends Observable implements ActionListener { /** * the logger */ private final Logger logger = Logger.getLogger(this.getClass().getName()); /** * the window */ private FieldReplacerView window; /** * the close command which is called after closing the window */ private ICmdFieldReplacer closeCommand; /** * Constructor */ public FieldReplacerController() { } /** * sets the close command * * @param cmd * the command */ public void setCloseCommand(ICmdFieldReplacer cmd) { this.closeCommand = cmd; } /** * creates the window */ public void createWindow() { window = new FieldReplacerView(); window.init(); window.setVisible(true); window.setActionListener(this); this.window.setLocation(WindowUtils.getCenteredWindowCoordinates(this.window)); window.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { closeWindow(null); } }); } /** * closes the window * * @param data * the fieldreplacer data which should be transmitted to the id3 * controller, null if the window got just closed */ public void closeWindow(FieldReplacerData data) { window.dispose(); closeCommand.call(data); } /* * (non-Javadoc) * * @see * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("startB")) startButtonPressed(); else if (e.getActionCommand().equals("cancelB")) cancelButtonPressed(); else if (e.getActionCommand().equals("selectAllChB")) selectAllButtonPressed(); else if (e.getActionCommand().equals("addB")) addButtonPressed(); else if (e.getActionCommand().equals("deleteB")) deleteButtonPressed(); } /** * start button pressed */ private void startButtonPressed() { logger.log(Level.FINER, "start button pressed."); FieldReplacerData data = new FieldReplacerData(window.replaceAllSelected(), window.getCheckedFields(), window.getCheckedProcesses(), window.getConverts()); closeWindow(data); } /** * cancel button pressed */ private void cancelButtonPressed() { logger.log(Level.FINER, "cancel button pressed."); closeWindow(null); } /** * select all checkbox pressed */ private void selectAllButtonPressed() { logger.log(Level.FINER, "select all button pressed. all selected: " + window.isAllSelected()); if (window.isAllSelected()) window.setCheckBoxes(true); else window.setCheckBoxes(false); } /** * add button pressed */ private void addButtonPressed() { logger.log(Level.FINER, "add button pressed."); window.addConvertElement(); } /** * delete button pressed */ private void deleteButtonPressed() { logger.log(Level.FINER, "delete button pressed. selected index: " + window.getSelectedIndex()); int index = window.getSelectedIndex(); if (index == -1) return; window.deleteConvertElement(index); } }