类javafx.scene.input.TransferMode源码实例Demo

下面列出了怎么用javafx.scene.input.TransferMode的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: pmd-designer   文件: DragAndDropUtil.java
/**
 * Registers the given [source] javafx Node as a source for a drag
 * and drop even with {@link #NODE_RANGE_DATA_FORMAT} content.
 */
public static Subscription registerAsNodeDragSource(javafx.scene.Node source, Node data, DesignerRoot root) {
    source.setOnDragDetected(evt -> {
        // drag and drop
        Dragboard db = source.startDragAndDrop(TransferMode.LINK);
        ClipboardContent content = new ClipboardContent();
        content.put(NODE_RANGE_DATA_FORMAT, TextRange.fullLine(data.getBeginLine(), 10000));
        db.setContent(content);
        root.getService(DesignerRoot.IS_NODE_BEING_DRAGGED).setValue(true);
        evt.consume();
    });

    source.setOnDragDone(evt -> {
        if (evt.getDragboard().hasContent(NODE_RANGE_DATA_FORMAT)) {
            root.getService(DesignerRoot.IS_NODE_BEING_DRAGGED).setValue(false);
        }
    });

    return () -> source.setOnDragDetected(null);
}
 
源代码2 项目: mcaselector   文件: NBTTreeView.java
private void onDragDetected(MouseEvent e) {
	if (getTreeItem() == getTreeView().getRoot()) {
		return;
	}
	Dragboard db = startDragAndDrop(TransferMode.MOVE);
	WritableImage wi = new WritableImage((int) getWidth(), (int) getHeight());
	Image dbImg = snapshot(null, wi);
	db.setDragView(dbImg);
	if (USE_DRAGVIEW_OFFSET) {
		db.setDragViewOffsetX(getWidth() / 2);
		db.setDragViewOffsetY(getHeight() / 2);
	}
	ClipboardContent cbc = new ClipboardContent();
	cbc.put(CLIPBOARD_DATAFORMAT, true);
	db.setContent(cbc);
	dragboardContent = getTreeItem();
	e.consume();
}
 
源代码3 项目: phoebus   文件: AlarmTreeView.java
/** For leaf nodes, drag PV name */
private void addDragSupport()
{
    tree_view.setOnDragDetected(event ->
    {
        final ObservableList<TreeItem<AlarmTreeItem<?>>> items = tree_view.getSelectionModel().getSelectedItems();
        if (items.size() != 1)
            return;
        final AlarmTreeItem<?> item = items.get(0).getValue();
        if (! (item instanceof AlarmClientLeaf))
            return;
        final Dragboard db = tree_view.startDragAndDrop(TransferMode.COPY);
        final ClipboardContent content = new ClipboardContent();
        content.putString(item.getName());
        db.setContent(content);
        event.consume();
    });
}
 
源代码4 项目: phoebus   文件: AlarmTableUI.java
/** Enable dragging the PV name from a table cell.
 *  @param cell Table cell
 */
static void enablePVDrag(TableCell<AlarmInfoRow, ?> cell)
{
    // Tried to use table.setOnDragDetected() to drag PV names
    // from all selected cells, but with drag enabled on the table
    // it is no longer possible to resize columns:
    // Moving a column divider starts a drag.
    // So now hooking drag to table cell.
    cell.setOnDragDetected(event ->
    {
        // Anything to drag?
        if (cell.getTableRow() == null  ||  cell.getTableRow().getItem() == null)
            return;

        final Dragboard db = cell.startDragAndDrop(TransferMode.COPY);
        final ClipboardContent content = new ClipboardContent();
        content.putString(cell.getTableRow().getItem().pv.get());
        db.setContent(content);
        event.consume();
    });
}
 
源代码5 项目: phoebus   文件: SearchView.java
/** Allow dragging {@link ChannelInfo} from search view (into plot) */
private void setupDrag()
{
    channel_table.setOnDragDetected(event ->
    {
        final List<ChannelInfo> selection = channel_table.getSelectionModel().getSelectedItems();
        if (selection.size() > 0)
        {
            final Dragboard db = channel_table.startDragAndDrop(TransferMode.COPY);
            final ClipboardContent content = new ClipboardContent();
            // Publish PV names as "PV1, PV2, ..."
            content.putString(selection.stream().map(ChannelInfo::getName).collect(Collectors.joining(", ")));
            // Copy into ArrayList which is for sure Serializable
            content.put(CHANNEL_INFOS, new ArrayList<>(selection));
            db.setContent(content);
        }
        event.consume();
    });
}
 
源代码6 项目: phoebus   文件: DockItem.java
/** Allow dragging this item */
private void handleDragDetected(final MouseEvent event)
{
    // Disable dragging from a 'fixed' pane
    if (getDockPane().isFixed())
        return;

    final Dragboard db = name_tab.startDragAndDrop(TransferMode.MOVE);

    final ClipboardContent content = new ClipboardContent();
    content.put(DOCK_ITEM, getLabel());
    db.setContent(content);

    final DockItem previous = dragged_item.getAndSet(this);
    if (previous != null)
        logger.log(Level.WARNING, "Already dragging " + previous);

    event.consume();
}
 
源代码7 项目: AudioBookConverter   文件: FilesController.java
private void addDragEvenHandlers(Control control) {
    control.setOnDragOver(event -> {
        if (event.getGestureSource() != control && event.getDragboard().hasFiles()) {
            event.acceptTransferModes(TransferMode.ANY);
        }

        event.consume();
    });

    control.setOnDragDropped(event -> {
        processFiles(event.getDragboard().getFiles());
        event.setDropCompleted(true);
        event.consume();
        if (!chaptersMode.get()) {
            if (!filesChapters.getTabs().contains(filesTab)) {
                filesChapters.getTabs().add(filesTab);
                filesChapters.getSelectionModel().select(filesTab);
            }
        }
    });
}
 
/**
 * Handle drag over.
 */
@FxThread
private void dragOver(@NotNull DragEvent dragEvent) {

    var dragboard = dragEvent.getDragboard();
    var files = ClassUtils.<List<File>>unsafeCast(dragboard.getContent(DataFormat.FILES));

    if (files == null || files.size() != 1) {
        return;
    }

    var file = files.get(0);
    if (!canAccept(file)) {
        return;
    }

    var transferModes = dragboard.getTransferModes();
    var isCopy = transferModes.contains(TransferMode.COPY);

    dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE);
    dragEvent.consume();
}
 
源代码9 项目: jmonkeybuilder   文件: MaterialPropertyControl.java
/**
 * Handle drag over events.
 *
 * @param dragEvent the drag over event.
 */
@FxThread
private void handleDragOverEvent(@NotNull DragEvent dragEvent) {

    var dragboard = dragEvent.getDragboard();
    var files = EditorUtil.getFiles(dragboard);
    if (files.size() != 1) {
        return;
    }

    var file = files.get(0);

    if (!file.getName().endsWith(FileExtensions.JME_MATERIAL)) {
        return;
    }

    var transferModes = dragboard.getTransferModes();
    var isCopy = transferModes.contains(TransferMode.COPY);

    dragEvent.acceptTransferModes(isCopy ? TransferMode.COPY : TransferMode.MOVE);
    dragEvent.consume();
}
 
源代码10 项目: Solitaire   文件: SuitStack.java
private EventHandler<DragEvent> createOnDragOverHandler(final ImageView pView)
{
	return new EventHandler<DragEvent>()
   	{
   	    public void handle(DragEvent pEvent) 
   	    {
   	    	if(pEvent.getGestureSource() != pView && pEvent.getDragboard().hasString())
   	    	{
   	    		CardTransfer transfer = new CardTransfer(pEvent.getDragboard().getString());
   	    		if( transfer.size() == 1 && GameModel.instance().isLegalMove(transfer.getTop(), aIndex) )
   	    		{
   	    			pEvent.acceptTransferModes(TransferMode.MOVE);
   	    		}
   	    	}

   	    	pEvent.consume();
   	    }
   	};
}
 
源代码11 项目: Solitaire   文件: CardPileView.java
private EventHandler<DragEvent> createDragOverHandler(final ImageView pImageView, final Card pCard)
{
	return new EventHandler<DragEvent>()
	{
		@Override
		public void handle(DragEvent pEvent) 
		{
			if(pEvent.getGestureSource() != pImageView && pEvent.getDragboard().hasString())
			{
				CardTransfer transfer = new CardTransfer(pEvent.getDragboard().getString());
				if( GameModel.instance().isLegalMove(transfer.getTop(), aIndex) )
				{
					pEvent.acceptTransferModes(TransferMode.MOVE);
				}
			}
			pEvent.consume();
		}
	};
}
 
源代码12 项目: MusicPlayer   文件: ArtistsMainController.java
ArtistCell() {
    super();
    artistImage.setFitWidth(40);
    artistImage.setFitHeight(40);
    artistImage.setPreserveRatio(true);
    artistImage.setSmooth(true);
    artistImage.setCache(true);
    title.setTextOverrun(OverrunStyle.CLIP);
    cell.getChildren().addAll(artistImage, title);
    cell.setAlignment(Pos.CENTER_LEFT);
    HBox.setMargin(artistImage, new Insets(0, 10, 0, 0));
    this.setPrefWidth(248);
    
    this.setOnMouseClicked(event -> artistList.getSelectionModel().select(artist));
    
    this.setOnDragDetected(event -> {
    	Dragboard db = this.startDragAndDrop(TransferMode.ANY);
    	ClipboardContent content = new ClipboardContent();
        content.putString("Artist");
        db.setContent(content);
    	MusicPlayer.setDraggedItem(artist);
    	db.setDragView(this.snapshot(null, null), 125, 25);
    	event.consume();
    });
}
 
源代码13 项目: MusicPlayer   文件: ArtistsMainController.java
AlbumCell() {
    super();
    setAlignment(Pos.CENTER);
    setPrefHeight(140);
    setPrefWidth(140);
    albumArtwork.setFitWidth(130);
    albumArtwork.setFitHeight(130);
    albumArtwork.setPreserveRatio(true);
    albumArtwork.setSmooth(true);
    albumArtwork.setCache(true);
    
    this.setOnMouseClicked(event -> albumList.getSelectionModel().select(album));
    
    this.setOnDragDetected(event -> {
    	Dragboard db = this.startDragAndDrop(TransferMode.ANY);
    	ClipboardContent content = new ClipboardContent();
        content.putString("Album");
        db.setContent(content);
    	MusicPlayer.setDraggedItem(album);
    	db.setDragView(this.snapshot(null, null), 75, 75);
        event.consume();
    });
}
 
源代码14 项目: jace   文件: JaceUIController.java
private void processDragEnteredEvent(DragEvent evt) {
    MediaEntry media = null;
    if (evt.getDragboard().hasFiles()) {
        media = MediaCache.getMediaFromFile(getDraggedFile(evt.getDragboard().getFiles()));
    } else if (evt.getDragboard().hasUrl()) {
        media = MediaCache.getMediaFromUrl(evt.getDragboard().getUrl());
    } else if (evt.getDragboard().hasString()) {
        String path = evt.getDragboard().getString();
        try {
            URI.create(path);
            media = MediaCache.getMediaFromUrl(path);
        } catch (IllegalArgumentException ex) {
            File f = new File(path);
            if (f.exists()) {
                media = MediaCache.getMediaFromFile(f);
            }
        }
    }
    if (media != null) {
        evt.acceptTransferModes(TransferMode.LINK, TransferMode.COPY);
        startDragEvent(media);
    }
}
 
源代码15 项目: ns-usbloader   文件: RcmController.java
/**
 * Drag-n-drop support (dragOver consumer)
 * */
@FXML
private void handleDragOver(DragEvent event){
    if (event.getDragboard().hasFiles())
        event.acceptTransferModes(TransferMode.ANY);
    event.consume();
}
 
源代码16 项目: ns-usbloader   文件: FrontController.java
/**
 * Drag-n-drop support (dragOver consumer)
 * */
@FXML
private void handleDragOver(DragEvent event){
    if (event.getDragboard().hasFiles() && ! MediatorControl.getInstance().getTransferActive())
        event.acceptTransferModes(TransferMode.ANY);
    event.consume();
}
 
源代码17 项目: ns-usbloader   文件: SplitMergeController.java
/**
 * Drag-n-drop support (dragOver consumer)
 * */
@FXML
private void handleDragOver(DragEvent event){
    if (event.getDragboard().hasFiles() && ! MediatorControl.getInstance().getTransferActive())
        event.acceptTransferModes(TransferMode.ANY);
    event.consume();
}
 
源代码18 项目: mzmine3   文件: MZmineGUI.java
/**
 * The method activateSetOnDragOver controlling what happens when something is dragged over.
 * Implemented activateSetOnDragOver to accept when files are dragged over it.
 * @param event - DragEvent
 */
public static void activateSetOnDragOver(DragEvent event){
  Dragboard dragBoard = event.getDragboard();
  if (dragBoard.hasFiles()) {
    event.acceptTransferModes(TransferMode.COPY);
  } else {
    event.consume();
  }
}
 
源代码19 项目: oim-fx   文件: WebViewEventDispatcher.java
private static TransferMode[] getFXDndAction(int wkDndAction) {
	LinkedList<TransferMode> tms = new LinkedList<TransferMode>();
	if ((wkDndAction & WK_DND_ACTION_COPY) != 0)
		tms.add(TransferMode.COPY);
	if ((wkDndAction & WK_DND_ACTION_MOVE) != 0)
		tms.add(TransferMode.MOVE);
	if ((wkDndAction & WK_DND_ACTION_LINK) != 0)
		tms.add(TransferMode.LINK);
	return tms.toArray(new TransferMode[0]);
}
 
源代码20 项目: oim-fx   文件: WebViewEventDispatcher.java
private static int getWKDndAction(TransferMode... tms) {
	int dndActionId = WK_DND_ACTION_NONE;
	for (TransferMode tm : tms) {
		if (tm == TransferMode.COPY)
			dndActionId |= WK_DND_ACTION_COPY;
		else if (tm == TransferMode.MOVE)
			dndActionId |= WK_DND_ACTION_MOVE;
		else if (tm == TransferMode.LINK)
			dndActionId |= WK_DND_ACTION_LINK;
	}
	return dndActionId;
}
 
源代码21 项目: phoebus   文件: JFXBaseRepresentation.java
/** By default, allow dragging a "pv_name" from the widget in runtime mode
 *
 *  <p>Derived classes can override, for example to disable
 *  in case the representation already handles dragging moves
 *  to for example operate a slider or pan something.
 */
// Note: In RCP version, the D&D had to be handled in SWT,
// and was implemented in the org.csstudio.display.builder.rcp.RuntimeViewPart.
// Widget.isDragEnabled() was used to enable/disable.
// Now the enablement is left to the representation,
// and since only Ctrl-drag is supported,
// only very few widget representations need to disable it.
protected void configurePVNameDrag()
{
    // If there is a "pv_name", allow dragging it out
    final Optional<WidgetProperty<String>> pv_name = model_widget.checkProperty(CommonWidgetProperties.propPVName);
    if (! pv_name.isPresent())
        return;

    jfx_node.addEventFilter(MouseEvent.DRAG_DETECTED, event ->
    {
        // Ignore drag unless Ctrl is held.
        // When plain drag starts a PV name move,
        // this prevents selecting content within a text field
        // via a mouse drag.
        // Ctrl-drag is thus required to start dragging a PV name.
        if (! event.isControlDown())
            return;

        final String pv = pv_name.get().getValue();
        if (! pv.isEmpty())
        {
            final Dragboard db = jfx_node.startDragAndDrop(TransferMode.COPY);
            final ClipboardContent content = new ClipboardContent();
            content.putString(pv);
            db.setContent(content);
        }
    });
}
 
源代码22 项目: phoebus   文件: ScanCommandTree.java
private void hookDrag()
{
    final List<ScanCommand> commands = new ArrayList<>();
    setOnDragDetected(event ->
    {
        // Only start drag on left (primary) button,
        // not also on right button which opens the context menu,
        // or the apple 'Command' button which is again for the context menu
        if (event.isPrimaryButtonDown() &&  !event.isMetaDown())
        {
            commands.clear();
            commands.addAll(getSelectedCommands());
            if (! commands.isEmpty())
            {
                // Would like to default to move,
                // allowing key modifiers for copy.
                // TransferMode.COPY_OR_MOVE will default to copy,
                // i.e. wrong order.
                // --> Deciding based on key modifier at start of drag
                // https://stackoverflow.com/questions/38699306/how-to-adjust-or-deviate-from-the-default-javafx-transfer-mode-behavior
                final Dragboard db = startDragAndDrop(event.isShortcutDown()
                                                      ? TransferMode.COPY
                                                      : TransferMode.MOVE);
                db.setContent(ScanCommandDragDrop.createClipboardContent(commands));
            }
        }
        event.consume();
    });

    setOnDragDone(event ->
    {
        if (event.getTransferMode() == TransferMode.MOVE)
            undo.execute(new RemoveCommands(model, commands));
        commands.clear();
    });
}
 
源代码23 项目: phoebus   文件: Palette.java
private void hookDrag()
{
    // Drag command out as XML
    command_list.setOnDragDetected(event ->
    {
        final ScanCommand command = command_list.getSelectionModel().getSelectedItem();
        final Dragboard db = command_list.startDragAndDrop(TransferMode.COPY);
        db.setContent(ScanCommandDragDrop.createClipboardContent(command));
        event.consume();
    });
}
 
源代码24 项目: phoebus   文件: FileTreeCell.java
/** @param file File to move or copy
 *  @param target_item Destination directory's tree item
 */
private void move_or_copy(final File file, final TreeItem<FileInfo> target_item, final TransferMode transferMode)
{
    final File dir = target_item.getValue().file;
    // Ignore NOP move
    if (file.getParentFile().equals(dir))
        return;

    JobManager.schedule(Messages.MoveOrCopyJobName, monitor ->
    {
        // System.out.println("Move " + file + " into " + dir);
        final File new_name = new File(dir, file.getName());

        final DirectoryMonitor mon = ((FileTreeItem)target_item).getMonitor();
        try
        {
            if (transferMode.equals(TransferMode.MOVE))
                FileHelper.move(file, dir);
            else
                FileHelper.copy(file, dir);
            Platform.runLater(() ->
            {
                // System.out.println("Add tree item for " + new_name + " to " + target_item.getValue());
                final ObservableList<TreeItem<FileInfo>> siblings = target_item.getChildren();
                siblings.add(new FileTreeItem(mon, new_name));
                FileTreeItem.sortSiblings(siblings);
            });
        }
        catch (Exception ex)
        {
            final TreeTableView<FileInfo> tree = getTreeTableView();
            ExceptionDetailsErrorDialog.openError(tree, Messages.MoveOrCopyAlertTitle,
                                                  MessageFormat.format(Messages.MoveOrCopyAlert, file, target_item.getValue()), ex);
            // Force full refresh
            Platform.runLater(() ->
                tree.setRoot(new FileTreeItem(mon, tree.getRoot().getValue().file)) );
        }
    });
}
 
源代码25 项目: phoebus   文件: FileTreeCell.java
/**
 * Determines the {@link TransferMode} based on the state of the modifier key.
 * This method must consider the
 * operating system as the identity of the modifier key varies (alt/option on Mac OS, ctrl on the rest).
 * @param event The mouse event containing information on key press.
 * @return {@link TransferMode#COPY} if modifier key is pressed, otherwise {@link TransferMode#MOVE}.
 */
private TransferMode getTransferMode(MouseEvent event){
    if(event.isControlDown() && (PlatformInfo.is_linux || PlatformInfo.isWindows || PlatformInfo.isUnix)){
        return TransferMode.COPY;
    }
    else if(event.isAltDown() && PlatformInfo.is_mac_os_x){
        return TransferMode.COPY;
    }
    return TransferMode.MOVE;
}
 
源代码26 项目: phoebus   文件: DockPane.java
/** Accept dock items */
private void handleDragOver(final DragEvent event)
{
    if (!isFixed()  &&
        DockItem.dragged_item.get() != null)
        event.acceptTransferModes(TransferMode.MOVE);
    event.consume();
}
 
源代码27 项目: phoebus   文件: DockItem.java
/** Accept other items that are dropped onto this one */
private void handleDragOver(final DragEvent event)
{
    // Don't suggest dropping into a 'fixed' pane
    if (getDockPane().isFixed())
        return;

    final DockItem item = dragged_item.get();
    if (item != null  &&  item != this)
        event.acceptTransferModes(TransferMode.MOVE);
    event.consume();
}
 
源代码28 项目: mdict-java   文件: SearchBox.java
protected void startDrag(MouseEvent event) {
	TextField textBox = ((TextField)event.getSource());
	if(!"".equals(textBox.getSelectedText()) && textBox.getText().equals(textBox.getSelectedText())) {
        Dragboard db = textBox.startDragAndDrop(TransferMode.MOVE);
        snapshotter.setText(textBox.getText());
        db.setDragView(snapshotter.snapshot(null, null));
        ClipboardContent cc = new ClipboardContent();
        cc.put(DataFormat.PLAIN_TEXT, textBox.getSelectedText());
        db.setContent(cc);
        event.consume();
	}
}
 
源代码29 项目: ApkToolPlus   文件: ApkInfoPrinterActivity.java
public void onDragOverLinkFile(DragEvent event){
    Dragboard db = event.getDragboard();
    if (db.hasFiles()) {
        event.acceptTransferModes(TransferMode.LINK);
    } else {
        event.consume();
    }
}
 
源代码30 项目: beatoraja   文件: ResourceConfigurationView.java
@FXML
public void onSongPathDragOver(DragEvent ev) {
	Dragboard db = ev.getDragboard();
	if (db.hasFiles()) {
		ev.acceptTransferModes(TransferMode.COPY_OR_MOVE);
	}
	ev.consume();
}
 
 类所在包
 类方法
 同包方法