diff --git a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryCallback.java b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryCallback.java index 9295e98b..29462c03 100644 --- a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryCallback.java +++ b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryCallback.java @@ -124,4 +124,13 @@ public void handleError(IStatus status, BehaviourEventType eventType) { } + /** + * Shows a confirmation dialog with the given operation title and message, and + * asks the user the determine whether to execute the target operation. + * + * @param title the title of the target operation + * @param message the message presented to the user + * @return true if the user chooses to execute the target operation, false otherwise + */ + public abstract boolean confirmTheOperation(final String title, final String message); } diff --git a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryPlugin.java b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryPlugin.java index 5f5d1d16..584836ed 100644 --- a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryPlugin.java +++ b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/CloudFoundryPlugin.java @@ -218,6 +218,12 @@ public void applicationStarting(CloudFoundryServer server, CloudFoundryApplicati // TODO Auto-generated method stub } + + @Override + public boolean confirmTheOperation(String title, String message) { + // ignore + return false; + } } private static class AppStateTrackerEntry { diff --git a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.java b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.java index d919666a..02cf691c 100644 --- a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.java +++ b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.java @@ -185,6 +185,10 @@ public class Messages extends NLS { public static String ModuleResourceApplicationArchive_ERROR_NO_DEPLOYABLE_RES_FOUND; + public static String REPUSH_CLOUD_APP_CONFIRMATION_TITLE; + + public static String REPUSH_CLOUD_APP_CONFIRMATION_MESSAGE; + private static final String BUNDLE_NAME = CloudFoundryPlugin.PLUGIN_ID + ".internal.Messages"; //$NON-NLS-1$ static { diff --git a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.properties b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.properties index 30a6bcff..753b8c69 100644 --- a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.properties +++ b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/Messages.properties @@ -102,3 +102,5 @@ ROUTES=Getting routes for domain - {0} EMPTY_URL_ERROR=Enter a deployment URL JavaWebApplicationDelegate_ERROR_NO_MAPPED_APP_URL=No mapped application URLs set in application deployment information. ModuleResourceApplicationArchive_ERROR_NO_DEPLOYABLE_RES_FOUND=Unable to deploy module. No deployable resources found for module: {0} with id: {1} +REPUSH_CLOUD_APP_CONFIRMATION_TITLE=Confirm to repush cloud application +REPUSH_CLOUD_APP_CONFIRMATION_MESSAGE=Are you sure to repush the bound cloud application {0} ? diff --git a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/client/CloudFoundryServerBehaviour.java b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/client/CloudFoundryServerBehaviour.java index 359196a4..2df2b59a 100644 --- a/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/client/CloudFoundryServerBehaviour.java +++ b/org.cloudfoundry.ide.eclipse.server.core/src/org/cloudfoundry/ide/eclipse/server/core/internal/client/CloudFoundryServerBehaviour.java @@ -1372,7 +1372,9 @@ else if (!module[0].isExternal()) { // publish op = new PushApplicationOperation(module); } - else if (deltaKind == ServerBehaviourDelegate.CHANGED) { + else if (deltaKind == ServerBehaviourDelegate.CHANGED && CloudFoundryPlugin.getCallback() + .confirmTheOperation(Messages.REPUSH_CLOUD_APP_CONFIRMATION_TITLE, + NLS.bind(Messages.REPUSH_CLOUD_APP_CONFIRMATION_MESSAGE, module[0].getName()))) { op = getApplicationOperation(module, ApplicationAction.UPDATE_RESTART); } // Republish the root module if any of the child module requires diff --git a/org.cloudfoundry.ide.eclipse.server.tests/src/org/cloudfoundry/ide/eclipse/server/tests/util/TestCallback.java b/org.cloudfoundry.ide.eclipse.server.tests/src/org/cloudfoundry/ide/eclipse/server/tests/util/TestCallback.java index 0f8b386c..c008da51 100644 --- a/org.cloudfoundry.ide.eclipse.server.tests/src/org/cloudfoundry/ide/eclipse/server/tests/util/TestCallback.java +++ b/org.cloudfoundry.ide.eclipse.server.tests/src/org/cloudfoundry/ide/eclipse/server/tests/util/TestCallback.java @@ -163,4 +163,9 @@ public void applicationStarting(CloudFoundryServer server, CloudFoundryApplicati // TODO Auto-generated method stub } + @Override + public boolean confirmTheOperation(String title, String message) { + // ignore + return false; + } } diff --git a/org.cloudfoundry.ide.eclipse.server.ui/src/org/cloudfoundry/ide/eclipse/server/ui/internal/CloudFoundryUiCallback.java b/org.cloudfoundry.ide.eclipse.server.ui/src/org/cloudfoundry/ide/eclipse/server/ui/internal/CloudFoundryUiCallback.java index 9b06e2db..43830e83 100644 --- a/org.cloudfoundry.ide.eclipse.server.ui/src/org/cloudfoundry/ide/eclipse/server/ui/internal/CloudFoundryUiCallback.java +++ b/org.cloudfoundry.ide.eclipse.server.ui/src/org/cloudfoundry/ide/eclipse/server/ui/internal/CloudFoundryUiCallback.java @@ -234,4 +234,23 @@ public IStatus runInUIThread(IProgressMonitor monitor) { } } + /** + * {@inheritDoc} + */ + @Override + public boolean confirmTheOperation(final String title, final String message) { + final boolean[] confirm = new boolean[1]; + confirm[0] = false; + Display.getDefault().syncExec(new Runnable() { + + public void run() { + confirm[0] = MessageDialog.openConfirm( + Display.getCurrent().getActiveShell(), + title, + message); + } + + }); + return confirm[0]; + } }