// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.dialogs.changeset.query; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.JOptionPane; import org.openstreetmap.josm.gui.HelpAwareOptionPane; import org.openstreetmap.josm.gui.help.HelpUtil; import org.openstreetmap.josm.gui.widgets.BoundingBoxSelectionPanel; import org.openstreetmap.josm.io.ChangesetQuery; /** * This is the panel for selecting whether the query should be restricted to a specific bounding box. * @since 11326 (extracted from AdvancedChangesetQueryPanel) */ public class BBoxRestrictionPanel extends BoundingBoxSelectionPanel implements RestrictionPanel { /** * Constructs a new {@code BBoxRestrictionPanel}. */ public BBoxRestrictionPanel() { setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(3, 3, 3, 3), BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(Color.GRAY), BorderFactory.createEmptyBorder(5, 5, 5, 5) ) )); } /** * Determines if the changeset query bbox is valid. * @return {@code true} if the changeset query bbox is defined. */ @Override public boolean isValidChangesetQuery() { return getBoundingBox() != null; } /** * Sets the query restrictions on <code>query</code> for bbox based restrictions. * @param query query to fill */ @Override public void fillInQuery(ChangesetQuery query) { if (!isValidChangesetQuery()) throw new IllegalStateException(tr("Cannot restrict the changeset query to a specific bounding box. The input is invalid.")); query.inBbox(getBoundingBox()); } @Override public void displayMessageIfInvalid() { if (isValidChangesetQuery()) return; HelpAwareOptionPane.showOptionDialog( this, tr( "<html>Please enter valid longitude/latitude values to restrict<br>" + "the changeset query to a specific bounding box.</html>" ), tr("Invalid bounding box"), JOptionPane.ERROR_MESSAGE, HelpUtil.ht("/Dialog/ChangesetQueryDialog#InvalidBoundingBox") ); } }