001: package com.tagtraum.perf.gcviewer;
002:
003: import javax.swing.*;
004: import java.awt.dnd.*;
005: import java.awt.datatransfer.DataFlavor;
006: import java.awt.datatransfer.Transferable;
007: import java.awt.datatransfer.UnsupportedFlavorException;
008: import java.awt.*;
009: import java.util.List;
010: import java.io.File;
011: import java.io.IOException;
012:
013: /**
014: * DesktopPane.
015: * <p/>
016: * Date: Sep 27, 2005
017: * Time: 9:41:33 AM
018: *
019: * @author <a href="mailto:hs@tagtraum.com">Hendrik Schreiber</a>
020: */
021: public class DesktopPane extends JDesktopPane {
022:
023: public DesktopPane(final GCViewer gcViewer) {
024: gcViewer.setDropTarget(new DropTarget(this ,
025: DnDConstants.ACTION_COPY, new DropTargetListener() {
026: public void dragEnter(DropTargetDragEvent e) {
027: if (e
028: .isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
029: e.acceptDrag(DnDConstants.ACTION_COPY);
030: } else {
031: e.rejectDrag();
032: }
033: }
034:
035: public void dragOver(DropTargetDragEvent dtde) {
036: }
037:
038: public void dropActionChanged(
039: DropTargetDragEvent dtde) {
040: }
041:
042: public void dragExit(DropTargetEvent dte) {
043: }
044:
045: public void drop(DropTargetDropEvent e) {
046: try {
047: Transferable tr = e.getTransferable();
048: if (e
049: .isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
050: e.acceptDrop(DnDConstants.ACTION_COPY);
051: List list = (List) tr
052: .getTransferData(DataFlavor.javaFileListFlavor);
053: File[] files = (File[]) list
054: .toArray(new File[list.size()]);
055: gcViewer.open(files);
056: e.dropComplete(true);
057: } else {
058: e.rejectDrop();
059: }
060: } catch (IOException ioe) {
061: e.rejectDrop();
062: ioe.printStackTrace();
063: } catch (UnsupportedFlavorException ufe) {
064: e.rejectDrop();
065: ufe.printStackTrace();
066: }
067: }
068: }));
069: }
070:
071: private ImageIcon logoIcon;
072: {
073: logoIcon = new ImageIcon(GCViewer.class
074: .getResource("gcviewer_background.png"));
075: }
076:
077: public void paint(Graphics g) {
078: Rectangle r = g.getClipBounds();
079: /*
080: Color c = getBackground();
081: if(c == null)
082: c = Color.lightGray;
083: */
084: g.setColor(Color.WHITE);
085: if (r != null) {
086: g.fillRect(r.x, r.y, r.width, r.height);
087: } else {
088: g.fillRect(0, 0, getWidth(), getHeight());
089: }
090: g.drawImage(logoIcon.getImage(), getWidth() / 2
091: - logoIcon.getIconWidth() / 2, getHeight() / 2
092: - logoIcon.getIconHeight() / 2,
093: logoIcon.getIconWidth(), logoIcon.getIconHeight(),
094: logoIcon.getImageObserver());
095: //g.drawImage(logoIcon.getImage(), getWidth() - logoIcon.getIconWidth(), getHeight() - logoIcon.getIconHeight(), logoIcon.getIconWidth(), logoIcon.getIconHeight(), logoIcon.getImageObserver());
096: super .paint(g);
097: }
098:
099: public boolean isOpaque() {
100: return false;
101: }
102: }
|