package org.ovirt.engine.ui.common.view.popup.numa;
import java.util.Iterator;
import org.ovirt.engine.core.common.businessentities.VMStatus;
import org.ovirt.engine.ui.common.CommonApplicationMessages;
import org.ovirt.engine.ui.common.CommonApplicationResources;
import org.ovirt.engine.ui.common.gin.AssetProvider;
import org.ovirt.engine.ui.uicommonweb.models.hosts.numa.VNodeModel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
public class VirtualNumaPanel extends Composite implements HasWidgets {
interface WidgetUiBinder extends UiBinder<Widget, VirtualNumaPanel> {
WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
}
@UiField
FlowPanel container;
@UiField
Image virtualNodeStatus;
@UiField
Image numaState;
@UiField
Label virtualNodeName;
ImageResource vNumaIcon;
ImageResource partialVNumaIcon;
ImageResource pinnedVNumaIcon;
ImageResource pinnedPartialVNumaIcon;
@UiField(provided = true)
static final CommonApplicationResources resources = AssetProvider.getResources();
private static final CommonApplicationMessages messages = AssetProvider.getMessages();
@Inject
public VirtualNumaPanel() {
initializeResouceIcons();
initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
}
private void initializeResouceIcons() {
pinnedPartialVNumaIcon = resources.darkPinnedPartialVNumaIcon();
pinnedVNumaIcon = resources.darkPinnedVNumaIcon();
partialVNumaIcon = resources.darkPartialVNumaIcon();
vNumaIcon = resources.darkVNumaIcon();
}
@Override
public void setStyleName(String className) {
container.setStyleName(className);
}
public void setModel(VNodeModel nodeModel) {
virtualNodeName.setText(messages.vNumaName(nodeModel.getVm().getName(), nodeModel.getIndex()));
setStatusIcon(nodeModel);
setTypeIcon(nodeModel);
}
protected void setStatusIcon(VNodeModel nodeModel) {
if (VMStatus.Up.equals(nodeModel.getVm().getStatus())) {
virtualNodeStatus.setResource(resources.upImage());
} else if (VMStatus.Down.equals(nodeModel.getVm().getStatus())) {
virtualNodeStatus.setResource(resources.downImage());
} else {
//Unknown status
virtualNodeStatus.setResource(resources.questionMarkImage());
}
}
protected void setTypeIcon(VNodeModel nodeModel) {
if (nodeModel.isPinned()) {
if (nodeModel.isSplitted()) {
numaState.setResource(pinnedPartialVNumaIcon);
} else {
numaState.setResource(pinnedVNumaIcon);
}
} else {
if (nodeModel.isSplitted()) {
numaState.setResource(partialVNumaIcon);
} else {
numaState.setResource(vNumaIcon);
}
}
}
public ImageResource getvNumaIcon() {
return vNumaIcon;
}
public void setvNumaIcon(ImageResource vNumaIcon) {
this.vNumaIcon = vNumaIcon;
}
public ImageResource getPartialVNumaIcon() {
return partialVNumaIcon;
}
public void setPartialVNumaIcon(ImageResource partialVNumaIcon) {
this.partialVNumaIcon = partialVNumaIcon;
}
public ImageResource getPinnedVNumaIcon() {
return pinnedVNumaIcon;
}
public void setPinnedVNumaIcon(ImageResource pinnedVNumaIcon) {
this.pinnedVNumaIcon = pinnedVNumaIcon;
}
public ImageResource getPinnedPartialVNumaIcon() {
return pinnedPartialVNumaIcon;
}
public void setPinnedPartialVNumaIcon(ImageResource pinnedPartialVNumaIcon) {
this.pinnedPartialVNumaIcon = pinnedPartialVNumaIcon;
}
@Override
public void add(Widget w) {
container.insert(w, 0);
}
@Override
public void clear() {
throw new RuntimeException("Can't clear this widget"); //$NON-NLS-1$
}
@Override
public Iterator<Widget> iterator() {
return container.iterator();
}
@Override
public boolean remove(Widget w) {
return container.remove(w);
}
}