diff options
Diffstat (limited to 'org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java')
-rw-r--r-- | org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java index cc4dca417..37fe7dc48 100644 --- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java +++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. + * Copyright (c) 2000, 2009 IBM Corporation 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 @@ -22,6 +22,7 @@ import org.eclipse.core.runtime.jobs.IJobChangeListener; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.help.HelpSystem; import org.eclipse.help.internal.base.BaseHelpSystem; +import org.eclipse.help.internal.base.remote.RemoteStatusData; import org.eclipse.help.internal.search.federated.FederatedSearchEntry; import org.eclipse.help.internal.search.federated.FederatedSearchJob; import org.eclipse.help.search.ISearchEngineResult; @@ -32,8 +33,10 @@ import org.eclipse.help.ui.internal.IHelpUIConstants; import org.eclipse.help.ui.internal.Messages; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.jface.preference.PreferenceManager; +import org.eclipse.jface.resource.JFaceResources; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyAdapter; @@ -42,6 +45,7 @@ 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.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -58,6 +62,7 @@ import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.FormText; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.ImageHyperlink; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; @@ -71,6 +76,10 @@ public class SearchPart extends AbstractFormPart implements IHelpPart, IHelpUICo private static final String HREF_SEARCH_HELP = "/org.eclipse.platform.doc.user/tasks/help_search.htm"; //$NON-NLS-1$ private static boolean SEARCH_HELP_AVAILABLE = false; + + + private ImageHyperlink remoteStatusLink; + private boolean wasHelpUnavailable = false; static { InputStream is = HelpSystem.getHelpContent(HREF_SEARCH_HELP); @@ -232,10 +241,23 @@ public class SearchPart extends AbstractFormPart implements IHelpPart, IHelpUICo }); createScopeSection(toolkit); + + createRemoteStatusLink(toolkit); toolkit.paintBordersFor(container); jobListener = new JobListener(); Job.getJobManager().addJobChangeListener(jobListener); } + + public boolean isStale() + { + if (wasHelpUnavailable!=RemoteStatusData.isAnyRemoteHelpUnavailable()) + { + wasHelpUnavailable=RemoteStatusData.isAnyRemoteHelpUnavailable(); + return true; + } + + return false; + } private void createScopeSection(FormToolkit toolkit) { TableWrapData td; @@ -281,7 +303,35 @@ public class SearchPart extends AbstractFormPart implements IHelpPart, IHelpUICo updateSearchWordText(); toolkit.paintBordersFor(detailGroup); } + + private void createRemoteStatusLink(FormToolkit toolkit){ + TableWrapData td; + + + Image warningImage = JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING); + + remoteStatusLink = toolkit.createImageHyperlink(container, SWT.NULL); + remoteStatusLink.setText(Messages.remoteHelpUnavailable); + remoteStatusLink.setImage(warningImage); + remoteStatusLink.addHyperlinkListener(new HyperlinkAdapter() { + + public void linkActivated(HyperlinkEvent e) { + doRemoteStatus(); + } + }); + + if (wasHelpUnavailable = RemoteStatusData.isAnyRemoteHelpUnavailable()) + remoteStatusLink.setVisible(true); + else + remoteStatusLink.setVisible(false); + + td = new TableWrapData(); + td.colspan = 2; + td.align = TableWrapData.FILL; + remoteStatusLink.setLayoutData(td); + } + private void createAdvancedLink(Composite parent, FormToolkit toolkit) { advancedLink = toolkit.createHyperlink(parent, Messages.FederatedSearchPart_advanced, SWT.NULL); advancedLink.addHyperlinkListener(new HyperlinkAdapter() { @@ -569,6 +619,10 @@ public class SearchPart extends AbstractFormPart implements IHelpPart, IHelpUICo updateMasters(set); } + private void doRemoteStatus() { + SearchPart.this.parent.showURL("org.eclipse.help.webapp/SearchNetworkHelpStatus.html",true); //$NON-NLS-1$ + } + private void doChangeScopeSet() { ScopeSetDialog dialog = new ScopeSetDialog(container.getShell(), scopeSetManager, parent .getEngineManager()); @@ -640,6 +694,8 @@ public class SearchPart extends AbstractFormPart implements IHelpPart, IHelpUICo searchPending = false; doSearch(searchWordCombo.getText()); } + + remoteStatusLink.setVisible(RemoteStatusData.isAnyRemoteHelpUnavailable()); } public String getId() { |