public Topics(final JBroFuzzWindow parent) {

		if (topicsShowing) {
			return;
		}
		topicsShowing = true;

		// super(parent, " JBroFuzz - Help Topics ", true);
		setTitle(" JBroFuzz - Help Topics ");

		setIconImage(ImageCreator.IMG_FRAME.getImage());
		setLayout(new BorderLayout());
		setFont(new Font("SansSerif", Font.PLAIN, 12));

		topicsURL = new URL[NODENAMES.length];
		// Create the nodes
		final DefaultMutableTreeNode top = new DefaultMutableTreeNode(
				NODENAMES[0]);

		for (int i = 0; i < NODENAMES.length; i++) {
			topicsURL[i] = ClassLoader.getSystemClassLoader().getResource(
					"help/topics-0" + i + ".html");
			if (i > 0) {
				top.add(new DefaultMutableTreeNode(NODENAMES[i]));
			}
		}

		// Create a tree that allows one selection at a time.
		tree = new JTree(top);
		tree.getSelectionModel().setSelectionMode(
				TreeSelectionModel.SINGLE_TREE_SELECTION);
		// Listen for when the selection changes.
		tree.addTreeSelectionListener(this);

		// Create the scroll pane and add the tree to it.
		final JScrollPane treeView = new JScrollPane(tree);

		JEditorPane helpPane;
		try {
			helpPane = new JEditorPane(topicsURL[0]);
		} catch (final IOException e1) {
			helpPane = new JEditorPane("text/html", FILE_NOT_FOUND);
			// helpPane.setText(FILE_NOT_FOUND);
		}
		helpPane.setEditable(false);
		helpScrPane = new JScrollPane(helpPane);

		JEditorPane webdPane;
		try {
			webdPane = new JEditorPane(topicsURL[2]);
		} catch (final IOException e1) {
			webdPane = new JEditorPane("text/html", FILE_NOT_FOUND);
			// webdPane.setText(FILE_NOT_FOUND);
		}
		webdPane.setEditable(false);
		webdScrPane = new JScrollPane(webdPane);

		JEditorPane tcpfPane;
		try {
			tcpfPane = new JEditorPane(topicsURL[1]);
		} catch (final IOException e1) {
			tcpfPane = new JEditorPane("text/html", FILE_NOT_FOUND);
			// tcpfPane.setText(FILE_NOT_FOUND);
		}
		tcpfPane.setEditable(false);
		tcpfScrPane = new JScrollPane(tcpfPane);

		JEditorPane tcpsPane;
		try {
			tcpsPane = new JEditorPane(topicsURL[3]);
		} catch (final IOException e1) {
			tcpsPane = new JEditorPane("text/html", FILE_NOT_FOUND);
			// tcpsPane.setText(FILE_NOT_FOUND);
		}
		tcpsPane.setEditable(false);
		tcpsScrPane = new JScrollPane(tcpsPane);

		JEditorPane genePane;
		try {
			genePane = new JEditorPane(topicsURL[4]);
		} catch (final IOException e1) {
			genePane = new JEditorPane("text/html", FILE_NOT_FOUND);
			// genePane.setText(FILE_NOT_FOUND);
		}
		genePane.setEditable(false);
		geneScrPane = new JScrollPane(genePane);

		JEditorPane sysmPane;
		try {
			sysmPane = new JEditorPane(topicsURL[5]);
		} catch (final IOException e1) {
			sysmPane = new JEditorPane("text/html", FILE_NOT_FOUND);
			// sysmPane.setText(FILE_NOT_FOUND);
		}
		sysmPane.setEditable(false);
		sysmScrPane = new JScrollPane(sysmPane);

		// Create the top split pane, showing the treeView and the Preferences
		splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
		splitPane.setLeftComponent(treeView);
		splitPane.setRightComponent(helpScrPane);
		splitPane.setOneTouchExpandable(false);

		helpScrPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		webdScrPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		tcpsScrPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		tcpfScrPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		geneScrPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		sysmScrPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		treeView.setMinimumSize(JBroFuzzFormat.ZERO_DIM);
		splitPane.setDividerLocation(100);
		splitPane.setPreferredSize(new Dimension(Topics.SIZE_X, Topics.SIZE_Y));

		// Add the split pane to this panel
		getContentPane().add(splitPane, BorderLayout.CENTER);

		// Bottom button
		ok = new JButton("  OK  ");

		final JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT,
				15, 15));
		buttonPanel.add(ok);

		ok.addActionListener(new ActionListener() {
			public void actionPerformed(final ActionEvent e) {

				topicsShowing = false;
				Topics.this.dispose();

			}
		});

		getContentPane().add(buttonPanel, BorderLayout.SOUTH);

		// Global frame issues
		splitPane.setDividerLocation(150);
		
		// Where to show the topics frame
		this.setLocation(
				parent.getLocation().x + (parent.getWidth() - SIZE_X) / 2, 
				parent.getLocation().y + (parent.getHeight() - SIZE_Y) / 2
		);
		
		this.setSize(Topics.SIZE_X, Topics.SIZE_Y);
		setMinimumSize(new Dimension(SIZE_X / 2, SIZE_Y / 2));

		setResizable(true);
		setVisible(true);

		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(final WindowEvent e) {
				topicsShowing = false;
				dispose();
			}
		});

	}