package org.ovirt.engine.ui.common.widget.uicommon.storage;
import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver;
import org.ovirt.engine.ui.common.widget.HasEditorDriver;
import org.ovirt.engine.ui.uicommonweb.models.storage.SanStorageModelBase;
import com.google.gwt.core.client.GWT;
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.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class IscsiTargetToLunView extends Composite implements HasEditorDriver<SanStorageModelBase> {
interface Driver extends UiCommonEditorDriver<SanStorageModelBase, IscsiTargetToLunView> {
}
interface ViewUiBinder extends UiBinder<Widget, IscsiTargetToLunView> {
ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
}
@UiField
SimplePanel targetsListPanel;
@UiField
SimplePanel targetsToLunsDiscoverPanel;
@Ignore
IscsiDiscoverTargetsView iscsiDiscoverTargetsView;
SanStorageTargetToLunList sanStorageTargetToLunList;
private double treeCollapsedHeight;
private double treeExpandedHeight;
private boolean hideLeaf;
private boolean multiSelection;
private final Driver driver = GWT.create(Driver.class);
public IscsiTargetToLunView(double treeCollapsedHeight, double treeExpandedHeight) {
this(treeCollapsedHeight, treeExpandedHeight, false, false);
}
public IscsiTargetToLunView(double treeCollapsedHeight, double treeExpandedHeight,
boolean hideLeaf, boolean multiSelection) {
this.treeCollapsedHeight = treeCollapsedHeight;
this.treeExpandedHeight = treeExpandedHeight;
this.hideLeaf = hideLeaf;
this.multiSelection = multiSelection;
initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
driver.initialize(this);
}
@Override
public void edit(final SanStorageModelBase object) {
driver.edit(object);
initLists(object);
// Set DiscoverTargetsCommand as default (for iscsiDiscoverTargetsView)
object.getDiscoverTargetsCommand().setIsDefault(true);
object.getCommands().add(object.getDiscoverTargetsCommand());
// Add event handlers
object.getPropertyChangedEvent().addListener((ev, sender, args) -> {
String propName = args.propertyName;
if (propName.equals("ProposeDiscoverTargets")) { //$NON-NLS-1$
setProposeDiscover(object.getProposeDiscoverTargets());
}
});
// Edit sub view
iscsiDiscoverTargetsView.edit(object);
// Set discover panel's style by 'ProposeDiscover' flag
setProposeDiscover(object.getProposeDiscoverTargets());
}
private void setProposeDiscover(boolean proposeDiscover) {
// Update discover panel visibility according to propose discover flag
if (sanStorageTargetToLunList != null) {
sanStorageTargetToLunList.setTreeContainerHeight(proposeDiscover ? treeCollapsedHeight : treeExpandedHeight);
}
}
void initLists(SanStorageModelBase object) {
// Create discover panel and storage lists
iscsiDiscoverTargetsView = new IscsiDiscoverTargetsView();
sanStorageTargetToLunList = new SanStorageTargetToLunList(object, hideLeaf, multiSelection);
// Add view widgets to panel
targetsToLunsDiscoverPanel.add(iscsiDiscoverTargetsView);
targetsListPanel.add(sanStorageTargetToLunList);
// Disable Discover widget in view-only mode
iscsiDiscoverTargetsView.setEnabled(object.getContainer().getIsChangable());
}
@Override
public SanStorageModelBase flush() {
return driver.flush();
}
@Override
public void cleanup() {
driver.cleanup();
}
public void activateItemsUpdate() {
sanStorageTargetToLunList.activateItemsUpdate();
}
public void disableItemsUpdate() {
sanStorageTargetToLunList.disableItemsUpdate();
}
public boolean isDiscoverPanelFocused() {
return iscsiDiscoverTargetsView.isDiscoverPanelFocused();
}
}