cancel d&d when dropped back to the tree

This commit is contained in:
Branislav Stojkovic
2019-02-03 00:54:53 +01:00
parent 921b503057
commit 91389ef09b
2 changed files with 65 additions and 0 deletions
@@ -27,6 +27,7 @@ import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragSource;
import java.awt.dnd.DropTarget;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
@@ -181,6 +182,8 @@ public class TreePanel extends JPanel {
// Initialize drag source recognizer.
DragSource.getDefaultDragSource().createDefaultDragGestureRecognizer(getTree(),
DnDConstants.ACTION_COPY_OR_MOVE | DnDConstants.ACTION_LINK, new TreeGestureListener(plugInPort));
// Initialize drop target.
new DropTarget(getTree(), DnDConstants.ACTION_COPY_OR_MOVE, new TreeTargetListener(plugInPort), true);
}
public JScrollPane getTreeScroll() {
@@ -0,0 +1,62 @@
/*
*
* DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors.
*
* This file is part of DIYLC.
*
* DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with DIYLC. If not, see
* <http://www.gnu.org/licenses/>.
*/
package org.diylc.swing.plugins.tree;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import org.diylc.common.IPlugInPort;
/**
* {@link DropTargetListener} for {@link TreePanel}.
*
* @author Branislav Stojkovic
*/
class TreeTargetListener implements DropTargetListener {
private IPlugInPort presenter;
public TreeTargetListener(IPlugInPort presenter) {
super();
this.presenter = presenter;
}
@Override
public void dragEnter(DropTargetDragEvent dtde) {}
@Override
public void dragExit(DropTargetEvent dte) {}
@Override
public void dragOver(DropTargetDragEvent dtde) {
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
}
@Override
public void drop(DropTargetDropEvent dtde) {
presenter.setNewComponentTypeSlot(null, null, false);
}
@Override
public void dropActionChanged(DropTargetDragEvent dtde) {
}
}