public void handle(DragEvent event) {
				/* data dropped */
				/* if there is a string data on dragboard, read it and use it */
				Dragboard db = event.getDragboard();
				boolean success = false;
				if (db.hasString()) {
					ch.hockman.model.team.LineUp lineUp = HockmanMain.lineupTeam
							.getLineUp();
					String playerStr = db.getString();
					
					// drag&drop does not work on Ubuntu with Oracle VM 7u9
					//TODO remove this workaround as soon as the bug is fixed in JVM for Linux
					playerStr = dragStringWorkaround;

					int i = Integer.parseInt(playerStr);

					Player player = HockmanMain.lineupTeam.getTeamPlayer(i);
					if (player.getPosition().getPosID() == Position.PosID.DEFENDER) {
						if (lineUp.getPp4().d21 == null) {
							lineUp.getPp4().d21 = player;
						} else if (lineUp.getPp4().d21.getPosition().getPosID() != Position.PosID.DEFENDER) {
							Player swap = lineUp.getPp4().d21;
							lineUp.getPp4().d21 = player;
							if (lineUp.getPp4().d22 == null) {
								lineUp.getPp4().d22 = swap;
							} else if (lineUp.getPp4().f21 == null) {
								lineUp.getPp4().f21 = swap;
							} else {
								assert (lineUp.getPp4().f22 == null); // DragOver
																	// allows
																	// drop
																	// only if
																	// lineUp
																	// incomplete
								lineUp.getPp4().f22 = swap;
							}
						} else if (lineUp.getPp4().d22 == null) {
							lineUp.getPp4().d22 = player;
						} else if (lineUp.getPp4().d22.getPosition().getPosID() != Position.PosID.DEFENDER) {
							Player swap = lineUp.getPp4().d22;
							lineUp.getPp4().d22 = player;
							if (lineUp.getPp4().f21 == null) {
								lineUp.getPp4().f21 = swap;
							} else {
								assert (lineUp.getPp4().f22 == null); // DragOver
																	// allows
																	// drop
																	// only if
																	// lineUp
																	// incomplete
								lineUp.getPp4().f22 = swap;
							}
						} else if (lineUp.getPp4().f21 == null) {
							lineUp.getPp4().f21 = player;
						} else {
							assert (lineUp.getPp4().f22 == null); // DragOver allows
																// drop only if
																// lineUp
																// incomplete
							lineUp.getPp4().f22 = player;
						}
					} else {
						if (lineUp.getPp4().f21 == null) {
							lineUp.getPp4().f21 = player;
						} else if (lineUp.getPp4().f21.getPosition().getPosID() == Position.PosID.DEFENDER
								|| lineUp.getPp4().f21.getPosition().getPosID() == Position.PosID.GOALIE) {
							Player swap = lineUp.getPp4().f21;
							lineUp.getPp4().f21 = player;
							if (lineUp.getPp4().f22 == null) {
								lineUp.getPp4().f22 = swap;
							} else if (lineUp.getPp4().d21 == null) {
								lineUp.getPp4().d21 = swap;
							} else {
								assert (lineUp.getPp4().d22 == null); // DragOver
																	// allows
																	// drop
																	// only if
																	// lineUp
																	// incomplete
								lineUp.getPp4().d22 = swap;
							}
						} else if (lineUp.getPp4().f22 == null) {
							lineUp.getPp4().f22 = player;
						} else if (lineUp.getPp4().f22.getPosition().getPosID() == Position.PosID.DEFENDER
								|| lineUp.getPp4().f22.getPosition().getPosID() == Position.PosID.GOALIE) {
							Player swap = lineUp.getPp4().f22;
							lineUp.getPp4().f22 = player;
							if (lineUp.getPp4().d21 == null) {
								lineUp.getPp4().d21 = swap;
							} else {
								assert (lineUp.getPp4().d22 == null); // DragOver
																	// allows
																	// drop
																	// only if
																	// lineUp
																	// incomplete
								lineUp.getPp4().d22 = swap;
							}
						} else if (lineUp.getPp4().d21 == null) {
							lineUp.getPp4().d21 = player;
						} else {
							assert (lineUp.getPp4().d22 == null); // DragOver allows
																// drop only if
																// lineUp
																// incomplete
							lineUp.getPp4().d22 = player;
						}
					}

					success = true;
				}
				/*
				 * let the source know whether the string was successfully
				 * transferred and used
				 */
				event.setDropCompleted(success);

				event.consume();
				linesShow();
			}