private boolean checkPlaceableTile (DragEvent e) { double halfHeight = (0.5) * myScale .scale((mySprite.getBounds().getBottom() - mySprite.getBounds().getTop())); double halfWidth = (0.5) * myScale .scale((mySprite.getBounds().getRight() - mySprite.getBounds().getLeft())); for (int r = (int) ((e.getY() - halfHeight) / levelView.getGrids() .getCurrentBlockSize()); r < (int) ((e.getY() + halfHeight) / levelView.getGrids() .getCurrentBlockSize()); r++) { for (int c = (int) ((e.getX() - halfWidth) / levelView.getGrids() .getCurrentBlockSize()); c < (int) ((e.getX() + halfWidth) / levelView .getGrids().getCurrentBlockSize()); c++) { if (levelView.getLevel().getPlaceableTileManager().getPlaceableMap() .getBitMap()[r][c]) { return false; } } } return true; }
private boolean checkPlaceableTile (DragEvent e) { double halfHeight = (0.5) * myController.getRatio() .scale((getProfilable().getProfile().getImageHeight().doubleValue())); double halfWidth = (0.5) * myController.getRatio() .scale((getProfilable().getProfile().getImageWidth().doubleValue())); for (int r = (int) ((e.getY() - halfHeight) / myController.getRatio().scale(50)); r < (int) ((e.getY() + halfHeight) / myController.getRatio() .scale(50)); r++) { for (int c = (int) ((e.getX() - halfWidth) / myController.getRatio() .scale(50)); c < (int) ((e.getX() + halfWidth) / myController.getRatio().scale(50)); c++) { if (myController.getLevel().getPlaceableTileManager().getPlaceableMap() .getBitMap()[r][c]) { return false; } } } return true; }
/** * Handle mouse drop events * * @param e */ private void mouseDragDropped(final DragEvent e) { final Dragboard db = e.getDragboard(); boolean success = false; if (db.hasFiles()) { success = true; boolean ctrlKeyPressed = popOver.isCtrlKeyPressed(); boolean altKeyPressed = popOver.isAltKeyPressed(); popOver.notifyDragEventListener(new DropzoneDragEvent(e, ctrlKeyPressed, altKeyPressed)); } e.setDropCompleted(success); e.consume(); }
public AddTypeCommand(MomentExpVBox moment, DragEvent event, Main main) { this.event = event; typeName = event.getDragboard().getRtf(); this.momentExpBorder = moment; this.main = main; for(Type t : main.getCurrentProject().getSchemaProjet().getTypes()){ if(t.getName().equals(typeName)){ type = (Classe) t; } else{ setClassByName(t); } } setClassByName(main.getCurrentProject().getSchemaProjet()); dup = duplicate(type); }
@FXML private void handleDropped(DragEvent event) { // ドラッグボードを取得 Dragboard board = event.getDragboard(); if (board.hasFiles()) { board.getFiles().stream().forEach((f) -> { if (f.isDirectory()) { List<String> filePathList = new ArrayList<>(); getFileRecursion(filePathList, f.getAbsolutePath()).stream().filter(s -> isTextFile(s)).collect(Collectors.toList()).forEach(s -> fileList.getItems().add(new Label(s))); } else { if (isTextFile(f.getAbsolutePath())) fileList.getItems().add(new Label(f.getAbsolutePath())); } }); // ドロップ受け入れ event.setDropCompleted(true); } else { // ファイル以外なら // ドロップ受け入れ拒否 event.setDropCompleted(false); } }
private void targetSetOnDragDropped(ScreenMap target, DragEvent e) { Dragboard db = e.getDragboard(); boolean success = false; if (e.getDragboard().hasImage()) { String imageName = db.getString(); Point2D point = target.sceneToLocal(e.getSceneX(), e.getSceneY()); GamePoint gameCoords = new GamePoint(point.getX()/target.getScreenWidth(), point.getY()/target.getScreenHeight()); for (Pair<String, Image> p : myScreenObjects.keySet()) { String iName = p.getKey(); if (imageName.equals(iName)) { XStreamHandler xstream = new XStreamHandler(); File tempSpriteFile = new File("data/tempSprites/tempSprite.xml"); xstream.saveToFile(myScreenObjects.get(p), tempSpriteFile); SpriteMakerModel xmlSprite = (SpriteMakerModel) xstream.getAttributeFromFile(tempSpriteFile); xmlSprite.addComponent(new Position(gameCoords, 0)); //heading 0 because all sprites default to this myModel.addBackgroundTile(xmlSprite); break; } } success = true; } e.setDropCompleted(success); e.consume(); }
/** * Handle dropped files to editor. */ @FXThread private void dragDropped(@NotNull final DragEvent dragEvent) { final Dragboard dragboard = dragEvent.getDragboard(); final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES)); if (files == null || files.size() != 1) { return; } final File file = files.get(0); if (!canAccept(file)) return; handleFile(file); }
/** * Handle drag over. */ @FXThread private void dragOver(@NotNull final DragEvent dragEvent) { final Dragboard dragboard = dragEvent.getDragboard(); final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES)); if (files == null || files.size() != 1) { return; } final File file = files.get(0); if (!canAccept(file)) return; final Set<TransferMode> transferModes = dragboard.getTransferModes(); final boolean isCopy = transferModes.contains(TransferMode.COPY); dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE); dragEvent.consume(); }
/** * Handle dropped events. * * @param dragEvent the dropped event. */ @FXThread private void handleDragDroppedEvent(@NotNull final DragEvent dragEvent) { final Dragboard dragboard = dragEvent.getDragboard(); final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES)); if (files == null || files.size() != 1) { return; } final File file = files.get(0); if (!file.getName().endsWith(FileExtensions.JME_MATERIAL)) { return; } addMaterial(file.toPath()); }
/** * Handle drag over events. * * @param dragEvent the drag over event. */ @FXThread private void handleDragOverEvent(@NotNull final DragEvent dragEvent) { final Dragboard dragboard = dragEvent.getDragboard(); final List<File> files = unsafeCast(dragboard.getContent(DataFormat.FILES)); if (files == null || files.size() != 1) { return; } final File file = files.get(0); if (!file.getName().endsWith(FileExtensions.JME_MATERIAL)) { return; } final Set<TransferMode> transferModes = dragboard.getTransferModes(); final boolean isCopy = transferModes.contains(TransferMode.COPY); dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE); dragEvent.consume(); }
/** * Drag dropped to the file drop area. * * @param event * Event data. */ public final void onDragDropped(final DragEvent event) throws IOException { boolean success = false; LOG.log(Level.FINE, "Drag dropped: " + event.getDragboard().getString()); if (event.getDragboard().hasFiles()) { File file = event.getDragboard().getFiles().get(0); // Check if file has a valid extension if (file.getName().endsWith(".bin")) { openSimulationFile(file); success = true; } else { String message = "Incorrect extension of the opened file (required .bin)"; Dialog.createExceptionDialog(message, new IllegalArgumentException(message)); } } event.setDropCompleted(success); event.consume(); }
/** * Drag dropped action * * @param event */ @FXML public void dragDropped(DragEvent event) { try { loadConfig(event.getDragboard().getFiles().get(0)); } catch (Exception e) { // TODO Auto-generated catch block Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Import"); alert.setHeaderText("Loading error"); alert.setContentText(e.getMessage()); alert.initModality(Modality.WINDOW_MODAL); alert.showAndWait(); e.printStackTrace(); return; } menuController.selectExerciseOverview(); event.setDropCompleted(true); event.consume(); }
/** * Mouse dragover event. * * @param event */ private void mouseDragOver (final DragEvent event) { if (event.getGestureSource() != contentPane && (event.getDragboard().hasContent(VoogaFileFormat.getInstance()))) { VoogaFile content = (VoogaFile) event.getDragboard().getContent(VoogaFileFormat.getInstance()); String color = ""; if (content.getType() != VoogaFileType.FOLDER) { color = designboardProperties.getString("NonVoogaFileColor"); } else { color = designboardProperties.getString("VoogaFileColor"); } contentPane.setStyle(String .format(designboardProperties.getString("ContentPaneStringStyle"), color)); event.acceptTransferModes(TransferMode.ANY); } else if (event.getDragboard().hasString()) { event.acceptTransferModes(TransferMode.ANY); } event.consume(); }
/** * Method to add new element to the design board * * @param file: file to add * @param event: drag and drop feature * @param archetype: archetype (if element has one) */ private void addElement (VoogaFile file, DragEvent event, String archetype) { String elementPath = file.getPath(); if (elementPath != null) { try { if (ResourceDecipherer.isImage(elementPath)) { GameObjectBuilder builder = new GameObjectBuilder(elementManager); if (!archetype.isEmpty()) { builder.setArchetype(archetype); } else { builder.setDraggedImage(file.getPath()); } builder.showAndWait(); } } catch (VoogaException e) { VoogaAlert alert = new VoogaAlert(e.getMessage()); alert.showAndWait(); } elementManager.addElementId(elementPath); } }
/*********************************************************/ // 파일 드래그 드롭 처리. /* * (non-Javadoc) * * @see com.kyj.fx.voeditor.visual.component.text.AbstractDragDropHelper# * onDagOver(javafx.scene.input.DragEvent) */ @Override public void onDagOver(DragEvent ev) { if (ev.isConsumed()) return; if (ev.getDragboard().hasFiles()) { ev.acceptTransferModes(TransferMode.LINK); ev.consume(); } }
private void handleDragDropped(DragEvent event) { LOGGER.debug("drag dropped"); Dragboard dragboard = event.getDragboard(); boolean success = dragboard.hasString(); if (success) { try { int slideId = Integer.parseInt(dragboard.getString()); LOGGER.debug("dropped slide with id {} on divider", slideId); if (slideDroppedCallback != null) { slideDroppedCallback.accept(slideId); } } catch (NumberFormatException ex) { success = false; } } event.setDropCompleted(success); event.consume(); }
@Override public void start(Stage stage) throws Exception { this.stage = stage; this.stage.setTitle("CSVboard"); Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); Scene scene = new Scene(root); scene.getStylesheets().add("CSVboard/style_tableview.css"); // Dropping over surface scene.setOnDragDropped((DragEvent event) -> { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasFiles()) { success = true; String filePath = null; for (File file:db.getFiles()) { filePath = file.getAbsolutePath(); } } event.setDropCompleted(success); event.consume(); }); // Give the controller access to the main app. stage.setScene(scene); stage.show(); }
protected void handleRowDragDropped(TreeTableRow<T> r, DragEvent ev) { Dragboard db = ev.getDragboard(); if(isAcceptable(db, r)) { int ix = (Integer)db.getContent(JAVA_DATA_FORMAT); TreeItem item = tree.getTreeItem(ix); item.getParent().getChildren().remove(item); getTarget(r).getChildren().add(item); ev.setDropCompleted(true); tree.getSelectionModel().clearSelection(); tree.getSelectionModel().select(item); // FIX focus and selection differ after this ev.consume(); } }
@FXML void mouseDragOver(final DragEvent e) { final Dragboard db = e.getDragboard(); final boolean isAccepted = db.getFiles().get(0).getName().toLowerCase().endsWith(".log") || db.getFiles().get(0).getName().toLowerCase().endsWith(".txt"); if (db.hasFiles()) { if (isAccepted) { tabpane.setStyle("-fx-border-color: red;" + "-fx-border-width: 5;" + "-fx-background-color: #C6C6C6;" + "-fx-border-style: solid;");//TODO move to css e.acceptTransferModes(TransferMode.COPY); } } else { e.consume(); } }
private void onDragOver(final TreeTableRow<GPXLineItem> row, final DragEvent event) { Dragboard db = event.getDragboard(); if (db.getContent(SERIALIZED_MIME_TYPE) != null) { if (!row.isEmpty()) { event.acceptTransferModes(TransferMode.COPY_OR_MOVE); event.consume(); } } else { if (db.hasFiles()) { for (File file:db.getFiles()) { // accept only gpx files if (GPXEditorWorker.GPX_EXT.equals(FilenameUtils.getExtension(file.getName()).toLowerCase())) { event.acceptTransferModes(TransferMode.COPY_OR_MOVE); break; } } } else { event.consume(); } } }
@FXML public void songPathDragDropped(final DragEvent ev) { Dragboard db = ev.getDragboard(); if (db.hasFiles()) { for (File f : db.getFiles()) { if (f.isDirectory()) { boolean unique = true; for (String path : bmsroot.getItems()) { if (path.equals(f.getPath()) || f.getPath().startsWith(path + File.separatorChar)) { unique = false; break; } } if (unique) { bmsroot.getItems().add(f.getPath()); } } } } }
@Test public void shouldTriggerDragEntered() { ListCell<Playlist> listCell = cellFactory.call(getListView()); listCell.setItem(new Playlist(1, "Playlist", 10)); listCell.setStyle(null); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); listCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("List cell style should not be empty", listCell.getStyle(), not(isEmptyString())); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnterdWithSameSource() { ListCell<Playlist> listCell = cellFactory.call(getListView()); listCell.setItem(new Playlist(1, "Playlist", 10)); listCell.setStyle(null); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, listCell)); listCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("List cell style should be empty", listCell.getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnteredWithNoContent() { ListCell<Playlist> listCell = cellFactory.call(getListView()); listCell.setItem(new Playlist(1, "Playlist", 10)); listCell.setStyle(null); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(false); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); listCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("List cell style should be empty", listCell.getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnteredWithNoPlaylist() { ListCell<Playlist> listCell = cellFactory.call(getListView()); listCell.setItem(null); listCell.setStyle(null); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); listCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("List cell style should be empty", listCell.getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnteredWithReservedPlaylist() { ListCell<Playlist> listCell = cellFactory.call(getListView()); listCell.setItem(new Playlist(PLAYLIST_ID_FAVOURITES, "Favourites", 10)); listCell.setStyle(null); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); listCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("List cell style should be empty", listCell.getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldTriggerDragExited() { ListCell<Playlist> listCell = cellFactory.call(getListView()); listCell.setStyle("some-style"); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_EXITED, mockDragboard, TransferMode.COPY, new Object())); listCell.onDragExitedProperty().get().handle(spyDragEvent); assertThat("List cell style should be empty", listCell.getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldTriggerDragOver() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragOverProperty().get().handle(spyDragEvent); verify(spyDragEvent, times(1)).acceptTransferModes(TransferMode.MOVE); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragOverWithSameSource() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, tableCell)); tableCell.onDragOverProperty().get().handle(spyDragEvent); verify(spyDragEvent, never()).acceptTransferModes(TransferMode.MOVE); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragOverWithNoContent() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(false); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragOverProperty().get().handle(spyDragEvent); verify(spyDragEvent, never()).acceptTransferModes(TransferMode.MOVE); verify(spyDragEvent, times(1)).consume(); }
@Test @SuppressWarnings("unchecked") public void shouldNotTriggerDragOverWithNoTrackTableModel() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); tableCell.getTableRow().setItem(null); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragOverProperty().get().handle(spyDragEvent); verify(spyDragEvent, never()).acceptTransferModes(TransferMode.MOVE); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragOverWithSearchPlaylist() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); track.setPlaylistId(PLAYLIST_ID_SEARCH); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_OVER, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragOverProperty().get().handle(spyDragEvent); verify(spyDragEvent, never()).acceptTransferModes(TransferMode.MOVE); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldTriggerDragEntered() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_ENTERED, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("Table row style should not be empty", tableCell.getTableRow().getStyle(), not(isEmptyString())); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnteredWithSameSource() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy(getDragEvent(DragEvent.DRAG_ENTERED, mockDragboard, TransferMode.COPY, tableCell)); tableCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("Table row style should be empty", tableCell.getTableRow().getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnteredWithNoContent() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(false); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_ENTERED, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("Table row style should be empty", tableCell.getTableRow().getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragEnteredWithSearchPlaylist() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); track.setPlaylistId(PLAYLIST_ID_SEARCH); updateTableCell(tableCell, track); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_ENTERED, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragEnteredProperty().get().handle(spyDragEvent); assertThat("Table row style should be empty", tableCell.getTableRow().getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldTriggerDragExited() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track track = getTrack(); updateTableCell(tableCell, track); tableCell.getTableRow().setStyle("some-style"); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_EXITED, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragExitedProperty().get().handle(spyDragEvent); assertThat("Table row style should be empty", tableCell.getTableRow().getStyle(), isEmptyString()); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldTriggerDragDropped() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track target = getTrack(); updateTableCell(tableCell, target); Track source = new Track("1231", "Artist Name 1", "Artist Image 1", "4561", "Album Name 1", "Album Image 1", 2001, "7891", "Track Name 1", 2, "Location 1", true, Arrays.asList("Genre 1", "Genre 2")); source.setPlaylistId(2); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(true); when(mockDragboard.getContent(DND_TRACK_DATA_FORMAT)).thenReturn(source); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_DROPPED, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragDroppedProperty().get().handle(spyDragEvent); verify(mockPlaylistManager, times(1)).moveTracksInPlaylist(source.getPlaylistId(), source, target); verify(spyDragEvent, times(1)).setDropCompleted(true); verify(spyDragEvent, times(1)).consume(); }
@Test public void shouldNotTriggerDragDroppedWithNoContent() { TableCell<TrackTableModel, String> tableCell = cellFactory.call(new TableColumn<>()); Track target = getTrack(); updateTableCell(tableCell, target); Track source = new Track("1231", "Artist Name 1", "Artist Image 1", "4561", "Album Name 1", "Album Image 1", 2001, "7891", "Track Name 1", 2, "Location 1", true, Arrays.asList("Genre 1", "Genre 2")); source.setPlaylistId(2); Dragboard mockDragboard = mock(Dragboard.class); when(mockDragboard.hasContent(DND_TRACK_DATA_FORMAT)).thenReturn(false); DragEvent spyDragEvent = spy( getDragEvent(DragEvent.DRAG_DROPPED, mockDragboard, TransferMode.COPY, new Object())); tableCell.onDragDroppedProperty().get().handle(spyDragEvent); verify(mockPlaylistManager, never()).moveTracksInPlaylist(source.getPlaylistId(), source, target); verify(spyDragEvent, never()).setDropCompleted(true); verify(spyDragEvent, times(1)).consume(); }