|
What this is
Other links
The source code// $Id: ActionAddNote.java,v 1.6 2004/08/14 15:26:11 mvw Exp $ // Copyright (c) 1996-2004 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation without fee, and without a written // agreement is hereby granted, provided that the above copyright notice // and this paragraph appear in all copies. This software program and // documentation are copyrighted by The Regents of the University of // California. The software program and documentation are supplied "AS // IS", without any accompanying services from The Regents. The Regents // does not warrant that the operation of the program will be // uninterrupted or error-free. The end-user understands that the program // was developed for research purposes and is advised not to rely // exclusively on the program for any reason. IN NO EVENT SHALL THE // UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, // SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, // ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF // THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE // PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF // CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, // UPDATES, ENHANCEMENTS, OR MODIFICATIONS. package org.argouml.uml.diagram.ui; import java.awt.Rectangle; import java.awt.event.ActionEvent; import org.argouml.kernel.ProjectManager; import org.argouml.model.ModelFacade; import org.argouml.model.uml.UmlFactory; import org.argouml.model.uml.foundation.core.CoreFactory; import org.argouml.ui.ArgoDiagram; import org.argouml.ui.ProjectBrowser; import org.argouml.ui.targetmanager.TargetManager; import org.argouml.uml.diagram.static_structure.ui.FigComment; import org.argouml.uml.diagram.static_structure.ui.FigEdgeNote; import org.argouml.uml.ui.UMLChangeAction; import org.tigris.gef.base.Layer; import org.tigris.gef.presentation.Fig; import org.tigris.gef.presentation.FigEdge; import org.tigris.gef.presentation.FigNode; /** * Action to add a note. * * @stereotype singleton */ public class ActionAddNote extends UMLChangeAction { private static final int DISTANCE = 80; //////////////////////////////////////////////////////////////// // static variables private static ActionAddNote singleton = new ActionAddNote(); //////////////////////////////////////////////////////////////// // constructors /** * The constructor. */ public ActionAddNote() { super("New Note"); } //////////////////////////////////////////////////////////////// // main methods /** * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ public void actionPerformed(ActionEvent ae) { Object target = TargetManager.getInstance().getModelTarget(); if (target == null || !(ModelFacade.isAModelElement(target))) { return; } Object/*MModelElement*/ elem = target; Object/*MComment*/ comment = CoreFactory.getFactory().buildComment(elem); // calculate the position of the comment ArgoDiagram diagram = ProjectManager.getManager().getCurrentProject().getActiveDiagram(); Fig elemFig = diagram.presentationFor(elem); if (elemFig == null) return; int x = 0; int y = 0; Layer lay = diagram.getLayer(); Rectangle drawingArea = ProjectBrowser.getInstance().getEditorPane().getBounds(); FigComment fig = new FigComment(diagram.getGraphModel(), comment); if (elemFig instanceof FigNode) { x = elemFig.getX() + elemFig.getWidth() + DISTANCE; y = elemFig.getY(); if (x + fig.getWidth() > drawingArea.getX()) { x = elemFig.getX() - fig.getWidth() - DISTANCE; if (x < 0) { x = elemFig.getX(); y = elemFig.getY() - fig.getHeight() - DISTANCE; if (y < 0) { y = elemFig.getY() + elemFig.getHeight() + DISTANCE; if (y + fig.getHeight() > drawingArea.getHeight()) { UmlFactory.getFactory().delete(comment); return; } } } } } else if (elemFig instanceof FigEdge) { // we cannot do this yet since we have to modify all our // edges probably /* Point startPoint = new Point(elemFig.getX(), elemFig.getY()); Point endPoint = new Point(elemFig.getX() + elemFig.getWidth(), elemFig.getY() + elemFig.getHeight()); */ UmlFactory.getFactory().delete(comment); return; } fig.setLocation(x, y); lay.add(fig); FigEdgeNote edge = new FigEdgeNote(elem, comment); lay.add(edge); lay.sendToBack(edge); edge.damage(); fig.damage(); elemFig.damage(); super.actionPerformed(ae); TargetManager.getInstance().setTarget(fig.getOwner()); } /** * @see org.argouml.uml.ui.UMLAction#shouldBeEnabled() */ public boolean shouldBeEnabled() { ProjectBrowser pb = ProjectBrowser.getInstance(); Object target = TargetManager.getInstance().getModelTarget(); if (ProjectManager.getManager().getCurrentProject().getActiveDiagram() == null) return false; return super.shouldBeEnabled() && (ModelFacade.isAModelElement(target)) && (!(ModelFacade.isAComment(target))) && (ProjectManager.getManager().getCurrentProject() .getActiveDiagram().presentationFor(target) instanceof FigNode); } /** * @return Returns the singleton. */ public static ActionAddNote getSingleton() { return singleton; } } /* end class ActionAddNote */ |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.