Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDejan Gloszic2005-05-24 02:10:45 +0000
committerDejan Gloszic2005-05-24 02:10:45 +0000
commit3fd1b45365278d79d1b36eb11dbd6ea249470d66 (patch)
tree6a3a0df5a4d30626c85b3eca724ce8249a318255 /org.eclipse.help.ui
parent934fd080486547c28fc8d4ebfc47807bf9484d5f (diff)
downloadeclipse.platform.ua-3fd1b45365278d79d1b36eb11dbd6ea249470d66.tar.gz
eclipse.platform.ua-3fd1b45365278d79d1b36eb11dbd6ea249470d66.tar.xz
eclipse.platform.ua-3fd1b45365278d79d1b36eb11dbd6ea249470d66.zip
94566 Help search combo does not show old searches.
Diffstat (limited to 'org.eclipse.help.ui')
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ContextHelpPart.java2
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineResultSection.java2
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java5
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java7
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSet.java2
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java4
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetManager.java17
-rw-r--r--org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/SearchPart.java175
8 files changed, 143 insertions, 71 deletions
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ContextHelpPart.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ContextHelpPart.java
index fefcd39f5..db1b92b1e 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ContextHelpPart.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ContextHelpPart.java
@@ -245,7 +245,7 @@ public class ContextHelpPart extends SectionPart implements IHelpPart {
updateText(helpText);
updateDynamicHelp(context!=null);
}
-
+
private void updateTitle(boolean contextSupplied) {
String title = null;
if (lastContext != null && lastContext instanceof IContext2) {
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineResultSection.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineResultSection.java
index 211df3889..a2577ac72 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineResultSection.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/EngineResultSection.java
@@ -381,7 +381,7 @@ public class EngineResultSection {
buff.append("\" alt=\""); //$NON-NLS-1$
buff.append(Messages.SearchResultsPart_bmktooltip);
buff.append("\" text=\""); //$NON-NLS-1$
- buff.append(hit.getLabel());
+ buff.append(part.parent.escapeSpecialChars(hit.getLabel()));
buff.append("\""); //$NON-NLS-1$
buff.append("/>"); //$NON-NLS-1$
buff.append("</a>"); //$NON-NLS-1$
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java
index 400775682..97fda62c4 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ReusableHelpPart.java
@@ -985,8 +985,7 @@ public class ReusableHelpPart implements IHelpUIConstants,
}
public void update(IWorkbenchPart part, Control control) {
- mform.setInput(new ContextHelpProviderInput((IContextProvider) null,
- null, control, part));
+ mform.setInput(new ContextHelpProviderInput(null, null, control, part));
}
public void update(IContextProvider provider, IContext context, IWorkbenchPart part,
@@ -1030,8 +1029,8 @@ public class ReusableHelpPart implements IHelpUIConstants,
part = new BookmarksPart(parent, mform.getToolkit(), tbm);
}
if (part != null) {
+ mform.addPart(part);
part.init(this, id, memento);
- mform.addPart(part);
}
return part;
}
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java
index 7b63a7542..8d413121c 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopePreferenceDialog.java
@@ -26,6 +26,7 @@ import org.eclipse.swt.widgets.*;
public class ScopePreferenceDialog extends PreferenceDialog {
private EngineDescriptorManager descManager;
private ArrayList pendingOperations;
+ private boolean editable;
class PendingOperation {
int action;
@@ -45,9 +46,10 @@ public class ScopePreferenceDialog extends PreferenceDialog {
*/
private final static int DELETE_ID = IDialogConstants.CLIENT_ID + 2;
- public ScopePreferenceDialog(Shell parentShell, PreferenceManager manager, EngineDescriptorManager descManager) {
+ public ScopePreferenceDialog(Shell parentShell, PreferenceManager manager, EngineDescriptorManager descManager, boolean editable) {
super(parentShell, manager);
this.descManager = descManager;
+ this.editable = editable;
}
protected Control createTreeAreaContents(Composite parent) {
@@ -63,6 +65,7 @@ public class ScopePreferenceDialog extends PreferenceDialog {
Button lbutton = createButton(container, NEW_ID, Messages.ScopePreferenceDialog_new, false);
gd = (GridData)lbutton.getLayoutData();
+ lbutton.setEnabled(editable);
gd.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
Button rbutton = createButton(container, DELETE_ID, Messages.ScopePreferenceDialog_delete, false);
rbutton.setEnabled(false);
@@ -105,7 +108,7 @@ public class ScopePreferenceDialog extends PreferenceDialog {
if (obj instanceof ScopePreferenceManager.EnginePreferenceNode) {
ScopePreferenceManager.EnginePreferenceNode node = (ScopePreferenceManager.EnginePreferenceNode)obj;
EngineDescriptor desc = node.getDescriptor();
- removable = desc.isUserDefined();
+ removable = editable && desc.isUserDefined();
}
getButton(DELETE_ID).setEnabled(removable);
}
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSet.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSet.java
index c751f5eaa..8296ae2df 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSet.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSet.java
@@ -39,7 +39,7 @@ public class ScopeSet {
}
public boolean isEditable() {
- return !isDefault() && !isImplicit();
+ return !isDefault();
}
public boolean isDefault() {
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java
index 278836066..abb89091b 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetDialog.java
@@ -250,7 +250,7 @@ public class ScopeSetDialog extends ListDialog {
ScopeSet set = (ScopeSet)ssel.getFirstElement();
if (set!=null) {
PreferenceManager manager = new ScopePreferenceManager(descManager, set);
- PreferenceDialog dialog = new ScopePreferenceDialog(getShell(), manager, descManager);
+ PreferenceDialog dialog = new ScopePreferenceDialog(getShell(), manager, descManager, set.isEditable());
dialog.setPreferenceStore(set.getPreferenceStore());
dialog.create();
dialog.getShell().setText(NLS.bind(Messages.ScopePreferenceDialog_wtitle, set.getName()));
@@ -311,7 +311,7 @@ public class ScopeSetDialog extends ListDialog {
IStructuredSelection ssel = (IStructuredSelection)getTableViewer().getSelection();
editButton.setEnabled(ssel.isEmpty()==false);
ScopeSet set = (ScopeSet)ssel.getFirstElement();
- boolean editableSet = set!=null && set.isEditable();
+ boolean editableSet = set!=null && set.isEditable() && !set.isImplicit();
removeButton.setEnabled(editableSet);
renameButton.setEnabled(editableSet);
Button okButton = getOkButton();
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetManager.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetManager.java
index 2b7ffbd4d..528135013 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetManager.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/views/ScopeSetManager.java
@@ -23,6 +23,8 @@ import org.eclipse.jface.dialogs.IDialogSettings;
public class ScopeSetManager {
private ScopeSet activeSet;
+ private ScopeSet lastExplicitSet;
+
private static final String ACTIVE_SET = "activeScopeSet"; //$NON-NLS-1$
private ArrayList sets;
@@ -46,6 +48,17 @@ public class ScopeSetManager {
this.activeSet.save();
}
this.activeSet = set;
+ if (!activeSet.isImplicit())
+ lastExplicitSet = set;
+ }
+
+ public boolean restoreLastExplicitSet() {
+ if (activeSet != null && activeSet.isImplicit()
+ && lastExplicitSet != null) {
+ setActiveSet(lastExplicitSet);
+ return true;
+ }
+ return false;
}
public static void ensureLocation() {
@@ -74,6 +87,8 @@ public class ScopeSetManager {
ScopeSet set = (ScopeSet) sets.get(i);
if (set.isImplicit() == implicit)
result.add(set);
+ if (!implicit && set.isImplicit() && activeSet==set)
+ result.add(set);
}
return (ScopeSet[]) result.toArray(new ScopeSet[result.size()]);
}
@@ -126,6 +141,8 @@ public class ScopeSetManager {
.getDialogSettings();
String name = settings.get(ACTIVE_SET);
activeSet = findSet(name);
+ if (!activeSet.isImplicit())
+ lastExplicitSet = activeSet;
}
return activeSet;
}
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 db48d3720..cb93ef94e 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
@@ -10,27 +10,52 @@
*******************************************************************************/
package org.eclipse.help.ui.internal.views;
-import java.util.*;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.*;
+import java.util.ArrayList;
+import java.util.Observable;
+import java.util.Observer;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.help.internal.base.BaseHelpSystem;
-import org.eclipse.help.internal.search.federated.*;
-import org.eclipse.help.search.*;
-import org.eclipse.help.ui.internal.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.preference.*;
+import org.eclipse.help.internal.search.federated.FederatedSearchEntry;
+import org.eclipse.help.internal.search.federated.FederatedSearchJob;
+import org.eclipse.help.search.ISearchEngineResult;
+import org.eclipse.help.search.ISearchEngineResultCollector;
+import org.eclipse.help.search.ISearchScope;
+import org.eclipse.help.ui.internal.HelpUIResources;
+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.preference.PreferenceDialog;
+import org.eclipse.jface.preference.PreferenceManager;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.widgets.*;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+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.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IMemento;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.forms.*;
-import org.eclipse.ui.forms.events.*;
+import org.eclipse.ui.forms.AbstractFormPart;
+import org.eclipse.ui.forms.FormColors;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.widgets.*;
+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.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
public class SearchPart extends AbstractFormPart implements IHelpPart,
IHelpUIConstants {
@@ -64,23 +89,12 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
private ScopeSetManager scopeSetManager;
private EngineDescriptorManager descManager;
-
- //private static final int COMBO_HISTORY_SIZE = 10;
-
- private Listener focusFilter = new Listener() {
- public void handleEvent(Event e) {
- switch (e.type) {
- case SWT.FocusIn:
- //System.out.println("Focus gained: "+e.widget);
- break;
- case SWT.FocusOut:
- //System.out.println("Focus lost: "+e.widget);
- break;
- }
- }
- };
+
+ private static final int COMBO_HISTORY_SIZE = 10;
private JobListener jobListener;
+
+ private boolean searchPending;
private class JobListener implements IJobChangeListener, Runnable {
private boolean searchInProgress = false;
@@ -144,8 +158,6 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
scopeSetManager = new ScopeSetManager();
TableWrapLayout layout = new TableWrapLayout();
layout.numColumns = 2;
- PlatformUI.getWorkbench().getDisplay().addFilter(SWT.FocusIn, focusFilter);
- PlatformUI.getWorkbench().getDisplay().addFilter(SWT.FocusOut, focusFilter);
container.setLayout(layout);
// Search Expression
searchWordText = toolkit.createFormText(container, false);
@@ -424,51 +436,49 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
private void storeSearchHistory(String expression) {
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=95479
- /*
HistoryScopeSet sset = scopeSetManager.findSearchSet(expression);
- if (sset==null) {
+ if (sset == null) {
sset = new HistoryScopeSet(expression);
scopeSetManager.add(sset);
}
ScopeSet activeSet = scopeSetManager.getActiveSet();
- sset.copyFrom(activeSet);
+ sset.copyFrom(activeSet);
sset.save();
updateSearchCombo(sset);
searchWordCombo.setText(expression);
- */
}
private void updateSearchCombo(HistoryScopeSet current) {
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=95479
- /*
- ScopeSet [] sets = scopeSetManager.getScopeSets(true);
+ ScopeSet[] sets = scopeSetManager.getScopeSets(true);
ArrayList items = new ArrayList();
ArrayList toDelete = new ArrayList();
- if (current!=null)
- items.add(current.getExpression());
- for (int i=sets.length-1; i>=0; i--) {
- HistoryScopeSet sset = (HistoryScopeSet)sets[i];
- if (current!=null && sset==current) continue;
- if (sets.length-i>COMBO_HISTORY_SIZE)
+ // if (current!=null)
+ // items.add(current.getExpression());
+ for (int i = sets.length - 1; i >= 0; i--) {
+ HistoryScopeSet sset = (HistoryScopeSet) sets[i];
+ if (current != null && sset == current)
+ continue;
+ if (sets.length - i > COMBO_HISTORY_SIZE)
toDelete.add(sset);
items.add(sset.getExpression());
}
- for (int i=0; i<toDelete.size(); i++) {
- HistoryScopeSet sset = (HistoryScopeSet)toDelete.get(i);
+ for (int i = 0; i < toDelete.size(); i++) {
+ HistoryScopeSet sset = (HistoryScopeSet) toDelete.get(i);
scopeSetManager.remove(sset);
}
- if (items.size()>0)
- searchWordCombo.setItems((String[])items.toArray(new String[items.size()]));
- */
+ if (items.size() > 0)
+ searchWordCombo.setItems((String[]) items.toArray(new String[items
+ .size()]));
}
private void searchFromHistory(int index) {
- ScopeSet [] sets = scopeSetManager.getScopeSets(true);
- if (index>=sets.length) return;
- HistoryScopeSet sset = (HistoryScopeSet)sets[index];
- String expression = sset.getExpression();
- setActiveScopeSet(sset);
- doSearch(expression);
+ String expression = searchWordCombo.getSelection();
+ ScopeSet set = scopeSetManager.findSearchSet(expression);
+ if (set == null)
+ return;
+ setActiveScopeSet(set);
+ doSearch(expression, true);
}
private void handleButtonPressed() {
@@ -479,10 +489,25 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
stop();
}
}
-
+
private void doSearch(String text) {
- storeSearchHistory(text);
+ doSearch(text, false);
+ }
+
+ private void doSearch(String text, boolean fromHistory) {
ScopeSet set = scopeSetManager.getActiveSet();
+ if (!fromHistory && set instanceof HistoryScopeSet) {
+ String setExpression = ((HistoryScopeSet)set).getExpression();
+ if (setExpression.equals(text))
+ fromHistory=true;
+ }
+ if (!fromHistory) {
+ storeSearchHistory(text);
+ boolean switchedSet = scopeSetManager.restoreLastExplicitSet();
+ set = scopeSetManager.getActiveSet();
+ if (switchedSet)
+ setActiveScopeSet(set);
+ }
ArrayList entries = new ArrayList();
final SearchResultsPart results = (SearchResultsPart) parent
.findPart(IHelpUIConstants.HV_FSEARCH_RESULT);
@@ -500,7 +525,8 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
results.add(ed, searchResult);
}
- public void accept(ISearchEngineResult[] searchResults) {
+ public void accept(
+ ISearchEngineResult[] searchResults) {
results.add(ed, searchResults);
}
@@ -529,7 +555,7 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
ScopeSet set = scopeSetManager.getActiveSet();
PreferenceManager manager = new ScopePreferenceManager(descManager, set);
PreferenceDialog dialog = new ScopePreferenceDialog(container
- .getShell(), manager, descManager);
+ .getShell(), manager, descManager, set.isEditable());
dialog.setPreferenceStore(set.getPreferenceStore());
dialog.create();
dialog.getShell().setText(
@@ -557,8 +583,6 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
activeSet.save();
Platform.getJobManager().removeJobChangeListener(jobListener);
stop();
- PlatformUI.getWorkbench().getDisplay().removeFilter(SWT.FocusIn, focusFilter);
- PlatformUI.getWorkbench().getDisplay().removeFilter(SWT.FocusOut, focusFilter);
super.dispose();
}
@@ -580,8 +604,33 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
this.parent = parent;
this.id = id;
parent.hookFormText(searchWordText);
+ if (memento != null)
+ restorePart(memento);
+ }
+
+ private void restorePart(IMemento memento) {
+ String setName = memento.getString("activeSet"); //$NON-NLS-1$
+ if (setName != null) {
+ ScopeSet sset = scopeSetManager.findSet(setName);
+ if (sset != null)
+ scopeSetManager.setActiveSet(sset);
+ }
+ String expression = memento.getString("expression"); //$NON-NLS-1$
+ if (expression!=null) {
+ searchWordCombo.setText(expression);
+ searchPending=true;
+ markStale();
+ }
}
+ public void refresh() {
+ super.refresh();
+ if (searchPending) {
+ searchPending=false;
+ doSearch(searchWordCombo.getText());
+ }
+ }
+
public String getId() {
return id;
}
@@ -639,5 +688,9 @@ public class SearchPart extends AbstractFormPart implements IHelpPart,
}
public void saveState(IMemento memento) {
+ ScopeSet sset = scopeSetManager.getActiveSet();
+ if (sset != null)
+ memento.putString("activeSet", sset.getName()); //$NON-NLS-1$
+ memento.putString("expression", searchWordCombo.getText()); //$NON-NLS-1$
}
}

Back to the top