protected void createItem() {
		// Create a new item and get an item editor, which is the "wizard"
		// that can create a fully-defined item
		FolderItem item = null;
		try {
			item = (FolderItem) Class.forName(folderItemClass).newInstance();
			itemEditor = item.getEditor();
		} catch (Exception ex) {
		}

		// If either the item or editor doesn't exists, bail on this operation
		if (item == null || itemEditor == null) {
			JOptionPane.showMessageDialog(this, "Unable to create item",
					"Create", JOptionPane.ERROR_MESSAGE);
		} else {
			// Edit the item and make sure the user chose "save"
			if (itemEditor.edit(item)) {
				DndTreeNode folder = new DndTreeNode(item.toString(), item);
				DndTreeNode parent = getSelectedFolder();

				// Skip over all sub-folders, and find the correct position of
				// the new item
				int offset = 0;
				for (int i=0;  i<parent.getChildCount();  i++) {
					DndTreeNode aNode = (DndTreeNode)parent.getChildAt(i);
					if (aNode.getAllowsChildren()) {
						offset = i+1;
					} else if (aNode.getLabel().compareToIgnoreCase(folder.getLabel()) < 0) {
						offset = i+1;
					}
				}

				// Insert the new node and scroll so that it's visible
				folderModel.insertNodeInto(folder, parent, offset);
				folderTree.scrollPathToVisible(new TreePath(folder.getPath()));
			}
		}
	}