private final String showInputDialog(String message, String title, int messageType, int optionType, final String[] text, boolean combo)
		{
			String input;
			JPanel panel = new JPanel();
			panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
			panel.add(new JLabel(message));
			final JTextField textField = new JTextField(15);
			final JComboBox<String> comboBox = new JComboBox<>(text);
			
			if(combo) {
		
				panel.add(comboBox);
			}
			else {
				
				panel.add(textField);
			}
			final JOptionPane pane;
			pane = new JOptionPane(panel, messageType, optionType) {
				private static final long serialVersionUID = 1L;
			@Override
			public void selectInitialValue() {
				if (!text.equals(new String [0])) {
					comboBox.requestFocusInWindow();
				}
				else {
					textField.requestFocusInWindow();
				}
			}
		};
			final JDialog dialog = pane.createDialog(null, title); // .setVisible(true);
			Thread thread = new Thread(new Runnable()
			{

				@Override
				public void run()
				{
					try {
						Thread.sleep(90000);
					}
					catch (InterruptedException e) {
						dialog.dispose();
					}
					dialog.dispose();
					pane.setValue(JOptionPane.CANCEL_OPTION);
				}
			});
			thread.setDaemon(true);
			thread.setPriority(Thread.MIN_PRIORITY);
			thread.start();
			dialog.setVisible(true);
			thread.interrupt();
			Object cancel = pane.getValue();
			if(cancel == null) return null;
			if(cancel instanceof Integer && (int)cancel == JOptionPane.CANCEL_OPTION) {
				return null;
			}
			
			if (combo) {
				input = (String)comboBox.getSelectedItem();
			}
			else input = textField.getText().length() == 0 ? null : (textField.getText());
			return input;
		}