Package com.tail

Source Code of com.tail.TailTabbedPane$TailDropFileAdapter

package com.tail;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.io.File;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class TailTabbedPane extends JComponent{
  private HeadPanel headPanel;
  private JPanel tabbedPane;
 
  private final String EMPTY_CARD_PANEL = "EmptyCardPanel";
 
  public TailTabbedPane(){
    initComponents();
  }
 
  public void initComponents(){
    setLayout(new BorderLayout());
   
    headPanel = new HeadPanel();
    tabbedPane = new JPanel(new CardLayout());
   
   
    addEmptyCardPanel();
   
    add(headPanel, BorderLayout.NORTH);
    add(tabbedPane, BorderLayout.CENTER);
   
    setHeadPanelVisible(false);
   

    this.setDropTarget(new DropTarget(this,new TailDropFileAdapter()));
  }
 
  private void addEmptyCardPanel(){
    JPanel panel = new JPanel(new BorderLayout());
    JLabel label = new JLabel("Drag file to tail here...");
    label.setForeground(Color.GRAY);
    label.setHorizontalAlignment(JLabel.CENTER);
    panel.add(label);
   
    tabbedPane.add(panel, EMPTY_CARD_PANEL);
  }
 
  public void addTab(String file){
    tabbedPane.add(file, new TextPanel());
    headPanel.addTab(file);
    ((CardLayout) tabbedPane.getLayout()).show(tabbedPane, file);
    if (!headPanel.isVisible()){
      setHeadPanelVisible(true);
    }
  }
 
  private void setHeadPanelVisible(boolean isVisible){
    if (isVisible){
      tabbedPane.setBorder(BorderFactory.createMatteBorder(0,1,1,1,Color.GRAY));
    }else{
      tabbedPane.setBorder(BorderFactory.createLineBorder(Color.GRAY,1));
    }
    headPanel.setVisible(isVisible)
  }
   
 
  class TailDropFileAdapter extends DropTargetAdapter{

    @Override
    public void drop(DropTargetDropEvent event) {
       // Accept copy drops
          event.acceptDrop(DnDConstants.ACTION_COPY);

          // Get the transfer which can provide the dropped item data
          Transferable transferable = event.getTransferable();

          // Get the data formats of the dropped item
          DataFlavor[] flavors = transferable.getTransferDataFlavors();

          // Loop through the flavors
          for (DataFlavor flavor : flavors) {

              try {

                  // If the drop items are files
                  if (flavor.isFlavorJavaFileListType()) {

                      // Get all of the dropped files
                     Object transferData =  transferable.getTransferData(flavor);

                     if (transferData instanceof List<?>){
                         @SuppressWarnings("unchecked")
              List<File> files = (List<File>) transferData;
                        // Loop them through
                        for (int i=0; i<files.size() ;i++) {
 
                            // Print out the file path
                            System.out.println("File path is '" + ((File)files.get(i)).getPath() + "'.");
                            String file = ((File)files.get(i)).getName();
                            addTab(file);
                        }
                    }

                  }

              } catch (Exception e) {

                  // Print out the error stack
                  e.printStackTrace();

              }
          }

          // Inform that the drop is complete
          event.dropComplete(true);
   
  }
}
TOP

Related Classes of com.tail.TailTabbedPane$TailDropFileAdapter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.