package com.openflow.designer.gui;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import com.openflow.designer.control.DataController;
import com.openflow.license.service.LicenseService;
import com.openflow.session.service.SessionService;
public class GuiBuilder
{
private String[] menuTitles = new String[] {"Datei", "Editieren", "Hilfe"};
private JFrame frame = new JFrame();
private JPanel mainPanel = new JPanel();
private JMenuBar menuBar = new JMenuBar();
private JToolBar toolBar = new JToolBar();
private JPanel contentPanel = new JPanel();
private JFrame loginFrame = new JFrame();
private ButtonListener buttonListener = new ButtonListener();
private GuiBuilder builder = this;
private JPanel loginPanel = new JPanel();
private JTextField txtUser = new JTextField("Admin");
private JTextField txtPass = new JTextField("Admin");
private JTextField txtUrl = new JTextField("http://localhost:8080/services");
private DataController controller = null;
public GuiBuilder()
{
}
/*
* Edit
*/
public void initMenuBar()
{
for(String menuTitle:menuTitles)
{
JMenu menu = new JMenu(menuTitle);
menuBar.add(menu);
}
frame.setJMenuBar(menuBar);
}
public void initMainPanel(String[] buttons)
{
for(String button:buttons)
{
JButton barButton = new JButton(button);
toolBar.add(barButton);
}
contentPanel.setLayout(new CardLayout());
mainPanel.setLayout(new BorderLayout());
mainPanel.add(BorderLayout.PAGE_START, toolBar);
mainPanel.add(BorderLayout.CENTER, contentPanel);
}
public void initLookAndFeel(String lafClass)
{
String lookAndFeelClass = null;
if (lafClass == null)
lookAndFeelClass = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
try {
UIManager.setLookAndFeel(lookAndFeelClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
public void initWindow()
{
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setTitle("Designer");
frame.add(mainPanel);
frame.setVisible(true);
}
public void showLoginScreen()
{
loginFrame.setSize(400,325);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
loginFrame.setLocationRelativeTo(null);
loginFrame.setTitle("login");
loginPanel.setLayout(new BorderLayout());
JPanel imagePanelNorth = new JPanel();
imagePanelNorth.setLayout(new GridLayout());
imagePanelNorth.setPreferredSize(new Dimension(400,75));
imagePanelNorth.setBackground(Color.red);
loginPanel.add(BorderLayout.NORTH, imagePanelNorth);
JPanel iconPanelWest = new JPanel();
iconPanelWest.setLayout(new GridLayout(1,1));
iconPanelWest.setPreferredSize(new Dimension(150,120));
loginPanel.add(BorderLayout.WEST, iconPanelWest);
JPanel dataPanelCenter = new JPanel();
dataPanelCenter.setLayout(new GridLayout(7,1));
dataPanelCenter.setBorder(BorderFactory.createTitledBorder("Login"));
dataPanelCenter.add(new JLabel("Benutzername"));
dataPanelCenter.add(txtUser);
dataPanelCenter.add(new JLabel("Passwort"));
dataPanelCenter.add(txtPass);
dataPanelCenter.add(new JLabel("Server-URL"));
dataPanelCenter.add(txtUrl);
JPanel buttonPanel = new JPanel();
JButton button = new JButton("Login");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton) e.getSource();
if(button.getText().equalsIgnoreCase("Login"))
{
controller = new DataController();
try
{
controller.init();
if(controller.pingCheck())
{
String[] services = controller.getServices();
for(String service:services)
{
System.out.println(service);
}
if(controller.login(txtUser.getText(), txtPass.getText()))
{
loginFrame.setVisible(false);
builder.initMenuBar();
builder.initMainPanel(new String[] {"ServerInfo", "Benutzerverwaltung", "Rechteverwaltung", "Sessionverwaltung"});
builder.initWindow();
}
}
} catch(Exception ex)
{
JOptionPane.showConfirmDialog(null, ex.getMessage(), "Error", JOptionPane.CLOSED_OPTION);
ex.printStackTrace();
}
}
}
});
buttonPanel.add(button);
dataPanelCenter.add(buttonPanel);
loginPanel.add(BorderLayout.CENTER, dataPanelCenter);
loginFrame.add(loginPanel);
loginFrame.setVisible(true);
}
public static void main(String[] args) {
GuiBuilder builder = new GuiBuilder();
builder.initLookAndFeel(null);
builder.showLoginScreen();
}
}