/*
 * @(#)FigureSelection.java 5.2
 *
 */

package CH.ifa.draw.framework;

import CH.ifa.draw.util.*;
import java.util.*;
import java.io.*;

/**
 * FigureSelection enables to transfer the selected figures
 * to a clipboard.

* Will soon be converted to the JDK 1.1 Transferable interface. * * @see Clipboard */ public class FigureSelection extends Object { private byte[] fData; // flattend figures, ready to be resurrected /** * The type identifier of the selection. */ public final static String TYPE = "CH.ifa.draw.Figures"; /** * Constructes the Figure selection for the vector of figures. */ public FigureSelection(Vector figures) { // a FigureSelection is represented as a flattened ByteStream // of figures. ByteArrayOutputStream output = new ByteArrayOutputStream(200); StorableOutput writer = new StorableOutput(output); writer.writeInt(figures.size()); Enumeration selected = figures.elements(); while (selected.hasMoreElements()) { Figure figure = (Figure) selected.nextElement(); writer.writeStorable(figure); } 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.out.println(e.toString()); } return result; } return null; } }

Ads help maintain this website.