package org.ovirt.engine.ui.uicommonweb.models.datacenters; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; 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; @SuppressWarnings("unused") public class DataCenterNetworkListModel extends SearchableListModel<StoragePool, Network> { private UICommand privateNewCommand; public UICommand getNewCommand() { return privateNewCommand; } private void setNewCommand(UICommand value) { privateNewCommand = value; } private UICommand privateEditCommand; public UICommand getEditCommand() { return privateEditCommand; } private void setEditCommand(UICommand value) { privateEditCommand = value; } private UICommand privateRemoveCommand; public UICommand getRemoveCommand() { return privateRemoveCommand; } private void setRemoveCommand(UICommand value) { privateRemoveCommand = value; } public DataCenterNetworkListModel() { setTitle(ConstantsManager.getInstance().getConstants().logicalNetworksTitle()); setHelpTag(HelpTag.logical_networks); setHashName("logical_networks"); //$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$ updateActionAvailability(); } @Override protected void onEntityChanged() { super.onEntityChanged(); getSearchCommand().execute(); } @Override public void search() { if (getEntity() != null) { super.search(); } } @Override protected void syncSearch() { if (getEntity() == null) { return; } super.syncSearch(); IdQueryParameters tempVar = new IdQueryParameters(getEntity().getId()); tempVar.setRefresh(getIsQueryFirstTime()); Frontend.getInstance().runQuery(VdcQueryType.GetAllNetworks, tempVar, new AsyncQuery<VdcQueryReturnValue>(returnValue -> { ArrayList<Network> newItems = returnValue.getReturnValue(); Collections.sort(newItems, new NameableComparator()); setItems(newItems); })); } public void remove() { if (getConfirmWindow() != null) { return; } ConfirmationModel model = new RemoveNetworksModel(this); setConfirmWindow(model); } public void edit() { final Network network = getSelectedItem(); if (getWindow() != null) { return; } final NetworkModel networkModel = new EditNetworkModel(network, this); setWindow(networkModel); networkModel.getDataCenters().setItems(Arrays.asList(getEntity())); networkModel.getDataCenters().setSelectedItem(getEntity()); } public void newNetwork() { if (getWindow() != null) { return; } final NetworkModel networkModel = new NewNetworkModel(this); setWindow(networkModel); networkModel.getDataCenters().setItems(Arrays.asList(getEntity())); networkModel.getDataCenters().setSelectedItem(getEntity()); } @Override protected void onSelectedItemChanged() { super.onSelectedItemChanged(); updateActionAvailability(); } @Override protected void selectedItemsChanged() { super.selectedItemsChanged(); updateActionAvailability(); } private void updateActionAvailability() { List tempVar = getSelectedItems(); ArrayList selectedItems = (ArrayList) ((tempVar != null) ? tempVar : new ArrayList()); getEditCommand().setIsExecutionAllowed(selectedItems.size() == 1); getRemoveCommand().setIsExecutionAllowed(selectedItems.size() > 0); } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (command == getNewCommand()) { newNetwork(); } else if (command == getEditCommand()) { edit(); } else if (command == getRemoveCommand()) { remove(); } } @Override protected String getListName() { return "DataCenterNetworkListModel"; //$NON-NLS-1$ } }