package org.ovirt.engine.ui.uicommonweb.models.datacenters; import java.util.Arrays; import java.util.List; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; public class DataCenterNetworkQoSListModel extends SearchableListModel<StoragePool, NetworkQoS> { private UICommand newCommand; private UICommand editCommand; private UICommand removeCommand; public DataCenterNetworkQoSListModel() { setTitle(ConstantsManager.getInstance().getConstants().networkQoSTitle()); setHelpTag(HelpTag.network_qos); setHashName("network_qos"); //$NON-NLS-1$ setNewCommand(new UICommand("New", this)); //$NON-NLS-1$ setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$ setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$ } @Override protected void onEntityChanged() { super.onEntityChanged(); getSearchCommand().execute(); } @Override protected void syncSearch() { if (getEntity() == null) { return; } IdQueryParameters parameters = new IdQueryParameters(getEntity().getId()); parameters.setRefresh(getIsQueryFirstTime()); Frontend.getInstance().runQuery(VdcQueryType.GetAllNetworkQosByStoragePoolId, parameters, new SetItemsAsyncQuery()); } @Override protected void entityPropertyChanged(Object sender, PropertyChangedEventArgs e) { super.entityPropertyChanged(sender, e); if (e.propertyName.equals("name")) { //$NON-NLS-1$ getSearchCommand().execute(); } } @Override protected String getListName() { return "DataCenterNetworkQoSListModel"; //$NON-NLS-1$ } public UICommand getNewCommand() { return newCommand; } public void setNewCommand(UICommand newCommand) { this.newCommand = newCommand; } public UICommand getEditCommand() { return editCommand; } public void setEditCommand(UICommand editCommand) { this.editCommand = editCommand; } public UICommand getRemoveCommand() { return removeCommand; } public void setRemoveCommand(UICommand removeCommand) { this.removeCommand = removeCommand; } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (command == getNewCommand()) { newNetworkQoS(); } else if (command == getEditCommand()) { edit(); } else if (command == getRemoveCommand()) { remove(); } } public void remove() { if (getConfirmWindow() != null) { return; } ConfirmationModel model = new RemoveNetworkQoSModel(this); setConfirmWindow(model); } public void edit() { final NetworkQoS networkQoS = getSelectedItem(); if (getWindow() != null) { return; } final NetworkQoSModel networkQoSModel = new EditNetworkQoSModel(networkQoS, this, getEntity()); setWindow(networkQoSModel); networkQoSModel.getDataCenters().setItems(Arrays.asList(getEntity())); networkQoSModel.getDataCenters().setSelectedItem(getEntity()); } @Override protected void onSelectedItemChanged() { super.onSelectedItemChanged(); updateActionAvailability(); } @Override protected void selectedItemsChanged() { super.selectedItemsChanged(); updateActionAvailability(); } private void updateActionAvailability() { List selectedItems = getSelectedItems(); getEditCommand().setIsExecutionAllowed(selectedItems != null && selectedItems.size() == 1); getRemoveCommand().setIsExecutionAllowed(selectedItems != null && selectedItems.size() > 0); } public void newNetworkQoS() { if (getWindow() != null) { return; } final NewNetworkQoSModel newNetworkQoSModel = new NewNetworkQoSModel(this, getEntity()); setWindow(newNetworkQoSModel); newNetworkQoSModel.getDataCenters().setItems(Arrays.asList(getEntity())); newNetworkQoSModel.getDataCenters().setSelectedItem(getEntity()); } }