package org.ovirt.engine.ui.userportal.client.modalpanels; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.core.compat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicommon.UICommand; import org.ovirt.engine.ui.uicommon.models.vms.SnapshotModel; import org.ovirt.engine.ui.uicommon.models.vms.VmSnapshotListModel; import org.ovirt.engine.ui.userportal.client.components.GridController; import org.ovirt.engine.ui.userportal.client.components.NonDraggableModalPanel; import org.ovirt.engine.ui.userportal.client.components.Button; import org.ovirt.engine.ui.userportal.client.components.TextItemEntityModelBinded; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.HeaderItem; import com.smartgwt.client.widgets.form.fields.SpacerItem; import com.smartgwt.client.widgets.layout.VLayout; public class NewSnapshotModalPanel extends NonDraggableModalPanel { final NewSnapshotModalPanel newSnapshotModalPanel = this; UICommand cancelCommand; public NewSnapshotModalPanel(final GridController gridController, final VmSnapshotListModel vmSnapshotListModel) { super(320, 150, "Create Snapshot"); final SnapshotModel snapshotModel = (SnapshotModel)vmSnapshotListModel.getWindow(); // Creating and set a inner panel VLayout inPanel = new VLayout(); inPanel.setHeight100(); inPanel.setWidth100(); // Creating and set an indent spacer SpacerItem indentSpacer = new SpacerItem(); indentSpacer.setWidth(3); indentSpacer.setHeight(5); // Creating description box and a message label TextItemEntityModelBinded descriptionTextItem = new TextItemEntityModelBinded("Description", snapshotModel.getDescription()); HeaderItem messageLabel = new HeaderItem(); messageLabel.setDefaultValue(snapshotModel.getMessage()); messageLabel.setTextBoxStyle("warningLabel"); // Set items inside a form DynamicForm f = new DynamicForm(); f.setItems(descriptionTextItem, indentSpacer, messageLabel); f.focus(); f.setAutoFocus(true); f.setAutoHeight(); // Adding form to inner panel inPanel.addMember(f); // Adding inner panel to this view addItem(inPanel); vmSnapshotListModel.getPropertyChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { String propertyName = ((PropertyChangedEventArgs)args).PropertyName; if (propertyName.equals("Window")) { vmSnapshotListModel.getPropertyChangedEvent().removeListener(this); destroy(); } } }); // Set footer buttons final UICommand saveCommand = new UICommand("OnNew", vmSnapshotListModel); cancelCommand = new UICommand("Cancel", vmSnapshotListModel); Button okButton = new Button("OK"); okButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { saveCommand.Execute(); //SubTabRefreshTimer.initSubTabRefreshTimer(vmSnapshotListModel); gridController.gridChangePerformed(); } }); Button cancelButton = new Button("Cancel"); cancelButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { onClose(); } }); Button closeButton = new Button("Close"); closeButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { onClose(); } }); // Can create a snapshot only if disks are available if (snapshotModel.getDisks().size() == 0) { setFooterButtons(Alignment.RIGHT, closeButton); } else { setFooterButtons(Alignment.RIGHT, okButton, cancelButton); } subscribeProgressChangedEvent(snapshotModel, descriptionTextItem, inPanel); } @Override public void onClose() { cancelCommand.Execute(); } }