Package muntjac :: Package terminal :: Package gwt :: Package client :: Module mouse_event_details
[hide private]
[frames] | no frames]

Source Code for Module muntjac.terminal.gwt.client.mouse_event_details

  1  # Copyright (C) 2012 Vaadin Ltd.  
  2  # Copyright (C) 2012 Richard Lincoln 
  3  #  
  4  # Licensed under the Apache License, Version 2.0 (the "License");  
  5  # you may not use this file except in compliance with the License.  
  6  # You may obtain a copy of the License at  
  7  #  
  8  #     http://www.apache.org/licenses/LICENSE-2.0  
  9  #  
 10  # Unless required by applicable law or agreed to in writing, software  
 11  # distributed under the License is distributed on an "AS IS" BASIS,  
 12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
 13  # See the License for the specific language governing permissions and  
 14  # limitations under the License. 
 15   
 16  """Helper class to store and transfer mouse event details.""" 
17 18 #from com.google.gwt.user.client.Event import Event 19 #from muntjac.terminal.gwt.client.Util import Util 20 21 22 -class MouseEventDetails(object):
23 """Helper class to store and transfer mouse event details.""" 24 25 BUTTON_LEFT = 1 # Event.BUTTON_LEFT 26 BUTTON_MIDDLE = 4 # Event.BUTTON_MIDDLE 27 BUTTON_RIGHT = 2 # Event.BUTTON_RIGHT 28
29 - def __init__(self, evt=None, relativeToElement=None):
30 self._DELIM = ',' 31 self._button = None 32 self._clientX = None 33 self._clientY = None 34 self._altKey = None 35 self._ctrlKey = None 36 self._metaKey = None 37 self._shiftKey = None 38 self._type = None 39 self._relativeX = -1 40 self._relativeY = -1 41 42 if evt is None: 43 pass 44 elif relativeToElement is None: 45 MouseEventDetails.__init__(self, evt, None) 46 else: 47 raise NotImplementedError 48 # FIXME: com.google.gwt.user.client.Event 49 # self._type = Event.getTypeInt(evt.getType()) 50 # self._clientX = Util.getTouchOrMouseClientX(evt) 51 # self._clientY = Util.getTouchOrMouseClientY(evt) 52 self._button = evt.getButton() 53 self._altKey = evt.getAltKey() 54 self._ctrlKey = evt.getCtrlKey() 55 self._metaKey = evt.getMetaKey() 56 self._shiftKey = evt.getShiftKey() 57 if relativeToElement is not None: 58 self._relativeX = self.getRelativeX(self._clientX, 59 relativeToElement) 60 self._relativeY = self.getRelativeY(self._clientY, 61 relativeToElement)
62 63
64 - def __str__(self):
65 return self.serialize()
66 67
68 - def serialize(self):
69 return (self._button + self._DELIM + self._clientX + self._DELIM 70 + self._clientY + self._DELIM 71 + str(self._altKey).lower() + self._DELIM 72 + str(self._ctrlKey).lower() + self._DELIM 73 + str(self._metaKey).lower() + self._DELIM 74 + str(self._shiftKey).lower() + self._DELIM 75 + self._type + self._DELIM 76 + self._relativeX + self._DELIM + self._relativeY)
77 78 79 @classmethod
80 - def deSerialize(cls, serializedString):
81 instance = MouseEventDetails() 82 fields = serializedString.split(',') 83 instance._button = int(fields[0]) 84 instance._clientX = int(fields[1]) 85 instance._clientY = int(fields[2]) 86 instance._altKey = (fields[3].lower() == 'true') 87 instance._ctrlKey = (fields[4].lower() == 'true') 88 instance._metaKey = (fields[5].lower() == 'true') 89 instance._shiftKey = (fields[6].lower() == 'true') 90 instance._type = int(fields[7]) 91 instance._relativeX = int(fields[8]) 92 instance._relativeY = int(fields[9]) 93 return instance
94 95
96 - def getButtonName(self):
97 if self._button == self.BUTTON_LEFT: 98 return 'left' 99 elif self._button == self.BUTTON_RIGHT: 100 return 'right' 101 elif self._button == self.BUTTON_MIDDLE: 102 return 'middle' 103 return ''
104 105
106 - def getRelativeX(self, clientX=None, target=None):
107 if clientX is None: 108 return self._relativeX 109 else: 110 return (clientX - target.getAbsoluteLeft() 111 + target.getScrollLeft() 112 + target.getOwnerDocument().getScrollLeft())
113 114
115 - def getRelativeY(self, clientY=None, target=None):
116 if clientY is None: 117 return self._relativeY 118 else: 119 return (clientY - target.getAbsoluteTop() 120 + target.getScrollTop() 121 + target.getOwnerDocument().getScrollTop())
122 123
124 - def getType(self):
125 return MouseEventDetails
126 127
128 - def isDoubleClick(self):
129 return self._type == 2 #com.google.gwt.user.client.Event.ONDBLCLICK
130 131
132 - def getButton(self):
133 return self._button
134 135
136 - def getClientX(self):
137 return self._clientX
138 139
140 - def getClientY(self):
141 return self._clientY
142 143
144 - def isAltKey(self):
145 return self._altKey
146 147
148 - def isCtrlKey(self):
149 return self._ctrlKey
150 151
152 - def isMetaKey(self):
153 return self._metaKey
154 155
156 - def isShiftKey(self):
157 return self._shiftKey
158