void removeSelectedArea() {

		super.removeSelectedArea();

		List<Layered> lay = removeSelectedLayeredComponents();
		List<Integer> list = null;
		for (int k = 0; k < model.getNumberOfParticles(); k++) {
			if (selectedArea.contains(gb[k].getRx(), gb[k].getRy())) {
				if (list == null)
					list = new ArrayList<Integer>();
				list.add(k);
			}
		}

		boolean particleRemoved = list != null && !list.isEmpty();
		boolean layerRemoved = lay != null && !lay.isEmpty();

		if (particleRemoved)
			removeMarkedParticles(list);

		if (particleRemoved || layerRemoved) {
			model.notifyChange();
			if (!doNotFireUndoEvent) {
				Layered[] i2 = null;
				if (layerRemoved && lay != null) {
					int n = lay.size();
					if (n > 0) {
						i2 = new Layered[n];
						for (int j = 0; j < n; j++)
							i2[j] = lay.get(j);
					}
				}
				model.getUndoManager().undoableEditHappened(new UndoableEditEvent(model, new UndoableDeletion(UndoAction.BLOCK_REMOVE, list != null ? list.size() : 0, i2)));
				updateUndoUIComponents();
			}
		}

		selectedArea.setSize(0, 0);
		repaint();

	}