Author: adietish
Date: 2011-09-14 10:09:52 -0400 (Wed, 14 Sep 2011)
New Revision: 34727
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/reporting/UsageReportEnablementDialog.java
Log:
[JBDS-1795] added shell listener that would bring usage dialog to front as soon as another
window would hide it. This seems not to bring consistent behavior but seems to work
initially. this is the best we can do for M3, need to find a better solution for M4
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/reporting/UsageReportEnablementDialog.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/reporting/UsageReportEnablementDialog.java 2011-09-14
13:43:58 UTC (rev 34726)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/reporting/UsageReportEnablementDialog.java 2011-09-14
14:09:52 UTC (rev 34727)
@@ -17,6 +17,8 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.ShellAdapter;
+import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Link;
@@ -32,7 +34,8 @@
private boolean reportEnabled;
private IUsageBranding branding;
-
+ private ForceActiveShellAdapter forceActiveShellAdapter = new
ForceActiveShellAdapter();
+
public UsageReportEnablementDialog(IShellProvider parentShell, IUsageBranding branding)
{
super(parentShell);
this.branding = branding;
@@ -61,8 +64,16 @@
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText(branding.getStartupAllowReportingTitle());
+ forceActiveShellAdapter.attachTo(shell);
}
+ @Override
+ public boolean close() {
+ forceActiveShellAdapter.removeFrom(getShell());
+ return super.close();
+
+ }
+
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.YES_LABEL, false);
createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, false);
@@ -101,4 +112,28 @@
public boolean isReportEnabled() {
return reportEnabled;
}
+
+ private class ForceActiveShellAdapter extends ShellAdapter {
+
+ public void shellDeactivated(ShellEvent e) {
+ Shell shell = getShell();
+ if (shell != null
+ && !shell.isDisposed())
+ shell.forceActive();
+ }
+
+ private void attachTo(Shell shell) {
+ if (shell != null
+ && !shell.isDisposed()) {
+ shell.addShellListener(this);
+ }
+ }
+
+ private void removeFrom(Shell shell) {
+ if (shell != null
+ && !shell.isDisposed()) {
+ shell.removeShellListener(this);
+ }
+ }
+ }
}
Show replies by date