package GUI.dialogs;
import GUI.*;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import model.events.EventManager;
import model.events.SearchEvent;
/**
*
* @author Waldemar Smirnow
* @author Volha Baranouskaya
*/
public class SearchDialog {
private Frame owner;
private JDialog dialogSearch;
private JTextField textFieldVideo;
private JTextField textFieldCustomer;
private int searchMode;
private JTabbedPane tabbedPane;
public final static int CUSTOMERSEARCHMODEDIALOG = 1;
public final static int VIDEOSEARCHMODEDIALOG = 2;
/**
* Konstruktor für Suchdialog
* @param owner
*/
public SearchDialog(Frame owner) {
this(owner, SearchDialog.VIDEOSEARCHMODEDIALOG);
}
/**
* Konstruktor für Suchdialog
* @param owner
* @param searchModeDialog
*/
public SearchDialog(Frame owner, int searchModeDialog) {
this.owner = owner;
this.searchMode = searchModeDialog;
dialogSearch = new JDialog(owner, "Suche", true);
dialogSearch.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
Image iconImage = Toolkit.getDefaultToolkit().getImage("icons/magnifier.png");
dialogSearch.setIconImage(iconImage);
// Dialog mittig auf dem bildschirm setzen
DialogHelper.setToCenterScreen(this.dialogSearch);
GridBagContainer mainContainer = new GridBagContainer();
// **************************************************************
this.tabbedPane = this.createTabbedPanne(this.searchMode);
mainContainer.addComponent(this.tabbedPane, 0, 0, 3, 1, 0.0, 1.0, 200, 0, GridBagConstraints.HORIZONTAL, GridBagConstraints.BELOW_BASELINE, new Insets(6, 3, 3, 3));
mainContainer.addComponent(new JLabel(), 0, 1, 1, 1, 0.3, 0.0);
mainContainer.addComponent(this.createButtonCancel(), 1, 1, 1, 1, 0.21, 0.0, 0, 0, GridBagConstraints.HORIZONTAL, GridBagConstraints.BELOW_BASELINE, new Insets(10, 3, 3, 3));
mainContainer.addComponent(this.createButtonSearch(), 2, 1, 1, 1, 0.3, 0.0, 0, 0, GridBagConstraints.HORIZONTAL, GridBagConstraints.BELOW_BASELINE, new Insets(10, 3, 3, 3));
dialogSearch.setContentPane(mainContainer);
dialogSearch.pack();
dialogSearch.setResizable(false);
dialogSearch.setVisible(true);
}
/**
* erstellt Tabs für Sucheingaben
* @param searchMode
* @return
*/
private JTabbedPane createTabbedPanne(int searchMode) {
JTabbedPane tabbedPane = new JTabbedPane();
// **************************************************************
JPanel panelVideo = new JPanel();
panelVideo.setLayout(new GridLayout(2, 1, 3, 3));
JLabel labelVideo = new JLabel();
labelVideo.setText("Bitte Filmtitel eingeben");
textFieldVideo = new JTextField();
textFieldVideo.addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent e)
{
removeFocusFrom(textFieldCustomer);
}
@Override
public void focusLost(FocusEvent e)
{
}
});
textFieldVideo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
startSearch();
}
});
panelVideo.add(labelVideo);
panelVideo.add(textFieldVideo);
tabbedPane.addTab("Film", new ImageIcon("icons/film.png"), panelVideo);
// **************************************************************
JPanel panelCustomer = new JPanel();
panelCustomer.setLayout(new GridLayout(2, 1, 3, 3));
JLabel labelCustomer = new JLabel();
labelCustomer.setText("Bitte Kundennamen eingeben");
textFieldCustomer = new JTextField();
textFieldCustomer.addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent e)
{
removeFocusFrom(textFieldVideo);
}
@Override
public void focusLost(FocusEvent e)
{
}
});
textFieldCustomer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
startSearch();
}
});
panelCustomer.add(labelCustomer);
panelCustomer.add(textFieldCustomer);
tabbedPane.addTab("Kunden", new ImageIcon("icons/user.png"), panelCustomer);
if(searchMode == CUSTOMERSEARCHMODEDIALOG)
{
tabbedPane.setSelectedIndex(1);
}
return tabbedPane;
}
/**
* Löschen von Sucheingaben bei verlohrenem Tabfokus
* @param textField
*/
private void removeFocusFrom(JTextField textField)
{
textField.setText("");
}
/**
* erstellt Abbrechen Button
* @return Button
*/
private Component createButtonCancel() {
JButton buttonCancel = new JButton("Abbrechen");
buttonCancel.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
dialogSearch.dispose();
}
});
return buttonCancel;
}
/**
* erstellt Suchen Button
* @return Button
*/
private Component createButtonSearch() {
JButton buttonSearch = new JButton("Suchen");
buttonSearch.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
startSearch();
}
});
return buttonSearch;
}
/**
* führe Suche aus
*/
private void startSearch()
{
if(!this.textFieldCustomer.getText().trim().equals(""))
{
String searchTerm = this.textFieldCustomer.getText();
EventManager.fireEvent(new SearchEvent(searchTerm, SearchEvent.SearchType.COSTUMER));
}
else if(!this.textFieldVideo.getText().trim().equals(""))
{
String searchTerm = this.textFieldVideo.getText();
EventManager.fireEvent(new SearchEvent(searchTerm, SearchEvent.SearchType.VIDEO));
}
}
}