Skip to content

Commit

Permalink
move DialogAction to commons-gui
Browse files Browse the repository at this point in the history
introduce SingletonDialogAction for all non-modal dialogs to prevent them being opened more than once
  • Loading branch information
cpesch committed Mar 5, 2014
1 parent 0108fc7 commit 883e9f9
Show file tree
Hide file tree
Showing 20 changed files with 94 additions and 68 deletions.
Expand Up @@ -18,15 +18,14 @@
Copyright (C) 2007 Christian Pesch. All Rights Reserved.
*/

package slash.navigation.converter.gui.actions;

import slash.navigation.gui.helpers.UIHelper;
package slash.navigation.gui.actions;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import static slash.navigation.gui.helpers.UIHelper.startWaitCursor;
import static slash.navigation.gui.helpers.UIHelper.stopWaitCursor;

/**
* An {@link ActionListener} that starts and stops the wait cursor on the dialog.
Expand All @@ -50,7 +49,7 @@ public final void actionPerformed(ActionEvent e) {
try {
run();
} finally {
UIHelper.stopWaitCursor(getDialog().getRootPane());
stopWaitCursor(getDialog().getRootPane());
}
}

Expand Down
@@ -0,0 +1,47 @@
/*
This file is part of RouteConverter.
RouteConverter is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
RouteConverter is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with RouteConverter; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 2007 Christian Pesch. All Rights Reserved.
*/

package slash.navigation.gui.actions;

import slash.navigation.gui.SimpleDialog;

/**
* Show a dialog at most once.
*
* @author Christian Pesch
*/

public abstract class SingletonDialogAction extends FrameAction {
private SimpleDialog dialog = null;

protected abstract SimpleDialog createDialog();

public void run() {
if (dialog == null) {
dialog = createDialog();
dialog.pack();
dialog.restoreLocation();
}
if (!dialog.isVisible()) {
dialog.toFront();
dialog.setVisible(true);
}
}
}
Expand Up @@ -21,19 +21,17 @@
package slash.navigation.converter.gui.actions;

import slash.navigation.converter.gui.dialogs.DeletePositionsDialog;
import slash.navigation.gui.actions.FrameAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.actions.SingletonDialogAction;

/**
* Delete positions from the position list
*
* @author Christian Pesch
*/

public class DeletePositionsAction extends FrameAction {
public void run() {
DeletePositionsDialog dialog = new DeletePositionsDialog();
dialog.pack();
dialog.restoreLocation();
dialog.setVisible(true);
public class DeletePositionsAction extends SingletonDialogAction {
protected SimpleDialog createDialog() {
return new DeletePositionsDialog();
}
}
Expand Up @@ -21,19 +21,17 @@
package slash.navigation.converter.gui.actions;

import slash.navigation.converter.gui.dialogs.FindPlaceDialog;
import slash.navigation.gui.actions.FrameAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.actions.SingletonDialogAction;

/**
* Find a place via geocoding to insert it into the position list.
*
* @author Christian Pesch
*/

public class FindPlaceAction extends FrameAction {
public void run() {
FindPlaceDialog dialog = new FindPlaceDialog();
dialog.pack();
dialog.restoreLocation();
dialog.setVisible(true);
public class FindPlaceAction extends SingletonDialogAction {
protected SimpleDialog createDialog() {
return new FindPlaceDialog();
}
}
Expand Up @@ -21,19 +21,17 @@
package slash.navigation.converter.gui.actions;

import slash.navigation.converter.gui.dialogs.InsertPositionsDialog;
import slash.navigation.gui.actions.FrameAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.actions.SingletonDialogAction;

/**
* Insert positions into the position list
*
* @author Christian Pesch
*/

public class InsertPositionsAction extends FrameAction {
public void run() {
InsertPositionsDialog dialog = new InsertPositionsDialog();
dialog.pack();
dialog.restoreLocation();
dialog.setVisible(true);
public class InsertPositionsAction extends SingletonDialogAction {
protected SimpleDialog createDialog() {
return new InsertPositionsDialog();
}
}
Expand Up @@ -21,19 +21,17 @@
package slash.navigation.converter.gui.actions;

import slash.navigation.converter.gui.dialogs.AboutDialog;
import slash.navigation.gui.actions.FrameAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.actions.SingletonDialogAction;

/**
* Show information about the program.
*
* @author Christian Pesch
*/

public class ShowAboutAction extends FrameAction {
public void run() {
AboutDialog aboutDialog = new AboutDialog();
aboutDialog.pack();
aboutDialog.restoreLocation();
aboutDialog.setVisible(true);
public class ShowAboutAction extends SingletonDialogAction {
protected SimpleDialog createDialog() {
return new AboutDialog();
}
}
Expand Up @@ -21,26 +21,17 @@
package slash.navigation.converter.gui.actions;

import slash.navigation.converter.gui.dialogs.DownloadsDialog;
import slash.navigation.gui.actions.FrameAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.actions.SingletonDialogAction;

/**
* Show downloads of the program.
*
* @author Christian Pesch
*/

public class ShowDownloadsAction extends FrameAction {
private static DownloadsDialog downloadsDialog = null;

public void run() {
if (downloadsDialog == null) {
downloadsDialog = new DownloadsDialog();
downloadsDialog.pack();
downloadsDialog.restoreLocation();
}
if (!downloadsDialog.isVisible()) {
downloadsDialog.toFront();
downloadsDialog.setVisible(true);
}
public class ShowDownloadsAction extends SingletonDialogAction {
protected SimpleDialog createDialog() {
return new DownloadsDialog();
}
}
}
Expand Up @@ -21,19 +21,17 @@
package slash.navigation.converter.gui.actions;

import slash.navigation.converter.gui.dialogs.OptionsDialog;
import slash.navigation.gui.actions.FrameAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.actions.SingletonDialogAction;

/**
* Show options of the program.
* Show configuration options of the program.
*
* @author Christian Pesch
*/

public class ShowOptionsAction extends FrameAction {
public void run() {
OptionsDialog optionsDialog = new OptionsDialog();
optionsDialog.pack();
optionsDialog.restoreLocation();
optionsDialog.setVisible(true);
public class ShowOptionsAction extends SingletonDialogAction {
protected SimpleDialog createDialog() {
return new OptionsDialog();
}
}
Expand Up @@ -24,7 +24,7 @@
import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.gui.SimpleDialog;

import javax.swing.*;
Expand Down
Expand Up @@ -25,7 +25,7 @@
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.catalog.model.CategoryTreeNode;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.models.AddRouteCallback;
import slash.navigation.converter.gui.models.CatalogModel;
import slash.navigation.gui.SimpleDialog;
Expand Down
Expand Up @@ -25,7 +25,7 @@
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.catalog.model.CategoryTreeNode;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.models.AddRouteCallback;
import slash.navigation.converter.gui.models.CatalogModel;
import slash.navigation.gui.SimpleDialog;
Expand Down
Expand Up @@ -24,7 +24,7 @@
import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.renderer.CountryCodeListCellRenderer;
import slash.navigation.converter.gui.renderer.WaypointTypeListCellRenderer;
import slash.navigation.fpl.CountryCode;
Expand Down
Expand Up @@ -26,7 +26,7 @@
import slash.navigation.base.BaseNavigationPosition;
import slash.navigation.base.BaseRoute;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.models.DoubleDocument;
import slash.navigation.converter.gui.models.IntegerDocument;
import slash.navigation.gui.Application;
Expand Down
Expand Up @@ -24,7 +24,7 @@
import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.renderer.DownloadsTableCellRenderer;
import slash.navigation.converter.gui.renderer.SimpleHeaderRenderer;
import slash.navigation.download.Download;
Expand Down
Expand Up @@ -25,7 +25,7 @@
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.common.NavigationPosition;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.models.PositionsModel;
import slash.navigation.converter.gui.renderer.GoogleMapsPositionListCellRenderer;
import slash.navigation.googlemaps.GoogleMapsService;
Expand Down
Expand Up @@ -24,7 +24,7 @@
import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.gui.helpers.JMenuHelper;
import slash.navigation.gui.SimpleDialog;

Expand Down
Expand Up @@ -24,7 +24,7 @@
import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.feedback.domain.RouteFeedback;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.rest.exception.DuplicateNameException;
Expand Down
Expand Up @@ -28,7 +28,7 @@
import slash.navigation.common.NumberPattern;
import slash.navigation.common.UnitSystem;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.helpers.CheckBoxPreferencesSynchronizer;
import slash.navigation.converter.gui.mapview.TravelMode;
import slash.navigation.converter.gui.renderer.*;
Expand Down
Expand Up @@ -25,7 +25,7 @@
import com.intellij.uiDesigner.core.Spacer;
import slash.navigation.base.NavigationFormat;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.converter.gui.helpers.AbstractDocumentListener;
import slash.navigation.gui.SimpleDialog;

Expand Down
Expand Up @@ -26,9 +26,8 @@
import slash.common.io.Files;
import slash.common.log.LoggingHelper;
import slash.navigation.converter.gui.RouteConverter;
import slash.navigation.converter.gui.actions.DialogAction;
import slash.navigation.gui.actions.DialogAction;
import slash.navigation.gui.SimpleDialog;
import slash.navigation.gui.helpers.UIHelper;

import javax.swing.*;
import java.awt.*;
Expand Down

0 comments on commit 883e9f9

Please sign in to comment.