Code:
# 0.3.0 Provo a unificare le funzioni TastoX in una sola, leggendo da EVENT
# il tasto chiamante.
import java
import time
import java.awt.MenuBar
import java.awt.Menu
import java.awt.MenuItem
import java.lang.String
import java.lang.Integer
import java.awt
counter=0
tasto = -1
tastoPrecedente = -2
KTimeout=100000
KTimeDelay = 0.5
scrivi = 0
avviaTimer = 0
pressioni = 0
chars = [" 1+-:;()"," abc2"," def3"," ghi4"," jkl5"," mno6"," pqrs7"," tuv8"," wxyz9"," *.?!'"," 0"," #"]
searchStart = 0
class searchDialogListener(java.awt.event.ActionListener):
def actionPerformed(self,event):
global searchStart
if event.getActionCommand() == "Find ---":
temp = java.lang.String(messageTextArea.getText())
startPos = temp.indexOf(findText.getText(),searchStart)
messageTextArea.setSelectionStart(startPos)
messageTextArea.setSelectionEnd(startPos+len(findText.getText()))
searchStart = startPos
# searchDialog.setVisible(0)
if event.getActionCommand() == "Find":
trovato = 0
temp = java.lang.String(messageTextArea.getText())
startPos = temp.indexOf(findText.getText(),searchStart)
trovato = startPos
messageTextArea.setSelectionStart(startPos)
messageTextArea.setSelectionEnd(startPos+len(findText.getText()))
searchStart = startPos+1
if event.getActionCommand() == "Cancel":
print "DEBUG"
# searchDialog.setVisible(0)
class confirmDialogListener(java.awt.event.ActionListener):
def actionPerformed(self,event):
if event.getActionCommand() == "Yes":
# warningDialog.setVisible(0)
messageTextArea.setText("")
searchStart = 0
elif event.getActionCommand() == "No":
print event.getActionCommand()
# warningDialog.setVisible(0)
def sceltaMenu(self,event):
if event.getItem() == "New":
print "DEBUG"
# warningDialog.setVisible(1)
elif event.getItem() == "Open":
d.setMode(java.awt.FileDialog.LOAD)
d.setVisible(1)
if d.getFile() != None:
myFile = open(d.getDirectory()+d.getFile(),'r')
myText = myFile.read()
messageTextArea.setText(myText)
myFile.close()
d.setVisible(0)
elif event.getItem() == "Save":
print "Salva"
elif event.getItem() == "S.As...":
d.setMode(java.awt.FileDialog.SAVE)
d.setVisible(1)
if d.getFile != None:
myFile = open(d.getDirectory()+d.getFile(),'w')
myFile.write(messageTextArea.getText())
myFile.close()
d.setVisible(0)
elif event.getItem() == "Exit":
java.lang.System.exit(0)
elif event.getItem() == "Copy":
print "Copia"
elif event.getItem() == "Cut":
print "Taglia"
elif event.getItem() == "Paste":
print "Appiccica"
elif event.getItem() == "Find":
searchDialog.setVisible(1)
event.getSource().select(0)
class calc(java.awt.Frame, java.awt.event.ActionListener, java.awt.event.ItemListener):
def sceltaMenu(self,event): #<<<--- GIUSTA!
print event
def __init__(self):
global bm1,bm2
self.messageTextArea = java.awt.TextArea("write here",5,25,1)
f = java.awt.Frame ('BigKeys', windowClosing=exit)
f.setLayout(None)
bm1 = java.awt.Choice(itemStateChanged=self.sceltaMenu)
bm1.addItem("File")
bm1.addItem("New")
bm1.addItem("Open")
bm1.addItem("Save")
bm1.addItem("S.As")
bm1.addItem("Exit")
#bm1.addItemListener(menuListener())
bm2 = java.awt.Choice(itemStateChanged=self.sceltaMenu)
bm2.addItem("Edit")
bm2.addItem("Copy")
bm2.addItem("Cut")
bm2.addItem("Paste")
bm2.addItem("Find")
#bm2.addItemListener(menuListener())
bm3 = java.awt.Choice()
bm3.addItem("Opt.")
bm3.addItem("Del.")
b_ = java.awt.Button(" ",actionPerformed=self.tasto1)
b_.setName("Button00")
b1 = java.awt.Button(" 1 abc",actionPerformed=self.tasto1)
b1.setName("Button01")
b2 = java.awt.Button(" 2 def",actionPerformed=self.tasto1)
b2.setName("Button02")
b3 = java.awt.Button(" 3 ghi",actionPerformed=self.tasto1)
b3.setName("Button03")
b4 = java.awt.Button(" 4 jkl",actionPerformed=self.tasto1)
b4.setName("Button04")
b5 = java.awt.Button(" 5 mno",actionPerformed=self.tasto1)
b5.setName("Button05")
b6 = java.awt.Button(" 6 pqrs",actionPerformed=self.tasto1)
b6.setName("Button06")
b7 = java.awt.Button(" 7 tuv",actionPerformed=self.tasto1)
b7.setName("Button07")
b8 = java.awt.Button(" 8 wxyz",actionPerformed=self.tasto1)
b8.setName("Button08")
b9 = java.awt.Button("*",actionPerformed=self.tasto1)
b9.setName("Button09")
b10 = java.awt.Button("10",actionPerformed=self.tasto1)
b10.setName("Button0")
b11 = java.awt.Button("#",actionPerformed=self.tasto1)
b11.setName("Button11")
sendButton = java.awt.Button ('SEND')
sendButton.setName("ButtonSend")
# Simula menu tramite Choice (credo che in java.awt non si
#possano avere menu e pulsanti insieme)
pm= java.awt.Panel()
pm.setLayout(java.awt.FlowLayout())
pm.add (bm1)
pm.add (bm2)
pm.add (bm3)
# Prepara pannello con pulsanti
p = java.awt.Panel()
p.setLayout (java.awt.GridLayout (4, 3))
p.add (b_)
p.add (b1)
p.add (b2)
p.add (b3)
p.add (b4)
p.add (b5)
p.add (b6)
p.add (b7)
p.add (b8)
p.add (b9)
p.add (b10)
p.add (b11)
# Aggiunge al frame il pannello-menu, l'area di testo, il
# pannello-menu e il tasto SEND.
f.add(pm)
pm.setBounds(0,15,208,30)
# f.add(messageTextArea)
# messageTextArea.setBounds(0,45,208,70)
f.add(p)
p.setBounds(0,115,208,135)
f.add(sendButton)
sendButton.setBounds(0,248,208,24)
f.pack ()
f.setSize(208,276)
f.show ()
f.toFront ()
def doExit(self,event):
java.lang.System.exit(0)
# ******************************
# Funzioni di gestione dei tasti
# Implementano l'algoritmo "multitap", ossia la classica tastiera a 12 tasti
# dei cellulari che permette di inserire un carattere premendo piu' volte lo
# stesso tasto.
# ******************************
def tasto1(self,event):
global counter, scrivi, tasto, tastoPrecedente, avviaTimer, pressioni,chars
temp = java.lang.String(event.getSource().getName())
temp2 = temp.substring(6,8)
# print "--->",temp,temp2," , ", java.lang.Integer.parseInt(temp2)
tasto = java.lang.Integer.parseInt(temp2)
tastoPrecedente = tasto
counter = 0
avviaTimer = 1
pressioni = pressioni + 1
if tasto != tastoPrecedente:
if tastoPrecedente>0:
messageTextArea.insert(chars[tastoPrecedente][pressioni],messageTextArea.getCaretPosition())
messageTextArea.requestFocus()
pressioni = 0
def itemStateChanged(self,event):
print "Hai selezionato ", event.getItem()
def exit(e):
java.lang.System.exit(0)
if __name__=="__main__":
myApp=calc()
def vai():
global counter, scrivi,messageTextArea, KTimeout, tasto, tastoPrecedente, avviaTimer, pressioni
while 1:
# if KTimeout<10000:
# print counter,tasto,tastoPrecedente,scrivi, avviaTimer
######### GESTIONE CONTATORE
if avviaTimer == 1:
counter = counter + 1
if counter >= KTimeout : # Il contatore è ciclico.
counter = 0
avviaTimer = 0
if tasto > 0:
print "################Scrivo tasto CORRENTE",tasto , "(x",pressioni,")",chars[tasto][pressioni]
# messageTextArea.insert(chars[tasto][pressioni],messageTextArea.getCaretPosition())
# messageTextArea.requestFocus()
scrivi = 0
tasto = -1
tastoPrecedente = -2
pressioni = 0
# d=java.awt.FileDialog(calc(),"Select File",java.awt.FileDialog.LOAD)
# d.setDirectory("C:\\")
#
# warningDialog=java.awt.Dialog(calc(),"Are you sure?",0)
# warningDialog.setBounds(0,50,200,60)
# dp = java.awt.Panel()
# yesButton = java.awt.Button("Yes")
# yesButton.setBounds(10,60,40,20)
# yesButton.addActionListener(confirmDialogListener())
# noButton = java.awt.Button("No")
# noButton.setBounds(10,60,80,20)
# noButton.addActionListener(confirmDialogListener())
# dp.add(noButton)
# dp.add(yesButton)
# warningDialog.add(dp)
#
# searchDialog = java.awt.Dialog(calc(),"Insert string to search",0)
# searchDialog.setBounds(0,50,200,100)
# fp = java.awt.Panel()
# findText = java.awt.TextArea("",1,20,0)
# findButton = java.awt.Button("Find")
# findButton.setBounds(20,35,40,20)
# findButton.addActionListener(searchDialogListener())
# cancelButton = java.awt.Button("Cancel")
# cancelButton.setBounds(60,35,40,20)
# cancelButton.addActionListener(searchDialogListener())
# fp.add(findText)
# fp.add(findButton)
# fp.add(cancelButton)
# searchDialog.add(fp)
#bm1.addItemListener(menuListener())
#bm2.addItemListener(menuListener())
vai()
I had to comment out the dialogs creation due to another weird behaviour: I get a new window created per each dialog I create! I mean, I have FOUR INSTANCES of "Bigkeys" on my PC upon starting the program!!!