// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.opendata.core.gui; import java.lang.reflect.InvocationTargetException; import javax.swing.SwingUtilities; import org.openstreetmap.josm.gui.ExtendedDialog; public class DialogPrompter<T extends ExtendedDialog> implements Runnable { private T dialog; private int value = -1; protected T buildDialog() { // To be overriden if needed return null; } public DialogPrompter() { this(null); } public DialogPrompter(T dialog) { this.dialog = dialog; } public final T getDialog() { return dialog; } @Override public final void run() { if (dialog == null) { dialog = buildDialog(); } if (dialog != null) { value = dialog.showDialog().getValue(); } } public final DialogPrompter<T> promptInEdt() { if (SwingUtilities.isEventDispatchThread()) { run(); } else { try { SwingUtilities.invokeAndWait(this); } catch (InterruptedException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } return this; } public final int getValue() { return value; } }