Search in sources :

Example 11 with TransferHandler

use of javax.swing.TransferHandler in project jna by java-native-access.

the class AlphaMaskDemo method run.

public void run() {
    // Must find a graphics configuration with a depth of 32 bits
    GraphicsConfiguration gconfig = WindowUtils.getAlphaCompatibleGraphicsConfiguration();
    frame = new JFrame("Alpha Mask Demo");
    alphaWindow = new JWindow(frame, gconfig);
    MouseInputAdapter handler = new MouseInputAdapter() {

        private Point offset;

        public void mousePressed(MouseEvent e) {
            if (SwingUtilities.isLeftMouseButton(e))
                offset = e.getPoint();
        }

        public void mouseReleased(MouseEvent e) {
            offset = null;
            // hit testing; not sure why it gets disabled
            if (System.getProperty("os.name").startsWith("Windows"))
                update(true, true);
        }

        public void mouseDragged(MouseEvent e) {
            if (offset != null) {
                Window w = (Window) e.getSource();
                Point where = e.getPoint();
                where.translate(-offset.x, -offset.y);
                Point loc = w.getLocationOnScreen();
                loc.translate(where.x, where.y);
                w.setLocation(loc.x, loc.y);
            }
        }
    };
    alphaWindow.addMouseListener(handler);
    alphaWindow.addMouseMotionListener(handler);
    JPanel p = new JPanel(new BorderLayout(8, 8));
    p.setBorder(new EmptyBorder(8, 8, 8, 8));
    p.setTransferHandler(new TransferHandler() {

        private static final long serialVersionUID = 1L;

        public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
            List<DataFlavor> list = Arrays.asList(transferFlavors);
            if (list.contains(URL_FLAVOR) || list.contains(URI_LIST_FLAVOR) || list.contains(DataFlavor.imageFlavor) || list.contains(DataFlavor.javaFileListFlavor)) {
                return true;
            }
            if (DataFlavor.selectBestTextFlavor(transferFlavors) != null) {
                return true;
            }
            System.out.println("No acceptable flavor found in " + Arrays.asList(transferFlavors));
            return false;
        }

        public boolean importData(JComponent comp, Transferable t) {
            try {
                if (t.isDataFlavorSupported(URL_FLAVOR)) {
                    URL url = (URL) t.getTransferData(URL_FLAVOR);
                    setImage(Toolkit.getDefaultToolkit().getImage(url));
                    return true;
                }
                if (t.isDataFlavorSupported(URI_LIST_FLAVOR)) {
                    String s = (String) t.getTransferData(URI_LIST_FLAVOR);
                    String[] uris = s.split("[\r\n]");
                    if (uris.length > 0) {
                        URL url = new URL(uris[0]);
                        setImage(Toolkit.getDefaultToolkit().getImage(url));
                        return true;
                    }
                    return false;
                }
                if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
                    Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
                    setImage(image);
                    return true;
                }
                if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                    List<File> files = (List<File>) t.getTransferData(DataFlavor.javaFileListFlavor);
                    File f = files.get(0);
                    URL url = new URL("file://" + f.toURI().toURL().getPath());
                    Image image = Toolkit.getDefaultToolkit().getImage(url);
                    setImage(image);
                    return true;
                }
                DataFlavor flavor = DataFlavor.selectBestTextFlavor(t.getTransferDataFlavors());
                if (flavor != null) {
                    Reader reader = flavor.getReaderForText(t);
                    char[] buf = new char[512];
                    StringBuilder b = new StringBuilder();
                    int count;
                    // encoding wrong
                    while ((count = reader.read(buf)) > 0) {
                        for (int i = 0; i < count; i++) {
                            if (buf[i] != 0)
                                b.append(buf, i, 1);
                        }
                    }
                    String html = b.toString();
                    Pattern p = Pattern.compile("<img.*src=\"([^\\\"\">]+)\"", Pattern.CANON_EQ | Pattern.UNICODE_CASE);
                    Matcher m = p.matcher(html);
                    if (m.find()) {
                        URL url = new URL(m.group(1));
                        System.out.println("Load image from " + url);
                        Image image = Toolkit.getDefaultToolkit().getImage(url);
                        setImage(image);
                        return true;
                    }
                    System.out.println("Can't parse text: " + html);
                    return false;
                }
                System.out.println("No flavor available: " + Arrays.asList(t.getTransferDataFlavors()));
            } catch (UnsupportedFlavorException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Throwable e) {
                e.printStackTrace();
            }
            return false;
        }
    });
    p.add(new JLabel("<html><center>Drop an image with an alpha channel onto this window<br>" + "You may also adjust the overall transparency with the slider</center></html>"), BorderLayout.NORTH);
    final JSlider slider = new JSlider(0, 255, 255);
    slider.addChangeListener(new ChangeListener() {

        public void stateChanged(ChangeEvent e) {
            int value = slider.getValue();
            setAlpha(value / 255f);
        }
    });
    p.add(slider, BorderLayout.SOUTH);
    frame.getContentPane().add(p);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    centerOnScreen(frame);
    frame.setVisible(true);
    p.addMouseListener(new MouseAdapter() {

        public void mousePressed(MouseEvent e) {
            update();
        }
    });
    try {
        URL url = getClass().getResource("tardis.png");
        if (url != null) {
            setImage(Toolkit.getDefaultToolkit().getImage(url));
        }
    } catch (Exception e) {
    }
}
Also used : JPanel(javax.swing.JPanel) Matcher(java.util.regex.Matcher) Reader(java.io.Reader) Image(java.awt.Image) BufferedImage(java.awt.image.BufferedImage) URL(java.net.URL) GraphicsConfiguration(java.awt.GraphicsConfiguration) DataFlavor(java.awt.datatransfer.DataFlavor) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) JSlider(javax.swing.JSlider) List(java.util.List) ChangeListener(javax.swing.event.ChangeListener) EmptyBorder(javax.swing.border.EmptyBorder) Window(java.awt.Window) JWindow(javax.swing.JWindow) Pattern(java.util.regex.Pattern) MouseEvent(java.awt.event.MouseEvent) JWindow(javax.swing.JWindow) JComponent(javax.swing.JComponent) Transferable(java.awt.datatransfer.Transferable) MouseAdapter(java.awt.event.MouseAdapter) JLabel(javax.swing.JLabel) Point(java.awt.Point) IOException(java.io.IOException) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) IOException(java.io.IOException) ChangeEvent(javax.swing.event.ChangeEvent) TransferHandler(javax.swing.TransferHandler) File(java.io.File) MouseInputAdapter(javax.swing.event.MouseInputAdapter)

Example 12 with TransferHandler

use of javax.swing.TransferHandler in project jabref by JabRef.

the class MainTable method setUI.

/**
     * Morten Alver: This override is a workaround NullPointerException when
     * dragging stuff into the table. I found this in a forum, but have no idea
     * why it works.
     * @param newUI
     */
@Override
public void setUI(TableUI newUI) {
    super.setUI(newUI);
    TransferHandler handler = getTransferHandler();
    setTransferHandler(null);
    setTransferHandler(handler);
}
Also used : EntryTableTransferHandler(org.jabref.gui.groups.EntryTableTransferHandler) TransferHandler(javax.swing.TransferHandler)

Example 13 with TransferHandler

use of javax.swing.TransferHandler in project lotro-companion by dmorcellet.

the class VirtuesEditionPanelController method build.

private JPanel build() {
    JPanel panel = GuiFactory.buildBackgroundPanel(null);
    // All virtues
    {
        int index = 0;
        for (VirtueId virtueId : VirtueId.values()) {
            VirtueEditionUiController ui = new VirtueEditionUiController(virtueId, panel);
            ui.setListener(this);
            int[] position = getPosition(index);
            ui.setLocation(position[0], position[1]);
            _virtues.put(virtueId, ui);
            index++;
        }
    }
    // Selected virtues
    {
        _selectedVirtues = new VirtuesDisplayPanelController();
        JPanel selectedVirtuesPanel = _selectedVirtues.getPanel();
        for (int i = 0; i < VirtuesDisplayPanelController.MAX_VIRTUES; i++) {
            VirtueIconController iconController = _selectedVirtues.getVirtue(i);
            JLabel label = iconController.getLabel();
            TransferHandler handler = new DropTransferHandler();
            label.setTransferHandler(handler);
        }
        panel.add(selectedVirtuesPanel);
        layoutSelectedVirtues();
    }
    // Max all button
    _maxAll = GuiFactory.buildButton("Max all");
    ActionListener al = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            maxAll();
        }
    };
    _maxAll.addActionListener(al);
    panel.add(_maxAll);
    _maxAll.setSize(_maxAll.getPreferredSize());
    int x = CENTER_X - (_maxAll.getWidth() / 2);
    int y = CENTER_Y + 10 + (_selectedVirtues.getPanel().getHeight() + _maxAll.getHeight() / 2);
    _maxAll.setLocation(x, y);
    panel.setPreferredSize(new Dimension(634, 348));
    return panel;
}
Also used : JPanel(javax.swing.JPanel) ActionListener(java.awt.event.ActionListener) VirtueId(delta.games.lotro.common.VirtueId) ActionEvent(java.awt.event.ActionEvent) JLabel(javax.swing.JLabel) TransferHandler(javax.swing.TransferHandler) Dimension(java.awt.Dimension)

Example 14 with TransferHandler

use of javax.swing.TransferHandler in project gephi by gephi.

the class DragNDropFrameAdapter method register.

public static void register() {
    JFrame frame = (JFrame) WindowManager.getDefault().getMainWindow();
    frame.setTransferHandler(new TransferHandler() {

        @Override
        public boolean canImport(TransferHandler.TransferSupport support) {
            if (!support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                return false;
            }
            // Impossible to get data here and look if compatible format
            return true;
        }

        @Override
        public boolean importData(TransferHandler.TransferSupport support) {
            if (!canImport(support)) {
                return false;
            }
            try {
                List data = (List) support.getTransferable().getTransferData(DataFlavor.javaFileListFlavor);
                File file = (File) data.get(0);
                FileObject fileObject = FileUtil.toFileObject(file);
                if (!file.exists()) {
                    return false;
                }
                if (fileObject.hasExt(GEPHI_EXTENSION)) {
                    ProjectControllerUI pc = Lookup.getDefault().lookup(ProjectControllerUI.class);
                    try {
                        pc.openProject(file);
                    } catch (Exception ew) {
                        Exceptions.printStackTrace(ew);
                        NotifyDescriptor.Message msg = new NotifyDescriptor.Message(NbBundle.getMessage(DragNDropFrameAdapter.class, "DragNDropFrameAdapter.openGephiError"), NotifyDescriptor.WARNING_MESSAGE);
                        DialogDisplayer.getDefault().notify(msg);
                    }
                } else {
                    ImportControllerUI importController = Lookup.getDefault().lookup(ImportControllerUI.class);
                    if (importController.getImportController().isFileSupported(FileUtil.toFile(fileObject))) {
                        importController.importFile(fileObject);
                    } else {
                        return false;
                    }
                }
                return true;
            } catch (UnsupportedFlavorException ex) {
                Exceptions.printStackTrace(ex);
            } catch (IOException ex) {
                Exceptions.printStackTrace(ex);
            }
            return false;
        }
    });
}
Also used : IOException(java.io.IOException) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) IOException(java.io.IOException) NotifyDescriptor(org.openide.NotifyDescriptor) JFrame(javax.swing.JFrame) ImportControllerUI(org.gephi.desktop.importer.api.ImportControllerUI) TransferHandler(javax.swing.TransferHandler) List(java.util.List) FileObject(org.openide.filesystems.FileObject) File(java.io.File) ProjectControllerUI(org.gephi.desktop.project.api.ProjectControllerUI)

Aggregations

TransferHandler (javax.swing.TransferHandler)14 List (java.util.List)8 Transferable (java.awt.datatransfer.Transferable)7 IOException (java.io.IOException)7 JComponent (javax.swing.JComponent)7 File (java.io.File)6 JPanel (javax.swing.JPanel)6 BorderLayout (java.awt.BorderLayout)5 UnsupportedFlavorException (java.awt.datatransfer.UnsupportedFlavorException)5 ActionEvent (java.awt.event.ActionEvent)5 ActionListener (java.awt.event.ActionListener)5 JLabel (javax.swing.JLabel)5 DataFlavor (java.awt.datatransfer.DataFlavor)4 ArrayList (java.util.ArrayList)4 JFrame (javax.swing.JFrame)4 Dimension (java.awt.Dimension)3 Image (java.awt.Image)3 Point (java.awt.Point)3 MouseEvent (java.awt.event.MouseEvent)3 JPopupMenu (javax.swing.JPopupMenu)3