modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java | 83 ++++++--- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/SearchBar.java | 8 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java | 92 +++------- 3 files changed, 100 insertions(+), 83 deletions(-)
New commits: commit e3202c5943c4a35b2bc1855c489a5eaca3757f5f Author: Joseph Marques joseph@redhat.com Date: Tue Jun 1 00:43:36 2010 -0400
fix the offset height on the SearchBar's suggestion popup, so it doesn't overlay the text area
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java index 31cd49f..f020568 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java @@ -49,6 +49,7 @@ import com.google.gwt.user.client.ui.MenuBar; import com.google.gwt.user.client.ui.MenuItem; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.SuggestOracle; +import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.TextBoxBase; import com.google.gwt.user.client.ui.SuggestOracle.Callback; import com.google.gwt.user.client.ui.SuggestOracle.Request; @@ -149,18 +150,40 @@ public class SuggestTextBox_v3 extends Composite implements HasText, HasAllFocus suggestionMenu.addItem(menuItem); }
- suggestionPopup.showRelativeTo(getTextBox()); - /* - suggestionPopup.setPopupPositionAndShow(new PositionCallback() { - public void setPosition(int offsetWidth, int offsetHeight) { - position(getTextBox(), offsetWidth, offsetHeight + 5); + class TextBoxSkewWrapper extends TextBox { + private TextBoxBase wrapped; + private int skewWidth; + private int skewHeight; + + public TextBoxSkewWrapper(TextBoxBase textBoxBase, int skewWidth, int skewHeight) { + this.wrapped = textBoxBase; + this.skewWidth = skewWidth; + this.skewHeight = skewHeight; + } + + @Override + public int getOffsetWidth() { + return wrapped.getOffsetWidth(); + } + + @Override + public int getOffsetHeight() { + return wrapped.getOffsetHeight(); } - }); - */ - suggestionPopup.setAnimationEnabled(isAnimationEnabled);
- suggestionMenu.setWidth("785px"); - suggestionPopup.setWidth("785px"); + @Override + public int getAbsoluteLeft() { + return wrapped.getAbsoluteLeft() + skewWidth; + } + + @Override + public int getAbsoluteTop() { + return wrapped.getAbsoluteTop() + skewHeight; + } + } + + suggestionPopup.showRelativeTo(new TextBoxSkewWrapper(getTextBox(), 0, 5)); + suggestionPopup.setAnimationEnabled(isAnimationEnabled); } else { suggestionPopup.hide(); }
commit 10b791c898f508881ed4269cf11fa6ae46319eb4 Author: Joseph Marques joseph@redhat.com Date: Tue Jun 1 00:41:50 2010 -0400
update logic used to login to from SearchBar context
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java index 15a125c..76520b8 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java @@ -19,12 +19,18 @@ package org.rhq.enterprise.gui.coregui.client;
import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.http.client.Request; +import com.google.gwt.http.client.RequestBuilder; +import com.google.gwt.http.client.RequestCallback; +import com.google.gwt.http.client.RequestException; +import com.google.gwt.http.client.Response; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.util.SC;
import org.rhq.core.domain.auth.Subject; +import org.rhq.core.domain.criteria.SubjectCriteria; +import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; -import org.rhq.enterprise.gui.coregui.client.gwt.SubjectGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.search.SearchBar;
/** @@ -49,30 +55,67 @@ public class SearchGUI implements EntryPoint { return; }
- portalWarLogin(); + checkLoginStatus(); }
public void buildSearchGUI() { searchBar = new SearchBar(); }
- private static void portalWarLogin() { - SubjectGWTServiceAsync subjectService = SubjectGWTServiceAsync.Util.getInstance(); - - subjectService.login("rhqadmin", "rhqadmin", new AsyncCallback<Subject>() { - public void onFailure(Throwable caught) { - System.out.println("Failed to login - cause: " + caught); - Label loginFailed = new Label("Failed to login - cause: " + caught); - loginFailed.draw(); - } - - public void onSuccess(Subject result) { - System.out.println("Logged in: " + result.getSessionId()); - GWTServiceLookup.registerSession(String.valueOf(result.getSessionId())); - SearchGUI.sessionSubject = result; - singleton.buildSearchGUI(); - } - }); + public static void checkLoginStatus() { + RequestBuilder b = new RequestBuilder(RequestBuilder.GET, "/sessionAccess"); + try { + b.setCallback(new RequestCallback() { + public void onResponseReceived(final Request request, final Response response) { + String sessionIdString = response.getText(); + if (sessionIdString != null && sessionIdString.length() > 0) { + + int subjectId = Integer.parseInt(sessionIdString.split(":")[0]); + final int sessionId = Integer.parseInt(sessionIdString.split(":")[1]); + + Subject subject = new Subject(); + subject.setId(subjectId); + subject.setSessionId(sessionId); + + GWTServiceLookup.registerSession(String.valueOf(subject.getSessionId())); + + // look up real user prefs + + SubjectCriteria criteria = new SubjectCriteria(); + criteria.fetchConfiguration(true); + criteria.addFilterId(subjectId); + criteria.fetchRoles(true); + + GWTServiceLookup.getSubjectService().findSubjectsByCriteria(criteria, + new AsyncCallback<PageList<Subject>>() { + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to load user's subject", caught); + new LoginView().showLoginDialog(); + } + + public void onSuccess(PageList<Subject> result) { + + Subject subject = result.get(0); + subject.setSessionId(sessionId); + SearchGUI.sessionSubject = subject; + singleton.buildSearchGUI(); + + } + }); + } else { + new LoginView().showLoginDialog(); + } + } + + public void onError(Request request, Throwable exception) { + SC.say("Unable to determine login status, check server status"); + } + }); + b.send(); + } catch (RequestException e) { + SC.say("Unable to determine login status, check server status"); + e.printStackTrace(); + } }
public static Subject getSessionSubject() {
commit 823b8c9a00ff299df674f79f83062b6b8997f51e Author: Joseph Marques joseph@redhat.com Date: Tue Jun 1 00:39:05 2010 -0400
need to intercept ONKEYDOWN instead of ONCLICK, otherwise the a4j click handler on the JSF side doesn't fire
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/SearchBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/SearchBar.java index b36b5ef..e995673 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/SearchBar.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/SearchBar.java @@ -67,7 +67,6 @@ public class SearchBar {
public static final String TRASH = IMAGE_DIR + "trash.png";
- //private final SuggestTextBox autoCompletePatternField = new SuggestTextBox(this); private final TextBox patternField = new TextBox(); private final SuggestTextBox_v3 autoCompletePatternField = new SuggestTextBox_v3(this, patternField); private final TextBox patternNameField = new TextBox(); @@ -98,11 +97,12 @@ public class SearchBar {
String searchButtonId = searchBarElement.getAttribute("searchButtonId"); Element searchButton = DOM.getElementById(searchButtonId); - DOM.sinkEvents(searchButton, Event.ONCLICK); + + DOM.sinkEvents(searchButton, Event.ONKEYDOWN); DOM.setEventListener(searchButton, new EventListener() { @Override public void onBrowserEvent(Event event) { - if (event.getKeyCode() == Event.ONCLICK) { + if (event.getKeyCode() == Event.ONKEYDOWN) { prepareSearchExecution(); } } @@ -242,7 +242,7 @@ public class SearchBar { }
private void turnNameFieldIntoLabel() { - String pattern = autoCompletePatternField.getValue(); + String pattern = autoCompletePatternField.getText(); String name = patternNameField.getText();
if (name.equalsIgnoreCase(DEFAULT_PATTERN_NAME)) {
commit b63dec72a0919f8bd28ea7da5fe89bf2685ff787 Author: Joseph Marques joseph@redhat.com Date: Mon May 31 07:16:43 2010 -0400
remove unused code
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java index 120c474..31cd49f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/search/suggest/SuggestTextBox_v3.java @@ -166,20 +166,6 @@ public class SuggestTextBox_v3 extends Composite implements HasText, HasAllFocus } }
- /* - private void setNewSelection(SuggestionMenuItem menuItem) { - Suggestion curSuggestion = menuItem.getSuggestion(); - currentText = curSuggestion.getReplacementString(); - setText(currentText); - suggestionPopup.hide(); - fireSuggestionEvent(curSuggestion); - } - - private void fireSuggestionEvent(Suggestion selectedSuggestion) { - SelectionEvent.fire(this, selectedSuggestion); - } - */ - private void addEventsToTextBox() { class TextBoxEvents extends HandlesAllKeyEvents implements ValueChangeHandler<String> {
@@ -343,25 +329,6 @@ public class SuggestTextBox_v3 extends Composite implements HasText, HasAllFocus }
/** - * Gets the specified suggestion from the suggestions currently showing. - * - * @param index the index at which the suggestion lives - * - * @throws IndexOutOfBoundsException if the index is greater then the number - * of suggestions currently showing - * - * @return the given suggestion - */ - /* - Suggestion getSuggestion(int index) { - if (!isSuggestionListShowing()) { - throw new IndexOutOfBoundsException("No suggestions showing, so cannot show " + index); - } - return ((SuggestionMenuItem) suggestionMenu.getItems().get(index)).suggestion; - } - */ - - /** * Get the number of suggestions that are currently showing. * * @return the number of suggestions currently showing, 0 if there are none @@ -433,22 +400,6 @@ public class SuggestTextBox_v3 extends Composite implements HasText, HasAllFocus SearchSuggestion searchSuggestion = extraSearchSuggestion(suggestion); return searchSuggestion; } - - /** - * Selects the item at the specified index in the menu. Selecting the item - * does not perform the item's associated action; it only changes the style - * of the item and updates the value of SuggestionMenu.selectedItem. - * - * @param index index - */ - /* - public void selectItem(int index) { - List<MenuItem> items = getItems(); - if (index > -1 && index < items.size()) { - itemOver(items.get(index), false); - } - } - */ }
private static SearchSuggestion extraSearchSuggestion(Suggestion suggestion) {
rhq-commits@lists.fedorahosted.org