001: /*
002: * Copyright (C) 2005 Jeff Tassin
003: *
004: * This library is free software; you can redistribute it and/or
005: * modify it under the terms of the GNU Lesser General Public
006: * License as published by the Free Software Foundation; either
007: * version 2.1 of the License, or (at your option) any later version.
008: *
009: * This library is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * Lesser General Public License for more details.
013: *
014: * You should have received a copy of the GNU Lesser General Public
015: * License along with this library; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package com.jeta.swingbuilder.gui.handler;
020:
021: import java.awt.Cursor;
022: import java.awt.event.MouseEvent;
023: import java.awt.event.MouseListener;
024: import java.awt.event.MouseMotionListener;
025:
026: import com.jeta.forms.gui.form.GridCellEvent;
027: import com.jeta.forms.gui.form.GridComponent;
028: import com.jeta.forms.gui.form.GridOverlay;
029: import com.jeta.forms.gui.handler.CellMouseHandler;
030: import com.jeta.open.registry.JETARegistry;
031: import com.jeta.swingbuilder.gui.dnd.DesignerDragSource;
032: import com.jeta.swingbuilder.gui.editor.DesignGridOverlay;
033: import com.jeta.swingbuilder.gui.formmgr.FormManagerDesignUtils;
034:
035: public class GridMouseListener implements MouseListener,
036: MouseMotionListener, DesignerDragSource {
037: /* # GridOverlay lnkGridOverlay; */
038:
039: /** @directed */
040: private CellMouseHandler m_delegate;
041:
042: /**
043: * The top level grid overlay
044: */
045: private DesignGridOverlay m_topoverlay;
046:
047: private boolean m_drag_mouse = false;
048: private boolean m_dragging = false;
049:
050: public GridMouseListener(GridOverlay topOverlay,
051: CellMouseHandler delegate) {
052: assert (delegate != null);
053:
054: m_delegate = delegate;
055: m_topoverlay = (DesignGridOverlay) topOverlay;
056: }
057:
058: /**
059: * DesignerDragSource implementation
060: */
061: public void cancelDrag() {
062: if (m_dragging) {
063: m_topoverlay.setCursor(Cursor.getDefaultCursor());
064:
065: GridComponent dragsrc = null;
066: CellMouseHandler draghandler = AbstractMouseHandler
067: .getDragSource();
068: if (draghandler != null)
069: dragsrc = draghandler.getGridComponent();
070:
071: AbstractMouseHandler.setDragSource(null);
072: FormManagerDesignUtils.deselectAll(m_topoverlay.getForm());
073: if (dragsrc != null) {
074: dragsrc.setSelected(true);
075: }
076: m_dragging = false;
077: }
078: }
079:
080: public boolean isDragging() {
081: return m_drag_mouse;
082: }
083:
084: /** MouseListener implementation */
085: public void mouseClicked(MouseEvent e) {
086: if (m_delegate != null)
087: m_delegate.mouseClicked(e);
088:
089: m_topoverlay.requestFocus();
090: }
091:
092: public void mouseEntered(MouseEvent e) {
093: if (m_delegate != null)
094: m_delegate.mouseEntered(e);
095: }
096:
097: public void mouseExited(MouseEvent e) {
098: if (m_delegate != null)
099: m_delegate.mouseExited(e);
100: }
101:
102: public void mousePressed(MouseEvent e) {
103: JETARegistry.rebind(DesignerDragSource.COMPONENT_ID, this );
104: if (m_delegate != null)
105: m_delegate.mousePressed(e);
106:
107: m_topoverlay.requestFocus();
108: m_dragging = true;
109: m_drag_mouse = false;
110: }
111:
112: public void mouseReleased(MouseEvent e) {
113: if (m_dragging) {
114: m_dragging = false;
115: m_drag_mouse = false;
116:
117: m_topoverlay.setCursor(Cursor.getDefaultCursor());
118: if (m_delegate != null)
119: m_delegate.mouseReleased(e);
120:
121: GridComponent dragsrc = null;
122: CellMouseHandler draghandler = AbstractMouseHandler
123: .getDragSource();
124: if (draghandler != null)
125: dragsrc = draghandler.getGridComponent();
126:
127: AbstractMouseHandler.setDragSource(null);
128:
129: if (dragsrc != null && dragsrc.isSelected()) {
130: dragsrc.fireGridCellEvent(new GridCellEvent(
131: GridCellEvent.CELL_SELECTED, dragsrc));
132: }
133: }
134: }
135:
136: /** MouseMotionListener implemenation */
137: public void mouseDragged(MouseEvent e) {
138: if (m_dragging) {
139: m_drag_mouse = true;
140: m_topoverlay.setCursor(Cursor
141: .getPredefinedCursor(Cursor.MOVE_CURSOR));
142: if (m_delegate != null)
143: m_delegate.mouseDragged(e);
144: }
145: }
146:
147: public void mouseMoved(MouseEvent e) {
148: if (m_delegate != null)
149: m_delegate.mouseMoved(e);
150: }
151:
152: }
|