Lior Vernia has uploaded a new change for review. Change subject: webadmin: Parameterize ImportNetworksModel and related classes ......................................................................
webadmin: Parameterize ImportNetworksModel and related classes Parameterized generic instances of ListModel in ImportNetworksModel, as well as the corresponding view and widget used in that view (and nowhere else at the moment, which made things easier). ExternalNetwork is changed to extend Model instead of EntityModel (as it used no special capabilities of EntityModel). Change-Id: I4d1e6e409edc794baa799807268755105f8e21fa Signed-off-by: Lior Vernia <lver...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/HorizontalSplitTable.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java 5 files changed, 90 insertions(+), 92 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/51/31351/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/HorizontalSplitTable.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/HorizontalSplitTable.java index 4263fde..ca1a95e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/HorizontalSplitTable.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/HorizontalSplitTable.java @@ -8,7 +8,6 @@ import org.ovirt.engine.ui.common.widget.dialog.ShapedButton; import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable; import org.ovirt.engine.ui.uicommonweb.UICommand; -import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; @@ -26,19 +25,19 @@ import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; -public class HorizontalSplitTable extends Composite { +public class HorizontalSplitTable<T> extends Composite { - interface WidgetUiBinder extends UiBinder<Widget, HorizontalSplitTable> { + interface WidgetUiBinder extends UiBinder<Widget, HorizontalSplitTable<?>> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } private static CommonApplicationResources resources = GWT.create(CommonApplicationResources.class); - private final MultiSelectionModel<EntityModel> topSelectionModel; - private final MultiSelectionModel<EntityModel> bottomSelectionModel; + private final MultiSelectionModel<T> topSelectionModel; + private final MultiSelectionModel<T> bottomSelectionModel; - private final IEventListener topItemsChangedListener; - private final IEventListener bottomItemsChangedListener; + private final IEventListener<EventArgs> topItemsChangedListener; + private final IEventListener<EventArgs> bottomItemsChangedListener; private UICommand onDownButtonPressed; private UICommand onUpButtonPressed; @@ -50,10 +49,10 @@ protected ShapedButton upButton; @UiField(provided = true) - protected EntityModelCellTable<ListModel> topTable; + protected EntityModelCellTable<ListModel<T>> topTable; @UiField(provided = true) - protected EntityModelCellTable<ListModel> bottomTable; + protected EntityModelCellTable<ListModel<T>> bottomTable; @UiField(provided = true) protected Label topTitle; @@ -62,8 +61,8 @@ protected Label bottomTitle; @SuppressWarnings("unchecked") - public HorizontalSplitTable(EntityModelCellTable<ListModel> topTable, - EntityModelCellTable<ListModel> bottomTable, + public HorizontalSplitTable(EntityModelCellTable<ListModel<T>> topTable, + EntityModelCellTable<ListModel<T>> bottomTable, String topTitle, String bottomTitle) { @@ -87,18 +86,18 @@ initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); - topSelectionModel = (MultiSelectionModel<EntityModel>) topTable.getSelectionModel(); - bottomSelectionModel = (MultiSelectionModel<EntityModel>) bottomTable.getSelectionModel(); + topSelectionModel = (MultiSelectionModel<T>) topTable.getSelectionModel(); + bottomSelectionModel = (MultiSelectionModel<T>) bottomTable.getSelectionModel(); - topItemsChangedListener = new IEventListener() { + topItemsChangedListener = new IEventListener<EventArgs>() { @Override - public void eventRaised(Event ev, Object sender, EventArgs args) { + public void eventRaised(Event<EventArgs> ev, Object sender, EventArgs args) { topSelectionModel.clear(); } }; - bottomItemsChangedListener = new IEventListener() { + bottomItemsChangedListener = new IEventListener<EventArgs>() { @Override - public void eventRaised(Event ev, Object sender, EventArgs args) { + public void eventRaised(Event<EventArgs> ev, Object sender, EventArgs args) { bottomSelectionModel.clear(); } }; @@ -110,7 +109,7 @@ } private void addSelectionHandler(boolean topTable) { - final MultiSelectionModel<EntityModel> selectionModel = getSelectionModel(topTable); + final MultiSelectionModel<T> selectionModel = getSelectionModel(topTable); final ShapedButton button = getButton(topTable); selectionModel.addSelectionChangeHandler(new Handler() { @@ -124,24 +123,23 @@ private void addClickHandler(final boolean topTableIsSource) { getButton(topTableIsSource).addClickHandler(new ClickHandler() { - @SuppressWarnings("unchecked") @Override public void onClick(ClickEvent event) { - MultiSelectionModel<EntityModel> sourceSelectionModel = getSelectionModel(topTableIsSource); - EntityModelCellTable<ListModel> sourceTable = getTable(topTableIsSource); - EntityModelCellTable<ListModel> targetTable = getTable(!topTableIsSource); + MultiSelectionModel<T> sourceSelectionModel = getSelectionModel(topTableIsSource); + EntityModelCellTable<ListModel<T>> sourceTable = getTable(topTableIsSource); + EntityModelCellTable<ListModel<T>> targetTable = getTable(!topTableIsSource); UICommand command = topTableIsSource ? onDownButtonPressed : onUpButtonPressed; if (command != null) { command.execute(); } - Set<EntityModel> selectedItems = sourceSelectionModel.getSelectedSet(); - ((Collection<EntityModel>) sourceTable.asEditor().flush().getItems()).removeAll(selectedItems); - ListModel targetListModel = targetTable.asEditor().flush(); - Collection<EntityModel> targetItems = (Collection<EntityModel>) targetListModel.getItems(); + Set<T> selectedItems = sourceSelectionModel.getSelectedSet(); + sourceTable.asEditor().flush().getItems().removeAll(selectedItems); + ListModel<T> targetListModel = targetTable.asEditor().flush(); + Collection<T> targetItems = targetListModel.getItems(); if (targetItems == null) { - targetItems = new LinkedList<EntityModel>(); + targetItems = new LinkedList<T>(); targetListModel.setItems(targetItems); } targetItems.addAll(selectedItems); @@ -150,7 +148,7 @@ }); } - private MultiSelectionModel<EntityModel> getSelectionModel(boolean top) { + private MultiSelectionModel<T> getSelectionModel(boolean top) { return top ? topSelectionModel : bottomSelectionModel; } @@ -158,7 +156,7 @@ return down ? downButton : upButton; } - private EntityModelCellTable<ListModel> getTable(boolean top) { + private EntityModelCellTable<ListModel<T>> getTable(boolean top) { return top ? topTable : bottomTable; } @@ -169,10 +167,10 @@ bottomTable.asEditor().edit(bottomTable.asEditor().flush()); } - private void edit(ListModel model, final boolean topTableIsEdited) { - EntityModelCellTable<ListModel> table = getTable(topTableIsEdited); - ListModel oldModel = table.asEditor().flush(); - IEventListener listener = topTableIsEdited ? topItemsChangedListener : bottomItemsChangedListener; + private void edit(ListModel<T> model, final boolean topTableIsEdited) { + EntityModelCellTable<ListModel<T>> table = getTable(topTableIsEdited); + ListModel<T> oldModel = table.asEditor().flush(); + IEventListener<EventArgs> listener = topTableIsEdited ? topItemsChangedListener : bottomItemsChangedListener; if (oldModel != null) { oldModel.getItemsChangedEvent().removeListener(listener); } @@ -180,13 +178,13 @@ table.asEditor().edit(model); } - public void edit(ListModel topListModel, ListModel bottomListModel) { + public void edit(ListModel<T> topListModel, ListModel<T> bottomListModel) { edit(topListModel, true); edit(bottomListModel, false); } - public void edit(ListModel topListModel, - ListModel bottomListModel, + public void edit(ListModel<T> topListModel, + ListModel<T> bottomListModel, UICommand onDownButtonPressed, UICommand onUpButtonPressed) { edit(topListModel, bottomListModel); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java index e1d224c..af66151 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/ImportNetworksModel.java @@ -55,9 +55,9 @@ private final StoragePool treeSelectedDc; - private final ListModel providers = new ListModel(); - private final ListModel providerNetworks = new ListModel(); - private final ListModel importedNetworks = new ListModel(); + private final ListModel<Provider<?>> providers = new ListModel<Provider<?>>(); + private final ListModel<ExternalNetwork> providerNetworks = new ListModel<ExternalNetwork>(); + private final ListModel<ExternalNetwork> importedNetworks = new ListModel<ExternalNetwork>(); private final ListModel<String> errors = new ListModel<String>(); private UICommand addImportCommand = new UICommand(null, this); @@ -65,15 +65,15 @@ private Map<Guid, Collection<VDSGroup>> dcClusters; - public ListModel getProviderNetworks() { + public ListModel<ExternalNetwork> getProviderNetworks() { return providerNetworks; } - public ListModel getImportedNetworks() { + public ListModel<ExternalNetwork> getImportedNetworks() { return importedNetworks; } - public ListModel getProviders() { + public ListModel<Provider<?>> getProviders() { return providers; } @@ -111,10 +111,10 @@ (SystemTreeItemModel) CommonModel.getInstance().getSystemTree().getSelectedItem()); treeSelectedDc = (treeSelectedDcItem == null) ? null : (StoragePool) treeSelectedDcItem.getEntity(); - providers.getSelectedItemChangedEvent().addListener(new IEventListener() { + providers.getSelectedItemChangedEvent().addListener(new IEventListener<EventArgs>() { @Override - public void eventRaised(Event ev, Object sender, EventArgs args) { + public void eventRaised(Event<EventArgs> ev, Object sender, EventArgs args) { onProviderChosen(); } }); @@ -129,7 +129,7 @@ @Override public void onSuccess(Object model, Object returnValue) { stopProgress(); - List<Provider> providers = (List<Provider>) returnValue; + List<Provider<?>> providers = (List<Provider<?>>) returnValue; providers.add(0, null); getProviders().setItems(providers); } @@ -137,7 +137,7 @@ } private void onProviderChosen() { - final Provider provider = (Provider) providers.getSelectedItem(); + final Provider<?> provider = providers.getSelectedItem(); if (provider == null) { return; } @@ -238,7 +238,7 @@ List<IFrontendActionAsyncCallback> callbacks = new LinkedList<IFrontendActionAsyncCallback>(); dcClusters = new HashMap<Guid, Collection<VDSGroup>>(); - for (final ExternalNetwork externalNetwork : (Iterable<ExternalNetwork>) importedNetworks.getItems()) { + for (final ExternalNetwork externalNetwork : importedNetworks.getItems()) { final Network network = externalNetwork.getNetwork(); final Guid dcId = ((StoragePool) externalNetwork.getDataCenters().getSelectedItem()).getId(); network.setName(externalNetwork.getDisplayName()); @@ -330,8 +330,8 @@ } private void cancelImport() { - List<ExternalNetwork> selectedNetworks = (List<ExternalNetwork>) getImportedNetworks().getSelectedItems(); - Collection<ExternalNetwork> importedNetworks = (Collection<ExternalNetwork>) getImportedNetworks().getItems(); + Collection<ExternalNetwork> selectedNetworks = getImportedNetworks().getSelectedItems(); + Collection<ExternalNetwork> importedNetworks = getImportedNetworks().getItems(); getDefaultCommand().setIsExecutionAllowed(selectedNetworks.size() < importedNetworks.size()); for (ExternalNetwork externalNetwork : selectedNetworks) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java index 17d1501..869f4e6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java @@ -1,6 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.models.providers; -import java.util.Collections; +import java.util.ArrayList; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; @@ -9,9 +9,9 @@ public class DiscoverNetworksModel extends ImportNetworksModel { - private final Provider provider; + private final Provider<?> provider; - public DiscoverNetworksModel(SearchableListModel sourceListModel, Provider provider) { + public DiscoverNetworksModel(SearchableListModel sourceListModel, Provider<?> provider) { super(sourceListModel); this.provider = provider; setHelpTag(HelpTag.discover_networks); @@ -20,7 +20,9 @@ } public void discoverNetworks() { - getProviders().setItems(Collections.singletonList(provider)); + ArrayList<Provider<?>> items = new ArrayList<Provider<?>>(); + items.add(provider); + getProviders().setItems(items); getProviders().setSelectedItem(provider); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java index 87afee1..f58bd4d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java @@ -1,5 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.models.providers; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; @@ -8,11 +9,11 @@ private Network network; private String displayName; - private ListModel dcList; + private ListModel<StoragePool> dcList; private boolean publicUse; public ExternalNetwork() { - dcList = new ListModel(); + dcList = new ListModel<StoragePool>(); } public Network getNetwork() { @@ -31,7 +32,7 @@ displayName = value; } - public ListModel getDataCenters() { + public ListModel<StoragePool> getDataCenters() { return dcList; } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java index bbc4a4c..bbc0b10 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java @@ -17,7 +17,6 @@ import org.ovirt.engine.ui.common.widget.table.column.ListModelListBoxColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader; -import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.networks.ImportNetworksModel; import org.ovirt.engine.ui.uicommonweb.models.providers.ExternalNetwork; @@ -60,35 +59,35 @@ @UiField(provided = true) @Path(value = "providers.selectedItem") @WithElementId - ListModelListBoxEditor<Object> providersEditor; + ListModelListBoxEditor<Provider<?>> providersEditor; @UiField(provided = true) - HorizontalSplitTable splitTable; + HorizontalSplitTable<ExternalNetwork> splitTable; @Ignore - EntityModelCellTable<ListModel> providerNetworks; + EntityModelCellTable<ListModel<ExternalNetwork>> providerNetworks; @Ignore - EntityModelCellTable<ListModel> importedNetworks; + EntityModelCellTable<ListModel<ExternalNetwork>> importedNetworks; - private ListModelListBoxColumn<EntityModel, StoragePool> dcColumn; + private ListModelListBoxColumn<ExternalNetwork, StoragePool> dcColumn; @Inject public ImportNetworksPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, ApplicationTemplates templates) { super(eventBus, resources); // Initialize Editors - providersEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + providersEditor = new ListModelListBoxEditor<Provider<?>>(new NullSafeRenderer<Provider<?>>() { @Override - protected String renderNullSafe(Object object) { - return ((Provider) object).getName(); + protected String renderNullSafe(Provider<?> provider) { + return provider.getName(); } }); - providerNetworks = new EntityModelCellTable<ListModel>(true, false, true); - importedNetworks = new EntityModelCellTable<ListModel>(true, false, true); + providerNetworks = new EntityModelCellTable<ListModel<ExternalNetwork>>(true, false, true); + importedNetworks = new EntityModelCellTable<ListModel<ExternalNetwork>>(true, false, true); splitTable = - new HorizontalSplitTable(providerNetworks, + new HorizontalSplitTable<ExternalNetwork>(providerNetworks, importedNetworks, constants.providerNetworks(), constants.importedNetworks()); @@ -99,9 +98,8 @@ driver.initialize(this); } - @SuppressWarnings("unchecked") Iterable<ExternalNetwork> getAllImportedNetworks() { - ListModel tableModel = importedNetworks.asEditor().flush(); + ListModel<ExternalNetwork> tableModel = importedNetworks.asEditor().flush(); return tableModel != null && tableModel.getItems() != null ? tableModel.getItems() : new ArrayList<ExternalNetwork>(); } @@ -114,35 +112,35 @@ final ApplicationTemplates templates, final ApplicationResources resources) { - providerNetworks.addColumn(new TextColumnWithTooltip<EntityModel>() { + providerNetworks.addColumn(new TextColumnWithTooltip<ExternalNetwork>() { @Override - public String getValue(EntityModel model) { - return ((ExternalNetwork) model).getDisplayName(); + public String getValue(ExternalNetwork model) { + return model.getDisplayName(); } }, constants.nameNetworkHeader()); - importedNetworks.addColumn(new EditTextColumnWithTooltip<EntityModel>(new FieldUpdater<EntityModel, String>() { + importedNetworks.addColumn(new EditTextColumnWithTooltip<ExternalNetwork>(new FieldUpdater<ExternalNetwork, String>() { @Override - public void update(int index, EntityModel model, String value) { - ((ExternalNetwork) model).setDisplayName(value); + public void update(int index, ExternalNetwork model, String value) { + model.setDisplayName(value); } }) { @Override - public String getValue(EntityModel model) { - return ((ExternalNetwork) model).getDisplayName(); + public String getValue(ExternalNetwork model) { + return model.getDisplayName(); } }, constants.nameNetworkHeader()); - Column<EntityModel, String> idColumn = new TextColumnWithTooltip<EntityModel>() { + Column<ExternalNetwork, String> idColumn = new TextColumnWithTooltip<ExternalNetwork>() { @Override - public String getValue(EntityModel model) { - return ((ExternalNetwork) model).getNetwork().getProvidedBy().getExternalId(); + public String getValue(ExternalNetwork model) { + return model.getNetwork().getProvidedBy().getExternalId(); } }; providerNetworks.addColumn(idColumn, constants.idNetworkHeader()); importedNetworks.addColumn(idColumn, constants.idNetworkHeader()); - dcColumn = new ListModelListBoxColumn<EntityModel, StoragePool>(new NullSafeRenderer<StoragePool>() { + dcColumn = new ListModelListBoxColumn<ExternalNetwork, StoragePool>(new NullSafeRenderer<StoragePool>() { @Override public String renderNullSafe(StoragePool dc) { return dc.getName(); @@ -150,8 +148,8 @@ }) { @Override - public ListModel getValue(EntityModel network) { - return ((ExternalNetwork) network).getDataCenters(); + public ListModel<StoragePool> getValue(ExternalNetwork network) { + return network.getDataCenters(); } }; importedNetworks.addColumn(dcColumn, constants.dcNetworkHeader()); @@ -190,26 +188,25 @@ } }; - importedNetworks.addColumn(new CheckboxColumn<EntityModel>(new FieldUpdater<EntityModel, Boolean>() { + importedNetworks.addColumn(new CheckboxColumn<ExternalNetwork>(new FieldUpdater<ExternalNetwork, Boolean>() { @Override - public void update(int index, EntityModel model, Boolean value) { - ExternalNetwork externalNetwork = (ExternalNetwork) model; - externalNetwork.setPublicUse(value); + public void update(int index, ExternalNetwork model, Boolean value) { + model.setPublicUse(value); refreshImportedNetworks(); } }) { @Override - public Boolean getValue(EntityModel model) { - return ((ExternalNetwork) model).isPublicUse(); + public Boolean getValue(ExternalNetwork model) { + return model.isPublicUse(); } @Override - protected boolean canEdit(EntityModel model) { + protected boolean canEdit(ExternalNetwork model) { return true; } @Override - public void render(Context context, EntityModel object, SafeHtmlBuilder sb) { + public void render(Context context, ExternalNetwork object, SafeHtmlBuilder sb) { super.render(context, object, sb); sb.append(templates.textForCheckBox("")); //$NON-NLS-1$ } -- To view, visit http://gerrit.ovirt.org/31351 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4d1e6e409edc794baa799807268755105f8e21fa 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