I could be completely missing something simple with the Power Tables. But is there any way to prevent stray typing from being accepted in a Power Table cell? I would like to make it so the user is forced to double click or press Enter on a cell to be able to actually edit it. However, even with the Edit Click Count property set to 2, it will allow stray typing in a cell that doesn’t have focus but is selected/highlighted This can be problematic for us with operators accidentally bumping keys with a cell highlighted.
I’ve tried setting up some custom properties with onDoubleClick and the isCellEditable extension functions, but anything I add ends up requiring a triple click because of the order with which those extension functions trigger.
Hopefully this all makes sense. Any help would be appreciated.
Thanks in advance!
-Will
Ignition 7.9.6
Client is MacOSX 10.12.6
Gateway is Windows 7
Hmm, looks like the ‘edit click count’ field isn’t doing what it’s supposed to. Try this, in configureEditor
:
from javax.swing import DefaultCellEditor, JTextField
from java.lang import String
from java.awt.event import MouseEvent
class CustomCellEditor(DefaultCellEditor):
def isCellEditable(self, event):
if isinstance(event, MouseEvent):
return DefaultCellEditor.isCellEditable(self, event) and event.getClickCount() >= 2
if self.data.getColumnType(colIndex) == String:
return {'editor': CustomCellEditor(JTextField())}
1 Like
That did the trick! Thank you!
Glad to know I wasn’t imagining things. I thought it used to prevent the stray typing when the edit click count was set to two.
Thanks again,
-Will
Along the same lines, any thoughts on the best way to set the focus of a cell when pressing Enter? I have the following code in the “initialize” extension function on my power table to change the behavior of the Enter button press. But I can’t figure out how to actually set the current selected cell to focus owner.
Thanks,
-Will
from java.awt.event import KeyEvent
from javax.swing import KeyStroke, JTable, AbstractAction
class EnterPressEvent(AbstractAction):
def __init__(self, t):
self.t = t
def actionPerformed(self, event_trigger):
print "How do I set focus here?"
self.getTable().getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter_Press_Event_Triggered")
self.getTable().getActionMap().put("Enter_Press_Event_Triggered", EnterPressEvent(self))