private void setEllipseField(String str1, String str2, String str3) {
		int lb = str1.indexOf("[");
		int rb = str1.indexOf("]");
		double z = parseMathExpression(str1.substring(lb + 1, rb));
		if (Double.isNaN(z))
			return;
		int i = (int) Math.round(z);
		EllipseComponent[] c = view.getEllipses();
		if (i < 0 || i >= c.length) {
			out(ScriptEvent.FAILED, "Ellipse " + i + " doesn't exisit.");
			return;
		}
		String s = str2.toLowerCase().intern();
		boolean b = true;
		if (s == "alpha") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x)) {
				if (c[i].getFillMode() instanceof GradientFill) {
					c[i].setAlphaAtCenter((short) x);
				} else {
					c[i].setAlpha((short) x);
				}
			}
		} else if (s == "x") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setX((float) (x * IR_CONVERTER));
		} else if (s == "y") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setY((float) (x * IR_CONVERTER));
		} else if (s == "width") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setWidth((float) (x * IR_CONVERTER));
		} else if (s == "height") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setHeight((float) (x * IR_CONVERTER));
		} else if (s == "size") {
			float[] x = parseArray(4, str3);
			if (x != null && x.length == 4)
				c[i].setOval(x[0] * IR_CONVERTER, x[1] * IR_CONVERTER, x[2] * IR_CONVERTER, x[3] * IR_CONVERTER);
		} else if (s == "efield") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x)) {
				VectorField vf = c[i].getVectorField();
				if (vf instanceof ElectricField) {
					vf.setIntensity(x);
				} else {
					out(ScriptEvent.FAILED, "Please turn on the efield for ellipse " + i + " and set its direction.");
					return;
				}
			}
		} else if (s == "bfield") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x)) {
				VectorField vf = c[i].getVectorField();
				if (vf instanceof MagneticField) {
					vf.setIntensity(x);
				} else {
					out(ScriptEvent.FAILED, "Please turn on the bfield for ellipse " + i + " and set its direction.");
					return;
				}
			}
		} else if (s == "phi0") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setPotentialAtCenter((float) x);
		} else if (s == "gamma") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setPotentialDecayFactor((float) x);
		} else if (s == "viscosity") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setViscosity((float) x);
		} else if (s == "angle") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x))
				c[i].setAngle((float) x);
		} else if (s == "stroke") {
			double x = parseMathExpression(str3);
			if (!Double.isNaN(x)) {
				if (x >= 0 && x < LineStyle.STROKES.length)
					c[i].setLineStyle((byte) x);
			}
		} else if (s == "color") {
			Color color = parseRGBColor(str3);
			if (color != null)
				c[i].setFillMode(new FillMode.ColorFill(color));
		} else if (s == "visible") {
			c[i].setVisible("on".equalsIgnoreCase(str3));
		} else if (s == "draggable") {
			c[i].setDraggable("on".equalsIgnoreCase(str3));
		} else if (s == "layer") {
			if ("in_front_of_particles".equalsIgnoreCase(str3)) {
				c[i].setLayer(Layered.IN_FRONT_OF_PARTICLES);
			} else if ("behind_particles".equalsIgnoreCase(str3)) {
				c[i].setLayer(Layered.BEHIND_PARTICLES);
			} else if ("back".equalsIgnoreCase(str3)) {
				view.sendLayerToBack(c[i]);
			} else if ("front".equalsIgnoreCase(str3)) {
				view.bringLayerToFront(c[i]);
			}
		} else {
			out(ScriptEvent.FAILED, "Cannot set property: " + str2);
			b = false;
		}
		if (b) {
			notifyChange();
			view.repaint();
		}
	}