public void open() {
		Main.shell.setEnabled(false);

		shell.open();
		shell.layout();

		newName.setVisible(btnAdd.getSelection());
		replaceCombo.setVisible(btnReplace.getSelection());

		if (!ShipIO.isNull(Main.dataPath) && (ShipIO.playerBlueprintNames == null || ShipIO.playerBlueprintNames.size() == 0)) {
			ShipIO.loadDeclarationsFromFile(null);
		}

		SortedSet<String> ts = new TreeSet<String>();
		for (String s : ShipIO.playerBlueprintNames) {
			s = s + " (" + ShipIO.playerShipNames.get(s) + ")";
			ts.add(s);
		}
		final String[] player = ts.toArray(new String[0]);

		ts.clear();
		for (String s : ShipIO.enemyBlueprintNames) {
			s = s + " (" + ShipIO.enemyShipNames.get(s) + ")";
			ts.add(s);
		}

		final String[] enemy = ts.toArray(new String[0]);

		if (Main.ship.isPlayer) {
			replaceCombo.setItems(player);
		} else {
			replaceCombo.setItems(enemy);
		}
		if (!ShipIO.isNull(Main.exportPath))
			exportDir.setText(Main.exportPath);

		Display display = getParent().getDisplay();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}