public GraphDesktopController( GraphDesktopListener listener, ISession session, GraphPlugin plugin, ModeManager modeManager, boolean showDndDesktopImageAtStartup) { _listener = listener; _session = session; _plugin = plugin; _graphPluginResources = new GraphPluginResources(_plugin); ImageIcon startUpImage = null; if (showDndDesktopImageAtStartup) { startUpImage = _graphPluginResources.getIcon(GraphPluginResources.IKeys.DND); } _desktopPane = new GraphDesktopPane(_session.getApplication(), startUpImage); _desktopPane.setBackground(Color.white); _modeManager = modeManager; DropTarget dt = new DropTarget(); try { dt.addDropTargetListener( new DropTargetAdapter() { public void drop(DropTargetDropEvent dtde) { onTablesDroped(dtde); } }); } catch (TooManyListenersException e) { throw new RuntimeException(e); } _desktopPane.setDropTarget(dt); _desktopPane.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { onMouseClicked(e); } public void mousePressed(MouseEvent e) { onMousePressed(e); } public void mouseReleased(MouseEvent e) { onMouseReleased(e); } }); _desktopPane.addMouseMotionListener( new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { onMouseDragged(e); } }); createPopUp(); }