diff options
author | Dejan Gloszic | 2005-05-24 02:10:45 +0000 |
---|---|---|
committer | Dejan Gloszic | 2005-05-24 02:10:45 +0000 |
commit | 3fd1b45365278d79d1b36eb11dbd6ea249470d66 (patch) | |
tree | 6a3a0df5a4d30626c85b3eca724ce8249a318255 /org.eclipse.help.ui | |
parent | 934fd080486547c28fc8d4ebfc47807bf9484d5f (diff) | |
download | eclipse.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')
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$ } } |