private void saveAndCreateNewPage() {
		if (isWriting())
			return;
		if (!pageAddress.equals("Untitled.cml") && !isRemote()) {
			final File file = new File(pageAddress);
			if (!validateFileName(file))
				return;
			if (EventQueue.isDispatchThread())
				setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
			new SwingWorker("Page-saving thread") {
				public Object construct() {
					notifyPageListeners(new PageEvent(Page.this, PageEvent.PAGE_OVERWRITE_BEGIN));
					SaveComponentStateReminder.setEnabled(false);
					synchronized (lock) {
						saveTo(file);
					}
					return file;
				}

				public void finished() {
					isWriting = false;
					notifyPageListeners(new PageEvent(Page.this, PageEvent.PAGE_OVERWRITE_END));
					createNewPage();
					setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
				}
			}.start();
		}
	}