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

org.monte.media.mpo.MPOImageSplitter Maven / Gradle / Ivy

There is a newer version: 1.1
Show newest version
/*
 * @(#)MPOImageSplitter.java  
 * 
 * Copyright (c) 2011-2012 Werner Randelshofer, Goldau, Switzerland.
 * All rights reserved.
 * 
 * You may not use, copy or modify this file, except in compliance with the
 * license agreement you entered into with Werner Randelshofer.
 * For details see accompanying license terms.
 */
package org.monte.media.mpo;

import org.monte.media.gui.Worker;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

/**
 * MPOImageSplitter.
 *
 * @author Werner Randelshofer
 * @version $Id: MPOImageSplitter.java 299 2013-01-03 07:40:18Z werner $
 */
public class MPOImageSplitter extends javax.swing.JPanel {

    private class Handler implements DropTargetListener {

        /**
         * Called when a drag operation has
         * encountered the DropTarget.
         * 

* @param dtde the DropTargetDragEvent */ @Override public void dragEnter(DropTargetDragEvent event) { if (event.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { event.acceptDrag(DnDConstants.ACTION_COPY); } else { event.rejectDrag(); } } /** * The drag operation has departed * the DropTarget without dropping. *

* @param dte the DropTargetEvent */ @Override public void dragExit(DropTargetEvent event) { // Nothing to do } /** * Called when a drag operation is ongoing * on the DropTarget. *

* @param dtde the DropTargetDragEvent */ @Override public void dragOver(DropTargetDragEvent event) { if (event.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { event.acceptDrag(DnDConstants.ACTION_COPY); } else { event.rejectDrag(); } } /** * The drag operation has terminated * with a drop on this DropTarget. * This method is responsible for undertaking * the transfer of the data associated with the * gesture. The DropTargetDropEvent * provides a means to obtain a Transferable * object that represents the data object(s) to * be transfered.

* From this method, the DropTargetListener * shall accept or reject the drop via the * acceptDrop(int dropAction) or rejectDrop() methods of the * DropTargetDropEvent parameter. *

* Subsequent to acceptDrop(), but not before, * DropTargetDropEvent's getTransferable() * method may be invoked, and data transfer may be * performed via the returned Transferable's * getTransferData() method. *

* At the completion of a drop, an implementation * of this method is required to signal the success/failure * of the drop by passing an appropriate * boolean to the DropTargetDropEvent's * dropComplete(boolean success) method. *

* Note: The actual processing of the data transfer is not * required to finish before this method returns. It may be * deferred until later. *

* @param dtde the DropTargetDropEvent */ @Override @SuppressWarnings("unchecked") public void drop(DropTargetDropEvent event) { if (event.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { event.acceptDrop(DnDConstants.ACTION_COPY); try { List files = (List) event.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); splitMPOFiles(files); } catch (IOException e) { JOptionPane.showConfirmDialog( MPOImageSplitter.this, "Could not access the dropped data.", "MPOImageSplitter: Drop Failed", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); } catch (UnsupportedFlavorException e) { JOptionPane.showConfirmDialog( MPOImageSplitter.this, "Unsupported data flavor.", "MPOImageSplitter: Drop Failed", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); } } else { event.rejectDrop(); } } /** * Called if the user has modified * the current drop gesture. *

* @param dtde the DropTargetDragEvent */ @Override public void dropActionChanged(DropTargetDragEvent event) { // Nothing to do } } private Handler handler = new Handler(); /** Creates new form MPOImageSplitter */ public MPOImageSplitter() { initComponents(); new DropTarget(this, handler); new DropTarget(label, handler); } public void splitMPOFiles(final List files) { label.setEnabled(false); new Worker() { @Override protected Object construct() throws Exception { for (File f : files) { MPOFiles.splitMPOFile(f); } return null; } @Override protected void finished() { label.setEnabled(true); } }.start(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { label = new javax.swing.JLabel(); setLayout(new java.awt.BorderLayout()); label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); label.setText("Drop MPO file here."); add(label, java.awt.BorderLayout.CENTER); }// //GEN-END:initComponents public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame f = new JFrame("MPO Image Splitter"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new MPOImageSplitter()); f.setSize(200, 200); f.setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel label; // End of variables declaration//GEN-END:variables }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy