package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
public class PopupWidgetConfig {
private final boolean advancedOnly;
private final boolean alwaysHidden;
private final boolean detachable;
private final boolean adminOnly;
/**
* The only mutable part - the field can be visible/hidden according to some changing condition in the app
*/
private boolean applicationLevelVisible = true;
private PopupWidgetConfig(boolean advancedOnly,
boolean alwaysHidden,
boolean detachable,
boolean adminOnly) {
super();
this.advancedOnly = advancedOnly;
this.alwaysHidden = alwaysHidden;
this.detachable = detachable;
this.adminOnly = adminOnly;
}
public static PopupWidgetConfig simpleField() {
return new PopupWidgetConfig(false, false, false, false);
}
public static PopupWidgetConfig hiddenField() {
return new PopupWidgetConfig(false, true, false, false);
}
public PopupWidgetConfig detachable() {
return new PopupWidgetConfig(advancedOnly, alwaysHidden, true, adminOnly);
}
public PopupWidgetConfig visibleInAdvancedModeOnly() {
return new PopupWidgetConfig(true, alwaysHidden, detachable, adminOnly);
}
public PopupWidgetConfig visibleForAdminOnly() {
return new PopupWidgetConfig(advancedOnly, alwaysHidden, detachable, true);
}
public PopupWidgetConfig copy() {
PopupWidgetConfig copy = new PopupWidgetConfig(advancedOnly, alwaysHidden, detachable, adminOnly);
copy.setApplicationLevelVisible(isApplicationLevelVisible());
return copy;
}
public boolean isVisibleOnlyInAdvanced() {
return advancedOnly;
}
public boolean isAlwaysHidden() {
return alwaysHidden;
}
public boolean isDetachable() {
return detachable;
}
public boolean isAdminOnly() {
return adminOnly;
}
public boolean isApplicationLevelVisible() {
return applicationLevelVisible;
}
public void setApplicationLevelVisible(boolean applicationLevelVisible) {
this.applicationLevelVisible = applicationLevelVisible;
}
public boolean isCurrentlyVisible(boolean advancedMode, boolean createInstanceMode) {
if (isAlwaysHidden()) {
return false;
}
if (!isApplicationLevelVisible()) {
return false;
}
if (!advancedMode && isVisibleOnlyInAdvanced()) {
return false;
}
if (createInstanceMode && isAdminOnly()) {
return false;
}
return true;
}
}