private void createDialog(Component parent) {

		dialog = new JDialog(JOptionPane.getFrameForComponent(parent), "Bookmark Manager", true);
		String s = Modeler.getInternationalText("ManageBookmark");
		if (s != null)
			dialog.setTitle(s);
		dialog.setResizable(true);
		dialog.getContentPane().setLayout(new BorderLayout());

		list = new JList();
		list.setCellRenderer(new BookmarkCellRenderer());
		list.setDragEnabled(true);
		ToolTipManager.sharedInstance().registerComponent(list);
		list.setBorder(BorderFactory.createLoweredBevelBorder());
		list.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				int code = e.getKeyCode();
				if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_BACK_SPACE) {
					removeSelectedItems();
				}
			}
		});
		// drag and drop support
		ListOrMapTransferHandler handler = new ListOrMapTransferHandler(bookmarks);
		handler.setJobAfterTransfer(new Runnable() {
			public void run() {
				BookmarkEvent be = new BookmarkEvent(BookmarkManager.this, BookmarkEvent.BOOKMARK_SORTED);
				for (BookmarkListener listener : listenerList) {
					listener.bookmarkUpdated(be);
				}
			}
		});
		list.setTransferHandler(handler);
		list.setDragEnabled(true);

		JScrollPane scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scroll.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
		scroll.setViewportView(list);
		scroll.setPreferredSize(new Dimension(500, 400));

		dialog.getContentPane().add(scroll, BorderLayout.CENTER);

		JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 2, 0));
		panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

		s = Modeler.getInternationalText("CtrlOrShiftClickToSelectMultipleBookmarks");
		panel.add(new JLabel(s != null ? s : "Ctrl/Shift+Click to select multiple. Drag to sort.  "));

		s = Modeler.getInternationalText("Remove");
		JButton button = new JButton(s != null ? s : "Remove");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				removeSelectedItems();
			}
		});
		panel.add(button);

		s = Modeler.getInternationalText("CloseButton");
		button = new JButton(s != null ? s : "Close");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dialog.dispose();
			}
		});
		panel.add(button);

		dialog.getContentPane().add(panel, BorderLayout.SOUTH);

		dialog.pack();
		dialog.setLocationRelativeTo(parent);

		dialog.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dialog.dispose();
			}
		});

	}