Lior Vernia has uploaded a new change for review. Change subject: webadmin: Render Network/Clusters subtab columns sortable ......................................................................
webadmin: Render Network/Clusters subtab columns sortable Implemented client-side sorting for the aforementioned subtab. Change-Id: Ia45d28e7e4be04f60a0c5c8bc83a677bba463c86 Signed-off-by: Lior Vernia <lver...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java 5 files changed, 106 insertions(+), 11 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/28326/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java index 5c0e20f..ce7d2a7 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CheckboxColumn.java @@ -11,10 +11,9 @@ import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.safehtml.shared.SafeHtmlUtils; -import com.google.gwt.user.cellview.client.Column; import com.google.gwt.view.client.CellPreviewEvent; -public abstract class CheckboxColumn<T> extends Column<T, Boolean> { +public abstract class CheckboxColumn<T> extends SortableColumn<T, Boolean> { private boolean isCentralized = false; private boolean multipleSelectionAllowed = true; diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java index f204f9f..4440337 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/ImageResourceColumn.java @@ -8,7 +8,6 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeHtmlUtils; -import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.client.ui.AbstractImagePrototype; /** @@ -17,7 +16,7 @@ * @param <T> * Table row data type. */ -public abstract class ImageResourceColumn<T> extends Column<T, ImageResource> { +public abstract class ImageResourceColumn<T> extends SortableColumn<T, ImageResource> { private static final CommonApplicationResources RESOURCES = GWT.create(CommonApplicationResources.class); protected static final CommonApplicationConstants CONSTANTS = GWT.create(CommonApplicationConstants.class); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java index d439923..4531bcc 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlWithSafeHtmlTooltipColumn.java @@ -10,9 +10,8 @@ import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.cellview.client.Column; -public abstract class SafeHtmlWithSafeHtmlTooltipColumn<T> extends Column<T, SafeHtml>{ +public abstract class SafeHtmlWithSafeHtmlTooltipColumn<T> extends SortableColumn<T, SafeHtml>{ private final TooltipPanel tooltipPanel = new TooltipPanel(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java new file mode 100644 index 0000000..05e7a7f --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkClusterComparator.java @@ -0,0 +1,93 @@ +package org.ovirt.engine.ui.uicommonweb.comparators; + +import java.util.Comparator; + +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; +import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; +import org.ovirt.engine.core.common.businessentities.network.NetworkStatus; +import org.ovirt.engine.core.common.utils.PairQueryable; + +public class NetworkClusterComparator { + + public static class ByName implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + return lexoNumeric.compare(arg0.getFirst().getName(), arg1.getFirst().getName()); + } + } + + public static class ByDescription implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + return lexoNumeric.compare(arg0.getFirst().getdescription(), arg1.getFirst().getdescription()); + } + } + + public static class ByVersion implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + return arg0.getFirst().getcompatibility_version().compareTo(arg1.getFirst().getcompatibility_version()); + } + } + + public static class ByAttachment implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + boolean attached1 = arg0.getSecond() != null; + boolean attached2 = arg1.getSecond() != null; + if (attached1 == attached2) { + return 0; + } else { + return attached1 ? 1 : -1; + } + } + } + + public static class ByStatus implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + if (arg0.getSecond().getStatus() == arg1.getSecond().getStatus()) { + return 0; + } else { + return (arg0.getSecond().getStatus() == NetworkStatus.OPERATIONAL) ? 1 : -1; + } + } + } + + public static class ByRequirement implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + if (arg0.getSecond().isRequired() == arg1.getSecond().isRequired()) { + return 0; + } else { + return arg0.getSecond().isRequired() ? 1 : -1; + } + } + } + + public static class ByRole implements Comparator<PairQueryable<VDSGroup, NetworkCluster>> { + + @Override + public int compare(PairQueryable<VDSGroup, NetworkCluster> arg0, PairQueryable<VDSGroup, NetworkCluster> arg1) { + if (arg0.getSecond().isMigration() != arg1.getSecond().isMigration()) { + return arg0.getSecond().isMigration() ? 1 : -1; + } else if (arg0.getSecond().isDisplay() != arg1.getSecond().isDisplay()) { + return arg0.getSecond().isDisplay() ? 1 : -1; + } else { + return 0; + } + } + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java index f365fd1..65e495c 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java @@ -14,6 +14,7 @@ import org.ovirt.engine.ui.common.widget.table.column.SafeHtmlWithSafeHtmlTooltipColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.NetworkClusterComparator; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkClusterListModel; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; @@ -35,7 +36,6 @@ implements SubTabNetworkClusterPresenter.ViewDef { private final ApplicationConstants constants; - private final ApplicationTemplates templates; private final SafeHtml displayImage; private final SafeHtml migrationImage; @@ -45,7 +45,6 @@ public SubTabNetworkClusterView(SearchableDetailModelProvider<PairQueryable<VDSGroup, NetworkCluster>, NetworkListModel, NetworkClusterListModel> modelProvider, ApplicationConstants constants, ApplicationTemplates templates, ApplicationResources resources) { super(modelProvider); this.constants = constants; - this.templates = templates; displayImage = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.networkMonitor()).getHTML()); migrationImage = @@ -64,6 +63,7 @@ return object.getFirst().getName(); } }; + nameColumn.makeSortable(new NetworkClusterComparator.ByName()); getTable().addColumn(nameColumn, constants.nameCluster(), "400px"); //$NON-NLS-1$ TextColumnWithTooltip<PairQueryable<VDSGroup, NetworkCluster>> versionColumn = new TextColumnWithTooltip<PairQueryable<VDSGroup, NetworkCluster>>() { @@ -72,6 +72,7 @@ return object.getFirst().getcompatibility_version().getValue(); } }; + versionColumn.makeSortable(new NetworkClusterComparator.ByVersion()); getTable().addColumn(versionColumn, constants.comptVersCluster(), "130px"); //$NON-NLS-1$ CheckboxColumn<PairQueryable<VDSGroup, NetworkCluster>> attachedColumn = @@ -86,10 +87,12 @@ return false; } }; - + attachedColumn.makeSortable(new NetworkClusterComparator.ByAttachment()); getTable().addColumn(attachedColumn, constants.attachedNetworkCluster(), "120px"); //$NON-NLS-1$ - getTable().addColumn(new NetworkClusterStatusColumn(), constants.networkStatus(), "120px"); //$NON-NLS-1$ + NetworkClusterStatusColumn statusColumn = new NetworkClusterStatusColumn(); + statusColumn.makeSortable(new NetworkClusterComparator.ByStatus()); + getTable().addColumn(statusColumn, constants.networkStatus(), "120px"); //$NON-NLS-1$ CheckboxColumn<PairQueryable<VDSGroup, NetworkCluster>> netRequiredColumn = new CheckboxColumn<PairQueryable<VDSGroup, NetworkCluster>>(true) { @@ -106,6 +109,7 @@ return false; } }; + netRequiredColumn.makeSortable(new NetworkClusterComparator.ByRequirement()); getTable().addColumn(netRequiredColumn, constants.requiredNetCluster(), "120px"); //$NON-NLS-1$ SafeHtmlWithSafeHtmlTooltipColumn<PairQueryable<VDSGroup, NetworkCluster>> netRoleColumn = @@ -148,7 +152,7 @@ return NetworkRoleColumnHelper.getTooltip(imagesToText); } }; - + netRoleColumn.makeSortable(new NetworkClusterComparator.ByRole()); getTable().addColumn(netRoleColumn, constants.roleNetCluster(), "120px"); //$NON-NLS-1$ TextColumnWithTooltip<PairQueryable<VDSGroup, NetworkCluster>> dsecriptionColumn = new TextColumnWithTooltip<PairQueryable<VDSGroup, NetworkCluster>>() { @@ -157,6 +161,7 @@ return object.getFirst().getdescription(); } }; + dsecriptionColumn.makeSortable(new NetworkClusterComparator.ByDescription()); getTable().addColumn(dsecriptionColumn, constants.descriptionCluster(), "400px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<PairQueryable<VDSGroup, NetworkCluster>>(constants.assignUnassignNetwork()) { -- To view, visit http://gerrit.ovirt.org/28326 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia45d28e7e4be04f60a0c5c8bc83a677bba463c86 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <lver...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches