*/
public void handleEvent(Event event) {
Shell sh = new Shell(display, SWT.APPLICATION_MODAL);
sh.setImage(image);
MessageBox messageBox = new MessageBox(sh, SWT.YES | SWT.NO
| SWT.ICON_QUESTION);
messageBox.setText("Open Browser");
messageBox
.setMessage("Dou you want to open indic-keyboards' webpage??\n\n(Opens in the default internet browser)");
int rCode = messageBox.open();
if (rCode == SWT.YES) {
/*
* Opens the default browser. Or any program which opens
* .html files by default
*/
Program pBrowse = Program.findProgram(".html");
pBrowse
.execute("http://code.google.com/p/indic-keyboards");
} else {
sh.dispose();
}
}
});
/**
* Menu object contains the Items - Languages, Help, Links, About,
* Userdefined Keyboard Layouts..
*/
final Menu menu = new Menu(shell, SWT.POP_UP); /*
* The main menu
* obtained when the
* tray is right
* clicked
*/
/* Used to load user defined keyboard layouts */
final MenuItem currentLayout = new MenuItem(menu, SWT.PUSH);
currentLayout.setText("Show Current Layout");
currentLayout.setEnabled(false);
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem bengali = new MenuItem(menu, SWT.CASCADE);
bengali.setText("Bengali");
final Menu submenu_ben = new Menu(shell, SWT.DROP_DOWN);
bengali.setMenu(submenu_ben);
final MenuItem benInscript = new MenuItem(submenu_ben, SWT.PUSH);
benInscript.setText("Inscript");
final MenuItem gujarati = new MenuItem(menu, SWT.CASCADE);
gujarati.setText("Gujarati");
final Menu submenu_guj = new Menu(shell, SWT.DROP_DOWN);
gujarati.setMenu(submenu_guj);
final MenuItem gujInscript = new MenuItem(submenu_guj, SWT.PUSH);
gujInscript.setText("Inscript");
new MenuItem(submenu_guj, SWT.SEPARATOR);
final MenuItem gujPhonetic = new MenuItem(submenu_guj, SWT.PUSH);
gujPhonetic.setText("Phonetic");
final MenuItem gurmukhi = new MenuItem(menu, SWT.CASCADE);
gurmukhi.setText("Gurmukhi");
final Menu submenu_gur = new Menu(shell, SWT.DROP_DOWN);
gurmukhi.setMenu(submenu_gur);
final MenuItem gurInscript = new MenuItem(submenu_gur, SWT.PUSH);
gurInscript.setText("Inscript");
final MenuItem hindi = new MenuItem(menu, SWT.CASCADE);
hindi.setText("Hindi");
final Menu submenu_hin = new Menu(shell, SWT.DROP_DOWN);
hindi.setMenu(submenu_hin);
final MenuItem hinLay = new MenuItem(submenu_hin, SWT.PUSH);
hinLay.setText("Remington");
final MenuItem hinInscript = new MenuItem(submenu_hin, SWT.PUSH);
hinInscript.setText("Inscript");
new MenuItem(submenu_hin, SWT.SEPARATOR);
final MenuItem hinPhonetic = new MenuItem(submenu_hin, SWT.PUSH);
hinPhonetic.setText("Phonetic");
final MenuItem kannada = new MenuItem(menu, SWT.CASCADE);
kannada.setText("Kannada");
final Menu submenu_kan = new Menu(shell, SWT.DROP_DOWN);
kannada.setMenu(submenu_kan);
final MenuItem kgp = new MenuItem(submenu_kan, SWT.PUSH);
kgp.setText("KaGaPa");
final MenuItem kanInscript = new MenuItem(submenu_kan, SWT.PUSH);
kanInscript.setText("Inscript");
new MenuItem(submenu_kan, SWT.SEPARATOR);
final MenuItem kanPhonetic = new MenuItem(submenu_kan, SWT.PUSH);
kanPhonetic.setText("Phonetic");
final MenuItem malayalam = new MenuItem(menu, SWT.CASCADE);
malayalam.setText("Malayalam");
final Menu submenu_mal = new Menu(shell, SWT.DROP_DOWN);
malayalam.setMenu(submenu_mal);
final MenuItem malInscript = new MenuItem(submenu_mal, SWT.PUSH);
malInscript.setText("Inscript");
final MenuItem marathi = new MenuItem(menu, SWT.CASCADE);
marathi.setText("Marathi");
final Menu submenu_mar = new Menu(shell, SWT.DROP_DOWN);
marathi.setMenu(submenu_mar);
final MenuItem marLay = new MenuItem(submenu_mar, SWT.PUSH);
marLay.setText("Remington");
final MenuItem marInscript = new MenuItem(submenu_mar, SWT.PUSH);
marInscript.setText("Inscript");
new MenuItem(submenu_mar, SWT.SEPARATOR);
final MenuItem marPhonetic = new MenuItem(submenu_mar, SWT.PUSH);
marPhonetic.setText("Phonetic");
final MenuItem oriya = new MenuItem(menu, SWT.CASCADE);
oriya.setText("Oriya");
final Menu submenu_ori = new Menu(shell, SWT.DROP_DOWN);
oriya.setMenu(submenu_ori);
final MenuItem oriInscript = new MenuItem(submenu_ori, SWT.PUSH);
oriInscript.setText("Inscript");
final MenuItem tamil = new MenuItem(menu, SWT.CASCADE);
tamil.setText("Tamil");
final Menu submenu_tam = new Menu(shell, SWT.DROP_DOWN);
tamil.setMenu(submenu_tam);
final MenuItem tamil99 = new MenuItem(submenu_tam, SWT.PUSH);
tamil99.setText("Tamil99");
final MenuItem tamInscript = new MenuItem(submenu_tam, SWT.PUSH);
tamInscript.setText("Inscript");
final MenuItem tamBamini = new MenuItem(submenu_tam, SWT.PUSH);
tamBamini.setText("Bamini");
final MenuItem tamRemington = new MenuItem(submenu_tam, SWT.PUSH);
tamRemington.setText("Remington");
new MenuItem(submenu_tam, SWT.SEPARATOR);
final MenuItem tamPhonetic = new MenuItem(submenu_tam, SWT.PUSH);
tamPhonetic.setText("Phonetic");
final MenuItem telugu = new MenuItem(menu, SWT.CASCADE);
telugu.setText("Telugu");
final Menu submenu_tel = new Menu(shell, SWT.DROP_DOWN);
telugu.setMenu(submenu_tel);
final MenuItem telInscript = new MenuItem(submenu_tel, SWT.PUSH);
telInscript.setText("Inscript");
new MenuItem(submenu_tel, SWT.SEPARATOR);
final MenuItem telPhonetic = new MenuItem(submenu_tel, SWT.PUSH);
telPhonetic.setText("Phonetic");
/*
* Adding user defined layouts to the menu. First check whether the
* userdefined directory exists then read the files in it one by
* one. Add them to the menu.
*/
new MenuItem(menu, SWT.SEPARATOR);
File dirname = new File(System.getProperty("user.dir"),
"/kblayouts/userdefined");
String[] userDefinedLayouts = dirname.list();
if (userDefinedLayouts == null) {
// Either dir does not exist or is not a directory
} else {
final MenuItem user_def = new MenuItem(menu, SWT.CASCADE);
user_def.setText("User Defined");
final Menu submenu_user_def = new Menu(shell, SWT.DROP_DOWN);
user_def.setMenu(submenu_user_def);
new MenuItem(menu, SWT.SEPARATOR);
for (int i = 0; i < userDefinedLayouts.length; i++) {
// Get filename of file or directory
final String filename = userDefinedLayouts[i];
final MenuItem mi = new MenuItem(submenu_user_def, SWT.PUSH);
mi.setText(filename.substring(0, filename.length() - 4));
// Listeners for the user defined keyboard layout menu items
mi.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
{
layoutImg = "na";
currentLayout.setEnabled(false);
Image image1 = new Image(display,
IndicKeyboards.workingDirectory
+ "/resources/UD.ico");
item.setImage(image1);
tip.setMessage("Custom Created - "
+ filename.substring(0, filename
.length() - 4));
tip.setVisible(true);
ParseXML.setlang("userdefined/" + filename);
PhoneticParseXML.PhoneticFlag = 0;
item
.setToolTipText("indic-keyboards - User Defined - "
+ filename.substring(0,
filename.length() - 4));
}
}
});
// End of listener
}
}
final MenuItem addLayouts = new MenuItem(menu, SWT.CASCADE);
addLayouts.setText("Add New Layouts");
final Menu submenu_newLay = new Menu(shell, SWT.DROP_DOWN);
addLayouts.setMenu(submenu_newLay);
final MenuItem XMLCreateIns = new MenuItem(submenu_newLay, SWT.PUSH);
XMLCreateIns.setText("Add Inscript Layout");
/*
* final MenuItem XMLCreateOth = new MenuItem(submenu_newLay,
* SWT.PUSH); XMLCreateOth.setText("Add Other Layout");
*/
new MenuItem(menu, SWT.SEPARATOR);
enableDisable = new MenuItem(menu, SWT.PUSH);
enableDisable.setText("Enable [Alt+F12]");
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem links = new MenuItem(menu, SWT.CASCADE);
links.setText("Useful Links");
final Menu submenu2 = new Menu(shell, SWT.DROP_DOWN);
links.setMenu(submenu2);
final MenuItem langtech = new MenuItem(submenu2, SWT.PUSH);
langtech.setText("Language Technology");
final MenuItem codegoogle = new MenuItem(submenu2, SWT.PUSH);
codegoogle.setText("indic-keyboards code.google.com");
final MenuItem IKdev = new MenuItem(submenu2, SWT.PUSH);
IKdev.setText("indic-keyboards Developer mailing list");
final MenuItem IKscm = new MenuItem(submenu2, SWT.PUSH);
IKscm.setText("indic-keyboards SCM group");
final MenuItem IKuser = new MenuItem(submenu2, SWT.PUSH);
IKuser.setText("indic-keyboards User mailing list");
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem help = new MenuItem(menu, SWT.PUSH);
help.setText("Help");
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem about = new MenuItem(menu, SWT.PUSH);
about.setText("About indic-keyboards");
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem exit = new MenuItem(menu, SWT.PUSH);
exit.setText("Exit");
exit.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
Shell sh = new Shell(display, SWT.APPLICATION_MODAL);
sh.setImage(image);
MessageBox messageBox = new MessageBox(sh, SWT.YES | SWT.NO
| SWT.ICON_QUESTION);
messageBox.setText("Exit");
if (System.getProperty("os.name").contains("Windows")) {
messageBox.setMessage("Do you want to exit indic-keyboards?");
} else {
// String pid = ManagementFactory.getRuntimeMXBean()
// .getName();
// int index = pid.indexOf("@");
messageBox.setMessage("Do you want to exit indic-keyboards?"
+ "\n\nIf the application doesn't close\nwhen Exit is selected, "
+ "kill the process.\n\n(The process ID is "
// + pid.substring(0, index)
+ ")");
}
int rCode = messageBox.open();
if (rCode == SWT.YES) {
image.dispose();
shell.dispose();
display.dispose();
/*
* When the program stops running, if the Key Logging is
* enabled, auto repeat will stop working. So make sure
* that auto repeat is ON when the program quits.
*/
if (System.getProperty("os.name").contains("Windows")) {
System.runFinalization();
System.exit(0);
} else {
KeyMonitorMethods quit = new KeyMonitorMethods();
KeyMonitorMethods.loggingEnabled = true;
quit.printKeys(88); // Enable Auto Repeat.
try {
InitLinux.socket.close();
} catch (IOException e) {
e.printStackTrace();
}
System.runFinalization();
System.exit(0);
}
} else {
sh.dispose();
}
}
});
help.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
File docsDir = new File("./docs/index.html");
if (!docsDir.exists()) {
Shell sh = new Shell(display, SWT.APPLICATION_MODAL);
sh.setImage(image);
MessageBox messageBox = new MessageBox(sh, SWT.OK
| SWT.ICON_ERROR);
messageBox.setText("Help File Not Found");
messageBox
.setMessage("index.html not found! Make sure it is present in docs\ndirectory");
messageBox.open();
} else {
Program pBrowse = Program.findProgram(".html");
pBrowse.execute("./docs/index.html");
}