dev/null |binary modules/core/domain/pom.xml | 34 - modules/core/domain/src/main/java/org/rhq/core/RHQDomain.gwt.xml | 5 modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AlertCriteria.java | 1 modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java | 47 - modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.css | 7 modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.html | 10 modules/core/domain/war/org.rhq.core.RHQDomain/hosted.html | 333 ---------- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java | 13 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java | 99 ++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java | 90 ++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleGroupsEditorItem.java | 100 +++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java | 24 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java | 68 +- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java | 9 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java | 20 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java | 18 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/HeaderLabel.java | 35 + modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/SimpleCollapsiblePanel.java | 1 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/Portlet.java | 3 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java | 5 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java | 122 +++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java | 18 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java | 29 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java | 12 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java | 16 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/GraphListView.java | 9 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java | 27 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java | 1 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java | 44 + modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 71 +- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java | 10 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java | 16 modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css | 58 + modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html | 4 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java | 17 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java | 10 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java | 61 + modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java | 2 39 files changed, 859 insertions(+), 590 deletions(-)
New commits: commit 39130db6bbeed3e7108ac483443a0d09d6de0c27 Author: Greg Hinkle ghinkle@redhat.com Date: Fri Feb 26 16:57:27 2010 -0500
Start to Role permission and group assignment editing RPCDatasource adjusted to expect column names that match the sortOverrides from their respective criteria objects Adjustments on list-detail model based on UXD feedback Errorhandling infrastructure
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java index 27cbebd..9b081c0 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java @@ -9,6 +9,7 @@ import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourcesView; import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.ResourceView; import org.rhq.enterprise.gui.coregui.client.menu.MenuBarView; import org.rhq.enterprise.gui.coregui.client.places.Place; +import org.rhq.enterprise.gui.coregui.client.util.ErrorHandler;
import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; @@ -44,6 +45,8 @@ public class CoreGUI implements EntryPoint { private static Subject sessionSubject; private static Subject fullSubject;
+ private static ErrorHandler errorHandler = new ErrorHandler(); + private static BreadCrumb breadCrumb;
private static Canvas content; @@ -61,6 +64,13 @@ public class CoreGUI implements EntryPoint { }); }
+ GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { + public void onUncaughtException(Throwable e) { + SC.say("Globally uncaught exception... " + e.getMessage()); + e.printStackTrace(); + } + }); + RequestBuilder b = new RequestBuilder(RequestBuilder.GET, "/j_security_check.do?j_username=rhqadmin&j_password=rhqadmin"); try { b.setCallback(new RequestCallback() { @@ -210,6 +220,9 @@ public class CoreGUI implements EntryPoint {
// -------------------- Static application utilities ----------------------
+ public static ErrorHandler getErrorHandler() { + return errorHandler; + }
public static Subject getSessionSubject() { return sessionSubject; diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java new file mode 100644 index 0000000..c788499 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionEditorView.java @@ -0,0 +1,99 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.admin.roles; + +import org.rhq.core.domain.authz.Permission; +import org.rhq.enterprise.gui.coregui.client.components.SimpleCollapsiblePanel; + +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.CanvasItem; +import com.smartgwt.client.widgets.form.fields.CheckboxItem; +import com.smartgwt.client.widgets.form.fields.FormItem; +import com.smartgwt.client.widgets.form.fields.HeaderItem; + +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.Set; + +/** + * @author Greg Hinkle + */ +public class PermissionEditorView extends CanvasItem { + + + private Set<Permission> permissions = EnumSet.noneOf(Permission.class); + + private DynamicForm form; + + public PermissionEditorView(String name, String title) { + super(name, title); + + + setCanvas(new SimpleCollapsiblePanel("Permissions", buildForm())); + } + + @Override + public Canvas getCanvas() { + System.out.println("ANythinglksjgalksdjfalskdjfalkdjflaksjdfl?"); + return super.getCanvas(); // TODO: Implement this method. + } + + public Canvas buildForm() { + System.out.println("Building permissions canvas"); + +// Object o = getAttributeAsObject(getFieldName()); + + this.form = new DynamicForm(); + ArrayList<FormItem> items = new ArrayList<FormItem>(); + + + HeaderItem h1 = new HeaderItem("globalPermissions","Global Permissions"); + h1.setValue("Global Permissions"); + items.add(h1); + for (Permission p : Permission.values()) { + if (p.getTarget() == Permission.Target.GLOBAL) { + items.add(new CheckboxItem(p.name(),p.name())); + } + } + + HeaderItem h2 = new HeaderItem("resourcePermissions","Resource Permissions"); + h2.setValue("Resource Permissions"); + items.add(h2); + for (Permission p : Permission.values()) { + if (p.getTarget() == Permission.Target.RESOURCE) { + items.add(new CheckboxItem(p.name(),p.name())); + } + } + + form.setItems(items.toArray(new FormItem[items.size()])); + + + return form; + } + + + public void setPermissions(Set<Permission> permissions) { + this.permissions = permissions; + for (Permission p : Permission.values()) { + form.setValue(p.name(), permissions.contains(p)); + } + form.markForRedraw(); + } +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java index 01e3843..56b913e 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleEditView.java @@ -18,56 +18,116 @@ */ package org.rhq.enterprise.gui.coregui.client.admin.roles;
+import org.rhq.core.domain.authz.Permission; +import org.rhq.core.domain.resource.group.ResourceGroup; +import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.gui.coregui.client.components.HeaderLabel; + import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.Record; +import com.smartgwt.client.types.Overflow; +import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.CanvasItem; +import com.smartgwt.client.widgets.form.fields.FormItem; +import com.smartgwt.client.widgets.form.fields.ResetItem; +import com.smartgwt.client.widgets.form.fields.SectionItem; import com.smartgwt.client.widgets.form.fields.SubmitItem; +import com.smartgwt.client.widgets.form.fields.TextItem; import com.smartgwt.client.widgets.layout.VLayout;
+import java.util.Set; + /** * @author Greg Hinkle */ public class RoleEditView extends VLayout {
private Label message = new Label("Select a role to edit..."); + + + private VLayout editCanvas; + private HeaderLabel editLabel; private DynamicForm form; + private PermissionEditorView permissionEditorItem; + private RoleGroupsEditorItem assignedGroupEditorItem; + + public RoleEditView() { + super(); + setPadding(10); + setOverflow(Overflow.AUTO); + } + @Override protected void onInit() { super.onInit();
-// addMember(message); + + addMember(message);
addMember(buildRoleForm()); - + + editCanvas.hide(); }
- DynamicForm buildRoleForm() { + private Canvas buildRoleForm() { + + this.editCanvas = new VLayout(); + + editLabel = new HeaderLabel("Create User"); + // TODO create header css style and set + + editCanvas.addMember(editLabel);
form = new DynamicForm(); form.setAutoFetchData(true); form.setDataSource(RolesDataSource.getInstance());
- form.setUseAllDataSourceFields(true); + TextItem idItem = new TextItem("id","Id"); + + TextItem nameItem = new TextItem("name","Name"); + + permissionEditorItem = new PermissionEditorView("permissionEditor", "Permissions"); + permissionEditorItem.setShowTitle(false); + permissionEditorItem.setColSpan(2); +
- form.setItems(new SubmitItem("save","Save")); - form.setItems(new SubmitItem("cancel","Cancel")); -// form.hide(); + assignedGroupEditorItem = new RoleGroupsEditorItem("assignedGroups","Assigned Groups"); + assignedGroupEditorItem.setShowTitle(false); + assignedGroupEditorItem.setColSpan(2);
- return form; + form.setItems( + idItem, + nameItem, + permissionEditorItem, + assignedGroupEditorItem, + new SubmitItem("save", "Save"), new ResetItem("reset", "Reset")); + + + editCanvas.addMember(form); + + return editCanvas; }
public void editRecord(Record record) { - - form.editRecord(record); -// message.hide(); - form.show(); - form.redraw(); + message.hide(); + editCanvas.show(); + try { + editLabel.setContents("Editing user " + record.getAttribute("name")); + form.editRecord(record); + permissionEditorItem.setPermissions((Set<Permission>) record.getAttributeAsObject("permissions")); + assignedGroupEditorItem.setGroups((PageList<ResourceGroup>) record.getAttributeAsObject("assignedGroups")); + } catch (Throwable t) { + t.printStackTrace(); + } + markForRedraw(); }
public void editNone() { -// form.hide(); -// message.show(); + message.show(); + editCanvas.hide();
+ markForRedraw(); } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleGroupsEditorItem.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleGroupsEditorItem.java new file mode 100644 index 0000000..1a2da36 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleGroupsEditorItem.java @@ -0,0 +1,100 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.admin.roles; + +import org.rhq.core.domain.resource.group.ResourceGroup; +import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.gui.coregui.client.components.SimpleCollapsiblePanel; +import org.rhq.enterprise.gui.coregui.client.inventory.groups.ResourceGroupsDataSource; + +import com.smartgwt.client.types.DragDataAction; +import com.smartgwt.client.types.DragTrackerMode; +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.TransferImgButton; +import com.smartgwt.client.widgets.form.fields.CanvasItem; +import com.smartgwt.client.widgets.grid.ListGrid; +import com.smartgwt.client.widgets.grid.ListGridField; +import com.smartgwt.client.widgets.layout.HLayout; +import com.smartgwt.client.widgets.layout.VStack; + +/** + * @author Greg Hinkle + */ +public class RoleGroupsEditorItem extends CanvasItem { + + private PageList<ResourceGroup> assignedGroups; + + private ListGrid assignedGroupGrid; + private ListGrid availableGroupGrid; + + public RoleGroupsEditorItem(String name, String title) { + super(name, title); + setCanvas(new SimpleCollapsiblePanel("Assigned Groups", buildForm())); + } + + private Canvas buildForm() { + + HLayout layout = new HLayout(10); + + availableGroupGrid = new ListGrid(); + availableGroupGrid.setMinHeight(350); + availableGroupGrid.setCanDragRecordsOut(true); + availableGroupGrid.setDragTrackerMode(DragTrackerMode.RECORD); + availableGroupGrid.setDragDataAction(DragDataAction.MOVE); + availableGroupGrid.setDataSource(new ResourceGroupsDataSource()); + availableGroupGrid.setAutoFetchData(true); + availableGroupGrid.setFields(new ListGridField("id",50), new ListGridField("name")); + + layout.addMember(availableGroupGrid); + + VStack moveButtonStack = new VStack(10); + moveButtonStack.setWidth(50); + + TransferImgButton addButton = new TransferImgButton(TransferImgButton.RIGHT); + TransferImgButton removeButton = new TransferImgButton(TransferImgButton.LEFT); + TransferImgButton addAllButton = new TransferImgButton(TransferImgButton.RIGHT_ALL); + TransferImgButton removeAllButton = new TransferImgButton(TransferImgButton.LEFT_ALL); + + moveButtonStack.addMember(addButton); + moveButtonStack.addMember(removeButton); + moveButtonStack.addMember(addAllButton); + moveButtonStack.addMember(removeAllButton); + + layout.addMember(moveButtonStack); + + assignedGroupGrid = new ListGrid(); + assignedGroupGrid.setMinHeight(350); + assignedGroupGrid.setCanDragRecordsOut(true); + assignedGroupGrid.setCanAcceptDroppedRecords(true); + assignedGroupGrid.setDataSource(new ResourceGroupsDataSource()); + assignedGroupGrid.setFields(new ListGridField("id", 50), new ListGridField("name")); + + layout.addMember(assignedGroupGrid); + + + return layout; + } + + public void setGroups(PageList<ResourceGroup> assignedGroups) { + this.assignedGroups = assignedGroups; + + assignedGroupGrid.setData(ResourceGroupsDataSource.buildRecords(assignedGroups)); + } + +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java index bf97cca..bf100c0 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java @@ -40,12 +40,10 @@ import com.smartgwt.client.widgets.grid.ListGridRecord; */ public class RolesDataSource extends RPCDataSource {
- private RoleGWTServiceAsync roleService = GWTServiceLookup.getRoleService(); - - private boolean initialized = false; - private static RolesDataSource INSTANCE;
+ private RoleGWTServiceAsync roleService = GWTServiceLookup.getRoleService(); + public static RolesDataSource getInstance() { if (INSTANCE == null) { INSTANCE = new RolesDataSource(); @@ -53,15 +51,12 @@ public class RolesDataSource extends RPCDataSource { return INSTANCE; }
- - private String query; - protected RolesDataSource() { super("Roles");
- DataSourceField idDataField = new DataSourceIntegerField("id", "ID"); idDataField.setPrimaryKey(true); + idDataField.setCanEdit(false);
DataSourceTextField nameField = new DataSourceTextField("name", "Name");
@@ -74,8 +69,13 @@ public class RolesDataSource extends RPCDataSource { final long start = System.currentTimeMillis();
RoleCriteria criteria = new RoleCriteria(); - criteria.setPageControl(getPageControl(request, criteria.getAlias())); - + criteria.setPageControl(getPageControl(request)); + + + criteria.setFetchResourceGroups(true); + criteria.setFetchPermissions(true); + criteria.setFetchSubjects(true); + roleService.findRolesByCriteria(criteria, new AsyncCallback<PageList<Role>>() { public void onFailure(Throwable caught) { Window.alert("Failed to load " + caught.getMessage()); @@ -94,7 +94,10 @@ public class RolesDataSource extends RPCDataSource { ListGridRecord record = new ListGridRecord(); record.setAttribute("id", role.getId()); record.setAttribute("name", role.getName()); + + record.setAttribute("resourceGroups", role.getResourceGroups()); record.setAttribute("permissions", role.getPermissions()); + record.setAttribute("subjects", role.getSubjects());
records[x] = record; } @@ -102,7 +105,6 @@ public class RolesDataSource extends RPCDataSource { response.setData(records); response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set processResponse(request.getRequestId(), response); - } }); } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java index 7356424..ab78f58 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java @@ -18,10 +18,14 @@ */ package org.rhq.enterprise.gui.coregui.client.admin.roles;
+import org.rhq.enterprise.gui.coregui.client.Presenter; import org.rhq.enterprise.gui.coregui.client.admin.users.UsersDataSource; +import org.rhq.enterprise.gui.coregui.client.places.Place;
+import com.smartgwt.client.docs.CheckboxField; import com.smartgwt.client.types.Autofit; import com.smartgwt.client.types.ListGridFieldType; +import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.SelectionAppearance; import com.smartgwt.client.types.SelectionStyle; import com.smartgwt.client.types.VisibilityMode; @@ -31,6 +35,7 @@ import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.form.fields.CheckboxItem; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler; @@ -41,17 +46,18 @@ import com.smartgwt.client.widgets.layout.SectionStackSection; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.toolbar.ToolStrip;
+import java.util.List; + /** * @author Greg Hinkle */ -public class RolesView extends SectionStack { +public class RolesView extends VLayout implements Presenter {
@Override protected void onInit() { super.onInit();
- setVisibilityMode(VisibilityMode.MULTIPLE); setWidth100(); setHeight100();
@@ -59,7 +65,10 @@ public class RolesView extends SectionStack {
VLayout gridHolder = new VLayout(); gridHolder.setWidth100(); - gridHolder.setHeight100(); + gridHolder.setHeight("50%"); + gridHolder.setShowResizeBar(true); + gridHolder.setResizeBarTarget("next"); +
final ListGrid listGrid = new ListGrid(); listGrid.setWidth100(); @@ -68,24 +77,20 @@ public class RolesView extends SectionStack { listGrid.setAutoFetchData(true); listGrid.setAutoFitData(Autofit.HORIZONTAL); listGrid.setAlternateRecordStyles(true); - listGrid.setSelectionType(SelectionStyle.SIMPLE); - listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); +// listGrid.setSelectionType(SelectionStyle.SIMPLE); +// listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
listGrid.setShowFilterEditor(true); +// listGrid.setUseAllDataSourceFields(true); + + + ListGridField idField = new ListGridField("id", "Id", 55); + idField.setType(ListGridFieldType.INTEGER);
- listGrid.setUseAllDataSourceFields(true); + ListGridField nameField = new ListGridField("username", "Name");
-// ListGridField idField = new ListGridField("id", "Id", 55); -// idField.setType(ListGridFieldType.INTEGER); -// -// ListGridField nameField = new ListGridField("username", "Name", 100); -// -// -// ListGridField descriptionField = new ListGridField("name", "Name", 150); -// ListGridField emailField = new ListGridField("email", "Email Address", 100); -// -// listGrid.setFields(idField, nameField, descriptionField, emailField); + listGrid.setFields(idField, nameField);
gridHolder.addMember(listGrid); @@ -127,31 +132,36 @@ public class RolesView extends SectionStack { });
- SectionStackSection topSection = new SectionStackSection("Roles"); - topSection.setExpanded(true); - topSection.setItems(gridHolder); - - addSection(topSection); - + addMember(gridHolder);
final RoleEditView roleEditor = new RoleEditView(); - - final SectionStackSection detailSection = new SectionStackSection("Edit Role"); - detailSection.setItems(roleEditor); - addSection(detailSection); + roleEditor.setOverflow(Overflow.AUTO); + addMember(roleEditor);
listGrid.addSelectionChangedHandler(new SelectionChangedHandler() { public void onSelectionChanged(SelectionEvent selectionEvent) { if (selectionEvent.getState()) { - expandSection(1); roleEditor.editRecord(selectionEvent.getRecord()); - } else - collapseSection(1); + } else { roleEditor.editNone(); + } } });
} + + public boolean fireDisplay(Place place, List<Place> children) { + if (!getPlace().equals(place)) { + return false; + } + + + return true; + } + + public Place getPlace() { + return new Place("Roles", "Manage Roles"); + } } \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java index 6bfc7a6..dcf7199 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java @@ -25,6 +25,7 @@ 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.util.RPCDataSource;
+import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.DSRequest; @@ -62,16 +63,12 @@ public class UsersDataSource extends RPCDataSource { DataSourceTextField usernameField = new DataSourceTextField("username", "User Name"); usernameField.setCanEdit(false);
- //DataSourceTextField name = new DataSourceTextField("name", "Name"); - DataSourceTextField firstName = new DataSourceTextField("firstName", "First Name");
DataSourceTextField lastName = new DataSourceTextField("lastName", "Last Name");
- DataSourceTextField email = new DataSourceTextField("email", "Email Address");
- DataSourceTextField phone = new DataSourceTextField("phoneNumber", "Phone");
DataSourceTextField department = new DataSourceTextField("department", "Department"); @@ -90,7 +87,7 @@ public class UsersDataSource extends RPCDataSource { final long start = System.currentTimeMillis();
SubjectCriteria criteria = new SubjectCriteria(); - criteria.setPageControl(getPageControl(request, criteria.getAlias())); + criteria.setPageControl(getPageControl(request));
subjectService.findSubjectsByCriteria(criteria, new AsyncCallback<PageList<Subject>>() { public void onFailure(Throwable caught) { @@ -109,7 +106,7 @@ public class UsersDataSource extends RPCDataSource { ListGridRecord record = new ListGridRecord(); record.setAttribute("id",res.getId()); record.setAttribute("username",res.getName()); - record.setAttribute("name",res.getFirstName() + " " + res.getLastName()); +// record.setAttribute("name",res.getFirstName() + " " + res.getLastName()); record.setAttribute("firstName", res.getFirstName()); record.setAttribute("lastName", res.getLastName()); record.setAttribute("factive", res.getFactive()); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java index ba3bab3..1c2b183 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java @@ -18,7 +18,9 @@ */ package org.rhq.enterprise.gui.coregui.client.admin.users;
+import org.rhq.enterprise.gui.coregui.client.Presenter; import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDatasource; +import org.rhq.enterprise.gui.coregui.client.places.Place;
import com.smartgwt.client.data.Criteria; import com.smartgwt.client.types.Alignment; @@ -44,10 +46,12 @@ import com.smartgwt.client.widgets.layout.SectionStackSection; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.toolbar.ToolStrip;
+import java.util.List; + /** * @author Greg Hinkle */ -public class UsersView extends SectionStack { +public class UsersView extends SectionStack implements Presenter {
@@ -154,4 +158,18 @@ public class UsersView extends SectionStack { addSection(detailsSection);
} + + public boolean fireDisplay(Place place, List<Place> children) { + if (!place.equals(getPlace())) { + return false; + } + if (children.size() > 0) { + int userId = Integer.parseInt(children.get(0).getId()); + } + return true; + } + + public Place getPlace() { + return new Place("users", "Users"); + } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java index 9e73bbb..58c96e3 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java @@ -77,10 +77,10 @@ public class AlertDataSource extends RPCDataSource { idDataField.setPrimaryKey(true); idDataField.setHidden(true);
- DataSourceField resourceIdDataField = new DataSourceIntegerField("alertDefinition.resource.Id", "Resource Id"); + DataSourceField resourceIdDataField = new DataSourceIntegerField("resourceId", "Resource Id"); idDataField.setHidden(true);
- DataSourceTextField nameField = new DataSourceTextField("alertDefinition.name", "Name", 100); + DataSourceTextField nameField = new DataSourceTextField("name", "Name", 100);
DataSourceTextField conditionTextField = new DataSourceTextField("conditionText", "Condition Text"); conditionTextField.setCanSortClientOnly(true); @@ -92,7 +92,7 @@ public class AlertDataSource extends RPCDataSource { recoveryInfoField.setCanSortClientOnly(true);
// TODO: Use DataSourceEnumField here? - DataSourceTextField priorityField = new DataSourceTextField("alertDefinition.priority", "Priority", 15); + DataSourceTextField priorityField = new DataSourceTextField("priority", "Priority", 15);
DataSourceTextField ctimeField = new DataSourceTextField("ctime", "Creation Time");
@@ -159,7 +159,7 @@ public class AlertDataSource extends RPCDataSource { criteria.fetchConditionLogs(true); criteria.fetchRecoveryAlertDefinition(true);
- criteria.setPageControl(getPageControl(request, criteria.getAlias())); + criteria.setPageControl(getPageControl(request));
this.alertService.findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() { public void onFailure(Throwable caught) { @@ -197,9 +197,9 @@ public class AlertDataSource extends RPCDataSource { private ListGridRecord createRecord(Alert alert) { ListGridRecord record = new ListGridRecord(); record.setAttribute("id", alert.getId()); - record.setAttribute("alertDefinition.resource.id", alert.getAlertDefinition().getResource().getId()); - record.setAttribute("alertDefinition.name", alert.getAlertDefinition().getName()); - record.setAttribute("alertDefinition.priority", alert.getAlertDefinition().getPriority().name()); + record.setAttribute("resourceId", alert.getAlertDefinition().getResource().getId()); + record.setAttribute("name", alert.getAlertDefinition().getName()); + record.setAttribute("priority", alert.getAlertDefinition().getPriority().name()); record.setAttribute("ctime", DATE_TIME_FORMAT.format(new Date(alert.getCtime())));
Set<AlertConditionLog> conditionLogs = alert.getConditionLogs(); @@ -229,11 +229,11 @@ public class AlertDataSource extends RPCDataSource { return record; }
- @Override + /*@Override protected List<OrderingField> getDefaultOrderingFields(String alias) { List<OrderingField> orderingFields = new ArrayList<OrderingField>(2); orderingFields.add(new OrderingField(alias + ".alertDefinition.name", PageOrdering.ASC)); orderingFields.add(new OrderingField(alias + ".ctime", PageOrdering.DESC)); return orderingFields; - } + }*/ } \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/HeaderLabel.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/HeaderLabel.java new file mode 100644 index 0000000..f4ddfc3 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/HeaderLabel.java @@ -0,0 +1,35 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.components; + +import com.smartgwt.client.widgets.HTMLFlow; +import com.smartgwt.client.widgets.Label; + +/** + * @author Greg Hinkle + */ +public class HeaderLabel extends HTMLFlow { + + public HeaderLabel(String contents) { + super(contents); + setHeight(60); + setStylePrimaryName("HeaderLabel"); + setStyleName("HeaderLabel"); + } +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/SimpleCollapsiblePanel.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/SimpleCollapsiblePanel.java index 84d7c8c..e516d00 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/SimpleCollapsiblePanel.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/SimpleCollapsiblePanel.java @@ -67,6 +67,7 @@ public class SimpleCollapsiblePanel extends VLayout { button.setIcon("[skin]/images/SectionHeader/opener_closed.png"); content.hide(); } + getParentElement().markForRedraw(); markForRedraw(); } }); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/Portlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/Portlet.java index 7c2c825..71e97c4 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/Portlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/Portlet.java @@ -54,5 +54,8 @@ public class Portlet extends Window { // (since width is determined from the containing layout, not the portlet contents) // setVPolicy(LayoutPolicy.NONE); setOverflow(Overflow.VISIBLE); + + setCanDragResize(true); + setResizeFrom("B"); } } \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java index dbacd16..d1fc4a3 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceGroupGWTService.java @@ -19,6 +19,10 @@ package org.rhq.enterprise.gui.coregui.client.gwt;
+import org.rhq.core.domain.criteria.ResourceGroupCriteria; +import org.rhq.core.domain.resource.group.ResourceGroup; +import org.rhq.core.domain.util.PageList; + import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@@ -30,5 +34,6 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; @RemoteServiceRelativePath("ResourceGroupGWTService") public interface ResourceGroupGWTService extends RemoteService {
+ PageList<ResourceGroup> findResourceGroupsByCriteria(ResourceGroupCriteria criteria);
} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java new file mode 100644 index 0000000..69a8968 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java @@ -0,0 +1,122 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.inventory.groups; + +import org.rhq.core.domain.criteria.ResourceGroupCriteria; +import org.rhq.core.domain.measurement.AvailabilityType; +import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.resource.group.ResourceGroup; +import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.gui.coregui.client.CoreGUI; +import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; +import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGroupGWTServiceAsync; +import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource; + +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.data.DSRequest; +import com.smartgwt.client.data.DSResponse; +import com.smartgwt.client.data.DataSourceField; +import com.smartgwt.client.data.fields.DataSourceImageField; +import com.smartgwt.client.data.fields.DataSourceIntegerField; +import com.smartgwt.client.data.fields.DataSourceTextField; +import com.smartgwt.client.rpc.RPCResponse; +import com.smartgwt.client.widgets.grid.ListGridRecord; + +/** + * @author Greg Hinkle + */ +public class ResourceGroupsDataSource extends RPCDataSource { + + private String query; + + private ResourceGroupGWTServiceAsync groupService = GWTServiceLookup.getResourceGroupService(); + + + public ResourceGroupsDataSource() { + + DataSourceField idDataField = new DataSourceIntegerField("id", "ID", 20); + idDataField.setPrimaryKey(true); + + DataSourceTextField nameDataField = new DataSourceTextField("name", "Name", 200); + nameDataField.setCanEdit(false); + + DataSourceTextField descriptionDataField = new DataSourceTextField("description", "Description"); + descriptionDataField.setCanEdit(false); + + DataSourceTextField typeNameDataField = new DataSourceTextField("typeName", "Type"); + DataSourceTextField pluginNameDataField = new DataSourceTextField("pluginName", "Plugin"); + DataSourceTextField categoryDataField = new DataSourceTextField("category", "Category"); + + + setFields(idDataField, nameDataField, descriptionDataField, typeNameDataField, pluginNameDataField, categoryDataField); + } + + public void executeFetch(final DSRequest request, final DSResponse response) { + final long start = System.currentTimeMillis(); + + ResourceGroupCriteria criteria = new ResourceGroupCriteria(); + criteria.setPageControl(getPageControl(request)); + criteria.addFilterName(query); + + + groupService.findResourceGroupsByCriteria(criteria, new AsyncCallback<PageList<ResourceGroup>>() { + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to load groups", caught); + response.setStatus(RPCResponse.STATUS_FAILURE); + processResponse(request.getRequestId(), response); + } + + public void onSuccess(PageList<ResourceGroup> result) { + System.out.println("Data retrieved in: " + (System.currentTimeMillis() - start)); + + response.setData(buildRecords(result)); + response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set + processResponse(request.getRequestId(), response); + } + }); + } + + + public static ListGridRecord[] buildRecords(PageList<ResourceGroup> groupList) { + + ListGridRecord[] records = null; + if (groupList != null) { + records = new ListGridRecord[groupList.size()]; + + for (int x = 0; x < groupList.size(); x++) { + ResourceGroup group = groupList.get(x); + ListGridRecord record = new ListGridRecord(); + record.setAttribute("group", group); + record.setAttribute("id", group.getId()); + record.setAttribute("name", group.getName()); + record.setAttribute("description", group.getDescription()); + record.setAttribute("groupCategory", group.getGroupCategory()); + + record.setAttribute("resourceType", group.getResourceType()); + record.setAttribute("typeName", group.getResourceType().getName()); + record.setAttribute("pluginName", group.getResourceType().getPlugin()); + + records[x] = record; + } + } + return records; + } + +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java index 618fefe..647b072 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java @@ -58,11 +58,15 @@ public class ResourceDatasource extends RPCDataSource { DataSourceTextField descriptionDataField = new DataSourceTextField("description", "Description"); descriptionDataField.setCanEdit(false);
- DataSourceImageField availabilityDataField = new DataSourceImageField("currentAvailability.availabilityType", - "Availability", 20); + DataSourceTextField typeNameDataField = new DataSourceTextField("typeName", "Type"); + DataSourceTextField pluginNameDataField = new DataSourceTextField("pluginName", "Plugin"); + DataSourceTextField categoryDataField = new DataSourceTextField("category", "Category"); + + DataSourceImageField availabilityDataField = new DataSourceImageField("currentAvailability", "Availability", 20); + availabilityDataField.setCanEdit(false);
- setFields(idDataField, nameDataField, descriptionDataField, availabilityDataField); + setFields(idDataField, nameDataField, descriptionDataField, typeNameDataField, pluginNameDataField, categoryDataField, availabilityDataField); }
public String getQuery() { @@ -78,7 +82,7 @@ public class ResourceDatasource extends RPCDataSource { final long start = System.currentTimeMillis();
ResourceCriteria criteria = new ResourceCriteria(); - criteria.setPageControl(getPageControl(request, criteria.getAlias())); + criteria.setPageControl(getPageControl(request)); criteria.addFilterName(this.query);
resourceService.findResourcesByCriteria(criteria, new AsyncCallback<PageList<Resource>>() { @@ -101,7 +105,11 @@ public class ResourceDatasource extends RPCDataSource { record.setAttribute("id",res.getId()); record.setAttribute("name",res.getName()); record.setAttribute("description",res.getDescription()); - record.setAttribute("currentAvailability.availabilityType", + record.setAttribute("typeName",res.getResourceType().getName()); + record.setAttribute("pluginName",res.getResourceType().getPlugin()); + record.setAttribute("category",res.getResourceType().getCategory().getDisplayName()); + + record.setAttribute("currentAvailability", res.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP ? "/images/icons/availability_green_16.png" : "/images/icons/availability_red_16.png"); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java index 333a877..8a6b60f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java @@ -27,6 +27,7 @@ import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.Criteria; +import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.SelectionAppearance; @@ -108,34 +109,17 @@ public class ResourceSearchView extends VLayout { } });
- /* TODO: Safe to remove this, we're now using links in the records - nameField.addRecordClickHandler(new RecordClickHandler() { - public void onRecordClick(final RecordClickEvent recordClickEvent) { - for (final ResourceSelectListener l : selectListeners) { - // TODO GH: This doesn't work - final int resourceId = recordClickEvent.getRecord().getAttributeAsInt("id"); - ResourceCriteria c = new ResourceCriteria(); - c.addFilterId(resourceId); - ResourceGWTServiceAsync.Util.getInstance().findResourcesByCriteria(CoreGUI.getSessionSubject(), c, new AsyncCallback<PageList<Resource>>() { - public void onFailure(Throwable caught) { - System.out.println("Failed ehre"); - }
- public void onSuccess(PageList<Resource> result) { + ListGridField descriptionField = new ListGridField("description", "Description"); + ListGridField typeNameField = new ListGridField("typeName", "Type", 130); + ListGridField pluginNameField = new ListGridField("pluginName", "Plugin", 100); + ListGridField categoryField = new ListGridField("category", "Category", 60);
- l.onResourceSelected(result.get(0));
- } - }); - } - } - }); - */
- ListGridField descriptionField = new ListGridField("description", "Description"); ListGridField availabilityField = new ListGridField("currentAvailability", "Availability", 55); availabilityField.setAlign(Alignment.CENTER); - listGrid.setFields(idField, nameField, descriptionField, availabilityField); + listGrid.setFields(idField, nameField, descriptionField, typeNameField, pluginNameField, categoryField, availabilityField);
gridHolder.addMember(listGrid); @@ -159,6 +143,7 @@ public class ResourceSearchView extends VLayout {
+ final Label tableInfo = new Label("Total: " + listGrid.getTotalRows()); tableInfo.setWrap(false);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java index dede07c..0e2a101 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java @@ -22,6 +22,7 @@ import org.rhq.core.domain.resource.Resource; import org.rhq.core.domain.resource.ResourceType; import org.rhq.enterprise.gui.coregui.client.Presenter; import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane; +import org.rhq.enterprise.gui.coregui.client.components.SimpleCollapsiblePanel; import org.rhq.enterprise.gui.coregui.client.components.SubTabLayout; import org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor; import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSelectListener; @@ -50,6 +51,7 @@ public class ResourceDetailView extends VLayout implements Presenter, ResourceSe
private Resource resource;
+ private SimpleCollapsiblePanel summaryPanel; private ResourceSummaryView summaryView;
private Tab summaryTab; @@ -76,8 +78,14 @@ public class ResourceDetailView extends VLayout implements Presenter, ResourceSe setWidth100(); setHeight100();
- // addMember(new ResourceSummaryView()); + + + // The header section summaryView = new ResourceSummaryView(); + summaryPanel = new SimpleCollapsiblePanel("Summary", summaryView); + + + // The Tabs section
topTabSet = new TabSet(); topTabSet.setTabBarPosition(Side.TOP); @@ -102,7 +110,7 @@ public class ResourceDetailView extends VLayout implements Presenter, ResourceSe title.setContents("Loading..."); addMember(title);
- addMember(summaryView); + addMember(summaryPanel);
addMember(topTabSet);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java index f16b04e..0cd388a 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceSummaryView.java @@ -161,14 +161,14 @@ public class ResourceSummaryView extends DynamicForm implements ResourceSelectLi // item.setValue("?"); }
- SectionItem section = new SectionItem("Summary", "Summary"); - section.setTitle("Summary"); - section.setDefaultValue("Summary"); - section.setCanCollapse(true); - section.setCellStyle("HidablePlainSectionHeader"); - section.setItemIds(itemIds.toArray(new String[itemIds.size()])); - - formItems.add(0, section); +// SectionItem section = new SectionItem("Summary", "Summary"); +// section.setTitle("Summary"); +// section.setDefaultValue("Summary"); +// section.setCanCollapse(true); +// section.setCellStyle("HidablePlainSectionHeader"); +// section.setItemIds(itemIds.toArray(new String[itemIds.size()])); +// formItems.add(0, section); + formItems.add(new SpacerItem()); setItems(formItems.toArray(new FormItem[formItems.size()]));
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/GraphListView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/GraphListView.java index 1ff9332..df284fa 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/GraphListView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/GraphListView.java @@ -62,7 +62,9 @@ public class GraphListView extends VLayout implements ResourceSelectListener { for (Canvas c : getMembers()) { c.destroy(); } - buildGraphs(); + if (resource != null) { + buildGraphs(); + } }
@@ -113,8 +115,11 @@ public class GraphListView extends VLayout implements ResourceSelectListener { }
private void buildGraph(MeasurementDefinition def, List<MeasurementDataNumericHighLowComposite> data) { + SmallGraphView graph = new SmallGraphView(def, data); + graph.setWidth("80%"); + graph.setHeight(250);
- addMember(new SmallGraphView(def, data)); + addMember(graph);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java index b053c71..525c8b7 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java @@ -36,6 +36,7 @@ import ca.nanometrics.gflot.client.options.TickFormatter;
import org.rhq.core.domain.measurement.MeasurementConverterClient; import org.rhq.core.domain.measurement.MeasurementDefinition; +import org.rhq.core.domain.measurement.MeasurementUnits; import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import com.google.gwt.i18n.client.DateTimeFormat; @@ -43,6 +44,7 @@ import com.smartgwt.client.types.AnimationEffect; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.WidgetCanvas; import com.smartgwt.client.widgets.layout.VLayout;
import java.util.Date; @@ -74,9 +76,12 @@ public class SmallGraphView extends VLayout { super(); this.definition = def; this.data = data; - setHeight(250); +// setHeight(250); + setHeight100(); setWidth100(); - setPadding(10); +// setPadding(10); + + }
public String getName() { @@ -94,6 +99,13 @@ public class SmallGraphView extends VLayout { drawGraph(); }
+ + @Override + public void parentResized() { + super.parentResized(); + onDraw(); + } + private void drawGraph() {
PlotModel model = new PlotModel(); @@ -117,7 +129,9 @@ public class SmallGraphView extends VLayout {
// create the plot SimplePlot plot = new SimplePlot(model, plotOptions); - plot.setSize("100%","70%"); + plot.setSize(String.valueOf(getInnerContentWidth()), String.valueOf(getInnerContentHeight() - 20)); +// "80%","80%"); +
// add hover listener @@ -159,7 +173,8 @@ public class SmallGraphView extends VLayout { if (definition != null) { addMember(new HTMLFlow("<b>" + definition.getDisplayName() + "</b> " + definition.getDescription())); } - addMember(plot); + + addMember(new WidgetCanvas(plot)); }
private String getHover(PlotItem item) { @@ -190,7 +205,9 @@ public class SmallGraphView extends VLayout {
plotOptions.setXAxisOptions(new AxisOptions().setTicks(8). setMinimum(min).setMaximum(max).setTickFormatter(new TickFormatter() { public String formatTickValue(double tickValue, Axis axis) { - return String.valueOf(new Date((long) tickValue)); + com.google.gwt.i18n.client.DateTimeFormat dateFormat = DateTimeFormat.getShortDateTimeFormat(); + return dateFormat.format(new Date((long)tickValue)); +// return String.valueOf(new Date((long) tickValue)); // return MONTH_NAMES[(int) (tickValue - 1)]; } })); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java index a45cfa4..90dcac4 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java @@ -106,6 +106,7 @@ public class MenuBarView extends HLayout {
Hyperlink dashboardLink = new Hyperlink("Dashboard", "Dashboard"); dashboardLink.setStylePrimaryName("TopSectionLink"); + dashboardLink.setStyleName("TopSectionLink"); addMember(dashboardLink);
Hyperlink demoLink = new Hyperlink("Demo", "Demo"); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java new file mode 100644 index 0000000..766f6a5 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java @@ -0,0 +1,44 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.util; + +import com.smartgwt.client.util.SC; + +import java.util.List; + +/** + * @author Greg Hinkle + */ +public class ErrorHandler { + + + private List<String> errors; + + + public void handleError(String message, Throwable t) { + + // TODO: This is just a placeholder implementation + SC.say(message); + + t.printStackTrace(); + errors.add(message); + + } + +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java index ef00853..c979e3f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java @@ -18,9 +18,11 @@ */ package org.rhq.enterprise.gui.coregui.client.util;
+import org.rhq.core.domain.criteria.ResourceCriteria; import org.rhq.core.domain.util.OrderingField; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageOrdering; +import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; @@ -51,60 +53,59 @@ public abstract class RPCDataSource extends DataSource {
@Override protected Object transformRequest(DSRequest request) { - switch (request.getOperationType()) { - case FETCH: - DSResponse response = createResponse(request); - executeFetch(request, response); - break; - case ADD: - case UPDATE: - case REMOVE: - super.transformRequest(request); - break; - default: - super.transformRequest(request); - break; + try { + switch (request.getOperationType()) { + case FETCH: + DSResponse response = createResponse(request); + executeFetch(request, response); + break; + case ADD: + case UPDATE: + case REMOVE: + super.transformRequest(request); + break; + default: + super.transformRequest(request); + break; + } + } catch (Throwable t) { + CoreGUI.getErrorHandler().handleError("Failure in datasource [" + request.getOperationType() + "]", t); + return null; } - return request.getData(); }
/** * Returns a prepopulated PageControl based on the provided DSRequest. This will set sort fields, * pagination, but *not* filter fields. - * + * * @param request the request to turn into a page control * @return the page control for passing to criteria and other queries */ - protected PageControl getPageControl(DSRequest request, String alias) { + protected PageControl getPageControl(DSRequest request) { // Initialize paging. - PageControl pageControl = PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow()); + PageControl pageControl; + if (request.getStartRow() == null || request.getEndRow() == null) { + pageControl = new PageControl(); + } else { + pageControl = PageControl.getExplicitPageControl(request.getStartRow(), request.getEndRow() - request.getStartRow()); + }
// Initialize sorting. String sortBy = request.getAttribute("sortBy"); - if (sortBy == null) { - List<OrderingField> orderingFields = getDefaultOrderingFields(alias); - if (orderingFields != null) { - for (OrderingField orderingField : orderingFields) { - pageControl.addDefaultOrderingField(orderingField.getField(), orderingField.getOrdering()); - } - } - } else { + if (sortBy != null) { String[] sorts = sortBy.split(","); for (String sort : sorts) { PageOrdering ordering = (sort.startsWith("-")) ? PageOrdering.DESC : PageOrdering.ASC; String columnName = (ordering == PageOrdering.DESC) ? sort.substring(1) : sort; - String fieldName = alias + "." + columnName; - pageControl.addDefaultOrderingField(fieldName, ordering); + ResourceCriteria c; + pageControl.addDefaultOrderingField(columnName, ordering); } }
return pageControl; }
- protected List<OrderingField> getDefaultOrderingFields(String alias) { - return null; - }
protected abstract void executeFetch(final DSRequest request, final DSResponse response);
@@ -112,13 +113,13 @@ public abstract class RPCDataSource extends DataSource { * Executed on <code>REMOVE</code> operation. <code>processResponse (requestId, response)</code> * should be called when operation completes (either successful or failure). * - * @param request <code>DSRequest</code> being processed. <code>request.getData ()</code> - * contains record should be removed. + * @param request <code>DSRequest</code> being processed. <code>request.getData ()</code> + * contains record should be removed. * @param response <code>DSResponse</code>. <code>setData (list)</code> should be called on - * successful execution of this method. Array should contain single element representing - * removed row. <code>setStatus (<0)</code> should be called on failure. + * successful execution of this method. Array should contain single element representing + * removed row. <code>setStatus (<0)</code> should be called on failure. */ - protected void executeRemove (final DSRequest request, final DSResponse response) { + protected void executeRemove(final DSRequest request, final DSResponse response) { throw new UnsupportedOperationException("This dataSource does not support removal."); }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java index 4198923..6230e90 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java @@ -120,17 +120,9 @@ public class ResourceGWTServiceImpl extends AbstractGWTServiceImpl implements Re resource.setAgent(null); }
- - HibernateDetachUtility.nullOutUninitializedFields(result, - HibernateDetachUtility.SerializationType.SERIALIZATION); - - long start = System.currentTimeMillis(); - ObjectFilter.filterFields(result, importantFieldsSet);
- System.out.println("Took: " + (System.currentTimeMillis() - start) + "ms"); - - return result; + return SerialUtility.prepare(result, "ResourceService.findResourceByCriteria"); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. throw new RuntimeException(e); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java index 3516ecc..a4ae911 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGroupGWTServiceImpl.java @@ -20,12 +20,26 @@ package org.rhq.enterprise.gui.coregui.server.gwt;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
+import org.rhq.core.domain.criteria.ResourceGroupCriteria; +import org.rhq.core.domain.resource.group.ResourceGroup; +import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGroupGWTService; - +import org.rhq.enterprise.gui.coregui.server.util.SerialUtility; +import org.rhq.enterprise.server.resource.group.ResourceGroupManagerBean; +import org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal; +import org.rhq.enterprise.server.util.LookupUtil;
/** * @author Greg Hinkle */ public class ResourceGroupGWTServiceImpl extends AbstractGWTServiceImpl implements ResourceGroupGWTService { + + private ResourceGroupManagerLocal groupManager = LookupUtil.getResourceGroupManager(); + + public PageList<ResourceGroup> findResourceGroupsByCriteria(ResourceGroupCriteria criteria) { + return SerialUtility.prepare(groupManager.findResourceGroupsByCriteria(getSessionSubject(), criteria), + "ResourceGroupService.findResourceGroupsByCriteria"); + } + } \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css index 76cd9c5..7211bc6 100644 --- a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css +++ b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css @@ -1,11 +1,57 @@ -body { +/*body { background-color: white; color: black; font-family: Arial, sans-serif; font-size: small; margin: 8px; +}*/ + +body, p, td, th, option, input, textarea, select { + color: #000000; + font-family: tahoma, verdana, sans-serif; + font-size: 11px; +} + +img { + border-style: none; +} + +hr { + background-color: #AAAAAA; + border: 0 none; + color: #AAAAAA; + height: 1px; + margin-left: 0; + margin-right: 0; + text-align: center; + width: 100%; }
+a:link { + color: #003399; + font-weight: bold; + text-decoration: none; +} + +a:visited { + color: #003399; + font-weight: bold; + text-decoration: none; +} + +a:hover { + color: #003399; + font-weight: bold; + text-decoration: underline; +} + +.HeaderLabel { + font-size: 14pt; + font-weight: bold; + color: #444444; +} + + .OddRow { background-color: white; border-bottom-color: rgb(230, 234, 239); @@ -57,7 +103,6 @@ body { color: black; }
-z
.BreadCrumb { font-size: 12pt; @@ -80,6 +125,15 @@ z }
+ +.GraphTooltip { + background-color:#B5D5FF; + font-weight:bold; + padding:5px; +} + + + .SubTabButton, .SubTabButtonOver, .SubTabButtonFocused, diff --git a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html index f7b8df4..5b78843 100644 --- a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html +++ b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html @@ -2,9 +2,13 @@ <head> <title>RHQ Core Application</title> <link rel="stylesheet" href="CoreGUI.css"> + <link rel="icon" type="image/png" href="/images/favicon.png" /> + <link rel="apple-touch-icon" href="/images/favicon.png" />
<script type="text/javascript">var isomorphicDir = "org.rhq.enterprise.gui.coregui.CoreGUI/sc/"; </script> + + </head> <body> <script type="text/javascript" language="javascript"
commit b9c3f28dc306938414c71f70776f8b126fed1679 Author: Greg Hinkle ghinkle@redhat.com Date: Fri Feb 26 16:55:07 2010 -0500
Reworked the sort loading from page control to be gwt compatible Fixed some criteria query using APIs that were not using CriteriaQueryRunner
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AlertCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AlertCriteria.java index 25aa0d8..057ebdf 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AlertCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AlertCriteria.java @@ -86,6 +86,7 @@ public class AlertCriteria extends Criteria { filterOverrides.put("groupAlertDefinitionIds", "alertDefinition.groupAlertDefinition.id IN ( ? )");
sortOverrides.put("name", "alertDefinition.name"); + sortOverrides.put("resourceId", "alertDefinition.resource.id"); sortOverrides.put("priority", "alertDefinition.priority"); }
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java index 214be85..75c32dc 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/Criteria.java @@ -41,6 +41,7 @@ import java.util.Map; */ @XmlAccessorType(XmlAccessType.FIELD) public abstract class Criteria implements Serializable { + public enum Type { FILTER, FETCH, SORT; } @@ -82,6 +83,17 @@ public abstract class Criteria implements Serializable {
public abstract Class getPersistentClass();
+ public Integer getPageNumber() { + return pageNumber; + } + + public Integer getPageSize() { + return pageSize; + } + + public List<String> getOrderingFieldNames() { + return orderingFieldNames; + }
public String getJPQLFilterOverride(String fieldName) { return filterOverrides.get(fieldName); @@ -183,39 +195,8 @@ public abstract class Criteria implements Serializable { this.requiredPermissions = Arrays.asList(requiredPermissions); }
- public PageControl getPageControl() { - PageControl pc = null; - - if (pageControlOverrides != null) { - pc = pageControlOverrides; - } else { - if (pageNumber == null || pageSize == null) { - pc = PageControl.getUnlimitedInstance(); - } else { - pc = new PageControl(pageNumber, pageSize); - } - for (String fieldName : orderingFieldNames) { - /* TODO: GWT - for (Field sortField : getFields(Type.SORT)) { - if (sortField.getName().equals(fieldName) == false) { - continue; - } - Object sortFieldValue = null; - try { - sortFieldValue = sortField.get(this); - } catch (IllegalAccessException iae) { - throw new RuntimeException(iae); - } - if (sortFieldValue != null) { - PageOrdering pageOrdering = (PageOrdering) sortFieldValue; - pc.addDefaultOrderingField(getCleansedFieldName(sortField, 4), pageOrdering); - } - } - */ - } - } - return pc; - } + +
public String getAlias() { if (this.alias == null) { diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java index 472dbb0..b84dea8 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java @@ -95,6 +95,7 @@ import org.rhq.enterprise.server.core.AgentManagerLocal; import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal; import org.rhq.enterprise.server.resource.ResourceTypeNotFoundException; import org.rhq.enterprise.server.util.CriteriaQueryGenerator; +import org.rhq.enterprise.server.util.CriteriaQueryRunner;
/** * EJB that handles content subsystem interaction with resources, including content discovery reports and create/delete @@ -1435,13 +1436,9 @@ public class ContentManagerBean implements ContentManagerLocal, ContentManagerRe "resource", subject.getId()); }
- Query query = generator.getQuery(entityManager); - Query countQuery = generator.getCountQuery(entityManager); + CriteriaQueryRunner<InstalledPackage> queryRunner = new CriteriaQueryRunner(criteria, generator, entityManager);
- long count = (Long) countQuery.getSingleResult(); - List<InstalledPackage> results = query.getResultList(); - - return new PageList<InstalledPackage>(results, (int) count, criteria.getPageControl()); + return queryRunner.execute(); }
@SuppressWarnings("unchecked") @@ -1461,13 +1458,9 @@ public class ContentManagerBean implements ContentManagerLocal, ContentManagerRe
CriteriaQueryGenerator generator = new CriteriaQueryGenerator(criteria);
- Query query = generator.getQuery(entityManager); - Query countQuery = generator.getCountQuery(entityManager); - - long count = (Long) countQuery.getSingleResult(); - List<PackageVersion> results = query.getResultList(); + CriteriaQueryRunner<PackageVersion> queryRunner = new CriteriaQueryRunner(criteria, generator, entityManager);
- return new PageList<PackageVersion>(results, (int) count, criteria.getPageControl()); + return queryRunner.execute(); }
public InstalledPackage getBackingPackageForResource(Subject subject, int resourceId) { diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java index dca0b68..e16edc4 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java @@ -773,13 +773,9 @@ public class RepoManagerBean implements RepoManagerLocal, RepoManagerRemote {
CriteriaQueryGenerator generator = new CriteriaQueryGenerator(criteria);
- Query query = generator.getQuery(entityManager); - Query countQuery = generator.getCountQuery(entityManager); - - long count = (Long) countQuery.getSingleResult(); - List<PackageVersion> packageVersions = query.getResultList(); - - return new PageList<PackageVersion>(packageVersions, (int) count, criteria.getPageControl()); + CriteriaQueryRunner<PackageVersion> queryRunner = new CriteriaQueryRunner(criteria, generator, entityManager); + + return queryRunner.execute(); }
@RequiredPermission(Permission.MANAGE_INVENTORY) diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java index 7d88f60..033417f 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java @@ -252,7 +252,7 @@ public final class CriteriaQueryGenerator { PageControl pc = criteria.getPageControlOverrides(); if (pc == null) { overridden = false; - pc = criteria.getPageControl(); + pc = getPageControl(criteria); }
boolean first = true; @@ -264,19 +264,17 @@ public final class CriteriaQueryGenerator { results.append(", "); }
- if (overridden) { - String fieldName = orderingField.getField(); - PageOrdering ordering = orderingField.getOrdering(); - - results.append(fieldName).append(' ').append(ordering); + String fieldName = orderingField.getField(); + String override = criteria.getJPQLSortOverride(fieldName); + if (override == null) { + override = alias + "." + fieldName; } else { - String fieldName = orderingField.getField(); - String override = criteria.getJPQLSortOverride(fieldName); - String fragment = override != null ? override : fieldName; - - results.append(alias).append('.').append(fragment); - results.append(' ').append(orderingField.getOrdering()); + override = alias + "." + override; } + + PageOrdering ordering = orderingField.getOrdering(); + + results.append(override).append(' ').append(ordering); } } results.append(NL); @@ -309,7 +307,7 @@ public final class CriteriaQueryGenerator { }
- private List<Field> getFields(Criteria criteria, Criteria.Type fieldType) { + private static List<Field> getFields(Criteria criteria, Criteria.Type fieldType) { String prefix = fieldType.name().toLowerCase(); List<Field> results = new ArrayList<Field>();
@@ -327,7 +325,7 @@ public final class CriteriaQueryGenerator { return results; }
- public String getCleansedFieldName(Field field, int leadingCharsToStrip) { + public static String getCleansedFieldName(Field field, int leadingCharsToStrip) { String fieldNameFragment = field.getName().substring(leadingCharsToStrip); String fieldName = Character.toLowerCase(fieldNameFragment.charAt(0)) + fieldNameFragment.substring(1); return fieldName; @@ -402,7 +400,7 @@ public final class CriteriaQueryGenerator { String queryString = getQueryString(false); Query query = em.createQuery(queryString); setBindValues(query, false); - PersistenceUtility.setDataPage(query, criteria.getPageControl()); + PersistenceUtility.setDataPage(query, getPageControl(criteria)); return query; }
@@ -514,4 +512,37 @@ public final class CriteriaQueryGenerator { generator.getQueryString(false); generator.getQueryString(true); } + + + public static PageControl getPageControl(Criteria criteria) { + PageControl pc = null; + + if (criteria.getPageControlOverrides() != null) { + pc = criteria.getPageControlOverrides(); + } else { + if (criteria.getPageNumber() == null || criteria.getPageSize() == null) { + pc = PageControl.getUnlimitedInstance(); + } else { + pc = new PageControl(criteria.getPageNumber(), criteria.getPageSize()); + } + for (String fieldName : criteria.getOrderingFieldNames()) { + for (Field sortField : getFields(criteria, Criteria.Type.SORT)) { + if (sortField.getName().equals(fieldName) == false) { + continue; + } + Object sortFieldValue = null; + try { + sortFieldValue = sortField.get(criteria); + } catch (IllegalAccessException iae) { + throw new RuntimeException(iae); + } + if (sortFieldValue != null) { + PageOrdering pageOrdering = (PageOrdering) sortFieldValue; + pc.addDefaultOrderingField(getCleansedFieldName(sortField, 4), pageOrdering); + } + } + } + } + return pc; + } } \ No newline at end of file diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java index 12099c8..dad2707 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java @@ -57,7 +57,7 @@ public class CriteriaQueryRunner<T> { initAllPersistentBags(results); }
- return new PageList<T>(results, (int) count, criteria.getPageControl()); + return new PageList<T>(results, (int) count, CriteriaQueryGenerator.getPageControl(criteria)); }
private void initAllPersistentBags(List<T> entities) {
commit ca17f94f2925b49a50a48d8112be8eab8407b43d Author: Greg Hinkle ghinkle@redhat.com Date: Fri Feb 26 16:52:53 2010 -0500
Moved the generated files out so they don't intefere with scm Got rid of the unneeded smartgwt deps removed extraneous gwt files
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml index 0564164..b47cad8 100644 --- a/modules/core/domain/pom.xml +++ b/modules/core/domain/pom.xml @@ -215,11 +215,11 @@ <scope>provided</scope> </dependency>
- <dependency> + <!--<dependency> <groupId>com.smartgwt</groupId> <artifactId>smartgwt</artifactId> <version>2.0</version> - </dependency> + </dependency>-->
</dependencies> @@ -251,14 +251,20 @@ <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> - <version>1.2.0-11137</version> + <version>1.2</version> + <configuration> - <inplace>true</inplace> - <logLevel>DEBUG</logLevel> - <runTarget>RHQDomain.html</runTarget> - <warSourceDirectory>war</warSourceDirectory> + <noServer>true</noServer> + <inplace>false</inplace> + <logLevel>INFO</logLevel> <extraJvmArgs>-Xmx512m</extraJvmArgs> + <localWorkers>2</localWorkers> + <draftCompile>true</draftCompile> + <buildOutputDirectory>target/gwtclasses</buildOutputDirectory> + <hostedWebapp>target/hostedwar</hostedWebapp> + <debugSuspend>false</debugSuspend> </configuration> + <executions> <execution> <goals> @@ -414,4 +420,18 @@
</profiles>
+ + <repositories> + <repository> + <id>codehaus</id> + <name>codehaus</name> + <url>http://repository.codehaus.org/</url> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + </repositories> + + + </project> diff --git a/modules/core/domain/src/main/java/org/rhq/core/RHQDomain.gwt.xml b/modules/core/domain/src/main/java/org/rhq/core/RHQDomain.gwt.xml index 634ac86..a9a94a9 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/RHQDomain.gwt.xml +++ b/modules/core/domain/src/main/java/org/rhq/core/RHQDomain.gwt.xml @@ -3,7 +3,6 @@ <module>
<inherits name='com.google.gwt.user.User'/> - <inherits name='com.smartgwt.SmartGwt' />
<entry-point class='org.rhq.core.client.RHQDomain'/>
@@ -11,9 +10,9 @@ <source path="domain"/>
- <generate-with class="org.rhq.core.rebind.RecordBuilderGenerator"> + <!--<generate-with class="org.rhq.core.rebind.RecordBuilderGenerator"> <when-type-assignable class="org.rhq.core.domain.util.Recordizable"/> - </generate-with> + </generate-with>-->
</module> \ No newline at end of file diff --git a/modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.css b/modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.css deleted file mode 100644 index a111f82..0000000 --- a/modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - background-color: white; - color: black; - font-family: Arial, sans-serif; - font-size: small; - margin: 8px; -} diff --git a/modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.html b/modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.html deleted file mode 100644 index 3878eb5..0000000 --- a/modules/core/domain/war/org.rhq.core.RHQDomain/RHQDomain.html +++ /dev/null @@ -1,10 +0,0 @@ -<html> -<head> - <title>RHQDomain Application</title> - <link rel="stylesheet" href="RHQDomain.css"> -</head> -<body> -<script type="text/javascript" language="javascript" src="org.rhq.core.RHQDomain.nocache.js"></script> -<h1>RHQDomain Application</h1> -</body> -</html> diff --git a/modules/core/domain/war/org.rhq.core.RHQDomain/clear.cache.gif b/modules/core/domain/war/org.rhq.core.RHQDomain/clear.cache.gif deleted file mode 100644 index e565824..0000000 Binary files a/modules/core/domain/war/org.rhq.core.RHQDomain/clear.cache.gif and /dev/null differ diff --git a/modules/core/domain/war/org.rhq.core.RHQDomain/hosted.html b/modules/core/domain/war/org.rhq.core.RHQDomain/hosted.html deleted file mode 100644 index e8983af..0000000 --- a/modules/core/domain/war/org.rhq.core.RHQDomain/hosted.html +++ /dev/null @@ -1,333 +0,0 @@ -<html> -<head><script> -var $wnd = parent; -var $doc = $wnd.document; -var $moduleName, $moduleBase, $entry -,$stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null -,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null; -// Lightweight metrics -if ($stats) { - var moduleFuncName = location.search.substr(1); - var moduleFunc = $wnd[moduleFuncName]; - var moduleName = moduleFunc ? moduleFunc.moduleName : "unknown"; - $stats({moduleName:moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'}); -} -var $hostedHtmlVersion="2.0"; - -var gwtOnLoad; -var $hosted = "localhost:9997"; - -function loadIframe(url) { - var topDoc = window.top.document; - - // create an iframe - var iframeDiv = topDoc.createElement("div"); - iframeDiv.innerHTML = "<iframe scrolling=no frameborder=0 src='" + url + "'>"; - var iframe = iframeDiv.firstChild; - - // mess with the iframe style a little - var iframeStyle = iframe.style; - iframeStyle.position = "absolute"; - iframeStyle.borderWidth = "0"; - iframeStyle.left = "0"; - iframeStyle.top = "0"; - iframeStyle.width = "100%"; - iframeStyle.backgroundColor = "#ffffff"; - iframeStyle.zIndex = "1"; - iframeStyle.height = "100%"; - - // update the top window's document's body's style - var hostBodyStyle = window.top.document.body.style; - hostBodyStyle.margin = "0"; - hostBodyStyle.height = iframeStyle.height; - hostBodyStyle.overflow = "hidden"; - - // insert the iframe - topDoc.body.insertBefore(iframe, topDoc.body.firstChild); -} - -var ua = navigator.userAgent.toLowerCase(); -if (ua.indexOf("gecko") != -1) { - // install eval wrapper on FF to avoid EvalError problem - var __eval = window.eval; - window.eval = function(s) { - return __eval(s); - } -} -if (ua.indexOf("chrome") != -1) { - // work around __gwt_ObjectId appearing in JS objects - var hop = Object.prototype.hasOwnProperty; - Object.prototype.hasOwnProperty = function(prop) { - return prop != "__gwt_ObjectId" && hop.call(this, prop); - }; -} - -// wrapper to call JS methods, which we need both to be able to supply a -// different this for method lookup and to get the exception back -function __gwt_jsInvoke(thisObj, methodName) { - try { - var args = Array.prototype.slice.call(arguments, 2); - return [0, window[methodName].apply(thisObj, args)]; - } catch (e) { - return [1, e]; - } -} - -var __gwt_javaInvokes = []; -function __gwt_makeJavaInvoke(argCount) { - return __gwt_javaInvokes[argCount] || __gwt_doMakeJavaInvoke(argCount); -} - -function __gwt_doMakeJavaInvoke(argCount) { - // IE6 won't eval() anonymous functions except as r-values - var argList = ""; - for (var i = 0; i < argCount; i++) { - argList += ",p" + i; - } - var argListNoComma = argList.substring(1); - - return eval( - "__gwt_javaInvokes[" + argCount + "] =\n" + - " function(thisObj, dispId" + argList + ") {\n" + - " var result = __static(dispId, thisObj" + argList + ");\n" + - " if (result[0]) {\n" + - " throw result[1];\n" + - " } else {\n" + - " return result[1];\n" + - " }\n" + - " }\n" - ); -} - -/* - * This is used to create tear-offs of Java methods. Each function corresponds - * to exactly one dispId, and also embeds the argument count. We get the "this" - * value from the context in which the function is being executed. - * Function-object identity is preserved by caching in a sparse array. - */ -var __gwt_tearOffs = []; -var __gwt_tearOffGenerators = []; -function __gwt_makeTearOff(proxy, dispId, argCount) { - return __gwt_tearOffs[dispId] || __gwt_doMakeTearOff(dispId, argCount); -} - -function __gwt_doMakeTearOff(dispId, argCount) { - return __gwt_tearOffs[dispId] = - (__gwt_tearOffGenerators[argCount] || __gwt_doMakeTearOffGenerator(argCount))(dispId); -} - -function __gwt_doMakeTearOffGenerator(argCount) { - // IE6 won't eval() anonymous functions except as r-values - var argList = ""; - for (var i = 0; i < argCount; i++) { - argList += ",p" + i; - } - var argListNoComma = argList.substring(1); - - return eval( - "__gwt_tearOffGenerators[" + argCount + "] =\n" + - " function(dispId) {\n" + - " return function(" + argListNoComma + ") {\n" + - " var result = __static(dispId, this" + argList + ");\n" + - " if (result[0]) {\n" + - " throw result[1];\n" + - " } else {\n" + - " return result[1];\n" + - " }\n" + - " }\n" + - " }\n" - ); -} - -function __gwt_makeResult(isException, result) { - return [isException, result]; -} - -function __gwt_disconnected() { - // Prevent double-invocation. - window.__gwt_disconnected = new Function(); - // Do it in a timeout so we can be sure we have a clean stack. - window.setTimeout(__gwt_disconnected_impl, 1); -} - -function __gwt_disconnected_impl() { - var topWin = window.top; - var topDoc = topWin.document; - var outer = topDoc.createElement("div"); - // Do not insert whitespace or outer.firstChild will get a text node. - outer.innerHTML = - '<div style="position:absolute;z-index:2147483646;left:0px;top:0px;right:0px;bottom:0px;filter:alpha(opacity=75);opacity:0.75;background-color:#000000;"></div>' + - '<div style="position:absolute;z-index:2147483647;left:50px;top:50px;width:600px;color:#FFFFFF;font-family:verdana;">' + - '<div style="font-size:30px;font-weight:bold;">GWT Code Server Disconnected</div>' + - '<p style="font-size:15px;"> Most likely, you closed GWT development mode. Or you might have lost network connectivity. To fix this, try restarting GWT Development Mode and <a style="color: #FFFFFF; font-weight: bold;" href="javascript:location.reload()">REFRESH</a> this page.</p>' + - '</div>' - ; - topDoc.body.appendChild(outer); - var glass = outer.firstChild; - var glassStyle = glass.style; - - // Scroll to the top and remove scrollbars. - topWin.scrollTo(0, 0); - if (topDoc.compatMode == "BackCompat") { - topDoc.body.style["overflow"] = "hidden"; - } else { - topDoc.documentElement.style["overflow"] = "hidden"; - } - - // Steal focus. - glass.focus(); - - if ((navigator.userAgent.indexOf("MSIE") >= 0) && (topDoc.compatMode == "BackCompat")) { - // IE quirks mode doesn't support right/bottom, but does support this. - glassStyle.width = "125%"; - glassStyle.height = "100%"; - } else if (navigator.userAgent.indexOf("MSIE 6") >= 0) { - // IE6 doesn't have a real standards mode, so we have to use hacks. - glassStyle.width = "125%"; // Get past scroll bar area. - // Nasty CSS; onresize would be better but the outer window won't let us add a listener IE. - glassStyle.setExpression("height", "document.documentElement.clientHeight"); - } -} - -function findPluginObject() { - try { - return document.getElementById('pluginObject'); - } catch (e) { - return null; - } -} - -function findPluginEmbed() { - try { - return document.getElementById('pluginEmbed') - } catch (e) { - return null; - } -} - -function findPluginXPCOM() { - try { - return __gwt_HostedModePlugin; - } catch (e) { - return null; - } -} - -gwtOnLoad = function(errFn, modName, modBase){ - $moduleName = modName; - $moduleBase = modBase; - - // Note that the order is important - var pluginFinders = [ - findPluginXPCOM, - findPluginObject, - findPluginEmbed, - ]; - var topWin = window.top; - var url = topWin.location.href; - if (!topWin.__gwt_SessionID) { - var ASCII_EXCLAMATION = 33; - var ASCII_TILDE = 126; - var chars = []; - for (var i = 0; i < 16; ++i) { - chars.push(Math.floor(ASCII_EXCLAMATION - + Math.random() * (ASCII_TILDE - ASCII_EXCLAMATION + 1))); - } - topWin.__gwt_SessionID = String.fromCharCode.apply(null, chars); - } - var plugin = null; - for (var i = 0; i < pluginFinders.length; ++i) { - try { - var maybePlugin = pluginFinders[i](); - if (maybePlugin != null && maybePlugin.init(window)) { - plugin = maybePlugin; - break; - } - } catch (e) { - } - } - if (!plugin) { - // try searching for a v1 plugin for backwards compatibility - var found = false; - for (var i = 0; i < pluginFinders.length; ++i) { - try { - plugin = pluginFinders[i](); - if (plugin != null && plugin.connect($hosted, $moduleName, window)) { - return; - } - } catch (e) { - } - } - loadIframe("http://gwt.google.com/missing-plugin"); - } else { - if (plugin.connect(url, topWin.__gwt_SessionID, $hosted, $moduleName, - $hostedHtmlVersion)) { - window.onUnload = function() { - try { - // wrap in try/catch since plugins are not required to supply this - plugin.disconnect(); - } catch (e) { - } - }; - } else { - if (errFn) { - errFn(modName); - } else { - alert("Plugin failed to connect to hosted mode server at " + $hosted); - loadIframe("http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM"); - } - } - } -} - -window.onunload = function() { -}; - -// Lightweight metrics -window.fireOnModuleLoadStart = function(className) { - $stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:className}); -}; - -window.__gwt_module_id = 0; -</script></head> -<body> -<font face='arial' size='-1'>This html file is for hosted mode support.</font> -<script><!-- -// Lightweight metrics -$stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'moduleEvalEnd'}); - -// OOPHM currently only supports IFrameLinker -var query = parent.location.search; -if (!findPluginXPCOM()) { - document.write('<embed id="pluginEmbed" type="application/x-gwt-hosted-mode" width="10" height="10">'); - document.write('</embed>'); - document.write('<object id="pluginObject" CLASSID="CLSID:1D6156B6-002B-49E7-B5CA-C138FB843B4E">'); - document.write('</object>'); -} - -// look for the old query parameter if we don't find the new one -var idx = query.indexOf("gwt.codesvr="); -if (idx >= 0) { - idx += 12; // "gwt.codesvr=".length() == 12 -} else { - idx = query.indexOf("gwt.hosted="); - if (idx >= 0) { - idx += 11; // "gwt.hosted=".length() == 11 - } -} -if (idx >= 0) { - var amp = query.indexOf("&", idx); - if (amp >= 0) { - $hosted = query.substring(idx, amp); - } else { - $hosted = query.substring(idx); - } - - // According to RFC 3986, some of this component's characters (e.g., ':') - // are reserved and *may* be escaped. - $hosted = decodeURIComponent($hosted); -} - -query = window.location.search.substring(1); -if (query && $wnd[query]) setTimeout($wnd[query].onScriptLoad, 1); ---></script></body></html>
rhq-commits@lists.fedorahosted.org