Thread: [graphl-cvs] graphl/src/org/mediavirus/graphl/interaction AbstractManipulator.java DefaultNodeManipu
Status: Pre-Alpha
Brought to you by:
flo1
From: Flo L. <fl...@us...> - 2004-12-29 14:32:13
|
Update of /cvsroot/graphl/graphl/src/org/mediavirus/graphl/interaction In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19091/src/org/mediavirus/graphl/interaction Modified Files: GraphlManipulator.java Added Files: AbstractManipulator.java DefaultNodeManipulator.java NodeManipulator.java Log Message: - FEATURE: updated applets parameters to match application command line options - FEATURE: GraphlPane now maintains a pointer to node+edge the mouse is currently over - FEATURE: started implementation of generic type menu - FEATURE: started implementation of node manipulator - BUG: fixed graph context menu - CODE: moved AbstractManipulator to correct package - CODE: added setHeight + setWidth in node interface - CODE: replaced zoomButton with a label - DOC: some documentation Index: GraphlManipulator.java =================================================================== RCS file: /cvsroot/graphl/graphl/src/org/mediavirus/graphl/interaction/GraphlManipulator.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** GraphlManipulator.java 10 Dec 2004 16:13:04 -0000 1.8 --- GraphlManipulator.java 29 Dec 2004 14:31:30 -0000 1.9 *************** *** 23,27 **** import org.mediavirus.graphl.painter.ArrowEdgePainter; import org.mediavirus.graphl.painter.NodePainter; - import org.mediavirus.graphl.view.AbstractManipulator; /** --- 23,26 ---- *************** *** 119,124 **** Point p = new Point(); graphPane.screenToGraphPoint(e.getPoint(),p); ! Node clickNode = graphPane.getNodeAtPoint(p); ! Edge clickEdge = graphPane.getNearestEdge(p); if ((e.getWhen() - lastClick) < 300) { --- 118,123 ---- Point p = new Point(); graphPane.screenToGraphPoint(e.getPoint(),p); ! Node clickNode = graphPane.getHoverNode(); ! Edge clickEdge = graphPane.getHoverEdge(); if ((e.getWhen() - lastClick) < 300) { --- NEW FILE: AbstractManipulator.java --- package org.mediavirus.graphl.interaction; import java.awt.Rectangle; import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.event.KeyEvent; import java.awt.event.FocusEvent; import org.mediavirus.graphl.GraphlPane; /** * A utility abstract class providing default implementation of listener methods. */ public abstract class AbstractManipulator implements Manipulator { /** The graph pane. */ protected GraphlPane graphPane; public void setGraphPane(GraphlPane graphPane) { this.graphPane=graphPane; } public void paint(Graphics2D g) { } public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseDragged(MouseEvent e) { } public void mouseMoved(MouseEvent e) { } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { } public void keyReleased(KeyEvent e) { } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { } public void notifyGraphPaneScrolled() { } protected void autoscroll(MouseEvent e) { if (!graphPane.getVisibleRect().contains(e.getX(),e.getY())) graphPane.scrollRectToVisible(new Rectangle(e.getX(),e.getY(),1,1)); } } --- NEW FILE: DefaultNodeManipulator.java --- /* * Created on 28.12.2004 */ package org.mediavirus.graphl.interaction; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.swing.JComponent; import org.mediavirus.graphl.graph.GraphElement; import org.mediavirus.graphl.graph.Node; /** * @author flo */ public class DefaultNodeManipulator extends AbstractManipulator implements NodeManipulator { private List assignedElements = new ArrayList(); private Node overNode = null; /** * @see org.mediavirus.graphl.interaction.Manipulator#getName() */ public String getName() { return "Default Node Manipulator"; } /** * @see org.mediavirus.graphl.interaction.Manipulator#paint(java.awt.Graphics2D) */ public void paint(Graphics2D g) { if (overNode != null) { g.setColor(new Color(216,212,142,180)); g.fillRect((int)(overNode.getCenterX()+overNode.getWidth()/2)-3, (int)(overNode.getCenterY()+overNode.getHeight()/2)-3, 6,6); g.setColor(Color.BLACK); g.drawRect((int)(overNode.getCenterX()+overNode.getWidth()/2)-3, (int)(overNode.getCenterY()+overNode.getHeight()/2)-3, 6,6); g.setColor(Color.WHITE); g.drawRect((int)(overNode.getCenterX()+overNode.getWidth()/2)-4, (int)(overNode.getCenterY()+overNode.getHeight()/2)-4, 8,8); } } /** * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) */ public void mouseMoved(MouseEvent e) { Node node = graphPane.getHoverNode(); if ((node != null)){ // && assignedElements.contains(node)) { if (node != overNode) { overNode = node; graphPane.getGraph().notifyUpdated(); } } else if (overNode != null) { Point p = new Point(); graphPane.screenToGraphPoint(e.getPoint(),p); if ((p.getX() > (overNode.getCenterX()+overNode.getWidth()/2)+10) || (p.getX() < (overNode.getCenterX()-overNode.getWidth()/2)-10) || (p.getY() > (overNode.getCenterY()+overNode.getHeight()/2)+10) || (p.getY() < (overNode.getCenterY()+overNode.getHeight()/2)-10)) { overNode = null; graphPane.getGraph().notifyUpdated(); } } } /** * @see org.mediavirus.graphl.view.Facet#hasVisualController() */ public boolean hasVisualController() { return false; } /** * @see org.mediavirus.graphl.view.Facet#getVisualController() */ public JComponent getVisualController() { return null; } /** * @see org.mediavirus.graphl.view.Facet#isSameClass(java.lang.Object) */ public boolean isSameClass(Object o) { return (o instanceof DefaultNodeManipulator); } /** * @see org.mediavirus.graphl.view.Facet#clone() */ public Object clone() { return new DefaultNodeManipulator(); } /** * @see org.mediavirus.graphl.view.Facet#getAssignedElements() */ public Collection getAssignedElements() { // need to return copy, becuase elements might be unassigned by caller // this triggers a ConcurrentModificationException if original set is returned return new ArrayList(assignedElements); } /** * @see org.mediavirus.graphl.view.Facet#assignElement(org.mediavirus.graphl.graph.GraphElement) */ public void assignElement(GraphElement element) { assignedElements.add(element); } /** * @see org.mediavirus.graphl.view.Facet#unassignElement(org.mediavirus.graphl.graph.GraphElement) */ public void unassignElement(GraphElement element) { assignedElements.remove(element); } /** * @see org.mediavirus.graphl.view.Facet#setConfigurationNode(org.mediavirus.graphl.graph.Node) */ public void setConfigurationNode(Node node) { } } --- NEW FILE: NodeManipulator.java --- /* * Created on 28.12.2004 */ package org.mediavirus.graphl.interaction; import org.mediavirus.graphl.view.Facet; /** * @author flo */ public interface NodeManipulator extends Manipulator, Facet { } |