Kanagaraj M has uploaded a new change for review. Change subject: webadmin: remove bricks with migration support ......................................................................
webadmin: remove bricks with migration support Added a new Checkbox 'Migrate Data' to the Remove Bricks Confirmation popup. And a warning message in the bottom explaining the necessity to migrate the data before remove. The bricks in the confirmation popup is wrapped inside a ScrollPanel to avoid the overflowing if more number of bricks are selected. Change-Id: I8aae4548661ff1cb9f93a14ab66b6c41bc201bbd Signed-off-by: Kanagaraj M <kmayi...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/RemoveBrickModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/RemoveBrickPopupPresenterWidget.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.ui.xml 9 files changed, 311 insertions(+), 61 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/01/19201/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/RemoveBrickModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/RemoveBrickModel.java index 8fa55a7..d707c2e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/RemoveBrickModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/RemoveBrickModel.java @@ -1,15 +1,26 @@ package org.ovirt.engine.ui.uicommonweb.models.gluster; -import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; -public class RemoveBrickModel extends Model { - int replicaCount; - int stripeCount; - boolean isReduceReplica; - String validationMessage; +public class RemoveBrickModel extends ConfirmationModel { + private int replicaCount; + + private int stripeCount; + + private boolean isReduceReplica; + + private String validationMessage; + + private EntityModel migrateData; + + private boolean isMigrationSupported; public RemoveBrickModel() { setReduceReplica(false); + setMigrateData(new EntityModel(true)); + setMigrationSupported(true); } public int getReplicaCount() { @@ -44,4 +55,22 @@ this.validationMessage = validationMessage; } + public EntityModel getMigrateData() { + return migrateData; + } + + public void setMigrateData(EntityModel migrateData) { + this.migrateData = migrateData; + } + + public boolean isMigrationSupported() { + return isMigrationSupported; + } + + public void setMigrationSupported(boolean isMigrationSupported) { + if (this.isMigrationSupported != isMigrationSupported) { + this.isMigrationSupported = isMigrationSupported; + onPropertyChanged(new PropertyChangedEventArgs("IsMigrationSupported")); //$NON-NLS-1$ + } + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java index 40cfc4f..202b671 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java @@ -432,65 +432,58 @@ GlusterVolumeEntity volumeEntity = (GlusterVolumeEntity) getEntity(); RemoveBrickModel removeBrickModel = new RemoveBrickModel(); + removeBrickModel.setHashName("volume_remove_bricks"); //$NON-NLS-1$ + removeBrickModel.setTitle(ConstantsManager.getInstance().getConstants().removeBricksTitle()); + setWindow(removeBrickModel); + removeBrickModel.setReplicaCount(volumeEntity.getReplicaCount()); removeBrickModel.setStripeCount(volumeEntity.getStripeCount()); - - if (!canRemoveBricks(volumeEntity.getVolumeType(), - Linq.<GlusterBrickEntity> cast(getSelectedItems()), - volumeEntity.getBricks(), - removeBrickModel)) - { - ConfirmationModel model = new ConfirmationModel(); - setWindow(model); - model.setEntity(removeBrickModel.isReduceReplica()); - model.setTitle(ConstantsManager.getInstance().getConstants().removeBricksTitle()); - model.setMessage(removeBrickModel.getValidationMessage()); - model.setHashName("volume_remove_bricks_invalid"); //$NON-NLS-1$ - - UICommand command2 = new UICommand("Cancel", this); //$NON-NLS-1$ - command2.setTitle(ConstantsManager.getInstance().getConstants().close()); - command2.setIsCancel(true); - model.getCommands().add(command2); - return; - } - - ConfirmationModel model = new ConfirmationModel(); - setWindow(model); - model.setEntity(removeBrickModel.isReduceReplica()); - model.setTitle(ConstantsManager.getInstance().getConstants().removeBricksTitle()); - model.setHashName("volume_remove_bricks"); //$NON-NLS-1$ - if (removeBrickModel.isReduceReplica()) - { - model.setMessage(ConstantsManager.getInstance() - .getMessages() - .removeBricksReplicateVolumeMessage(volumeEntity.getReplicaCount(), - volumeEntity.getReplicaCount() - 1)); - } - else - { - model.setMessage(ConstantsManager.getInstance().getConstants().removeBricksMessage()); - } - model.setNote(ConstantsManager.getInstance().getConstants().removeBricksWarning()); ArrayList<String> list = new ArrayList<String>(); for (GlusterBrickEntity item : Linq.<GlusterBrickEntity> cast(getSelectedItems())) { list.add(item.getQualifiedName()); } - model.setItems(list); + removeBrickModel.setItems(list); - UICommand command1 = new UICommand("OnRemove", this); //$NON-NLS-1$ - command1.setTitle(ConstantsManager.getInstance().getConstants().ok()); - command1.setIsDefault(true); - model.getCommands().add(command1); + if (!validateRemoveBricks(volumeEntity.getVolumeType(), + Linq.<GlusterBrickEntity> cast(getSelectedItems()), + volumeEntity.getBricks(), + removeBrickModel)) + { + removeBrickModel.setMigrationSupported(false); + removeBrickModel.setMessage(removeBrickModel.getValidationMessage()); + } + else + { + removeBrickModel.setMigrationSupported(volumeEntity.getVolumeType().isDistributedType()); + removeBrickModel.getMigrateData().setEntity(removeBrickModel.isMigrationSupported()); - UICommand command2 = new UICommand("Cancel", this); //$NON-NLS-1$ - command2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); - command2.setIsCancel(true); - model.getCommands().add(command2); + if (removeBrickModel.isReduceReplica()) + { + removeBrickModel.setMessage(ConstantsManager.getInstance() + .getMessages() + .removeBricksReplicateVolumeMessage(volumeEntity.getReplicaCount(), + volumeEntity.getReplicaCount() - 1)); + } + else + { + removeBrickModel.setMessage(ConstantsManager.getInstance().getConstants().removeBricksMessage()); + } + + UICommand command = new UICommand("OnRemove", this); //$NON-NLS-1$ + command.setTitle(ConstantsManager.getInstance().getConstants().ok()); + command.setIsDefault(true); + removeBrickModel.getCommands().add(command); + } + + UICommand command = new UICommand("Cancel", this); //$NON-NLS-1$ + command.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + command.setIsCancel(true); + removeBrickModel.getCommands().add(command); } - public boolean canRemoveBricks(GlusterVolumeType volumeType, + public boolean validateRemoveBricks(GlusterVolumeType volumeType, List<GlusterBrickEntity> selectedBricks, List<GlusterBrickEntity> brickList, RemoveBrickModel removeBrickModel) @@ -663,7 +656,7 @@ return; } - ConfirmationModel model = (ConfirmationModel) getWindow(); + RemoveBrickModel model = (RemoveBrickModel) getWindow(); if (model.getProgress() != null) { @@ -685,7 +678,7 @@ } else if (volumeEntity.getVolumeType() == GlusterVolumeType.DISTRIBUTED_REPLICATE) { - if ((Boolean) model.getEntity()) + if (model.isReduceReplica()) { parameter.setReplicaCount(volumeEntity.getReplicaCount() - 1); } @@ -697,8 +690,10 @@ model.startProgress(null); - Frontend.RunAction(VdcActionType.GlusterVolumeRemoveBricks, parameter, new IFrontendActionAsyncCallback() { + boolean isMigrate = (Boolean) model.getMigrateData().getEntity(); + Frontend.RunAction(isMigrate ? VdcActionType.StartRemoveGlusterVolumeBricks + : VdcActionType.GlusterVolumeRemoveBricks, parameter, new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 1fb7af9..90e521d 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -1710,16 +1710,16 @@ @DefaultStringValue("Cannot remove more than one brick from a Replicate volume at a time") String cannotRemoveBricksReplicateVolume(); - @DefaultStringValue("Incorrect bricks selected for the removal in Distributed Replicate volume. Either all the selected bricks should be from the same sub volume or one brick each for every sub volume!") + @DefaultStringValue("Incorrect bricks selected for the removal in Distributed Replicate volume. <br/> Either all the selected bricks should be from the same sub volume or one brick each for every sub volume!") String cannotRemoveBricksDistributedReplicateVolume(); - @DefaultStringValue("Incorrect bricks selected for the removal in Distributed Stripe volume. Selected bricks should be from the same sub volume!") + @DefaultStringValue("Incorrect bricks selected for the removal in Distributed Stripe volume. <br/> Selected bricks should be from the same sub volume!") String cannotRemoveBricksDistributedStripeVolume(); - @DefaultStringValue("Incorrect bricks selected for the removal in Striped Replicate volume. Selected bricks should be a multiple of stripe and replica count") + @DefaultStringValue("Incorrect bricks selected for the removal in Striped Replicate volume. <br/> Selected bricks should be a multiple of stripe and replica count") String cannotRemoveBricksStripedReplicateVolume(); - @DefaultStringValue("Incorrect bricks selected for the removal in Distributed Striped Replicate volume. Selected bricks should be from the same sub volume!") + @DefaultStringValue("Incorrect bricks selected for the removal in Distributed Striped Replicate volume. <br/> Selected bricks should be from the same sub volume!") String cannotRemoveBricksDistributedStripedReplicateVolume(); @DefaultStringValue("Replica count can be increased by only one") diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 9ca5110..45e8827 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -2672,6 +2672,15 @@ @DefaultStringValue("NOTE: Stripe groups will be create based on the order of the bricks.") String distributedStripeVolumeBrickInfoLabel(); + @DefaultStringValue("Migrate Data from the bricks") + String removeBricksMigrateData(); + + @DefaultStringValue("Ensure safe data migration before removing the bricks") + String removeBricksMigrateDataInfo(); + + @DefaultStringValue("Please note that data will be lost if choose not to migrate") + String removeBricksWarning(); + // Volume Brick Details @DefaultStringValue("General") String generalBrickAdvancedPopupLabel(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index 78c66ec..6b20561 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -39,6 +39,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.AddBrickPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.DetachGlusterHostsPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.RemoveBrickPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.ReplaceBrickPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumeParameterPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumePopupPresenterWidget; @@ -243,6 +244,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.AddBrickPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.BrickAdvancedDetailsPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.DetachGlusterHostsPopupView; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.RemoveBrickPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.ReplaceBrickPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumeParameterPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumePopupView; @@ -1258,6 +1260,10 @@ AddBrickPopupPresenterWidget.ViewDef.class, AddBrickPopupView.class); + bindPresenterWidget(RemoveBrickPopupPresenterWidget.class, + RemoveBrickPopupPresenterWidget.ViewDef.class, + RemoveBrickPopupView.class); + bindPresenterWidget(ReplaceBrickPopupPresenterWidget.class, ReplaceBrickPopupPresenterWidget.ViewDef.class, ReplaceBrickPopupView.class); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java index 4d2fe9c..0d3c3d5 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VolumeModule.java @@ -28,6 +28,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.AddBrickPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.BrickAdvancedDetailsPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.RemoveBrickPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.ReplaceBrickPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumeParameterPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumePopupPresenterWidget; @@ -87,7 +88,8 @@ public SearchableDetailModelProvider<GlusterBrickEntity, VolumeListModel, VolumeBrickListModel> getVolumeBrickListProvider(EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, final Provider<AddBrickPopupPresenterWidget> addBrickPopupProvider, - final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider, + final Provider<RemoveBrickPopupPresenterWidget> removeConfirmPopupProvider, + final Provider<RemoveBrickPopupPresenterWidget> removeBrickPopupProvider, final Provider<ReplaceBrickPopupPresenterWidget> replaceBrickPopupProvider, final Provider<BrickAdvancedDetailsPopupPresenterWidget> brickDetailsPopupProvider) { return new SearchableDetailTabModelProvider<GlusterBrickEntity, VolumeListModel, VolumeBrickListModel>( @@ -100,6 +102,8 @@ Model windowModel) { if (lastExecutedCommand == getModel().getAddBricksCommand()) { return addBrickPopupProvider.get(); + } else if (lastExecutedCommand == getModel().getRemoveBricksCommand()) { + return removeBrickPopupProvider.get(); } else if (lastExecutedCommand == getModel().getReplaceBrickCommand()) { return replaceBrickPopupProvider.get(); } else if (lastExecutedCommand == getModel().getBrickAdvancedDetailsCommand()) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/RemoveBrickPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/RemoveBrickPopupPresenterWidget.java new file mode 100644 index 0000000..603e779 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/RemoveBrickPopupPresenterWidget.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster; + +import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.uicommonweb.models.gluster.RemoveBrickModel; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class RemoveBrickPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<RemoveBrickModel, RemoveBrickPopupPresenterWidget.ViewDef> { + + public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<RemoveBrickModel> { + } + + @Inject + public RemoveBrickPopupPresenterWidget(EventBus eventBus, ViewDef view) { + super(eventBus, view); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.java new file mode 100644 index 0000000..60098f1 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.java @@ -0,0 +1,142 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster; + +import java.util.ArrayList; + +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; +import org.ovirt.engine.ui.common.widget.Align; +import org.ovirt.engine.ui.common.widget.dialog.InfoIcon; +import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; +import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor; +import org.ovirt.engine.ui.uicommonweb.models.gluster.RemoveBrickModel; +import org.ovirt.engine.ui.uicompat.Event; +import org.ovirt.engine.ui.uicompat.EventArgs; +import org.ovirt.engine.ui.uicompat.IEventListener; +import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.ApplicationTemplates; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.RemoveBrickPopupPresenterWidget; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.inject.Inject; + +public class RemoveBrickPopupView extends AbstractModelBoundPopupView<RemoveBrickModel> implements RemoveBrickPopupPresenterWidget.ViewDef { + + interface Driver extends SimpleBeanEditorDriver<RemoveBrickModel, RemoveBrickPopupView> { + } + + interface ViewUiBinder extends UiBinder<SimpleDialogPanel, RemoveBrickPopupView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + interface ViewIdHandler extends ElementIdHandler<RemoveBrickPopupView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + @UiField + WidgetStyle style; + + @UiField + @Ignore + Label messageLabel; + + @UiField + VerticalPanel itemsPanel; + + @UiField(provided = true) + @Path("migrateData.entity") + EntityModelCheckBoxEditor migrateEditor; + + @UiField(provided = true) + InfoIcon migrateInfoIcon; + + @UiField + @Ignore + Label warningLabel; + + private final Driver driver = GWT.create(Driver.class); + + @Inject + public RemoveBrickPopupView(EventBus eventBus, + ApplicationResources resources, + ApplicationConstants constants, + ApplicationTemplates templates) { + super(eventBus, resources); + initEditors(constants, resources, templates); + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + ViewIdHandler.idHandler.generateAndSetIds(this); + localize(constants); + addStyles(); + driver.initialize(this); + } + + private void initEditors(ApplicationConstants constants, + ApplicationResources resources, + ApplicationTemplates templates) { + migrateEditor = new EntityModelCheckBoxEditor(Align.RIGHT); + migrateInfoIcon = new InfoIcon(templates.italicText(constants.removeBricksMigrateDataInfo()), resources); + } + + protected void addStyles() { + migrateEditor.addContentWidgetStyleName(style.migrateOption()); + } + + private void localize(ApplicationConstants constants) { + warningLabel.setText(constants.removeBricksWarning()); + migrateEditor.setLabel(constants.removeBricksMigrateData()); + } + + @Override + public void edit(final RemoveBrickModel object) { + driver.edit(object); + + object.getItemsChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + ArrayList<String> items = (ArrayList<String>) object.getItems(); + + for (String item : items) { + itemsPanel.add(new Label(item)); + } + } + }); + + object.getPropertyChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + String propName = ((PropertyChangedEventArgs) args).PropertyName; + + if ("IsMigrationSupported".equals(propName)) { //$NON-NLS-1$ + migrateEditor.setVisible(object.isMigrationSupported()); + migrateInfoIcon.setVisible(object.isMigrationSupported()); + warningLabel.setVisible(object.isMigrationSupported()); + } + } + }); + } + + @Override + public void setMessage(String message) { + super.setMessage(message); + messageLabel.setText(message); + } + + @Override + public RemoveBrickModel flush() { + return driver.flush(); + } + + interface WidgetStyle extends CssResource { + + String migrateOption(); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.ui.xml new file mode 100644 index 0000000..46fe3a1 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/RemoveBrickPopupView.ui.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" + xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" + xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> + + <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.RemoveBrickPopupView.WidgetStyle"> + .warningLabel { + color: #FF0000; + left: 10px; + padding-left: 5px; + } + + .itemsPanel { + height:180px; + border: 1px; + } + + .migrateOption { + width: 200px; + padding: 0px; + } + + .migrateInfoIcon { + display: inline-block; + } + + </ui:style> + + <d:SimpleDialogPanel width="450px" height="350px"> + <d:content> + <g:VerticalPanel spacing="5"> + <g:Label ui:field="messageLabel"/> + <g:ScrollPanel addStyleNames="{style.itemsPanel}" > + <g:VerticalPanel ui:field="itemsPanel" /> + </g:ScrollPanel> + <g:HorizontalPanel> + <e:EntityModelCheckBoxEditor ui:field="migrateEditor" /> + <d:InfoIcon ui:field="migrateInfoIcon" addStyleNames="{style.migrateInfoIcon}"/> + </g:HorizontalPanel> + <g:Label ui:field="warningLabel" addStyleNames="{style.warningLabel}" /> + </g:VerticalPanel> + </d:content> + </d:SimpleDialogPanel> + +</ui:UiBinder> \ No newline at end of file -- To view, visit http://gerrit.ovirt.org/19201 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8aae4548661ff1cb9f93a14ab66b6c41bc201bbd Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Kanagaraj M <kmayi...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches