package bsFileLinkChooser; /** * PasteImage Extension for BlueSpice * * FileChooser for BlueSpice FileLink * * - show file select dialog, * - copy selected file path to clipboard * - perform paste event on users keyboard * * This program 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 2 of the License, or * (at your option) any later version. * * This program 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 this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * This file is part of BlueSpice MediaWiki * For further information visit http://www.bluespice.com * * @author Leonid Verhovskij * @version 2.23.2 * @package BlueSpice * @subpackage FileLink * @copyright Copyright (C) 2016 Hallo Welt! GmbH, All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU Public License v2 or later * @filesource */ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.File; import javax.swing.*; import javax.swing.SwingUtilities; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.StringSelection; public class JWSFileChooser extends JPanel implements ActionListener, ClipboardOwner { private static final long serialVersionUID = 1L; // Create a file chooser final JFileChooser fc = new JFileChooser(); public JWSFileChooser() { super(new BorderLayout()); // show file select dialog int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); StringSelection stringSelection = new StringSelection(file.getAbsolutePath()); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, this); try { Robot rob = new Robot(); //give user some time to click in some field and insert content there rob.delay(1000); //do the magic rob.keyPress(KeyEvent.VK_CONTROL); rob.keyPress(KeyEvent.VK_V); rob.keyRelease(KeyEvent.VK_CONTROL); rob.keyRelease(KeyEvent.VK_V); } catch (Exception e1) { // TODO Auto-generated catch block } } } public void actionPerformed(ActionEvent e) { } /** * Create the GUI and show it. For thread safety, this method should be * invoked from the event dispatch thread. */ private static void createAndShowGUI() { new JWSFileChooser(); } public static void main(String[] args) { // Schedule a job for the event dispatch thread: // creating and showing this application's GUI. SwingUtilities.invokeLater(new Runnable() { public void run() { // Turn off metal's use of bold fonts UIManager.put("swing.boldMetal", Boolean.FALSE); createAndShowGUI(); } }); } @Override public void lostOwnership(Clipboard clipboard, Transferable contents) { // TODO Auto-generated method stub } }