import com.tulskiy.keymaster.common.HotKey;
import com.tulskiy.keymaster.common.HotKeyListener;
import com.tulskiy.keymaster.common.Provider;
import controllers.MainWindowController;
import controllers.TrayController;
import dataproviders.HibernateSessionFactoryManager;
import dictionaries.PonsService;
import dictionaries.PonsServiceListener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* User: mateusz
* Date: 06.12.11
* Time: 21:26
*/
public class MainWindow {
private JFrame mainFrame;
private JButton button;
private PonsService ponsService;
private TextField textField;
private MainWindowController mainWindowController;
private TrayController trayController = new TrayController();
private Provider provider;
public MainWindow() {
HibernateSessionFactoryManager.getSessionFactory();
setupServiceProviders();
setupGUI();
}
private void setupServiceProviders() {
ponsService = new PonsService();
provider = Provider.getCurrentProvider(true);
ponsService.start();
setupKeyListener();
ponsService.addPonsServiceListener(new PonsServiceListener() {
@Override
public void actionPerformed(final String entry) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
displayDictonaryEntry(entry);
}
});
}
});
}
private void setupGUI() {
mainFrame = new JFrame();
button = new JButton("Press Me");
textField = new TextField();
mainFrame.setLayout(new FlowLayout());
mainFrame.add(button);
mainFrame.add(textField);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("B Event dispatch thread = " + SwingUtilities.isEventDispatchThread());
}
});
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
mainFrame.pack();
}
void setupKeyListener() {
final ArrayList<KeyStroke> strokes = new ArrayList<KeyStroke>();
int modifiers = 0;
modifiers |= InputEvent.SHIFT_DOWN_MASK;
modifiers |= InputEvent.ALT_DOWN_MASK;
modifiers |= InputEvent.CTRL_DOWN_MASK;
strokes.add(KeyStroke.getKeyStroke(KeyEvent.VK_1, modifiers));
for (final KeyStroke stroke : strokes) {
provider.register(stroke, new HotKeyListener() {
public void onHotKey(HotKey hotKey) {
System.out.println("Oh yeah event!");
if (stroke.equals(hotKey.keyStroke)) {
System.out.println("YEEEEEEEEEEEEAH PASS");
} else {
System.out.println("FAILED");
}
}
});
}
}
private void displayDictonaryEntry(String entry) {
trayController.displayInfoMessage(entry);
}
}