Package research

Source Code of research.StandardFigureSelection

/*
* @(#)FigureSelection.java
*
* 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
*/

package research;

import research.store.StorableOutput;
import research.store.StorableInput;

import java.util.*;
import java.io.*;

/**
* FigureSelection enables to transfer the selected figures
* to a clipboard.<p>
* Will soon be converted to the JDK 1.1 Transferable interface.
*
* @version <$CURRENT_VERSION$>
*/

public class StandardFigureSelection implements FigureSelection, Serializable {

  private byte[] fData; // flattend figures, ready to be resurrected

  /**
   * The type identifier of the selection.
   */
  public final static String TYPE = "research.Figures";

  /**
   * Constructes the Figure selection for the vector of figures.
   */
  public StandardFigureSelection(FigureEnumeration figures, int figureCount) {
    // a FigureSelection is represented as a flattened ByteStream
    // of figures.
    ByteArrayOutputStream output = new ByteArrayOutputStream(200);
    StorableOutput writer = new StorableOutput(output);
    writer.writeInt(figureCount);
    while (figures.hasMoreElements()) {
      writer.writeStorable(figures.nextFigure());
    }
    writer.close();
    fData = output.toByteArray();
  }

  /**
   * Gets the type of the selection.
   */
  public String getType() {
    return TYPE;
  }

  /**
   * Gets the data of the selection. The result is returned
   * as a Vector of Figures.
   *
   * @return a copy of the figure selection.
   */
  public Object getData(String type) {
    if (type.equals(TYPE)) {
      InputStream input = new ByteArrayInputStream(fData);
      Vector result = new Vector(10);
      StorableInput reader = new StorableInput(input);
      int numRead = 0;
      try {
        int count = reader.readInt();
        while (numRead < count) {
          Figure newFigure = (Figure) reader.readStorable();
          result.addElement(newFigure);
          numRead++;
        }
      }
      catch (IOException e) {
        System.err.println(e.toString());
      }
      return new FigureEnumerator(result);
    }
    return null;
  }

  public static FigureEnumeration duplicateFigures(FigureEnumeration toBeCloned, int figureCount) {
    StandardFigureSelection duplicater = new StandardFigureSelection(toBeCloned, figureCount);
    return (FigureEnumeration)duplicater.getData(duplicater.getType());
  }
}

TOP

Related Classes of research.StandardFigureSelection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.