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@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;
rhq-commits@lists.fedorahosted.org