Gilad Chaplik has posted comments on this change.

Change subject: webadmin: adding Affinity Groups views
......................................................................


Patch Set 8: Verified+1

(48 comments)

THANKS Lior! I really appreciate your comprehensive review :-)

this patch is now depending on a patch that allows to extend KeyValueModel.

....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/VmSelectionModel.java
Line 5: import org.ovirt.engine.ui.uicommonweb.models.ListModel;
Line 6: import org.ovirt.engine.ui.uicommonweb.models.Model;
Line 7: 
Line 8: public class VmSelectionModel extends Model {
Line 9:     ListModel<Pair<String, VM>> vms;
Sure.. but I'd like to do the entire re-factoring of the keyValueModel in a 
later patch, as part of this patchset, including this one (although not that 
related).
Line 10: 
Line 11:     public VmSelectionModel() {
Line 12:         setVms(new ListModel<Pair<String, VM>>());
Line 13:     }


Line 15:     public ListModel<Pair<String, VM>> getVms() {
Line 16:         return vms;
Line 17:     }
Line 18: 
Line 19:     public void setVms(ListModel<Pair<String, VM>> vms) {
Done
Line 20:         this.vms = vms;
Line 21:     }


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/VmsSelectionModel.java
Line 13: import org.ovirt.engine.ui.uicompat.Event;
Line 14: import org.ovirt.engine.ui.uicompat.EventArgs;
Line 15: import org.ovirt.engine.ui.uicompat.IEventListener;
Line 16: 
Line 17: public class VmsSelectionModel extends ListModel<VmSelectionModel> {
agree, as mentioned already, if that is okay by you I will do it in the next 
patch, and maybe squash it later on.
Line 18: 
Line 19:     public final static Pair<String, VM> SELECT_KEY = new Pair<String, 
VM>("select a VM", null); //$NON-NLS-1$
Line 20:     public final static Pair<String, VM> NO_KEYS = new Pair<String, 
VM>("no available vms", null); //$NON-NLS-1$ 
//ConstantsManager.getInstance().getConstants().noKeyAvailable();
Line 21: 


Line 15: import org.ovirt.engine.ui.uicompat.IEventListener;
Line 16: 
Line 17: public class VmsSelectionModel extends ListModel<VmSelectionModel> {
Line 18: 
Line 19:     public final static Pair<String, VM> SELECT_KEY = new Pair<String, 
VM>("select a VM", null); //$NON-NLS-1$
good thing you're here.
Done.
Line 20:     public final static Pair<String, VM> NO_KEYS = new Pair<String, 
VM>("no available vms", null); //$NON-NLS-1$ 
//ConstantsManager.getInstance().getConstants().noKeyAvailable();
Line 21: 
Line 22:     Map<Guid, VM> allVmMap;
Line 23:     private final Map<Guid, VM> usedVmMap = new HashMap<Guid, VM>();


Line 16: 
Line 17: public class VmsSelectionModel extends ListModel<VmSelectionModel> {
Line 18: 
Line 19:     public final static Pair<String, VM> SELECT_KEY = new Pair<String, 
VM>("select a VM", null); //$NON-NLS-1$
Line 20:     public final static Pair<String, VM> NO_KEYS = new Pair<String, 
VM>("no available vms", null); //$NON-NLS-1$ 
//ConstantsManager.getInstance().getConstants().noKeyAvailable();
Done
Line 21: 
Line 22:     Map<Guid, VM> allVmMap;
Line 23:     private final Map<Guid, VM> usedVmMap = new HashMap<Guid, VM>();
Line 24:     boolean disableEvent = false;


Line 98: 
Line 99:     public List<Pair<String, VM>> getAvailableKeys() {
Line 100:         Map<Guid, Pair<String, VM>> map = new HashMap<Guid, 
Pair<String, VM>>();
Line 101: 
Line 102:         if (allVmMap != null) {
I guess that I'll use the keyValueModel impl which is good :) you re-factored 
it so it has to :P (next patch)

Done.
Line 103:             for (VM vm : allVmMap.values()) {
Line 104:                 if (!usedVmMap.containsKey(vm.getId())) {
Line 105:                     map.put(vm.getId(), new Pair<String, 
VM>(vm.getName(), vm));
Line 106:                 }


Line 116: 
Line 117:         return list;
Line 118:     }
Line 119: 
Line 120:     public void updateKeys() {
same.
Line 121:         if (getItems() != null && usedVmMap != null) {
Line 122:             disableEvent = true;
Line 123:             usedVmMap.clear();
Line 124:             for (VmSelectionModel vmSelectionModel : getItems()) {


Line 146:         }
Line 147:         return list;
Line 148:     }
Line 149: 
Line 150:     public boolean validate() {
oops.
Done
Line 151:         boolean isValid = true;
Line 152: 
Line 153:         return isValid;
Line 154:     }


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/list/AffinityGroupListModel.java
Line 25: import org.ovirt.engine.ui.uicompat.ConstantsManager;
Line 26: import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult;
Line 27: import 
org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback;
Line 28: 
Line 29: public abstract class AffinityGroupListModel<T extends 
BusinessEntity<Guid>> extends SearchableListModel<AffinityGroup> {
:-)
Line 30:     private UICommand newCommand;
Line 31:     private UICommand editCommand;
Line 32:     private UICommand removeCommand;
Line 33: 


Line 33: 
Line 34:     private T parentEntity;
Line 35: 
Line 36:     public AffinityGroupListModel() {
Line 37:         
setTitle(ConstantsManager.getInstance().getConstants().affinityGroupsTitle());
for the sake of consistency (exists anywhere), I'd rather leave it.
Line 38:         setHashName("affinity_groups"); // $//$NON-NLS-1$
Line 39:         setAvailableInModes(ApplicationMode.VirtOnly);
Line 40: 
Line 41:         setNewCommand(new UICommand("New", this)); //$NON-NLS-1$


Line 35: 
Line 36:     public AffinityGroupListModel() {
Line 37:         
setTitle(ConstantsManager.getInstance().getConstants().affinityGroupsTitle());
Line 38:         setHashName("affinity_groups"); // $//$NON-NLS-1$
Line 39:         setAvailableInModes(ApplicationMode.VirtOnly);
you're right, can be removed

> Also, if it is needed, this should probably be either Virt or Both, shouldn't 
> it?

virt_only include both (performing OR bit arithmetic), so no.

Done.
Line 40: 
Line 41:         setNewCommand(new UICommand("New", this)); //$NON-NLS-1$
Line 42:         setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$
Line 43:         setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$


Line 66:         getRemoveCommand().setIsExecutionAllowed(hasSelectedItems);
Line 67:     }
Line 68: 
Line 69:     @Override
Line 70:     protected void syncSearch() {
Done
Line 71:         if (getParentEntity() != null) {
Line 72:             super.syncSearch();
Line 73:             AsyncQuery asyncQuery = new AsyncQuery(this, new 
INewAsyncCallback() {
Line 74: 


Line 76:                 public void onSuccess(Object model, Object 
returnValue) {
Line 77:                     AffinityGroupListModel<?> affinityGroupListModel = 
(AffinityGroupListModel<?>) model;
Line 78:                     ArrayList<AffinityGroup> list =
Line 79:                             (ArrayList<AffinityGroup>) 
((VdcQueryReturnValue) returnValue).getReturnValue();
Line 80:                     affinityGroupListModel.setItems(list);
it's not
Line 81:                 }
Line 82:             });
Line 83:             VdcQueryParametersBase parameters = new 
IdQueryParameters(getParentEntity().getId());
Line 84:             parameters.setRefresh(getIsQueryFirstTime());


Line 86:             setIsQueryFirstTime(false);
Line 87:         }
Line 88:     }
Line 89: 
Line 90:     protected abstract VdcQueryType getQueryType();
I agree.
Done.
Line 91: 
Line 92:     protected abstract ClusterResolver getClusterResolver();
Line 93: 
Line 94:     public UICommand getNewCommand() {


Line 88:     }
Line 89: 
Line 90:     protected abstract VdcQueryType getQueryType();
Line 91: 
Line 92:     protected abstract ClusterResolver getClusterResolver();
this one isn't that static, cluster is changing according to selection. will 
get back to it...
Line 93: 
Line 94:     public UICommand getNewCommand() {
Line 95:         return newCommand;
Line 96:     }


Line 94:     public UICommand getNewCommand() {
Line 95:         return newCommand;
Line 96:     }
Line 97: 
Line 98:     public void setNewCommand(UICommand newCommand) {
Done.
Line 99:         this.newCommand = newCommand;
Line 100:     }
Line 101: 
Line 102:     @Override


Line 129:             return;
Line 130:         }
Line 131: 
Line 132:         AffinityGroupModel model = getNewAffinityGroupModel();
Line 133:         model.init();
I need a init method :/

there is later comment about dangerous stuff I do in ctor.
Line 134:         setWindow(model);
Line 135:     }
Line 136: 
Line 137:     protected AffinityGroupModel getNewAffinityGroupModel() {


Line 137:     protected AffinityGroupModel getNewAffinityGroupModel() {
Line 138:         return new NewAffinityGroupModel(this, getClusterResolver()) {
Line 139: 
Line 140:             @Override
Line 141:             protected AffinityGroup getAffinityGroup() {
I need it to auto add selected vm (parent) to affinity group.
changed it a bit to look nicer
Line 142:                 return new AffinityGroup();
Line 143:             }
Line 144:         };
Line 145:     }


Line 151:         AffinityGroup affinityGroup = getSelectedItem();
Line 152:         if (affinityGroup == null) {
Line 153:             return;
Line 154:         }
Line 155:         sortVms(affinityGroup);
removed it entirely. lets wait for the bug.

Done.
Line 156:         AffinityGroupModel model = new 
EditAffinityGroupModel(affinityGroup, this, getClusterResolver());
Line 157:         model.init();
Line 158:         setWindow(model);
Line 159:     }


Line 161:     protected void sortVms(AffinityGroup affinityGroup) {
Line 162: 
Line 163:     }
Line 164: 
Line 165:     private void remove() {
I will try to get to it.
Line 166:         if (getWindow() != null) {
Line 167:             return;
Line 168:         }
Line 169: 


Line 187:         command.setIsCancel(true);
Line 188:         model.getCommands().add(command);
Line 189:     }
Line 190: 
Line 191:     private void onRemove() {
same.
Line 192:         ConfirmationModel model = (ConfirmationModel) 
getConfirmWindow();
Line 193: 
Line 194:         if (model.getProgress() != null) {
Line 195:             return;


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/list/ClusterResolver.java
Line 4: 
Line 5: /**
Line 6:  * used to fetch cluster info for affinity groups models VM and cluster
Line 7:  */
Line 8: public interface ClusterResolver {
we need somekind of a solution, for getting cluster params while changing 
parent entity.

will get back to it.
Line 9:     Guid getClusterId();
Line 10: 
Line 11:     String getClusterName();


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/list/VmAffinityGroupListModel.java
Line 49:     }
Line 50: 
Line 51:     @Override
Line 52:     protected void sortVms(AffinityGroup affinityGroup) {
Line 53:         Collections.sort(affinityGroup.getEntityIds(), new 
Comparator<Guid>() {
Done. removed altogether, will get back to it later.
Line 54: 
Line 55:             @Override
Line 56:             public int compare(Guid o1, Guid o2) {
Line 57:                 if (o1.equals(getParentEntity().getId())) {


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/scheduling/affinity_groups/model/AffinityGroupModel.java
Line 35:     private final ClusterResolver clusterResolver;
Line 36: 
Line 37:     private EntityModel<String> name;
Line 38:     private EntityModel<String> description;
Line 39:     private ListModel<AffinityPolarity> polarity;
Done
Line 40:     private ListModel<AffinityEnforcementType> enforcementType;
Line 41:     private VmsSelectionModel vmsSelectionModel;
Line 42: 
Line 43: 


Line 36: 
Line 37:     private EntityModel<String> name;
Line 38:     private EntityModel<String> description;
Line 39:     private ListModel<AffinityPolarity> polarity;
Line 40:     private ListModel<AffinityEnforcementType> enforcementType;
Done.
Line 41:     private VmsSelectionModel vmsSelectionModel;
Line 42: 
Line 43: 
Line 44:     public AffinityGroupModel(ListModel<?> sourceListModel, 
ClusterResolver clusterResolver) {


Line 55:         setVmsSelectionModel(new VmsSelectionModel());
Line 56:         startProgress(null);
Line 57: 
Line 58:         //TODO: should be by cluster id and remove clusterName method 
from resolver.
Line 59:         AsyncDataProvider.getVmListByClusterName(new AsyncQuery(this, 
new INewAsyncCallback() {
it seems that I need a public init method.
Line 60: 
Line 61:             @Override
Line 62:             public void onSuccess(Object model, Object returnValue) {
Line 63:                 ArrayList<VM> vmList = (ArrayList<VM>) returnValue;


Line 70:     }
Line 71: 
Line 72:     public abstract void init();
Line 73: 
Line 74:     protected abstract AffinityGroup getAffinityGroup();
Done
Line 75: 
Line 76:     protected abstract VdcActionType getSaveActionType();
Line 77: 
Line 78:     protected void addCommands() {


Line 72:     public abstract void init();
Line 73: 
Line 74:     protected abstract AffinityGroup getAffinityGroup();
Line 75: 
Line 76:     protected abstract VdcActionType getSaveActionType();
Done
Line 77: 
Line 78:     protected void addCommands() {
Line 79:         UICommand command = new UICommand("OnSave", this); 
//$NON-NLS-1$
Line 80:         
command.setTitle(ConstantsManager.getInstance().getConstants().ok());


Line 89:     public EntityModel<String> getName() {
Line 90:         return name;
Line 91:     }
Line 92: 
Line 93:     public void setName(EntityModel<String> name) {
Done
Line 94:         this.name = name;
Line 95:     }
Line 96: 
Line 97:     public EntityModel<String> getDescription() {


Line 135:         if (!validate()) {
Line 136:             return;
Line 137:         }
Line 138: 
Line 139:         if (getProgress() != null) {
Done
Line 140:             return;
Line 141:         }
Line 142:         AffinityGroup group = getAffinityGroup();
Line 143:         group.setName(getName().getEntity());


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
Line 1817:         updateWatchdogModels(osType);
Line 1818:     }
Line 1819: 
Line 1820:     private void updateWatchdogModels() {
Line 1821:         updateWatchdogModels(getOSType().getSelectedItem());
Done
Line 1822:     }
Line 1823: 
Line 1824:     private void updateWatchdogModels(Integer osType) {
Line 1825:         VDSGroup cluster = getSelectedCluster();


....................................................
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
Line 368:     }
Line 369: 
Line 370:     private ErrorPopupManager errorPopupManager;
Line 371: 
Line 372:     private VmAffinityGroupListModel affinityGroupListModel;
Done
Line 373: 
Line 374:     public VmAffinityGroupListModel getAffinityGroupListModel() {
Line 375:         return affinityGroupListModel;
Line 376:     }


....................................................
File 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java
Line 883:     String AffinityEnforcementType___SOFT();
Line 884: 
Line 885:     String AffinityPolarity___POSITIVE();
Line 886: 
Line 887:     String AffinityPolarity___NEGATIVE();
removed.


....................................................
File 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
Line 2096:     @DefaultStringValue("Not available when Templates are not 
configured.")
Line 2097:     String notAvailableWithNoTemplates();
Line 2098: 
Line 2099:     @DefaultStringValue("Affinity Groups")
Line 2100:     String affinityGroupsTitle();
leaving for consistency reasons.
Line 2101: 
Line 2102:     @DefaultStringValue("New Affinity Group")
Line 2103:     String newAffinityGroupsTitle();
Line 2104: 


....................................................
File 
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties
Line 439: PolicyUnitType___LoadBalancing=Load Balancing
Line 440: AffinityEnforcementType___HARD=Hard
Line 441: AffinityEnforcementType___SOFT=Soft
Line 442: AffinityPolarity___POSITIVE=Positive
Line 443: AffinityPolarity___NEGATIVE=Negative
removed.


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
Line 3455:     @DefaultStringValue("Name")
Line 3456:     String affinityGroupNameLabel();
Line 3457: 
Line 3458:     @DefaultStringValue("Polarity")
Line 3459:     String affinityGroupPolarityLabel();
the value was changed to 'positive'
Line 3460: 
Line 3461:     @DefaultStringValue("Enforcing")
Line 3462:     String affinityGroupEnforceTypeLabel();
Line 3463: 


Line 3458:     @DefaultStringValue("Polarity")
Line 3459:     String affinityGroupPolarityLabel();
Line 3460: 
Line 3461:     @DefaultStringValue("Enforcing")
Line 3462:     String affinityGroupEnforceTypeLabel();
in general I'd rather have strings for each label. maybe in Klingon it 
pronounces differently :)

and a good example to it, is in the previous comment: the table header is 
polarity and the form label is positive.
Line 3463: 
Line 3464:     @DefaultStringValue("Description")
Line 3465:     String affinityDescriptionLabel();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/AffinityGroupPopupView.ui.xml
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
Line 3: <ui:UiBinder 
Done
Line 4:         xmlns:ui="urn:ui:com.google.gwt.uibinder"
Line 5:         xmlns:g="urn:import:com.google.gwt.user.client.ui" 
Line 6:         xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
Line 7:         xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"


Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
Line 3: <ui:UiBinder 
Line 4:         xmlns:ui="urn:ui:com.google.gwt.uibinder"
Line 5:         xmlns:g="urn:import:com.google.gwt.user.client.ui" 
Done
Line 6:         xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
Line 7:         xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
Line 8:         
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
Line 9:         
xmlns:ag="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.scheduling.widgets">


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/AddRemoveVmWidget.java
Line 16:         WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
Line 17:     }
Line 18: 
Line 19:     private VmsSelectionModel model;
Line 20:     private final LinkedList<VmRowWidget> widgets = new 
LinkedList<VmRowWidget>();
going to re-factor it anyway in next patch.
Line 21:     private boolean enabled = true;
Line 22: 
Line 23:     AddRemoveVmWidget() {
Line 24:         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));


Line 17:     }
Line 18: 
Line 19:     private VmsSelectionModel model;
Line 20:     private final LinkedList<VmRowWidget> widgets = new 
LinkedList<VmRowWidget>();
Line 21:     private boolean enabled = true;
same
Line 22: 
Line 23:     AddRemoveVmWidget() {
Line 24:         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
Line 25:     }


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/AddRemoveVmWidget.ui.xml
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
Done
Line 4:     xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5:     xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Line 6: 
Line 7:         <ui:style 
type="org.ovirt.engine.ui.common.widget.AddRemoveRowWidget.WidgetStyle">


Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
Line 4:     xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5:     xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Done
Line 6: 
Line 7:         <ui:style 
type="org.ovirt.engine.ui.common.widget.AddRemoveRowWidget.WidgetStyle">
Line 8:         .margin {
Line 9:                 margin-left: 20px;


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/VmRowWidget.java
Line 22: import com.google.gwt.user.client.ui.Composite;
Line 23: import com.google.gwt.user.client.ui.HasEnabled;
Line 24: import com.google.gwt.user.client.ui.Widget;
Line 25: 
Line 26: public class VmRowWidget extends Composite implements 
HasValueChangeHandlers<VmSelectionModel>, HasEditorDriver<VmSelectionModel>, 
HasEnabled {
same as previous replies, going to be re-factored.
Line 27: 
Line 28:     interface WidgetUiBinder extends UiBinder<Widget, VmRowWidget> {
Line 29:         WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
Line 30:     }


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/scheduling/widgets/VmRowWidget.ui.xml
Line 1: <?xml version="1.0" encoding="UTF-8"?>
Line 2: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
Done
Line 4:     xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5:     xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Line 6: 
Line 7:         <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />


Line 3: <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
Line 4:     xmlns:g="urn:import:com.google.gwt.user.client.ui"
Line 5:     xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
Line 6: 
Line 7:         <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
Done
Line 8: 
Line 9:         <ui:style 
type="org.ovirt.engine.ui.webadmin.section.main.view.popup.scheduling.widgets.VmRowWidget.WidgetStyle">
Line 10:                .fieldWidth {
Line 11:                        width: 180px;


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
Line 85:             }
Line 86:         });
Line 87:     }
Line 88: 
Line 89:     protected abstract void addMembersColumn(ApplicationConstants 
constants);
Done
Line 90: 
Line 91:     protected String joinMembers(List<String> strings, String 
separator, String skipString, ApplicationConstants constants) {
Line 92:         if (strings == null || strings.isEmpty()) {
Line 93:             return constants.noMembersAffinityGroup();


Line 87:     }
Line 88: 
Line 89:     protected abstract void addMembersColumn(ApplicationConstants 
constants);
Line 90: 
Line 91:     protected String joinMembers(List<String> strings, String 
separator, String skipString, ApplicationConstants constants) {
backend code uses StringUtils, and it's not emulated in GWT.
Line 92:         if (strings == null || strings.isEmpty()) {
Line 93:             return constants.noMembersAffinityGroup();
Line 94:         }
Line 95:         StringBuffer result = new StringBuffer();


-- 
To view, visit http://gerrit.ovirt.org/22716
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ibe5d6f6efe2b13297b653e1622a26c7b2b44cba8
Gerrit-PatchSet: 8
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com>
Gerrit-Reviewer: Gilad Chaplik <gchap...@redhat.com>
Gerrit-Reviewer: Lior Vernia <lver...@redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to