Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteffen Pingel2011-09-16 16:30:35 +0000
committerSteffen Pingel2011-09-16 16:30:35 +0000
commit6e184421ca62955dc533b039f58e824abb4786c6 (patch)
tree5cd676c5b41105305d9130b8e37f691a9945d9a6 /org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn
parent6d8a2fc7c721e548710f2b05e6b1ce818efac316 (diff)
downloadorg.eclipse.mylyn.tasks-6e184421ca62955dc533b039f58e824abb4786c6.tar.gz
org.eclipse.mylyn.tasks-6e184421ca62955dc533b039f58e824abb4786c6.tar.xz
org.eclipse.mylyn.tasks-6e184421ca62955dc533b039f58e824abb4786c6.zip
NEW - bug 245152: opening "Task Search" blocks UI when page is first
shown https://bugs.eclipse.org/bugs/show_bug.cgi?id=245152 Change-Id: I2ca9f5e0e7aac6f3cf1ee735f41e40c634867cfd
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/provisional/tasks/ui/wizards/AbstractRepositoryQueryPage2.java112
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java19
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/QueryWizardDialog.java43
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties10
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage.java2
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java426
6 files changed, 505 insertions, 107 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/provisional/tasks/ui/wizards/AbstractRepositoryQueryPage2.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/provisional/tasks/ui/wizards/AbstractRepositoryQueryPage2.java
index cb1e44035..7b109e529 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/provisional/tasks/ui/wizards/AbstractRepositoryQueryPage2.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/provisional/tasks/ui/wizards/AbstractRepositoryQueryPage2.java
@@ -19,7 +19,6 @@ import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylyn.internal.tasks.ui.wizards.QueryWizardDialog;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.TaskRepository;
@@ -35,6 +34,7 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
@@ -44,7 +44,9 @@ import org.eclipse.ui.progress.IProgressService;
/**
* @author Steffen Pingel
* @since 3.1
+ * @deprecated use {@link org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage2} instead
*/
+@Deprecated
public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQueryPage {
private Text titleText;
@@ -57,8 +59,6 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue
private boolean needsRepositoryConfiguration = true;
- private boolean needsClearButton = false;
-
public AbstractRepositoryQueryPage2(String pageName, TaskRepository repository, IRepositoryQuery query) {
super(pageName, repository, query);
this.connector = TasksUi.getRepositoryConnector(getTaskRepository().getConnectorKind());
@@ -69,10 +69,6 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue
this.needsRepositoryConfiguration = needsRepositoryConfiguration;
}
- public void setNeedsClearButton(boolean needsClearButton) {
- this.needsClearButton = needsClearButton;
- }
-
public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(composite);
@@ -89,8 +85,10 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).span(2, 1).applyTo(innerComposite);
innerComposite.setLayout(new FillLayout());
createPageContent(innerComposite);
- createButtonGroup(composite);
- if (!needsRepositoryConfiguration) {
+
+ if (needsRepositoryConfiguration) {
+ createUpdateButton(composite);
+ } else {
setDescription(Messages.AbstractRepositoryQueryPage2_Create_a_Query_Page_Description);
}
@@ -126,49 +124,30 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue
});
}
- private void createButtonGroup(Composite control) {
+ private Control createUpdateButton(final Composite control) {
Composite composite = new Composite(control, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
composite.setLayout(layout);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).span(2, 1).applyTo(composite);
- createButtons(composite);
- }
- protected void createButtons(final Composite control) {
- if (getSearchContainer() == null) {
- return;
- }
- if (needsClearButton) {
- Button clearButton = new Button(control, SWT.PUSH);
- clearButton.setText(Messages.AbstractRepositoryQueryPage2_Clear_Fields);
- clearButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
- clearButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- clearFields();
+ updateButton = new Button(composite, SWT.PUSH);
+ updateButton.setText(Messages.AbstractRepositoryQueryPage2__Refresh_From_Repository);
+ updateButton.setLayoutData(new GridData());
+ updateButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (getTaskRepository() != null) {
+ updateAttributesFromRepository(true);
+ } else {
+ MessageDialog.openInformation(
+ Display.getCurrent().getActiveShell(),
+ Messages.AbstractRepositoryQueryPage2_Update_Attributes_Failed,
+ Messages.AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view);
}
+ }
+ });
- });
- }
- if (needsRepositoryConfiguration) {
- updateButton = new Button(control, SWT.PUSH);
- updateButton.setText(Messages.AbstractRepositoryQueryPage2__Refresh_From_Repository);
- updateButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
-// updateButton.setImage(TasksUiImages.REPOSITORY_UPDATE_CONFIGURATION.createImage());
- updateButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (getTaskRepository() != null) {
- updateAttributesFromRepository(true);
- } else {
- MessageDialog.openInformation(
- Display.getCurrent().getActiveShell(),
- Messages.AbstractRepositoryQueryPage2_Update_Attributes_Failed,
- Messages.AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view);
- }
- }
- });
- }
+ return composite;
}
@Override
@@ -290,47 +269,4 @@ public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQue
}
}
- public void setExtraButtonState(Button button) {
- Integer obj = (Integer) button.getData();
- if (obj == QueryWizardDialog.UPDATE_BUTTON_ID) {
- if (needsRepositoryConfiguration) {
- if (!button.isVisible()) {
- button.setVisible(true);
- }
- button.setEnabled(true);
- } else {
- if (button != null && button.isVisible()) {
- button.setVisible(false);
- }
- }
- } else if (obj == QueryWizardDialog.CLEAR_BUTTON_ID) {
- if (!button.isVisible()) {
- button.setVisible(true);
- }
- button.setEnabled(true);
- }
-
- }
-
- public boolean handleExtraButtonPressed(int buttonId) {
- if (buttonId == QueryWizardDialog.UPDATE_BUTTON_ID) {
- if (getTaskRepository() != null) {
- updateAttributesFromRepository(true);
- } else {
- MessageDialog.openInformation(
- Display.getCurrent().getActiveShell(),
- Messages.AbstractRepositoryQueryPage2_Update_Attributes_Failed,
- Messages.AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view);
- }
- return true;
- } else if (buttonId == QueryWizardDialog.CLEAR_BUTTON_ID) {
- clearFields();
- return true;
- }
- return false;
- }
-
- public void clearFields() {
-
- }
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java
index 62248c831..a18e181dd 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/Messages.java
@@ -290,4 +290,23 @@ public class Messages extends NLS {
public static String QueryWizardDialog_Clear_Fields;
public static String QueryWizardDialog_Update_Attributes_from_Repository;
+
+ public static String AbstractRepositoryQueryPage2__Refresh_From_Repository;
+
+ public static String AbstractRepositoryQueryPage2__Title_;
+
+ public static String AbstractRepositoryQueryPage2_Clear_Fields;
+
+ public static String AbstractRepositoryQueryPage2_Create_a_Query_Page_Description;
+
+ public static String AbstractRepositoryQueryPage2_Enter_a_title;
+
+ public static String AbstractRepositoryQueryPage2_Enter_query_parameters;
+
+ public static String AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view;
+
+ public static String AbstractRepositoryQueryPage2_Refresh_Configuration_Button_Label;
+
+ public static String AbstractRepositoryQueryPage2_Update_Attributes_Failed;
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/QueryWizardDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/QueryWizardDialog.java
index 0ca217f4e..f3c4d1620 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/QueryWizardDialog.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/QueryWizardDialog.java
@@ -16,22 +16,22 @@ import java.util.HashMap;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.mylyn.internal.provisional.commons.ui.dialogs.EnhancedWizardDialog;
-import org.eclipse.mylyn.internal.provisional.tasks.ui.wizards.AbstractRepositoryQueryPage2;
+import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage2;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
public class QueryWizardDialog extends EnhancedWizardDialog {
- private static final String UPDATE_BUTTON_KEY = "update"; //$NON-NLS-1$
+ private static final String REFRESH_BUTTON_KEY = "refresh"; //$NON-NLS-1$
private static final String CLEAR_BUTTON_KEY = "clear"; //$NON-NLS-1$
- public static final int UPDATE_BUTTON_ID = 2001;
+ public static final int REFRESH_BUTTON_ID = 2001;
public static final int CLEAR_BUTTON_ID = 2002;
- private Button updateButton;
+ private Button refreshButton;
private Button clearButton;
@@ -49,21 +49,26 @@ public class QueryWizardDialog extends EnhancedWizardDialog {
@Override
protected void createExtraButtons(Composite composite) {
- clearButton = createButton(composite, CLEAR_BUTTON_ID, Messages.QueryWizardDialog_Clear_Fields, false);
- clearButton.setVisible(false);
- setButtonLayoutData(clearButton);
- updateButton = createButton(composite, UPDATE_BUTTON_ID,
- Messages.QueryWizardDialog_Update_Attributes_from_Repository, false);
-// updateButton.setImage(TasksUiImages.REPOSITORY_UPDATE_CONFIGURATION_SMALL.createImage());
- updateButton.setVisible(false);
- setButtonLayoutData(updateButton);
+ if (abstractRepositoryQueryPage != null) {
+ if (abstractRepositoryQueryPage.needsRefresh()) {
+ refreshButton = createButton(composite, REFRESH_BUTTON_ID,
+ Messages.QueryWizardDialog_Update_Attributes_from_Repository, false);
+ refreshButton.setVisible(false);
+ setButtonLayoutData(refreshButton);
+ }
+ if (abstractRepositoryQueryPage.needsClear()) {
+ clearButton = createButton(composite, CLEAR_BUTTON_ID, Messages.QueryWizardDialog_Clear_Fields, false);
+ clearButton.setVisible(false);
+ setButtonLayoutData(clearButton);
+ }
+ }
}
@Override
protected void updateExtraButtons() {
if (abstractRepositoryQueryPage != null) {
abstractRepositoryQueryPage.setExtraButtonState(clearButton);
- abstractRepositoryQueryPage.setExtraButtonState(updateButton);
+ abstractRepositoryQueryPage.setExtraButtonState(refreshButton);
}
}
@@ -87,9 +92,9 @@ public class QueryWizardDialog extends EnhancedWizardDialog {
savedEnabledState.put(CLEAR_BUTTON_KEY, clearButton.getEnabled());
clearButton.setEnabled(false);
}
- if (updateButton != null && updateButton.getShell() == getShell()) {
- savedEnabledState.put(UPDATE_BUTTON_KEY, updateButton.getEnabled());
- updateButton.setEnabled(false);
+ if (refreshButton != null && refreshButton.getShell() == getShell()) {
+ savedEnabledState.put(REFRESH_BUTTON_KEY, refreshButton.getEnabled());
+ refreshButton.setEnabled(false);
}
}
return savedEnabledState;
@@ -107,9 +112,9 @@ public class QueryWizardDialog extends EnhancedWizardDialog {
if (clearButton != null && savedValidateEnabledState != null) {
clearButton.setEnabled(savedValidateEnabledState);
}
- savedValidateEnabledState = savedEnabledState.get(UPDATE_BUTTON_KEY);
- if (updateButton != null && savedValidateEnabledState != null) {
- updateButton.setEnabled(savedValidateEnabledState);
+ savedValidateEnabledState = savedEnabledState.get(REFRESH_BUTTON_KEY);
+ if (refreshButton != null && savedValidateEnabledState != null) {
+ refreshButton.setEnabled(savedValidateEnabledState);
}
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties
index e1a25a32d..eae725128 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/messages.properties
@@ -159,3 +159,13 @@ LocalRepositorySettingsPage_Configure_the_local_repository=Configure the local r
LocalRepositorySettingsPage_Local_Repository_Settings=Local Repository Settings
QueryWizardDialog_Clear_Fields=Clear Fields
QueryWizardDialog_Update_Attributes_from_Repository=Refresh
+
+AbstractRepositoryQueryPage2__Refresh_From_Repository=&Refresh
+AbstractRepositoryQueryPage2__Title_=&Title:
+AbstractRepositoryQueryPage2_Clear_Fields=Clear Fields
+AbstractRepositoryQueryPage2_Create_a_Query_Page_Description=Create a query.
+AbstractRepositoryQueryPage2_Enter_a_title=Enter a title
+AbstractRepositoryQueryPage2_Enter_query_parameters=Enter query parameters
+AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view=No repository available, please add one using the Task Repositories view.
+AbstractRepositoryQueryPage2_Refresh_Configuration_Button_Label=Refresh Configuration
+AbstractRepositoryQueryPage2_Update_Attributes_Failed=Update Attributes Failed
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage.java
index 0140e79ef..09d75c7d3 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage.java
@@ -32,6 +32,8 @@ import org.eclipse.swt.widgets.Control;
/**
* Extend to provide repository-specific query page to the Workbench search dialog.
+ * <p>
+ * It is recommended that clients extend {@link AbstractRepositoryQueryPage2} instead.
*
* @author Rob Elves
* @author Steffen Pingel
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java
new file mode 100644
index 000000000..2b4204c8c
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositoryQueryPage2.java
@@ -0,0 +1,426 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2009 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Tasktop Technologies - initial API and implementation
+ * Frank Becker - improvements
+ *******************************************************************************/
+package org.eclipse.mylyn.tasks.ui.wizards;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.ProgressMonitorPart;
+import org.eclipse.mylyn.internal.provisional.commons.ui.CommonUiUtil;
+import org.eclipse.mylyn.internal.provisional.commons.ui.ProgressContainer;
+import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
+import org.eclipse.mylyn.internal.tasks.ui.wizards.Messages;
+import org.eclipse.mylyn.internal.tasks.ui.wizards.QueryWizardDialog;
+import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
+import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.ui.TasksUi;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.IProgressService;
+
+/**
+ * @author Steffen Pingel
+ * @author Frank Becker
+ * @since 3.7
+ */
+public abstract class AbstractRepositoryQueryPage2 extends AbstractRepositoryQueryPage {
+
+ private Button cancelButton;
+
+ private final AbstractRepositoryConnector connector;
+
+ private boolean firstTime = true;
+
+ private Composite innerComposite;
+
+ private boolean needsClear;
+
+ private boolean needsRefresh = true;
+
+ private ProgressContainer progressContainer;
+
+ private Button refreshButton;
+
+ private Text titleText;
+
+ private Composite buttonComposite;
+
+ public AbstractRepositoryQueryPage2(String pageName, TaskRepository repository, IRepositoryQuery query) {
+ super(pageName, repository, query);
+ this.connector = TasksUi.getRepositoryConnector(getTaskRepository().getConnectorKind());
+ setTitle(Messages.AbstractRepositoryQueryPage2_Enter_query_parameters);
+ }
+
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(composite);
+ GridLayout layout = new GridLayout(2, false);
+ if (inSearchContainer()) {
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ }
+ composite.setLayout(layout);
+
+ createTitleGroup(composite);
+
+ innerComposite = new Composite(composite, SWT.NONE);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).span(2, 1).applyTo(innerComposite);
+ innerComposite.setLayout(new FillLayout());
+ createPageContent(innerComposite);
+
+ createButtonGroup(composite);
+
+ if (!needsRefresh) {
+ setDescription(Messages.AbstractRepositoryQueryPage2_Create_a_Query_Page_Description);
+ }
+
+ if (getQuery() != null) {
+ titleText.setText(getQuery().getSummary());
+ restoreState(getQuery());
+ }
+
+ Dialog.applyDialogFont(composite);
+ setControl(composite);
+ }
+
+ @Override
+ public String getQueryTitle() {
+ return (titleText != null) ? titleText.getText() : null;
+ }
+
+ public boolean handleExtraButtonPressed(int buttonId) {
+ if (buttonId == QueryWizardDialog.REFRESH_BUTTON_ID) {
+ if (getTaskRepository() != null) {
+ updateAttributesFromRepository(true);
+ } else {
+ MessageDialog.openInformation(
+ Display.getCurrent().getActiveShell(),
+ Messages.AbstractRepositoryQueryPage2_Update_Attributes_Failed,
+ Messages.AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view);
+ }
+ return true;
+ } else if (buttonId == QueryWizardDialog.CLEAR_BUTTON_ID) {
+ doClearFields();
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ if (titleText != null && titleText.getText().length() > 0) {
+ return true;
+ }
+ setMessage(Messages.AbstractRepositoryQueryPage2_Enter_a_title);
+ return false;
+ }
+
+ public boolean needsClear() {
+ return needsClear;
+ }
+
+ public boolean needsRefresh() {
+ return needsRefresh;
+ }
+
+ @Override
+ public boolean performSearch() {
+ if (inSearchContainer()) {
+ saveState();
+ }
+ return super.performSearch();
+ }
+
+ @Override
+ public void saveState() {
+ if (inSearchContainer()) {
+ RepositoryQuery query = new RepositoryQuery(getTaskRepository().getConnectorKind(), "handle"); //$NON-NLS-1$
+ applyTo(query);
+
+ IDialogSettings settings = getDialogSettings();
+ settings.put(getSavedStateSettingKey(), query.getRepositoryUrl());
+ }
+ }
+
+ public void setExtraButtonState(Button button) {
+ Integer obj = (Integer) button.getData();
+ if (obj == QueryWizardDialog.REFRESH_BUTTON_ID) {
+ if (needsRefresh) {
+ if (!button.isVisible()) {
+ button.setVisible(true);
+ }
+ button.setEnabled(true);
+ } else {
+ if (button != null && button.isVisible()) {
+ button.setVisible(false);
+ }
+ }
+ } else if (obj == QueryWizardDialog.CLEAR_BUTTON_ID) {
+ if (!button.isVisible()) {
+ button.setVisible(true);
+ }
+ button.setEnabled(true);
+ }
+
+ }
+
+ public void setNeedsClear(boolean needsClearButton) {
+ this.needsClear = needsClearButton;
+ }
+
+ public void setNeedsRefresh(boolean needsRepositoryConfiguration) {
+ this.needsRefresh = needsRepositoryConfiguration;
+ }
+
+ public void setQueryTitle(String text) {
+ if (titleText != null) {
+ titleText.setText(text);
+ }
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+
+ if (getSearchContainer() != null) {
+ getSearchContainer().setPerformActionEnabled(true);
+ }
+
+ if (visible && firstTime) {
+ firstTime = false;
+ if (!hasRepositoryConfiguration() && needsRefresh) {
+ // delay the execution so the dialog's progress bar is visible
+ // when the attributes are updated
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ if (getControl() != null && !getControl().isDisposed()) {
+ initializePage();
+ }
+ }
+
+ });
+ } else {
+ // no remote connection is needed to get attributes therefore do
+ // not use delayed execution to avoid flickering
+ initializePage();
+ }
+ }
+ }
+
+ private void createButtonGroup(Composite parent) {
+ buttonComposite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(1, false);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ buttonComposite.setLayout(layout);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).span(2, 1).applyTo(buttonComposite);
+ createButtons(buttonComposite);
+ layout.numColumns = buttonComposite.getChildren().length;
+ }
+
+ private void createTitleGroup(Composite control) {
+ if (inSearchContainer()) {
+ return;
+ }
+
+ Label titleLabel = new Label(control, SWT.NONE);
+ titleLabel.setText(Messages.AbstractRepositoryQueryPage2__Title_);
+
+ titleText = new Text(control, SWT.BORDER);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).applyTo(titleText);
+ titleText.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getContainer().updateButtons();
+ }
+ });
+ }
+
+ private void initializePage() {
+ if (needsRefresh) {
+ updateAttributesFromRepository(false);
+ }
+ boolean restored = (getQuery() != null);
+ if (inSearchContainer()) {
+ restored |= restoreSavedState();
+ }
+ if (!restored) {
+ // initialize with default values
+ }
+ }
+
+ private void updateAttributesFromRepository(final boolean force) {
+ if (!hasRepositoryConfiguration() || force) {
+ setErrorMessage(null);
+ try {
+ IRunnableWithProgress runnable = new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ monitor = SubMonitor.convert(monitor);
+ monitor.beginTask(Messages.AbstractRepositoryQueryPage2_Refresh_Configuration_Button_Label,
+ IProgressMonitor.UNKNOWN);
+ try {
+ connector.updateRepositoryConfiguration(getTaskRepository(), monitor);
+ } catch (CoreException e) {
+ throw new InvocationTargetException(e);
+ } catch (OperationCanceledException e) {
+ throw new InterruptedException();
+ } finally {
+ monitor.done();
+ }
+ }
+ };
+
+ if (getContainer() != null) {
+ getContainer().run(true, true, runnable);
+ } else if (progressContainer != null) {
+ progressContainer.run(true, true, runnable);
+ } else if (getSearchContainer() != null) {
+ getSearchContainer().getRunnableContext().run(true, true, runnable);
+ } else {
+ IProgressService service = PlatformUI.getWorkbench().getProgressService();
+ service.busyCursorWhile(runnable);
+ }
+ } catch (InvocationTargetException e) {
+ if (e.getCause() instanceof CoreException) {
+ setErrorMessage(((CoreException) e.getCause()).getStatus().getMessage());
+ } else {
+ setErrorMessage(e.getCause().getMessage());
+ }
+ return;
+ } catch (InterruptedException e) {
+ return;
+ }
+ }
+
+ doRefresh();
+ }
+
+ protected void createButtons(final Composite composite) {
+ if (getContainer() instanceof QueryWizardDialog) {
+ // refresh and clear buttons are provided by the dialog
+ return;
+ }
+ if (needsRefresh) {
+ refreshButton = new Button(composite, SWT.PUSH);
+ refreshButton.setText(Messages.AbstractRepositoryQueryPage2__Refresh_From_Repository);
+ refreshButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (getTaskRepository() != null) {
+ updateAttributesFromRepository(true);
+ } else {
+ MessageDialog.openInformation(
+ Display.getCurrent().getActiveShell(),
+ Messages.AbstractRepositoryQueryPage2_Update_Attributes_Failed,
+ Messages.AbstractRepositoryQueryPage2_No_repository_available_please_add_one_using_the_Task_Repositories_view);
+ }
+ }
+ });
+ }
+ if (needsClear) {
+ Button clearButton = new Button(composite, SWT.PUSH);
+ clearButton.setText(Messages.AbstractRepositoryQueryPage2_Clear_Fields);
+ clearButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ doClearFields();
+ }
+ });
+ }
+ final ProgressMonitorPart progressMonitorPart = new ProgressMonitorPart(composite, null);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).applyTo(progressMonitorPart);
+ progressMonitorPart.setVisible(false);
+ progressContainer = new ProgressContainer(composite.getShell(), progressMonitorPart) {
+ @Override
+ protected void restoreUiState(java.util.Map<Object, Object> state) {
+ cancelButton.setVisible(false);
+ CommonUiUtil.setEnabled(innerComposite, true);
+ for (Control control : buttonComposite.getChildren()) {
+ if (control instanceof ProgressMonitorPart) {
+ break;
+ }
+ control.setEnabled(true);
+ }
+ }
+
+ @Override
+ protected void saveUiState(java.util.Map<Object, Object> savedState) {
+ CommonUiUtil.setEnabled(innerComposite, false);
+ for (Control control : buttonComposite.getChildren()) {
+ if (control instanceof ProgressMonitorPart) {
+ break;
+ }
+ control.setEnabled(false);
+ }
+ cancelButton.setEnabled(true);
+ cancelButton.setVisible(true);
+ }
+ };
+
+ cancelButton = new Button(composite, SWT.PUSH);
+ cancelButton.setText(IDialogConstants.CANCEL_LABEL);
+ cancelButton.setVisible(false);
+ progressContainer.setCancelButton(cancelButton);
+ }
+
+ protected abstract void createPageContent(Composite parent);
+
+ protected void doClearFields() {
+ }
+
+ protected abstract void doRefresh();
+
+ protected AbstractRepositoryConnector getConnector() {
+ return connector;
+ }
+
+ protected String getSavedStateSettingKey() {
+ return getName() + "." + getTaskRepository().getRepositoryUrl(); //$NON-NLS-1$
+ }
+
+ protected abstract boolean hasRepositoryConfiguration();
+
+ protected boolean restoreSavedState() {
+ IDialogSettings settings = getDialogSettings();
+ String queryUrl = settings.get(getSavedStateSettingKey());
+ if (queryUrl != null) {
+ RepositoryQuery query = new RepositoryQuery(getTaskRepository().getConnectorKind(), "handle"); //$NON-NLS-1$
+ query.setUrl(queryUrl);
+ return restoreState(query);
+ }
+ return false;
+ }
+
+ protected abstract boolean restoreState(IRepositoryQuery query);
+
+}

Back to the top