Пример #1
0
 /** Sets the attribute with the given name and overwrites its previous value. */
 public void set(String name, Object value) {
   if (value != null) {
     fMap.put(name, value);
   } else {
     fMap.remove(name);
   }
 }
Пример #2
0
  /**
   * Reads the attributes from a StorableInput. FigureAttributes store the following types directly:
   * Color, Boolean, String, Int. Other attribute types have to implement the Storable interface or
   * they have to be wrapped by an object that implements Storable.
   *
   * @see Storable
   * @see #write
   */
  public void read(StorableInput dr) throws IOException {
    String s = dr.readString();
    if (!s.toLowerCase().equals("attributes")) {
      throw new IOException("Attributes expected");
    }

    fMap = new Hashtable();
    int size = dr.readInt();
    for (int i = 0; i < size; i++) {
      String key = dr.readString();
      String valtype = dr.readString();
      Object val = null;
      if (valtype.equals("Color")) {
        val = new Color(dr.readInt(), dr.readInt(), dr.readInt());
      } else if (valtype.equals("Boolean")) {
        val = new Boolean(dr.readString());
      } else if (valtype.equals("String")) {
        val = dr.readString();
      } else if (valtype.equals("Int")) {
        val = new Integer(dr.readInt());
      } else if (valtype.equals("Storable")) {
        val = dr.readStorable();
      } else if (valtype.equals(Figure.POPUP_MENU)) {
        // read String but don't store it
        continue;
      } else if (valtype.equals("UNKNOWN")) {
        continue;
      }
      fMap.put(key, val);
    }
  }
Пример #3
0
 /** Clones the attributes. */
 public Object clone() {
   try {
     FigureAttributes a = (FigureAttributes) super.clone();
     a.fMap = (Hashtable) fMap.clone();
     return a;
   } catch (CloneNotSupportedException e) {
     throw new InternalError();
   }
 }
Пример #4
0
  /**
   * Writes the attributes to a StorableInput. FigureAttributes store the following types directly:
   * Color, Boolean, String, Int. Other attribute types have to implement the Storable interface or
   * they have to be wrapped by an object that implements Storable.
   *
   * @see Storable
   * @see #write
   */
  public void write(StorableOutput dw) {
    dw.writeString("attributes");

    dw.writeInt(fMap.size()); // number of attributes
    Enumeration k = fMap.keys();
    while (k.hasMoreElements()) {
      String s = (String) k.nextElement();
      Object v = fMap.get(s);

      dw.writeString(s);

      if (v instanceof String) {
        dw.writeString("String");
        dw.writeString((String) v);
      } else if (v instanceof Color) {
        writeColor(dw, "Color", (Color) v);
      } else if (v instanceof Boolean) {
        dw.writeString("Boolean");
        if (((Boolean) v).booleanValue()) {
          dw.writeString("TRUE");
        } else {
          dw.writeString("FALSE");
        }
      } else if (v instanceof Integer) {
        dw.writeString("Int");
        dw.writeInt(((Integer) v).intValue());
      } else if (v instanceof Storable) {
        dw.writeString("Storable");
        dw.writeStorable((Storable) v);
      } else if (v instanceof javax.swing.JPopupMenu) {
        dw.writeString(Figure.POPUP_MENU);
      } else {
        System.err.println("Unknown attribute: " + v);
        dw.writeString("UNKNOWN");
      }
    }
  }
Пример #5
0
 /** Tests if an attribute is defined. */
 public boolean hasDefined(String name) {
   return fMap.containsKey(name);
 }
Пример #6
0
 /**
  * Gets the attribute with the given name.
  *
  * @returns attribute or null if the key is not defined
  */
 public Object get(String name) {
   return fMap.get(name);
 }