package GUI;
import GUI.dialogs.CreatedWarningsDialog;
import GUI.dialogs.DialogHelper;
import GUI.dialogs.InfoDialog;
import GUI.dialogs.SearchDialog;
import GUI.dialogs.SettingsDialog;
import GUI.dialogs.VideoDataDialog;
import GUI.dialogs.CustomerDataDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Collection;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import main.Programm;
import model.Warning;
import model.events.SearchEvent;
/**
*
* @author Waldemar Smirnow
* @author Volha Baranouskaya
*/
public class MenuBar {
private JMenuItem menuItemCustomerEdit;
private JMenuItem menuItemCustomerDelete;
private JMenuItem menuItemVideoEdit;
private JMenuItem menuItemVideoDelete;
private JMenuItem menuItemVideoUnitDelete;
private MainWindow owner;
/**
* Erstellt MenuBar
* @return MenuBar
*/
protected JMenuBar createMenuBar() {
this.owner = MainWindow.get();
// MenuBar
JMenuBar menuBarMain = new JMenuBar();
// Menu Programm
JMenu menuProgramm = new JMenu("Programm");
JMenuItem menuItemProgrammExit = new JMenuItem("Beenden",
new ImageIcon("icons/door_out.png"));
menuItemProgrammExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Programm.shutdown();
}
});
menuProgramm.add(menuItemProgrammExit);
// Menu Kunde
JMenu menuCustomer = new JMenu("Kunde");
JMenuItem menuItemCustomerNew = new JMenuItem("Anlegen", new ImageIcon(
"icons/user_add.png"));
menuItemCustomerNew.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new CustomerDataDialog();
}
});
menuItemCustomerEdit = new JMenuItem("Bearbeiten", new ImageIcon(
"icons/user_edit.png"));
menuItemCustomerEdit.setEnabled(false);
menuItemCustomerEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
CustomerDataDialog.createFilledCustomerDataDialog();
}
});
menuItemCustomerDelete = new JMenuItem("Löschen", new ImageIcon(
"icons/user_delete.png"));
menuItemCustomerDelete.setEnabled(false);
menuItemCustomerDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainWindow.get().getDetailPanel().deleteCustomer();
}
});
menuCustomer.add(menuItemCustomerNew);
menuCustomer.add(menuItemCustomerEdit);
menuCustomer.add(menuItemCustomerDelete);
// Menu Video
JMenu menuVideo = new JMenu("Film");
JMenuItem menuItemVideoNew = new JMenuItem("Anlegen", new ImageIcon(
"icons/film_add.png"));
menuItemVideoNew.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new VideoDataDialog();
}
});
menuItemVideoEdit = new JMenuItem("Bearbeiten", new ImageIcon(
"icons/film_edit.png"));
menuItemVideoEdit.setEnabled(false);
menuItemVideoEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainWindow.get().showEditVideoDialog();
}
});
menuItemVideoDelete = new JMenuItem("Löschen", new ImageIcon(
"icons/film_delete.png"));
menuItemVideoDelete.setEnabled(false);
menuItemVideoDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainWindow.get().getDetailPanel().deleteVideo();
}
});
menuItemVideoUnitDelete = new JMenuItem("Exemplar Löschen", new ImageIcon(
"icons/film_delete.png"));
menuItemVideoUnitDelete.setEnabled(false);
menuItemVideoUnitDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainWindow.get().getDetailPanel().deleteVideoUnit();
}
});
menuVideo.add(menuItemVideoNew);
menuVideo.add(menuItemVideoEdit);
menuVideo.add(menuItemVideoDelete);
menuVideo.add(menuItemVideoUnitDelete);
// Menu Suchen
JMenu menuSearch = new JMenu("Suche");
JMenuItem menuItemSearchVideo = new JMenuItem("Film",
new ImageIcon("icons/magnifier.png"));
menuItemSearchVideo.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
openSearchDialog(SearchEvent.SearchType.VIDEO);
}
});
JMenuItem menuItemSearchCustomer = new JMenuItem("Kunden",
new ImageIcon("icons/magnifier.png"));
menuItemSearchCustomer.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
openSearchDialog(SearchEvent.SearchType.COSTUMER);
}
});
menuSearch.add(menuItemSearchVideo);
menuSearch.add(menuItemSearchCustomer);
// Menu Extras
JMenu menuTools = new JMenu("Extras");
JMenuItem menuItemToolsWarnings = new JMenuItem("Mahnungen erstellen",
new ImageIcon("icons/clock.png"));
menuItemToolsWarnings.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Collection<Warning> createdWarnings = Warning
.createPendingWarnings();
if (createdWarnings.size() > 0) {
CreatedWarningsDialog dialog = new CreatedWarningsDialog(
MainWindow.get().getMainFrame(), createdWarnings);
DialogHelper.setLargeWindowToCenterScreen(dialog);
dialog.setVisible(true);
} else {
JOptionPane.showMessageDialog(MainWindow.get().getMainFrame(),
"Keine neuen Mahnungen vorhanden.");
}
}
});
JSeparator separatorToolsSeparator = new JSeparator(
JSeparator.HORIZONTAL);
JMenuItem menuItemToolsOptions = new JMenuItem("Einstellungen",
new ImageIcon("icons/cog.png"));
menuItemToolsOptions.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openSettingsDialog();
}
});
menuTools.add(menuItemToolsWarnings);
menuTools.add(separatorToolsSeparator);
menuTools.add(menuItemToolsOptions);
// Menu Hilfe
JMenu menuHelp = new JMenu("Hilfe");
JMenuItem menuItemHelpGetHelp = new JMenuItem("Hilfetext",
new ImageIcon("icons/help.png"));
// handbuch öffnen
menuItemHelpGetHelp.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0)
{
try
{
// TODO: systempreferences prüfen
// => unter linux evtl. anderer befehl
Runtime.getRuntime().exec(
new String[] { "hh", "doc/V-Unit Manual/V-Unit Manual.html" });
}
catch (IOException e)
{
JOptionPane.showMessageDialog(null,
e.getMessage(), "Fehler beim Öffnen des Handbuchs",
JOptionPane.ERROR_MESSAGE);
}
}
});
JMenuItem menuItemHelpAbout = new JMenuItem("Info", new ImageIcon(
"icons/tag_blue.png"));
menuItemHelpAbout.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
InfoDialog dialog = new InfoDialog(MainWindow.get().getMainFrame(), true);
DialogHelper.setToCenterScreen(dialog);
dialog.setVisible(true);
}
});
menuHelp.add(menuItemHelpGetHelp);
menuHelp.add(menuItemHelpAbout);
// Menus in dei MenuBar hinzufügen
menuBarMain.add(menuProgramm);
menuBarMain.add(menuSearch);
menuBarMain.add(menuCustomer);
menuBarMain.add(menuVideo);
menuBarMain.add(menuTools);
menuBarMain.add(menuHelp);
return menuBarMain;
}
/**
* Öffnet das Film/Kundendialog
* @param searchType Suchreiter Kunde oder Video
*/
private void openSearchDialog(String searchType)
{
if(searchType.equals(SearchEvent.SearchType.COSTUMER))
{
new SearchDialog(owner.getMainFrame(), SearchDialog.CUSTOMERSEARCHMODEDIALOG);
}
else
{
new SearchDialog(owner.getMainFrame(), SearchDialog.VIDEOSEARCHMODEDIALOG);
}
}
/**
* aktiviert die Kunde Bearbeiten und Löschen Buttons
*/
public void setCustomerButtonsEnabled() {
this.menuItemCustomerEdit.setEnabled(true);
this.menuItemCustomerDelete.setEnabled(true);
this.menuItemVideoEdit.setEnabled(false);
this.menuItemVideoDelete.setEnabled(false);
this.menuItemVideoUnitDelete.setEnabled(false);
}
/**
* aktiviert die Film Bearbeiten und Löschen Buttons
*/
public void setVideoButtonsEnabled() {
this.menuItemCustomerEdit.setEnabled(false);
this.menuItemCustomerDelete.setEnabled(false);
this.menuItemVideoEdit.setEnabled(true);
this.menuItemVideoDelete.setEnabled(true);
this.menuItemVideoUnitDelete.setEnabled(true);
}
/**
* deaktiviert die Bearbeiten Löschen Buttons
*/
public void setButtonsDisabled() {
this.menuItemCustomerEdit.setEnabled(false);
this.menuItemCustomerDelete.setEnabled(false);
this.menuItemVideoEdit.setEnabled(false);
this.menuItemVideoDelete.setEnabled(false);
this.menuItemVideoUnitDelete.setEnabled(false);
}
/**
* Erstellt das Einstellungsdialog
*/
private void openSettingsDialog() {
SettingsDialog dialog = new SettingsDialog(MainWindow.get().getMainFrame(),
true);
dialog.setVisible(true);
}
}