0

I am developing SWT widget and I have build drag and drop functionality. Whenever I drag file across it's download link should be transferred.

I have done that using following code.

Now what I want is with link, I want file icon to be displayed beside the link. For example, if it's word document , word file icon should be displayed.

final DragSource dragSource = new DragSource(tv.getTree(), DND.DROP_MOVE | DND.DROP_COPY | DND.DragOver );
                dragSource.addDragListener(new DragSourceAdapter(){
                    @Override
                    public void dragFinished(DragSourceEvent event) {
                        dragSource.dispose();
                    }

                    @Override
                    public void dragSetData(DragSourceEvent event) {
                        final TreeItem[] dndSelection = tv.getTree().getSelection();
                        final String[] sourceNames = new String[dndSelection.length];
                        String docName = "document";
                        for (int i = 0; i < dndSelection.length; i++) {
                            final TreeItem item = (TreeItem) dndSelection[i];
                            final PendingTreeNode node = (PendingTreeNode) item
                                    .getData();
                            sourceNames[i] = node.getNodeId();
                            docName = node.getName();
                        }
                        final String filePath = AlfrescoFileUtil.getFileURL(sourceNames[0]);
                        final String viewDetailLink = AlfrescoFileUtil.getSearchFileURL(sourceNames[0]);
                        final String viewDetailsLabel = "View details";
                        StringBuffer finalS = new StringBuffer();
                        finalS.append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Calibri;}}{\\colortbl ;\\red0\\green0\\blue255;}{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang9\\f0\\fs22{\\field{\\*\\fldinst{HYPERLINK \"" + filePath + "\"}}{\\fldrslt{\\ul\\cf1 " + docName + "}}}");
                        finalS.append(" | ");
                        finalS.append("{\\field{\\*\\fldinst{HYPERLINK \"" + viewDetailLink + "\"}}{\\fldrslt{\\ul\\cf1 "+ viewDetailsLabel + "}}}}}");
                        event.data = finalS.toString();
                    }
                });
                dragSource.setTransfer(new Transfer[]{RTFTransfer.getInstance()});
                dragSource.notifyListeners(SWT.DragDetect, event);

I want to display something similar to following.

enter image description here

but it is showing something like this now without icon

enter image description here

Baz
  • 36,440
  • 11
  • 68
  • 94
user327126
  • 965
  • 3
  • 11
  • 22

2 Answers2

0

You can use the SWT Program class to find the program icon given the file extension:

Program program = Program.findProgram("file extension");

ImageData imageData = program.getImageData();
greg-449
  • 109,219
  • 232
  • 102
  • 145
  • Hi, Thanks for your reply. I know how to get image in SWT, I just want to know how can I transfer that image along with link (which I am already transferring in my code above) ? – user327126 Dec 03 '15 at 23:08
0

Have you tried to use the event.image property of DragSourceEvent?

    return new DragSourceListener() {
        @Override
        public void dragStart(DragSourceEvent event) {
            final Image image   =   xxx.getImage(); // get image
            if (image != null)
                event.image =   image;
            //else
            //  event.doit  =   false;
        }
        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data      =   xxx.getData();      // set data
        }
        @Override
        public void dragFinished(DragSourceEvent event) {
            // On MOVE operations, data should be removed
        }
    };
Gabe
  • 1
  • 2