AbstractAction.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from jpype import java, javax, JProxy
  2. class AbstractAction(object):
  3. ACCELERATOR_KEY = javax.swing.Action.ACCELERATOR_KEY
  4. ACTION_COMMAND_KEY = javax.swing.Action.ACTION_COMMAND_KEY
  5. DEFAULT = javax.swing.Action.DEFAULT
  6. LONG_DESCRIPTION = javax.swing.Action.LONG_DESCRIPTION
  7. MNEMONIC_KEY = javax.swing.Action.MNEMONIC_KEY
  8. NAME = javax.swing.Action.NAME
  9. SHORT_DESCRIPTION = javax.swing.Action.SHORT_DESCRIPTION
  10. SMALL_ICON = javax.swing.Action.SMALL_ICON
  11. def __init__(self, cb, name=None, icon=None):
  12. object.__init__(self)
  13. self.__proxy = JProxy(javax.swing.Action, inst=self)
  14. self.__values = {}
  15. self.__cb = cb
  16. self.__listeners = []
  17. self.__enabled = True
  18. if name is not None:
  19. self.putValue(AbstractAction.NAME, name)
  20. if icon is not None:
  21. self.putValue(AbstractAction.SMALL_ICON, icon)
  22. proxy = property(lambda self: self.__proxy)
  23. def addPropertyChangeListener(self, listener):
  24. self.__listeners.append(listener)
  25. def getValue(self, key):
  26. return self.__values.get(key, None)
  27. def isEnabled(self):
  28. if self.__enabled:
  29. return True
  30. return False
  31. def putValue(self, key, value):
  32. oldVal = self.__values.get(key, None)
  33. if oldVal != value:
  34. self.__values[key] = value
  35. self.__notify(key, oldVal, value)
  36. def removePropertyChangeListener(self, listener):
  37. self.__listeners.remove(listener)
  38. def setEnabled(self, b):
  39. if (b and not self.__enabled) or (not b and self.__enabled):
  40. self.__enabled = b
  41. self.__notify("enabled", java.lang.Boolean(not b),
  42. java.lang.Boolean(b))
  43. def actionPerformed(self, ev):
  44. self.__cb(ev)
  45. def __notify(self, k, oldVal, newVal):
  46. ev = java.beans.PropertyChangeEvent(self.__proxy, k, oldVal, newVal)
  47. for i in self.__listeners:
  48. i.propertyChange(ev)