2c2 < * @(#)CompositeFigure.java 5.2 --- > * @(#)CompositeFigure.java 3a4,9 > * Project: JHotdraw - a GUI framework for technical drawings > * http://www.jhotdraw.org > * http://jhotdraw.sourceforge.net > * Copyright: © by the original author(s) and all contributors > * License: Lesser GNU Public License (LGPL) > * http://www.opensource.org/licenses/lgpl-license.html 23a30 > * 24a32,33 > * > * @version <$CURRENT_VERSION$> 55a65,67 > * > * @param figure to be added to the drawing > * @return the figure that was inserted (might be different from the figure specified). 68a81 > * 69a83 > * @deprecated use addAll(FigureEnumeration) instead 72,74c86,98 < Enumeration k = newFigures.elements(); < while (k.hasMoreElements()) < add((Figure) k.nextElement()); --- > addAll(new FigureEnumerator(newFigures)); > } > > /** > * Adds a FigureEnumeration of figures. > * > * @see #add > * @param fe (unused) enumeration containing all figures to be added > */ > public void addAll(FigureEnumeration fe) { > while (fe.hasMoreElements()) { > add(fe.nextFigure()); > } 78a103,105 > * > * @param figure that is part of the drawing and should be removed > * @return the figure that has been removed (might be different from the figure specified) 82,87c109 < if (fFigures.contains(figure)) { < figure.removeFromContainer(this); < fFigures.removeElement(figure); < _removeFromQuadTree(figure); < } < return figure; --- > return orphan(figure); 91a114 > * 92a116 > * @deprecated use removeAll(FigureEnumeration) instead 95,97c119,129 < Enumeration k = figures.elements(); < while (k.hasMoreElements()) { < remove((Figure) k.nextElement()); --- > removeAll(new FigureEnumerator(figures)); > > } > > /** > * Removes a FigureEnumeration of figures. > * @see #remove > */ > public void removeAll(FigureEnumeration fe) { > while (fe.hasMoreElements()) { > remove(fe.nextFigure()); 106,108c138,140 < FigureEnumeration k = figures(); < while (k.hasMoreElements()) { < Figure figure = k.nextFigure(); --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > Figure figure = fe.nextFigure(); 121a154,155 > * > * @param figure that is part of the drawing and should be added 123a158,159 > if (fFigures.contains(figure)) { > figure.removeFromContainer(this); 125a162 > } 131a169 > * 132a171 > * @deprecated use orphanAll(FigureEnumeration) instead 135,137c174,180 < Enumeration k = newFigures.elements(); < while (k.hasMoreElements()) < orphan((Figure) k.nextElement()); --- > orphanAll(new FigureEnumerator(newFigures)); > } > > public void orphanAll(FigureEnumeration fe) { > while (fe.hasMoreElements()) { > orphan(fe.nextFigure()); > } 142a186,189 > * > * @param figure figure to be replaced > * @param replacement figure that should replace the specified figure > * @return the figure that has been inserted (might be different from the figure specified) 144c191 < public synchronized void replace(Figure figure, Figure replacement) { --- > public synchronized Figure replace(Figure figure, Figure replacement) { 149c196 < figure.changed(); --- > figure.removeFromContainer(this); 150a198,199 > figure.changed(); > replacement.changed(); 151a201 > return replacement; 155a206,207 > * > * @param figure that is part of the drawing 161c213,214 < figure.setZValue(--_nLowestZ); --- > _nLowestZ--; > figure.setZValue(_nLowestZ); 167a221,222 > * > * @param figure that is part of the drawing 173c228,229 < figure.setZValue(++_nHighestZ); --- > _nHighestZ++; > figure.setZValue(_nHighestZ); 178a235,352 > * Sends a figure to a certain layer within a drawing. Each figure > * lays in a unique layer and the layering order decides which > * figure is drawn on top of another figure. Figures with a higher > * layer number have usually been added later and may overlay > * figures in lower layers. Layers are counted from to (the number > * of figures - 1). > * The figure is removed from its current layer (if it has been already > * part of this drawing) and is transferred to the specified layers after > * all figures between the original layer and the new layer are shifted to > * one layer below to fill the layer sequence. It is not possible to skip a > * layer number and if the figure is sent to a layer beyond the latest layer > * it will be added as the last figure to the drawing and its layer number > * will be set to the be the one beyond the latest layer so far. > * > * @param figure figure to be sent to a certain layer > * @param layerNr target layer of the figure > */ > public void sendToLayer(Figure figure, int layerNr) { > if (fFigures.contains(figure)) { > if (layerNr >= fFigures.size()) { > System.out.println("original layerNr: " + layerNr); > layerNr = fFigures.size() - 1; > } > Figure layerFigure = getFigureFromLayer(layerNr); > int layerFigureZValue = layerFigure.getZValue(); > int figureLayer = getLayer(figure); > // move figure forward > System.out.println("figureLayer: "+figureLayer + " layerNr: " + layerNr); > if (figureLayer < layerNr) { > assignFiguresToPredecessorZValue(figureLayer + 1, layerNr); > } > else if (figureLayer > layerNr) { > assignFiguresToSuccessorZValue(layerNr, figureLayer - 1); > } > > fFigures.removeElement(figure); > fFigures.insertElementAt(figure, layerNr); > figure.setZValue(layerFigureZValue); > figure.changed(); > System.out.println("figureLayer(2): "+ figure.getZValue()); > } > } > > private void assignFiguresToPredecessorZValue(int lowerBound, int upperBound) { > // cannot shift figures to a lower layer if the lower bound is > // already the first layer. > /* > if (lowerBound <= 0) { > return; > } > > if (upperBound >= fFigures.size()) { > upperBound = fFigures.size() - 1; > } > > for (int i = lowerBound; i <= upperBound; i++) { > */ > if (upperBound >= fFigures.size()) { > upperBound = fFigures.size() - 1; > } > > for (int i = upperBound; i >= lowerBound; i--) { > Figure currentFigure = (Figure)fFigures.elementAt(i); > Figure predecessorFigure = (Figure)fFigures.elementAt(i - 1); > System.out.println("AssignPredeccessor " + i + " -> " + (i-1) + " with z: " + currentFigure.getZValue() + " -> " + predecessorFigure.getZValue()); > currentFigure.setZValue(predecessorFigure.getZValue()); > } > } > > private void assignFiguresToSuccessorZValue(int lowerBound, int upperBound) { > if (upperBound >= fFigures.size()) { > upperBound = fFigures.size() - 1; > } > > for (int i = upperBound; i >= lowerBound; i--) { > Figure currentFigure = (Figure)fFigures.elementAt(i); > Figure successorFigure = (Figure)fFigures.elementAt(i + 1); > System.out.println("AssignSuccessor " + i + " -> " + (i+1) + " with z: " + currentFigure.getZValue() + " -> " + successorFigure.getZValue()); > currentFigure.setZValue(successorFigure.getZValue()); > } > } > > /** > * Gets the layer for a certain figure (first occurrence). The number > * returned is the number of the layer in which the figure is placed. > * > * @param figure figure to be queried for its layering place > * @return number of the layer in which the figure is placed and -1 if the > * figure could not be found. > * @see #sendToLayer > */ > public int getLayer(Figure figure) { > if (!fFigures.contains(figure)) { > return -1; > } > else { > return fFigures.indexOf(figure); > } > } > > /** > * Gets the figure from a certain layer. > * > * @param layerNr number of the layer which figure should be returned > * @return figure from the layer specified, null, if the layer nr was outside > * the number of possible layer (0...(number of figures - 1)) > * @see #sendToLayer > */ > public Figure getFigureFromLayer(int layerNr) { > if ((layerNr >= 0) && (layerNr < fFigures.size())) { > return (Figure)fFigures.elementAt(layerNr); > } > else { > return null; > } > } > > /** 183,185c357,360 < FigureEnumeration k = figures(); < while (k.hasMoreElements()) < k.nextFigure().draw(g); --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > fe.nextFigure().draw(g); > } 193c368 < while (fe.hasMoreElements()) --- > while (fe.hasMoreElements()) { 195a371 > } 209c385 < return new FigureEnumerator(fFigures); --- > return new FigureEnumerator((Vector)fFigures.clone()); 217,219c393 < public FigureEnumeration figures(Rectangle < viewRectangle) { < --- > public FigureEnumeration figures(Rectangle viewRectangle) { 244d417 < 248d420 < 263c435 < return new ReverseFigureEnumerator(fFigures); --- > return new ReverseFigureEnumerator((Vector)fFigures.clone()); 274c446 < if (figure.containsPoint(x, y)) --- > if (figure.containsPoint(x, y)) { 276a449 > } 288c461 < if (r.intersects(fr)) --- > if (r.intersects(fr)) { 290a464 > } 309c483 < if (figure.containsPoint(x, y) && !figure.includes(without)) --- > if (figure.containsPoint(x, y) && !figure.includes(without)) { 311a486 > } 328c503 < if (r.intersects(fr) && !figure.includes(without)) --- > if (r.intersects(fr) && !figure.includes(without)) { 330a506 > } 344c520 < if (figure != null) --- > if (figure != null) { 346a523 > } 362c539 < if (found != null) --- > if (found != null) { 365a543 > } 371a550 > * @return true if the figure is part of this CompositeFigure, else otherwise 374c553 < if (super.includes(figure)) --- > if (super.includes(figure)) { 375a555 > } 377,380c557,560 < FigureEnumeration k = figures(); < while (k.hasMoreElements()) { < Figure f = k.nextFigure(); < if (f.includes(figure)) --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > Figure f = fe.nextFigure(); > if (f.includes(figure)) { 382a563 > } 393,395c574,577 < FigureEnumeration k = figures(); < while (k.hasMoreElements()) < k.nextFigure().moveBy(x,y); --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > fe.nextFigure().moveBy(x,y); > } 403,405c585,587 < FigureEnumeration k = figures(); < while (k.hasMoreElements()) { < Figure figure = k.nextFigure(); --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > Figure figure = fe.nextFigure(); 415c597 < if (listener() != null) --- > if (listener() != null) { 417a600 > } 424c607 < if (listener() != null) --- > if (listener() != null) { 426a610 > } 433c617 < if (listener() != null) --- > if (listener() != null) { 435a620 > } 450,453c635,639 < dw.writeInt(fFigures.size()); < Enumeration k = fFigures.elements(); < while (k.hasMoreElements()) < dw.writeStorable((Storable) k.nextElement()); --- > dw.writeInt(figureCount()); > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > dw.writeStorable(fe.nextFigure()); > } 463c649 < for (int i=0; i for (int i=0; i } 472,474c659,661 < FigureEnumeration k = figures(); < while (k.hasMoreElements()) { < Figure figure = k.nextFigure(); --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > Figure figure = fe.nextFigure(); 493,495c680,682 < for(Enumeration e=fFigures.elements(); e.hasMoreElements(); ) { < Figure f = (Figure) e.nextElement(); < _addToQuadTree(f); --- > FigureEnumeration fe = figures(); > while (fe.hasMoreElements()) { > _addToQuadTree(fe.nextFigure()); 497d683 < 504d689 < 511d695 <