/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package photoSpreadObjects.photoSpreadComponents; import java.awt.Component; import java.awt.Dimension; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.rmi.NotBoundException; import javax.swing.JComponent; import javax.swing.TransferHandler; import photoSpreadObjects.PhotoSpreadObject; import photoSpreadTable.PhotoSpreadCell; import photoSpreadUtilities.PhotoSpreadContextMenu; /** * * @author skandel */ public class PhotoSpreadComponent { PhotoSpreadObject _parentObject; PhotoSpreadCell _cell; Component _component; public PhotoSpreadComponent(PhotoSpreadObject _parentObject, Component _component) { this._parentObject = _parentObject; this._cell = null; initialize(); } public void setCell(PhotoSpreadCell cell){ this._cell = cell; } public PhotoSpreadCell getCell(){ return _cell; } public Component getComponent(){ return _component; } public PhotoSpreadObject getParentObject(){ return _parentObject; } public void highlight(){ } public void unhighlight(){ } private void initialize(){ makeDraggable(); addMenu(); } private void addMenu(){ PhotoSpreadContextMenu menu = new PhotoSpreadContextMenu(); menu.addMenuItem("Edit Meta Data", new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { try { editMetaData(); } catch (NumberFormatException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NotBoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } ); _component.addMouseListener(menu.getPopupListener()); } private void editMetaData() throws NumberFormatException, NotBoundException { MetadataEditor editor = new MetadataEditor(); // Don't know what this size contols: editor.setSize(new Dimension(500, 500)); editor.setEditedObject(this._parentObject); editor.setVisible(true); } private void makeDraggable(){ //_component.setTransferHandler(new FromTransferHandler()); MouseListener mouseListener = new MouseAdapter() { public void mousePressed(MouseEvent e) { if(e.getButton() == MouseEvent.BUTTON1){ JComponent comp = (JComponent)e.getSource(); TransferHandler handler = comp.getTransferHandler(); if(handler != null){ handler.exportAsDrag( comp, e, TransferHandler.COPY); } int clickType = ObjectsPanel.NORMAL_LEFT_CLICK; if(e.isShiftDown()){ clickType = ObjectsPanel.SHIFT_LEFT_CLICK; } if(e.isControlDown()){ clickType = ObjectsPanel.CTRL_LEFT_CLICK; } if(e.isAltDown()) { clickType = ObjectsPanel.ALT_LEFT_CLICK; } ((ObjectsPanel) PhotoSpreadComponent. this. getComponent(). getParent()). clickLabel((DraggableLabel) e.getSource(), clickType); } } }; _component.addMouseListener(mouseListener); } class FromTransferHandler extends TransferHandler { /** * */ private static final long serialVersionUID = 1L; public int getSourceActions(JComponent comp) { return COPY_OR_MOVE; } public Transferable createTransferable(JComponent comp) { return PhotoSpreadComponent.this._cell; } public void exportDone(JComponent comp, Transferable trans, int action) { if (action != MOVE) { return; } } } }