modules/core/domain/src/main/java/org/rhq/core/domain/search/SearchSuggestion.java
| 22
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
| 27 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/AbstractSearchStrategy.java
| 19
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/BasicSearchStrategy.java
| 99 +---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/EnhancedSearchBar.java
| 226 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/FavoritesSearchStrategy.java
| 48 +-
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ko.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
| 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/SavedSearchManagerBean.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
| 20
16 files changed, 302 insertions(+), 185 deletions(-)
New commits:
commit c3c5d36953256f25cf9a2ef24fe258f8c6ff2d1c
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon Apr 1 16:39:48 2013 -0400
Bug 921927
Work on search bar issues:
- Add RecordDoubleClick handling to SearchStrategies, allows us to impl
SavedSearch delete via DblClick.
- Allow TableFilter to be disabled by SearchBar impl, allows SavedSearch
mode to not trigger searches.
- Add SavedSearch updateName/updatePattern/delete
- Fix up keypress delay by canceling timer as needed
- Add SavedSearch hover showing pattern in suggest list
- Tie suggestion box size/positioning to search text box
- Add some more ignored keys
- A variety of other behavioral tweeks
- Remove unncessary field defs in search strategy impls
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/search/SearchSuggestion.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/search/SearchSuggestion.java
index fb1b135..7ecfa14 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/search/SearchSuggestion.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/search/SearchSuggestion.java
@@ -32,6 +32,7 @@ public class SearchSuggestion implements Serializable,
Comparable<SearchSuggesti
private Kind kind;
private String value;
+ private String optional; // optional data based on kind.
private String label;
private int startIndex;
private int endIndex;
@@ -41,21 +42,22 @@ public class SearchSuggestion implements Serializable,
Comparable<SearchSuggesti
}
public SearchSuggestion(Kind kind, String value) {
- this(kind, value, 0, 0);
+ this(kind, value, value, null, 0, 0);
}
public SearchSuggestion(Kind kind, String value, int startIndex, int length) {
- this.kind = kind;
- this.label = value;
- this.value = value;
- this.startIndex = startIndex;
- this.endIndex = startIndex + length;
+ this(kind, value, value, null, startIndex, length);
}
public SearchSuggestion(Kind kind, String label, String value, int startIndex, int
length) {
+ this(kind, label, value, null, startIndex, length);
+ }
+
+ public SearchSuggestion(Kind kind, String label, String value, String optional, int
startIndex, int length) {
this.kind = kind;
this.label = label;
this.value = value;
+ this.optional = optional;
this.startIndex = startIndex;
this.endIndex = startIndex + length;
}
@@ -76,6 +78,14 @@ public class SearchSuggestion implements Serializable,
Comparable<SearchSuggesti
return value;
}
+ public String getOptional() {
+ return optional;
+ }
+
+ public void setOptional(String optional) {
+ this.optional = optional;
+ }
+
public int getStartIndex() {
return startIndex;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index 7af378f..aac0f84 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -50,7 +50,6 @@ import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.events.DoubleClickEvent;
import com.smartgwt.client.widgets.events.DoubleClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
-import com.smartgwt.client.widgets.form.fields.ComboBoxItem;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.HiddenItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
@@ -82,12 +81,12 @@ import
org.rhq.enterprise.gui.coregui.client.components.form.EnhancedSearchBarIt
import org.rhq.enterprise.gui.coregui.client.util.CriteriaUtility;
import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
-import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedHLayout;
import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedIButton;
import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedToolStrip;
-import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedVLayout;
import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedUtility;
+import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedVLayout;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* A tabular view of set of data records from an {@link RPCDataSource}.
@@ -1226,16 +1225,18 @@ public class Table<DS extends RPCDataSource> extends
EnhancedHLayout implements
Log.debug("Table.TableFilter Pressed Enter key");
if (null != searchBarItem) {
- TextItem searchTextItem =
searchBarItem.getSearchBar().getSearchTextItem();
- String searchBarValue = searchTextItem.getValueAsString();
- String hiddenValue = (String) hiddenItem.getValue();
- Log.debug("Table.TableFilter searchBarValue :" +
searchBarValue + ", hiddenValue" + hiddenValue);
-
- // Only send a fetch request if the user actually changed the search
expression.
- if (!equals(searchBarValue, hiddenValue)) {
- hiddenItem.setValue(searchBarValue);
- Log.debug("Table.TableFilter fetchFilteredTableData");
- fetchFilteredTableData();
+ if (searchBarItem.getSearchBar().isFilterEnabled()) {
+ TextItem searchTextItem =
searchBarItem.getSearchBar().getSearchTextItem();
+ String searchBarValue = searchTextItem.getValueAsString();
+ String hiddenValue = (String) hiddenItem.getValue();
+ Log.debug("Table.TableFilter searchBarValue :" +
searchBarValue + ", hiddenValue" + hiddenValue);
+
+ // Only send a fetch request if the user actually changed the
search expression.
+ if (!equals(searchBarValue, hiddenValue)) {
+ hiddenItem.setValue(searchBarValue);
+ Log.debug("Table.TableFilter
fetchFilteredTableData");
+ fetchFilteredTableData();
+ }
}
} else {
fetchFilteredTableData();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/AbstractSearchStrategy.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/AbstractSearchStrategy.java
index a2d9891..c893386 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/AbstractSearchStrategy.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/AbstractSearchStrategy.java
@@ -18,10 +18,11 @@
*/
package org.rhq.enterprise.gui.coregui.client.searchbar;
-import com.smartgwt.client.widgets.form.fields.events.FocusEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent;
+import com.smartgwt.client.widgets.grid.events.RecordDoubleClickHandler;
import org.rhq.core.domain.auth.Subject;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
@@ -30,15 +31,13 @@ import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.gwt.SearchGWTServiceAsync;
-
/**
* AbstractSearchStrategy defines common search strategy behaviors the subclasses must
implement.
* Also, houses common functionality such as user auth and searching the domain.
*
* @author Mike Thompson
*/
-public abstract class AbstractSearchStrategy implements RecordClickHandler,
CellFormatter
-{
+public abstract class AbstractSearchStrategy implements RecordClickHandler,
RecordDoubleClickHandler, CellFormatter {
protected static final Messages MSG = CoreGUI.getMessages();
public static final String ATTR_ID = "id";
public static final String ATTR_KIND = "kind"; // not for saved search
@@ -47,13 +46,14 @@ public abstract class AbstractSearchStrategy implements
RecordClickHandler, Cel
public static final String ATTR_RESULT_COUNT = "resultCount";
public static final String ATTR_PATTERN = "pattern";
public static final String ATTR_VALUE = "value";
+ public static final String ATTR_OPTIONAL = "value";
- protected final SearchGWTServiceAsync searchService =
GWTServiceLookup.getSearchService();
+ protected final SearchGWTServiceAsync searchService =
GWTServiceLookup.getSearchService();
final Subject subject;
protected final EnhancedSearchBar searchBar;
- public AbstractSearchStrategy(EnhancedSearchBar searchBar){
+ public AbstractSearchStrategy(EnhancedSearchBar searchBar) {
this.searchBar = searchBar;
subject = UserSessionManager.getSessionSubject();
}
@@ -76,15 +76,18 @@ public abstract class AbstractSearchStrategy implements
RecordClickHandler, Cel
*/
public abstract int getCellHeight();
-
/**
* When return key is pressed in the search bar do I want to do any further
* customization. Optionally, overridden by subclass.
* @param keyUpEvent
*/
- public void searchReturnKeyHandler(KeyUpEvent keyUpEvent){
+ public void searchReturnKeyHandler(KeyUpEvent keyUpEvent) {
// do nothing by default
}
+ @Override
+ public void onRecordDoubleClick(RecordDoubleClickEvent event) {
+ // do nothing by default
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/BasicSearchStrategy.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/BasicSearchStrategy.java
index 5e9df27..efa985d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/BasicSearchStrategy.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/BasicSearchStrategy.java
@@ -23,20 +23,17 @@ import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.fields.DataSourceTextField;
-import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent;
+import com.smartgwt.client.widgets.grid.HoverCustomizer;
import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
-import org.rhq.core.domain.criteria.SavedSearchCriteria;
-import org.rhq.core.domain.search.SavedSearch;
import org.rhq.core.domain.search.SearchSubsystem;
import org.rhq.core.domain.search.SearchSuggestion;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.Log;
-import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* This is the general search strategy implementation used for most searches.
@@ -85,50 +82,24 @@ public class BasicSearchStrategy extends AbstractSearchStrategy {
@Override
public void onRecordClick(RecordClickEvent event) {
Log.debug("BasicSearchStrategy click");
+
String kind = event.getRecord().getAttribute(ATTR_KIND);
+ String pattern;
+
if (kind.equals("SAVED") || kind.equals("GLOBAL")) {
Log.debug("Saved or Global Search Click");
- searchBar.switchToSavedSearchMode();
- String savedSearchName = event.getRecord().getAttribute(ATTR_VALUE);
- searchBar.getSaveSearchTextItem().setValue(savedSearchName);
- assignSavedSearchExpression(savedSearchName, searchBar.getSearchTextItem());
+ pattern = event.getRecord().getAttribute(ATTR_PATTERN);
+
} else {
Log.debug("Regular Search Click");
- String clickedExpression = event.getRecord().getAttribute(ATTR_NAME);
- searchBar.getSearchTextItem().setValue(clickedExpression);
- if (null != clickedExpression && clickedExpression.length() > 0)
{
- getTabAwareSearchSuggestions(SearchSubsystem.RESOURCE, clickedExpression,
clickedExpression.length());
- }
+ pattern = event.getRecord().getAttribute(ATTR_NAME);
}
- }
-
- private void assignSavedSearchExpression(final String savedSearchName, final TextItem
searchComboBoxItem) {
- SavedSearchCriteria criteria = new SavedSearchCriteria();
- criteria.addFilterSubjectId(subject.getId());
- criteria.addFilterName(savedSearchName); // null OK
- criteria.setStrict(true);
-
- GWTServiceLookup.getSearchService().findSavedSearchesByCriteria(criteria,
- new AsyncCallback<List<SavedSearch>>() {
- @Override
- public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_searchBar_savedSearch_failFind(savedSearchName),
- caught);
- }
-
- @Override
- public void onSuccess(List<SavedSearch> results) {
- if (results.size() == 0) {
- CoreGUI.getMessageCenter().notify(
- new
Message(MSG.view_searchBar_savedSearch_failFind(savedSearchName),
- Message.Severity.Error));
- } else {
- SavedSearch savedSearch = results.get(0);
- searchComboBoxItem.setValue(savedSearch.getPattern());
- }
- }
- });
+ searchBar.getSearchTextItem().focusInItem();
+ if (!(null == pattern || pattern.isEmpty())) {
+ searchBar.getSearchTextItem().setValue(pattern);
+ getTabAwareSearchSuggestions(SearchSubsystem.RESOURCE, pattern,
pattern.length());
+ }
}
@Override
@@ -143,7 +114,6 @@ public class BasicSearchStrategy extends AbstractSearchStrategy {
Log.debug("Keyup in BasicSearchStrategy: " + keyUpEvent.getKeyName());
String searchExpression = searchBar.getSearchTextItem().getValueAsString();
doSearch(searchExpression);
-
}
@Override
@@ -152,13 +122,17 @@ public class BasicSearchStrategy extends AbstractSearchStrategy {
}
private void doSearch(String searchExpression) {
- if (null != searchExpression && searchExpression.length() > 0) {
- getTabAwareSearchSuggestions(SearchSubsystem.RESOURCE,
searchBar.getSearchTextItem().getValueAsString(),
- searchBar.getSearchTextItem().getValueAsString().length());
- } else {
+ if (null == searchExpression || searchExpression.isEmpty()) {
Log.debug("Empty Search expression");
getTabAwareSearchSuggestions(SearchSubsystem.RESOURCE, null, 0);
+ } else {
+ Log.debug("doSearch: " + searchExpression);
+ getTabAwareSearchSuggestions(SearchSubsystem.RESOURCE,
searchBar.getSearchTextItem().getValueAsString(),
+ searchBar.getSearchTextItem().getValueAsString().length());
}
+
+ // don't obscure the results
+ searchBar.getPickListGrid().hide();
}
@Override
@@ -169,8 +143,6 @@ public class BasicSearchStrategy extends AbstractSearchStrategy {
private void getTabAwareSearchSuggestions(final SearchSubsystem searchSubsystem,
final String expression,
int caretPosition) {
- searchBar.getPickListGrid().setData(new ListGridRecord[] {});
-
final long suggestStart = System.currentTimeMillis();
Log.debug("Searching for: " + expression);
@@ -189,19 +161,33 @@ public class BasicSearchStrategy extends AbstractSearchStrategy {
DataSourceTextField idField = new DataSourceTextField(ATTR_ID,
"Id");
idField.setPrimaryKey(true);
idField.setCanView(false);
+
DataSourceTextField valueField = new
DataSourceTextField(ATTR_VALUE, "Value");
- DataSourceTextField kindField = new
DataSourceTextField(ATTR_KIND, "Kind");
- kindField.setCanView(false);
- DataSourceTextField nameField = new
DataSourceTextField(ATTR_NAME, "Name");
- nameField.setCanView(false);
- ds.setFields(idField, valueField, kindField, nameField);
+
+ ds.setFields(idField, valueField);
searchBarPickListGrid.setDataSource(ds);
+ ListGridField[] fields = searchBarPickListGrid.getAllFields();
+ searchBarPickListGrid.getField(ATTR_VALUE).setShowHover(true);
+ searchBarPickListGrid.getField(ATTR_VALUE).setHoverCustomizer(new
HoverCustomizer() {
+
+ public String hoverHTML(Object value, ListGridRecord record,
int rowNum, int colNum) {
+ String kind = record.getAttribute(ATTR_KIND);
+ if (kind.equals("SAVED") ||
kind.equals("GLOBAL")) {
+ String pattern = record.getAttribute(ATTR_PATTERN);
+
+ if (!(null == pattern || pattern.isEmpty())) {
+ return pattern;
+ }
+ }
+
+ return null;
+ }
+ });
} else {
ds.invalidateCache();
}
- searchBarPickListGrid.setData(new ListGridRecord[] {});
for (SearchSuggestion searchSuggestion : results) {
Log.debug("search tab aware Suggestions: " +
searchSuggestion.getKind() + ", "
@@ -213,10 +199,13 @@ public class BasicSearchStrategy extends AbstractSearchStrategy {
}
record.setAttribute(ATTR_NAME, searchSuggestion.getLabel());
record.setAttribute(ATTR_VALUE, searchSuggestion.getValue());
+ String pattern = searchSuggestion.getOptional();
+ record.setAttribute(ATTR_PATTERN, (null == pattern) ?
"" : pattern);
ds.addData(record);
}
try {
+ searchBarPickListGrid.setData(new ListGridRecord[] {});
searchBarPickListGrid.fetchData();
} catch (Exception e) {
Log.debug("Caught exception on fetchData: " + e);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/EnhancedSearchBar.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/EnhancedSearchBar.java
index 4af9bce..c150765 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/EnhancedSearchBar.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/EnhancedSearchBar.java
@@ -24,18 +24,14 @@ import java.util.List;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.types.Autofit;
-import com.smartgwt.client.types.Overflow;
+import com.smartgwt.client.core.Rectangle;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.events.MouseOutEvent;
-import com.smartgwt.client.widgets.events.MouseOutHandler;
import com.smartgwt.client.widgets.form.fields.TextItem;
-import com.smartgwt.client.widgets.form.fields.events.FocusEvent;
-import com.smartgwt.client.widgets.form.fields.events.FocusHandler;
import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyUpHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
import com.smartgwt.client.widgets.toolbar.ToolStripButton;
@@ -63,10 +59,8 @@ import org.rhq.enterprise.gui.coregui.client.util.message.Message;
*/
public class EnhancedSearchBar extends ToolStrip {
private static final Messages MSG = CoreGUI.getMessages();
- private static final int PICKLIST_WIDTH = 600;
+ private static final int SEARCH_WIDTH = 600;
private static final int PICKLIST_HEIGHT = 500;
- private static final int PICKLIST_LEFT_OFFSET = 307;
- private static final int PICKLIST_TOP_OFFSET = 140;
private SearchSubsystem searchSubsystem;
private ToolStripButton searchTextButton;
private ToolStripButton saveSearchButton;
@@ -76,6 +70,7 @@ public class EnhancedSearchBar extends ToolStrip {
private final FavoritesSearchStrategy favoritesSearchStrategy;
private final BasicSearchStrategy basicSearchStrategy;
private String lastSearchTerm;
+ private Timer searchDelayTimer;
private final SearchGWTServiceAsync searchService =
GWTServiceLookup.getSearchService();
@@ -88,9 +83,12 @@ public class EnhancedSearchBar extends ToolStrip {
private static final List<String> IGNORED_KEYS;
static {
- IGNORED_KEYS = new ArrayList<String>(2);
+ IGNORED_KEYS = new ArrayList<String>();
IGNORED_KEYS.add("Arrow_Down");
IGNORED_KEYS.add("Arrow_Up");
+ IGNORED_KEYS.add("Arrow_Left");
+ IGNORED_KEYS.add("Arrow_Right");
+ IGNORED_KEYS.add("Backspace");
}
enum SearchMode {
@@ -106,7 +104,6 @@ public class EnhancedSearchBar extends ToolStrip {
private EnumMap<SearchMode, AbstractSearchStrategy> searchStrategies = new
EnumMap<SearchMode, AbstractSearchStrategy>(
SearchMode.class);
-
public EnhancedSearchBar(SearchSubsystem searchSubsystem, String initialSearchText)
{
if (null == searchSubsystem) {
this.searchSubsystem = SearchSubsystem.RESOURCE; // default to resource
@@ -118,72 +115,75 @@ public class EnhancedSearchBar extends ToolStrip {
addSpacer(40);
searchTextItem = new TextItem("search", MSG.common_button_search());
- // now that we have searchComboBoxItem setup dependent objects
favoritesSearchStrategy = new FavoritesSearchStrategy(this);
basicSearchStrategy = new BasicSearchStrategy(this);
// now we can fill our enumMap
searchStrategies.put(SearchMode.BASIC_SEARCH_MODE, basicSearchStrategy);
searchStrategies.put(SearchMode.SAVED_SEARCH_MODE, favoritesSearchStrategy);
- searchTextItem.setWidth(PICKLIST_WIDTH);
+ searchTextItem.setWidth(SEARCH_WIDTH);
searchTextItem.setBrowserSpellCheck(false);
pickListGrid = new ListGrid();
- searchTextItem.setRedrawOnChange(true);
- // this changes it to autocomplete field from combobox
searchTextItem.addKeyUpHandler(new KeyUpHandler() {
- @Override
+
public void onKeyUp(final KeyUpEvent keyUpEvent) {
- Log.debug("onKeyUp search Mode: " + searchMode + " key:
"+keyUpEvent.getKeyName());
+ Log.debug("onKeyUp search Mode: " + searchMode + " key:
" + keyUpEvent.getKeyName());
+ keyUpEvent.cancel();
if (IGNORED_KEYS.contains(keyUpEvent.getKeyName())) {
return;
}
if (keyUpEvent.getKeyName().equals("Enter")) {
- String currentSearchTerm = (String)keyUpEvent.getItem().getValue();
+ if (getSearchMode().equals(SearchMode.SAVED_SEARCH_MODE)) {
+ return;
+ }
+
+ String currentSearchTerm = (String) keyUpEvent.getItem().getValue();
+ currentSearchTerm = (null == currentSearchTerm) ? "" :
currentSearchTerm; // avoid NPEs
Log.debug("onKeyUp search Mode Enter key pressed");
+
// stop any duplicate searches
- if(!currentSearchTerm.equalsIgnoreCase(lastSearchTerm)){
+ if (!currentSearchTerm.equalsIgnoreCase(lastSearchTerm)) {
getSearchStrategy().searchReturnKeyHandler(keyUpEvent);
searchTextItem.focusInItem();
- pickListGrid.hide();
lastSearchTerm = currentSearchTerm;
}
- }
- else {
- Log.debug("Do searchKeyUpHandler...");
- // add our own delay
- new Timer(){
- /**
- * This method will be called when a timer fires. Override it to
implement the timer's logic.
- */
- @Override
- public void run() {
- getSearchStrategy().searchKeyUpHandler(keyUpEvent);
- pickListGrid.show();
- showPickListGrid();
- }
- }.schedule(SEARCH_KEYUP_DELAY);
+ } else if (keyUpEvent.getKeyName().equals("Escape")) {
+ if (pickListGrid.isVisible()) {
+ pickListGrid.hide();
+ }
+ } else {
+ if (null == searchDelayTimer) {
+ searchDelayTimer = new Timer() {
+
+ public void run() {
+ getSearchStrategy().searchKeyUpHandler(keyUpEvent);
+ pickListGrid.show();
+ }
+ };
+ } else {
+ searchDelayTimer.cancel();
+ }
+
+ // wait for some typing quiet time before performing a search
+ searchDelayTimer.schedule(SEARCH_KEYUP_DELAY);
}
}
});
-
- searchTextItem.addFocusHandler(new FocusHandler() {
- @Override
- public void onFocus(FocusEvent event) {
- Log.debug("onFocus search Mode: " + searchMode);
- populateInitialSearch();
- }
- });
searchTextItem.addClickHandler(new
com.smartgwt.client.widgets.form.fields.events.ClickHandler() {
@Override
public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent
clickEvent) {
- populateInitialSearch();
+ Log.debug("onClick search Mode: " + searchMode);
+ if (!pickListGrid.isDrawn() || pickListGrid.isVisible()) {
+ populateInitialSearch();
+ }
}
});
+
configurePickListGrid();
addFormItem(searchTextItem);
@@ -193,9 +193,10 @@ public class EnhancedSearchBar extends ToolStrip {
searchTextButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
- if(pickListGrid.isVisible()){
+ if (pickListGrid.isVisible()) {
pickListGrid.hide();
- }else {
+ searchTextItem.focusInItem();
+ } else {
populateInitialSearch();
}
}
@@ -226,26 +227,57 @@ public class EnhancedSearchBar extends ToolStrip {
}
}
});
- pickListGrid.addMouseOutHandler(new MouseOutHandler() {
- @Override
- public void onMouseOut(MouseOutEvent mouseOutEvent) {
- pickListGrid.hide();
- }
- });
+
// set the default search provider
- switchToBasicSearchMode();
+ setSearchMode(SearchMode.BASIC_SEARCH_MODE);
this.draw();
}
+
private void populateInitialSearch() {
getSearchStrategy().searchFocusHandler();
pickListGrid.show();
showPickListGrid();
+ searchTextItem.focusInItem();
}
+
private void saveFavoriteSearch() {
- Log.debug("Saving Favorite Search: " +
saveSearchTextItem.getValueAsString());
- createSavedSearch(saveSearchTextItem.getValueAsString(),
searchTextItem.getValueAsString());
- toggleFavoriteSearch();
+ String savedSearchName = saveSearchTextItem.getValueAsString();
+ if (null == savedSearchName || savedSearchName.isEmpty()) {
+ return;
+ }
+
+ String savedSearchPattern = searchTextItem.getValueAsString();
+ if (null == savedSearchPattern || savedSearchPattern.isEmpty()) {
+ return;
+ }
+
+ // This may be a name change, a pattern change or a new saved search. Look at the
existing SS list and
+ // decided what to do.
+ boolean updated = false;
+ for (int i = 0, size = pickListGrid.getTotalRows(); !updated && (i <
size); ++i) {
+ ListGridRecord record = pickListGrid.getRecord(i);
+ String name = record.getAttribute(AbstractSearchStrategy.ATTR_NAME);
+ String pattern = record.getAttribute(AbstractSearchStrategy.ATTR_PATTERN);
+
+ if (savedSearchName.equalsIgnoreCase(name) &&
savedSearchPattern.equals(pattern)) {
+ return; // SS already exists
+
+ } else if (savedSearchName.equalsIgnoreCase(name)) {
+ Integer id = record.getAttributeAsInt(AbstractSearchStrategy.ATTR_ID);
+ updateSavedSearchPattern(id, savedSearchPattern);
+ updated = true;
+
+ } else if (savedSearchPattern.equals(pattern)) {
+ Integer id = record.getAttributeAsInt(AbstractSearchStrategy.ATTR_ID);
+ updateSavedSearchName(id, savedSearchName);
+ updated = true;
+ }
+ }
+
+ if (!updated) {
+ createSavedSearch(savedSearchName, savedSearchPattern);
+ }
}
public SearchMode getSearchMode() {
@@ -259,19 +291,16 @@ public class EnhancedSearchBar extends ToolStrip {
private void configurePickListGrid() {
pickListGrid.setCellHeight(getSearchStrategy().getCellHeight());
pickListGrid.addRecordClickHandler(getSearchStrategy());
+ pickListGrid.addRecordDoubleClickHandler(getSearchStrategy());
pickListGrid.setCellFormatter(getSearchStrategy());
pickListGrid.setShowHeader(false);
-// pickListGrid.setShowAllRecords(true);
-// pickListGrid.setBodyOverflow(Overflow.CLIP_V);
-// pickListGrid.setOverflow(Overflow.CLIP_V);
-// pickListGrid.setLeaveScrollbarGap(false);
-
}
- private void showPickListGrid(){
- pickListGrid.setLeft(searchTextItem.getLeft()+PICKLIST_LEFT_OFFSET);
- pickListGrid.setTop(searchTextItem.getTop()+PICKLIST_TOP_OFFSET);
- pickListGrid.setWidth(PICKLIST_WIDTH);
+ private void showPickListGrid() {
+ Rectangle searchTextRect = searchTextItem.getPageRect();
+ pickListGrid.setLeft(searchTextRect.getLeft());
+ pickListGrid.setWidth(searchTextRect.getWidth());
+ pickListGrid.setTop(searchTextRect.getTop() + searchTextRect.getHeight());
pickListGrid.setHeight(PICKLIST_HEIGHT);
pickListGrid.redraw();
}
@@ -293,25 +322,31 @@ public class EnhancedSearchBar extends ToolStrip {
}
public void switchToBasicSearchMode() {
+ pickListGrid.destroy();
+ pickListGrid = new ListGrid();
+
setSearchMode(SearchMode.BASIC_SEARCH_MODE);
saveSearchButton.setIcon(IconEnum.STAR_OFF.getIcon16x16Path());
saveSearchTextItem.hide();
configurePickListGrid();
- showPickListGrid();
+ populateInitialSearch();
}
public void switchToSavedSearchMode() {
+ pickListGrid.destroy();
+ pickListGrid = new ListGrid();
+
setSearchMode(SearchMode.SAVED_SEARCH_MODE);
+
saveSearchButton.setIcon(IconEnum.STAR_ON.getIcon16x16Path());
- saveSearchTextItem.show();
saveSearchTextItem.setValue(MSG.search_name_your_search());
- saveSearchTextItem.setSelectOnFocus(true);
saveSearchTextItem.selectValue();
+ saveSearchTextItem.show();
+
configurePickListGrid();
- showPickListGrid();
+ populateInitialSearch();
}
-
public String getValue() {
return searchTextItem.getValueAsString();
}
@@ -320,10 +355,28 @@ public class EnhancedSearchBar extends ToolStrip {
Subject subject = UserSessionManager.getSessionSubject();
SavedSearch newSavedSearch = new SavedSearch(searchSubsystem, name, pattern,
subject);
searchService.createSavedSearch(newSavedSearch, new
AsyncCallback<Integer>() {
- @Override
+
public void onSuccess(Integer newSavedSearchId) {
- Message message = new Message(MSG.search_successfully_saved_search(name),
Message.Severity.Info);
+ Message message = new Message(MSG.search_successfully_saved_search(name),
Message.Severity.Info);
+ CoreGUI.getMessageCenter().notify(message);
+ getSearchStrategy().searchFocusHandler();
+ }
+
+ public void onFailure(Throwable caught) {
+ Message message = new Message(MSG.search_failed_to_save_search(name),
Message.Severity.Error);
+ CoreGUI.getMessageCenter().notify(message);
+ }
+ });
+ }
+
+ private void updateSavedSearchName(final int id, final String name) {
+ Subject subject = UserSessionManager.getSessionSubject();
+ searchService.updateSavedSearchName(id, name, new AsyncCallback<Boolean>()
{
+
+ public void onSuccess(Boolean result) {
+ Message message = new Message(MSG.search_successfully_saved_search(name),
Message.Severity.Info);
CoreGUI.getMessageCenter().notify(message);
+ getSearchStrategy().searchFocusHandler();
}
@Override
@@ -334,10 +387,32 @@ public class EnhancedSearchBar extends ToolStrip {
});
}
+ private void updateSavedSearchPattern(final int id, final String pattern) {
+ Subject subject = UserSessionManager.getSessionSubject();
+ searchService.updateSavedSearchPattern(id, pattern, new
AsyncCallback<Boolean>() {
+
+ public void onSuccess(Boolean result) {
+ Message message = new
Message(MSG.search_successfully_saved_search(pattern), Message.Severity.Info);
+ CoreGUI.getMessageCenter().notify(message);
+ getSearchStrategy().searchFocusHandler();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Message message = new Message(MSG.search_failed_to_save_search(pattern),
Message.Severity.Error);
+ CoreGUI.getMessageCenter().notify(message);
+ }
+ });
+ }
+
public AbstractSearchStrategy getSearchStrategy() {
return searchStrategies.get(searchMode);
}
+ public boolean isFilterEnabled() {
+ return !SearchMode.SAVED_SEARCH_MODE.equals(getSearchMode());
+ }
+
public ListGrid getPickListGrid() {
return pickListGrid;
}
@@ -349,4 +424,11 @@ public class EnhancedSearchBar extends ToolStrip {
public TextItem getSaveSearchTextItem() {
return saveSearchTextItem;
}
+
+ @Override
+ public void destroy() {
+ if (null != pickListGrid) {
+ pickListGrid.destroy();
+ }
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/FavoritesSearchStrategy.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/FavoritesSearchStrategy.java
index 78ae88d..8092f38 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/FavoritesSearchStrategy.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/searchbar/FavoritesSearchStrategy.java
@@ -22,19 +22,22 @@ import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DataSource;
-import com.smartgwt.client.data.fields.DataSourceIntegerField;
+import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.widgets.form.fields.events.KeyUpEvent;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
+import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.SavedSearchCriteria;
import org.rhq.core.domain.search.SavedSearch;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.Log;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* Search Strategy for the Favorite Saved Searches.
@@ -77,23 +80,44 @@ public class FavoritesSearchStrategy extends AbstractSearchStrategy {
*/
@Override
public void onRecordClick(RecordClickEvent event) {
- // do nothing here; just here if we need to do something
searchBar.getSaveSearchTextItem().setValue(event.getRecord().getAttribute(ATTR_NAME));
searchBar.getSearchTextItem().setValue(event.getRecord().getAttribute(ATTR_PATTERN));
+ searchBar.getSearchTextItem().focusInItem();
+ }
+
+ @Override
+ public void onRecordDoubleClick(RecordDoubleClickEvent event) {
+ Record record = event.getRecord();
+ Integer id = record.getAttributeAsInt(ATTR_ID);
+ final String name = record.getAttribute(ATTR_NAME);
+ GWTServiceLookup.getSearchService().deleteSavedSearch(id, new
AsyncCallback<Void>() {
+ @Override
+ public void onSuccess(Void result) {
+ Message message = new
Message(MSG.search_successfully_deleted_search(name), Message.Severity.Info);
+ CoreGUI.getMessageCenter().notify(message);
+ populateSavedSearches();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Message message = new Message(MSG.search_failed_to_save_search(name),
Message.Severity.Error);
+ CoreGUI.getMessageCenter().notify(message);
+ }
+ });
}
@Override
public void searchKeyUpHandler(KeyUpEvent keyUpEvent) {
- populateSearchComboboxSavedSearchesWithAutoComplete();
+ // do nothing
}
@Override
public void searchFocusHandler() {
- // nothing currently
+ populateSavedSearches();
}
- private void populateSearchComboboxSavedSearchesWithAutoComplete() {
+ private void populateSavedSearches() {
Log.debug("Search Saved Searches");
SavedSearchCriteria savedSearchCriteria = new SavedSearchCriteria();
@@ -114,6 +138,7 @@ public class FavoritesSearchStrategy extends AbstractSearchStrategy {
public void onSuccess(List<SavedSearch> result) {
long fetchTime = System.currentTimeMillis() - startTime;
Log.debug(result.size() + " saved searches fetched in: " +
fetchTime + "ms");
+
ListGrid searchBarPickListGrid = searchBar.getPickListGrid();
DataSource ds = searchBarPickListGrid.getDataSource();
@@ -122,16 +147,13 @@ public class FavoritesSearchStrategy extends AbstractSearchStrategy
{
ds.setClientOnly(true);
DataSourceTextField valueField = new DataSourceTextField(ATTR_ID,
"Id");
valueField.setPrimaryKey(true);
- DataSourceTextField kindField = new DataSourceTextField(ATTR_KIND,
"Kind");
- DataSourceTextField nameField = new DataSourceTextField(ATTR_NAME,
"Name");
- DataSourceTextField patternField = new
DataSourceTextField(ATTR_PATTERN, "Pattern");
- DataSourceTextField descriptionField = new
DataSourceTextField(ATTR_DESCRIPTION, "Description");
- DataSourceIntegerField recordCount = new
DataSourceIntegerField(ATTR_RESULT_COUNT, "Result Count");
- ds.setFields(valueField, kindField, nameField, patternField,
descriptionField, recordCount);
+ ds.setFields(valueField);
+ searchBarPickListGrid.setDataSource(ds);
+
} else {
ds.invalidateCache();
}
- searchBarPickListGrid.setData(new ListGridRecord[] {});
+
for (SavedSearch savedSearch : result) {
Log.debug("savedSearch: " + savedSearch.getName());
ListGridRecord record = new ListGridRecord();
@@ -146,6 +168,7 @@ public class FavoritesSearchStrategy extends AbstractSearchStrategy {
}
try {
+ searchBarPickListGrid.setData(new ListGridRecord[] {});
searchBarPickListGrid.fetchData();
} catch (Exception e) {
Log.debug("Caught exception on fetchData: " + e);
@@ -162,6 +185,5 @@ public class FavoritesSearchStrategy extends AbstractSearchStrategy {
@Override
public void searchReturnKeyHandler(KeyUpEvent keyUpEvent) {
// do nothing
- Log.debug("return key in SavedSearchProvider");
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 0d731ab..3144439 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -432,7 +432,8 @@ search_failed_to_retrieve_saved_search = Failed to retrieve saved
search
search_failed_to_retrieve_search_suggestion = Failed to retrieve search suggestion
search_failed_to_save_search = Failed to Save Search: {0}
search_invalid_search_expression = Invalid search expression.
-search_name_your_search = name you search
+search_name_your_search = name of search
+search_successfully_deleted_search = Successfully Deleted Search: {0}
search_successfully_saved_search = Successfully Saved Search: {0}
util_ancestry_parentAncestry = Parent Ancestry for:
util_errorHandler_nullException = exception was null
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index b4ba1e4..5cc58ac 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -451,7 +451,8 @@ group_tree_partialClusterTooltip = {0} z {1} Älenů skupiny má
"{2}" zdroj
##search_failed_to_retrieve_search_suggestion = Failed to retrieve search suggestion
##search_failed_to_save_search = Failed to Save Search: {0}
##search_invalid_search_expression = Invalid search expression.
-##search_name_your_search = name you search
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
##search_successfully_saved_search = Successfully Saved Search: {0}
util_ancestry_parentAncestry = Původ rodiÄe pro:
util_errorHandler_nullException = vÃœjimka byla null
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 016b160..4d5d3ab 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -416,7 +416,8 @@ group_tree_partialClusterTooltip = {0} der {1} Gruppenmitglieder haben
eine ''{2
##search_failed_to_retrieve_search_suggestion = Failed to retrieve search suggestion
##search_failed_to_save_search = Failed to Save Search: {0}
##search_invalid_search_expression = Invalid search expression.
-##search_name_your_search = name you search
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
##search_successfully_saved_search = Successfully Saved Search: {0}
util_disambiguationReportDecorator_pluginSuffix = ({0} Plugin)
util_errorHandler_nullException = Exception war null
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 1f24034..9edfac2 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -429,7 +429,8 @@ group_tree_partialClusterTooltip = {1} ã®äžã® {0}
ã°ã«ãŒãã¡ã³ããŒã
##search_failed_to_retrieve_search_suggestion = Failed to retrieve search suggestion
##search_failed_to_save_search = Failed to Save Search: {0}
##search_invalid_search_expression = Invalid search expression.
-##search_name_your_search = name you search
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
##search_successfully_saved_search = Successfully Saved Search: {0}
util_ancestry_parentAncestry = 芪ã®å
ç¥ :
util_disambiguationReportDecorator_pluginSuffix = ({0} ãã©ã°ã€ã³)
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ko.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ko.properties
index f832c7d..54421b1 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ko.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ko.properties
@@ -386,7 +386,8 @@ search_failed_to_retrieve_saved_search = ì ì¥ë ê²ìì
ê²ìíì§ ëª»í
search_failed_to_retrieve_search_suggestion = ì¶ì² ê²ììŽë¥Œ ê²ìíì§
못íìµëë€
search_failed_to_save_search = ê²ìì ì ì¥íì§ ëª»íìµëë€: {0}
search_invalid_search_expression = ì못ë ê²ì íí.
-search_name_your_search = ê²ì ìŽëŠ
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
search_successfully_saved_search = ì±ê³µì ìŒë¡ ì ì¥ë ê²ì: {0}
util_ancestry_parentAncestry = ë¶ëªšì ì¡°ì:
util_errorHandler_nullException = ììžë nullìŽììµëë€.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index bb7d48b..4e17344 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -434,7 +434,8 @@ group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' r
##search_failed_to_retrieve_search_suggestion = Failed to retrieve search suggestion
##search_failed_to_save_search = Failed to Save Search: {0}
##search_invalid_search_expression = Invalid search expression.
-##search_name_your_search = name you search
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
##search_successfully_saved_search = Successfully Saved Search: {0}
util_ancestry_parentAncestry = Ancestral para:
util_errorHandler_nullException = Exce\u00E7\u00E3o nula
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index f354bd8..54f47af 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2506,6 +2506,9 @@ favorites_resources = ÐзбÑаММÑе ÑеÑÑÑÑÑ
filter_from_date = ÐÑ
filter_to_date = ÐП
group_tree_partialClusterTooltip = {0} Оз {1} ÑлеМПв гÑÑÐ¿Ð¿Ñ ÐžÐŒÐµÑÑ
ÑеÑÑÑÑ ''{2}''
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
+##search_successfully_saved_search = Successfully Saved Search: {0}
util_errorHandler_nullException = ÐПзМОклП null ОÑклÑÑеМОе
util_monitoringRequestCallback_error_checkServerStatusFailure = Ðе ÑЎаеÑÑÑ
ПпÑеЎелОÑÑ ÑÑаÑÑÑ Ð°Ð²ÑПÑОзаÑОО - пÑПвеÑÑÑе
ÑПÑÑПÑМОе ÑеÑвеÑа.
util_userPerm_loadFailGlobal = Ðе ÑЎаеÑÑÑ Ð·Ð°Ð³ÑÑзОÑÑ Ð²Ð°ÑО
глПбалÑÐœÑе пПлМПЌПÑÐžÑ - Ме пÑеЎПÑÑавлеМÑ.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index e19f5f2..abe3253 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -424,7 +424,8 @@ group_tree_partialClusterTooltip = \u9664\u53bb
{1},{0}\u7684\u7ec4\u6210\u5458\
##search_failed_to_retrieve_search_suggestion = Failed to retrieve search suggestion
##search_failed_to_save_search = Failed to Save Search: {0}
##search_invalid_search_expression = Invalid search expression.
-##search_name_your_search = name you search
+##search_name_your_search = name of search
+##search_successfully_deleted_search = Successfully Deleted Search: {0}
##search_successfully_saved_search = Successfully Saved Search: {0}
util_ancestry_parentAncestry = Parent Ancestry for:
util_errorHandler_nullException = \u5f02\u5e38\u662f null
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/SavedSearchManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/SavedSearchManagerBean.java
index 646a24a..861affc 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/SavedSearchManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/SavedSearchManagerBean.java
@@ -60,7 +60,7 @@ public class SavedSearchManagerBean implements SavedSearchManagerLocal
/* local
* @see SavedSearchManagerRemote#updateSavedSearch(Subject, SavedSearch)
*/
public boolean updateSavedSearch(Subject subject, SavedSearch savedSearch) {
- // this needs to prevent certains types of updates, be more sophisticated, etc
+ // this needs to prevent certain types of updates, be more sophisticated, etc
validateManipulatePermission(subject, savedSearch);
SavedSearch oldSavedSearch = entityManager.find(SavedSearch.class,
savedSearch.getId());
if (null == oldSavedSearch || oldSavedSearch.equals(savedSearch)) {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
index ca9bfab..9d03610 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
@@ -439,8 +439,8 @@ public class SearchAssistManager {
+ primarySimpleContext + "]");
}
- List<String> valueSuggestions = padWithQuotes(beforeCaret,
completor.getValues(primarySimpleContext, null,
- parsedTerm));
+ List<String> valueSuggestions = padWithQuotes(beforeCaret,
+ completor.getValues(primarySimpleContext, null, parsedTerm));
List<SearchSuggestion> suggestions = convert(valueSuggestions, parsed,
parsedTerm, Kind.Simple);
return suggestions;
}
@@ -540,8 +540,8 @@ public class SearchAssistManager {
LOG.debug("getAdvancedSuggestions: operator state");
if (allComparisonOperators.contains(parsed.operator)) {
LOG.debug("search term is complete operator, suggesting values
instead");
- List<String> valueSuggestions = padWithQuotes(beforeCaret,
completor.getValues(parsed.context,
- parsed.param, ""));
+ List<String> valueSuggestions = padWithQuotes(beforeCaret,
+ completor.getValues(parsed.context, parsed.param, ""));
if (completor.getSimpleContexts().contains(parsed.context)) {
LOG.debug("getAdvancedSuggestions: suggesting value completions
for a simple context");
return convert(pad(parsed.context + parsed.operator,
valueSuggestions, ""));
@@ -568,8 +568,8 @@ public class SearchAssistManager {
}
case VALUE:
LOG.debug("getAdvancedSuggestions: value state");
- List<String> valueSuggestions = padWithQuotes(beforeCaret,
completor.getValues(parsed.context,
- parsed.param, parsed.value));
+ List<String> valueSuggestions = padWithQuotes(beforeCaret,
+ completor.getValues(parsed.context, parsed.param, parsed.value));
if (completor.getSimpleContexts().contains(parsed.context)) {
LOG.debug("getAdvancedSuggestions: suggesting value completions for
a simple context");
return convert(pad(parsed.context + parsed.operator, valueSuggestions,
""), parsed, parsed.value);
@@ -629,8 +629,8 @@ public class SearchAssistManager {
}
String value = next.getName();
int index = next.getName().toLowerCase().indexOf(expression);
- SearchSuggestion suggestion = new SearchSuggestion(Kind.UserSavedSearch,
label, value, index, expression
- .length());
+ SearchSuggestion suggestion = new SearchSuggestion(Kind.UserSavedSearch,
label, value, next.getPattern(),
+ index, expression.length());
results.add(suggestion);
}
return results;
@@ -668,8 +668,8 @@ public class SearchAssistManager {
}
String value = next.getName();
int index = next.getName().toLowerCase().indexOf(expression);
- SearchSuggestion suggestion = new SearchSuggestion(Kind.GlobalSavedSearch,
label, value, index, expression
- .length());
+ SearchSuggestion suggestion = new SearchSuggestion(Kind.GlobalSavedSearch,
label, value, next.getPattern(),
+ index, expression.length());
results.add(suggestion);
}
return results;