All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.protege.editor.owl.ui.table.OWLObjectDropTargetListener Maven / Gradle / Ivy

Go to download

OWL ontology editing infrastructure used by the Protege desktop application.

The newest version!
package org.protege.editor.owl.ui.table;

import org.protege.editor.owl.ui.transfer.OWLObjectDataFlavor;
import org.protege.editor.owl.ui.transfer.OWLObjectDropTarget;
import org.protege.editor.owl.ui.tree.OWLObjectTree;
import org.protege.editor.owl.ui.tree.OWLTreePreferences;
import org.semanticweb.owlapi.model.OWLObject;
import org.semanticweb.owlapi.util.OWLObjectDuplicator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * Author: Matthew Horridge
* The University Of Manchester
* Medical Informatics Group
* Date: 04-Jun-2006

* [email protected]
* www.cs.man.ac.uk/~horridgm

*/ public class OWLObjectDropTargetListener implements DropTargetListener { private final Logger logger = LoggerFactory.getLogger(OWLObjectDropTargetListener.class); private Cursor orginalCursor; private JComponent component; private OWLObjectDropTarget target; public OWLObjectDropTargetListener(OWLObjectDropTarget target) { this.component = target.getComponent(); this.target = target; } public void dragEnter(DropTargetDragEvent dtde) { orginalCursor = component.getCursor(); } public void dragOver(DropTargetDragEvent dtde) { // Update cursor if (isDragAcceptable(dtde)) { dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE); } else { dtde.rejectDrag(); } } public void dropActionChanged(DropTargetDragEvent dtde) { } public void dragExit(DropTargetEvent dte) { // Reset cursor component.setCursor(orginalCursor); } public void drop(DropTargetDropEvent dtde) { if (!isDropAcceptable(dtde)) { dtde.rejectDrop(); } else { dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); List objs = getDropObjects(dtde.getTransferable()); List dupObjs = new ArrayList<>(); OWLObject dupObj = null; for (OWLObject obj : objs) { OWLObjectDuplicator duplicator = new OWLObjectDuplicator(target.getOWLModelManager().getOWLDataFactory()); dupObj = duplicator.duplicateObject(obj); dupObjs.add(dupObj); } dtde.dropComplete(target.dropOWLObjects(dupObjs, dtde.getLocation(), dtde.getDropAction())); } component.setCursor(orginalCursor); } protected boolean isDragAcceptable(DropTargetDragEvent event) { return getDropObjects(event.getTransferable()) != null; } protected boolean isDropAcceptable(DropTargetDropEvent event) { return getDropObjects(event.getTransferable()) != null; } protected List getDropObjects(Transferable transferable) { if (!isAcceptableTransferable(transferable)) { return null; } try { List objs = (List) transferable.getTransferData(OWLObjectDataFlavor.OWL_OBJECT_DATA_FLAVOR); return objs; } catch (UnsupportedFlavorException e) { logger.error("The type of object being dropped is not supported at the drop location.", e); } catch (IOException e) { logger.error("An error occurred whilst deserializing a dropped object.", e); } return Collections.emptyList(); } protected boolean isAcceptableTransferable(Transferable transferable) { DataFlavor [] flavors = transferable.getTransferDataFlavors(); for (DataFlavor flavor : flavors) { if (OWLObjectDataFlavor.OWL_OBJECT_DATA_FLAVOR.equals(flavor)) { return true; } } return false; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy