JComponent getHouseTab() {
		JPanel inner = new JPanel(new GridBagLayout());
		GridBagConstraints innerConstraints = new GridBagConstraints();
		innerConstraints.fill = GridBagConstraints.BOTH;
		innerConstraints.gridx = 0;
		innerConstraints.gridy = 0;
		innerConstraints.weightx = 1;
		innerConstraints.weighty = 1;

		{
			JPanel disabledTitle = new JPanel(new BorderLayout());
			disabledTitle.setBorder(new CompoundBorder(new TitledBorder("Disabled Methods"), new EmptyBorder(5, 5, 5, 5)));

			JScrollPane scrollPane = new JScrollPane(disabledHouse);
			disabledTitle.setPreferredSize(new Dimension(50, 50));
			disabledTitle.add(scrollPane);
			inner.add(disabledTitle, innerConstraints);
		}

		innerConstraints.gridx++;
		innerConstraints.weightx = 0;
		{
			JPanel centerPane = new JPanel(new GridBagLayout());
			GridBagConstraints centerConstraints = new GridBagConstraints();
			centerConstraints.fill = GridBagConstraints.HORIZONTAL;

			centerConstraints.gridy = 0;
			centerPane.add(addHouse, centerConstraints);

			centerConstraints.gridy = 1;
			centerPane.add(removeHouse, centerConstraints);

			inner.add(centerPane, innerConstraints);
		}

		innerConstraints.gridx++;
		innerConstraints.weightx = 1;
		{
			JPanel enabledTitle = new JPanel(new BorderLayout());
			enabledTitle.setBorder(new CompoundBorder(new TitledBorder("Enabled Methods"), new EmptyBorder(5, 5, 5, 5)));

			enabledHouse.setVisibleRowCount(-1);
			enabledHouse.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			enabledHouse.setTransferHandler(new TransferHandler() {
				@Override
				public boolean canImport(TransferSupport support) {
					if (!support.isDrop()) {
						return false;
					}

					support.setShowDropLocation(true);

					JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();
					return dl.getIndex() >= 0 && dl.getIndex() <= enabledHouse.getModel().getSize();
				}

				@Override
				public boolean importData(TransferSupport support) {
					if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
						return false;
					}

					JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();
					int index = dl.getIndex();

					Object[] list = enabledHouse.getSelectedValues();
					for (int i = list.length - 1; i >= 0; i--) {
						final Object object = list[i];
						if (index > houseEnabledModel.indexOf(object)) {
							index--;
						}
						houseEnabledModel.removeElement(object);
						houseEnabledModel.insertElementAt(object, index);
						index = houseEnabledModel.indexOf(object);
					}

					return true;
				}

				@Override
				public int getSourceActions(JComponent component) {
					return MOVE;
				}

				@Override
				protected Transferable createTransferable(JComponent component) {
					return new StringSelection("");
				}
			});

			enabledHouse.setDropMode(DropMode.INSERT);
			enabledHouse.setDragEnabled(true);

			JScrollPane scrollPane = new JScrollPane(enabledHouse);
			enabledTitle.setPreferredSize(new Dimension(50, 50));

			enabledTitle.add(scrollPane, BorderLayout.CENTER);

			enabledTitle.add(new JLabel("Drag to set priority (highest at top)", JLabel.CENTER), BorderLayout.SOUTH);

			inner.add(enabledTitle, innerConstraints);
		}

		return inner;
	}