144 break; 145 case java_awt_dnd_DnDConstants_ACTION_COPY_OR_MOVE: // 3 146 result = NSDragOperationCopy | NSDragOperationMove; 147 break; 148 case java_awt_dnd_DnDConstants_ACTION_LINK: // 1073741824L 149 result = NSDragOperationLink; 150 break; 151 case (java_awt_dnd_DnDConstants_ACTION_COPY_OR_MOVE | java_awt_dnd_DnDConstants_ACTION_LINK): 152 result = NSDragOperationCopy | NSDragOperationMove | NSDragOperationLink; 153 break; 154 } 155 156 if (result != NSDragOperationNone) { 157 result |= NSDragOperationGeneric; 158 } 159 160 return result; 161 } 162 163 // Mouse and key modifiers mapping: 164 + (NSUInteger)mapJavaExtModifiersToNSKeyModifiers:(jint)modifiers 165 { 166 NSUInteger result = 0; 167 168 if ((modifiers & java_awt_event_InputEvent_SHIFT_DOWN_MASK) != 0) 169 result |= NSShiftKeyMask; 170 171 if ((modifiers & java_awt_event_InputEvent_CTRL_DOWN_MASK) != 0) 172 result |= NSControlKeyMask; 173 174 if ((modifiers & java_awt_event_InputEvent_META_DOWN_MASK) != 0) 175 result |= NSCommandKeyMask; 176 177 if ((modifiers & java_awt_event_InputEvent_ALT_DOWN_MASK) != 0) 178 result |= NSAlternateKeyMask; 179 180 if ((modifiers & java_awt_event_InputEvent_ALT_GRAPH_DOWN_MASK) != 0) 181 result |= NSAlternateKeyMask; 182 183 return result; 184 } 185 186 + (NSUInteger)mapJavaExtModifiersToNSMouseDownButtons:(jint)modifiers 187 { 188 NSUInteger result = NSLeftMouseDown; 189 190 if ((modifiers & java_awt_event_InputEvent_BUTTON1_DOWN_MASK) != 0) 191 result = NSLeftMouseDown; 192 193 if ((modifiers & java_awt_event_InputEvent_BUTTON2_DOWN_MASK) != 0) 194 result = NSOtherMouseDown; 195 196 if ((modifiers & java_awt_event_InputEvent_BUTTON3_DOWN_MASK) != 0) 197 result = NSRightMouseDown; 198 199 return result; 200 } 201 202 + (NSUInteger)mapJavaExtModifiersToNSMouseUpButtons:(jint)modifiers 203 { 204 NSUInteger result = NSLeftMouseUp; 205 228 // Get results 229 jint result = modifiers & mask; 230 231 // Java appears to have 2 ALT buttons - combine them. 232 if (modifiers & java_awt_event_InputEvent_ALT_GRAPH_DOWN_MASK) 233 result |= java_awt_event_InputEvent_ALT_DOWN_MASK; 234 235 return result; 236 } 237 238 // Returns just the mouse modifiers from a java modifier flag 239 + (jint)extractJavaExtMouseModifiersFromJavaExtModifiers:(jint)modifiers 240 { 241 // Build the mask 242 static jint mask = java_awt_event_InputEvent_BUTTON1_DOWN_MASK | java_awt_event_InputEvent_BUTTON2_DOWN_MASK | java_awt_event_InputEvent_BUTTON3_DOWN_MASK; 243 244 // Get results 245 return modifiers & mask; 246 } 247 248 249 + (jint)currentJavaExtKeyModifiers 250 { 251 NSUInteger modifiers = [NSEvent modifierFlags]; 252 jint jmodifiers = 0; 253 254 if(modifiers & NSShiftKeyMask) { 255 jmodifiers |= java_awt_event_InputEvent_SHIFT_DOWN_MASK; 256 } 257 258 if(modifiers & NSControlKeyMask) { 259 jmodifiers |= java_awt_event_InputEvent_CTRL_DOWN_MASK; 260 } 261 262 if(modifiers & NSAlternateKeyMask) { 263 jmodifiers |= java_awt_event_InputEvent_ALT_DOWN_MASK; 264 } 265 266 if(modifiers & NSCommandKeyMask) { 267 jmodifiers |= java_awt_event_InputEvent_META_DOWN_MASK; 268 } 269 270 return jmodifiers; 271 } 272 273 274 + (NSDragOperation) nsDragOperationForModifiers:(NSUInteger)modifiers { 275 276 // Java first 277 if ( (modifiers & NSShiftKeyMask) && (modifiers & NSControlKeyMask) ) { 278 return NSDragOperationLink; 279 } 280 if (modifiers & NSShiftKeyMask) { 281 return NSDragOperationMove; 282 } 283 if (modifiers & NSControlKeyMask) { 284 return NSDragOperationCopy; 285 } 286 287 // Then native 288 if ( (modifiers & NSCommandKeyMask) && (modifiers & NSAlternateKeyMask) ) { 289 return NSDragOperationLink; 290 } 291 if (modifiers & NSCommandKeyMask) { 292 return NSDragOperationMove; 293 } | 144 break; 145 case java_awt_dnd_DnDConstants_ACTION_COPY_OR_MOVE: // 3 146 result = NSDragOperationCopy | NSDragOperationMove; 147 break; 148 case java_awt_dnd_DnDConstants_ACTION_LINK: // 1073741824L 149 result = NSDragOperationLink; 150 break; 151 case (java_awt_dnd_DnDConstants_ACTION_COPY_OR_MOVE | java_awt_dnd_DnDConstants_ACTION_LINK): 152 result = NSDragOperationCopy | NSDragOperationMove | NSDragOperationLink; 153 break; 154 } 155 156 if (result != NSDragOperationNone) { 157 result |= NSDragOperationGeneric; 158 } 159 160 return result; 161 } 162 163 // Mouse and key modifiers mapping: 164 + (NSUInteger)mapJavaExtModifiersToNSMouseDownButtons:(jint)modifiers 165 { 166 NSUInteger result = NSLeftMouseDown; 167 168 if ((modifiers & java_awt_event_InputEvent_BUTTON1_DOWN_MASK) != 0) 169 result = NSLeftMouseDown; 170 171 if ((modifiers & java_awt_event_InputEvent_BUTTON2_DOWN_MASK) != 0) 172 result = NSOtherMouseDown; 173 174 if ((modifiers & java_awt_event_InputEvent_BUTTON3_DOWN_MASK) != 0) 175 result = NSRightMouseDown; 176 177 return result; 178 } 179 180 + (NSUInteger)mapJavaExtModifiersToNSMouseUpButtons:(jint)modifiers 181 { 182 NSUInteger result = NSLeftMouseUp; 183 206 // Get results 207 jint result = modifiers & mask; 208 209 // Java appears to have 2 ALT buttons - combine them. 210 if (modifiers & java_awt_event_InputEvent_ALT_GRAPH_DOWN_MASK) 211 result |= java_awt_event_InputEvent_ALT_DOWN_MASK; 212 213 return result; 214 } 215 216 // Returns just the mouse modifiers from a java modifier flag 217 + (jint)extractJavaExtMouseModifiersFromJavaExtModifiers:(jint)modifiers 218 { 219 // Build the mask 220 static jint mask = java_awt_event_InputEvent_BUTTON1_DOWN_MASK | java_awt_event_InputEvent_BUTTON2_DOWN_MASK | java_awt_event_InputEvent_BUTTON3_DOWN_MASK; 221 222 // Get results 223 return modifiers & mask; 224 } 225 226 + (NSDragOperation) nsDragOperationForModifiers:(NSUInteger)modifiers { 227 228 // Java first 229 if ( (modifiers & NSShiftKeyMask) && (modifiers & NSControlKeyMask) ) { 230 return NSDragOperationLink; 231 } 232 if (modifiers & NSShiftKeyMask) { 233 return NSDragOperationMove; 234 } 235 if (modifiers & NSControlKeyMask) { 236 return NSDragOperationCopy; 237 } 238 239 // Then native 240 if ( (modifiers & NSCommandKeyMask) && (modifiers & NSAlternateKeyMask) ) { 241 return NSDragOperationLink; 242 } 243 if (modifiers & NSCommandKeyMask) { 244 return NSDragOperationMove; 245 } |