From 26b872bb194ec7622997914bba53309a94b64d20 Mon Sep 17 00:00:00 2001 From: Andrew Shadura Date: Tue, 21 Jul 2015 14:52:03 +0200 Subject: Imported Upstream version 8024 --- .../graphic/GroupingGraphicalElementHeader.java | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/net/sourceforge/plantuml/sequencediagram/graphic/GroupingGraphicalElementHeader.java (limited to 'src/net/sourceforge/plantuml/sequencediagram/graphic/GroupingGraphicalElementHeader.java') diff --git a/src/net/sourceforge/plantuml/sequencediagram/graphic/GroupingGraphicalElementHeader.java b/src/net/sourceforge/plantuml/sequencediagram/graphic/GroupingGraphicalElementHeader.java new file mode 100644 index 0000000..0b7bac4 --- /dev/null +++ b/src/net/sourceforge/plantuml/sequencediagram/graphic/GroupingGraphicalElementHeader.java @@ -0,0 +1,99 @@ +/* ======================================================================== + * PlantUML : a free UML diagram generator + * ======================================================================== + * + * (C) Copyright 2009-2014, Arnaud Roques + * + * Project Info: http://plantuml.sourceforge.net + * + * This file is part of PlantUML. + * + * Licensed under The MIT License (Massachusetts Institute of Technology License) + * + * See http://opensource.org/licenses/MIT + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * + * Original Author: Arnaud Roques + */ +package net.sourceforge.plantuml.sequencediagram.graphic; + +import java.awt.geom.Dimension2D; + +import net.sourceforge.plantuml.Dimension2DDouble; +import net.sourceforge.plantuml.graphic.StringBounder; +import net.sourceforge.plantuml.sequencediagram.InGroupableList; +import net.sourceforge.plantuml.skin.Area; +import net.sourceforge.plantuml.skin.Component; +import net.sourceforge.plantuml.skin.Context2D; +import net.sourceforge.plantuml.ugraphic.UGraphic; +import net.sourceforge.plantuml.ugraphic.UTranslate; + +class GroupingGraphicalElementHeader extends GroupingGraphicalElement { + + private final Component comp; + private double endY; + private final boolean isParallel; + + public GroupingGraphicalElementHeader(double currentY, Component comp, InGroupableList inGroupableList, boolean isParallel) { + super(currentY, inGroupableList); + this.comp = comp; + this.isParallel = isParallel; + } + + @Override + public String toString() { + return super.toString() + " " + (getInGroupableList() == null ? "no" : getInGroupableList().toString()); + } + + @Override + final public double getPreferredWidth(StringBounder stringBounder) { + return comp.getPreferredWidth(stringBounder) + 5; + } + + @Override + final public double getPreferredHeight(StringBounder stringBounder) { + return comp.getPreferredHeight(stringBounder); + } + + @Override + protected void drawInternalU(UGraphic ug, double maxX, Context2D context) { + if (isParallel) { + return; + } + final StringBounder stringBounder = ug.getStringBounder(); + final double x1 = getInGroupableList().getMinX(stringBounder); + final double x2 = getInGroupableList().getMaxX(stringBounder); + ug = ug.apply(new UTranslate(x1, getStartingY())); + double height = comp.getPreferredHeight(stringBounder); + if (endY > 0) { + height = endY - getStartingY(); + } else { + // assert false; + return; + } + final Dimension2D dim = new Dimension2DDouble(x2 - x1, height); + comp.drawU(ug, new Area(dim), context); + } + + public void setEndY(double y) { + this.endY = y; + } + +} -- cgit v1.2.3