Hello anmolbabu, I'd like you to do a code review. Please visit
https://gerrit.ovirt.org/39356 to review the following change. Change subject: webadmin : CheckBoxGroup and DaysOfMonthSelector Widgets ...................................................................... webadmin : CheckBoxGroup and DaysOfMonthSelector Widgets CheckBoxGroup Widget and DaysOfMonthSelector Widgets Change-Id: I38daa0d2c151eb0e34603488496a8a1ea4719c87 Signed-off-by: Anmol Babu <anb...@redhat.com> --- A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroup.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroupCss.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelector.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelectorCss.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroup.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroupEditor.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelector.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelectorEditor.java A frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/CheckBoxGroup.css A frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/DaysOfMonthSelector.css M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java 11 files changed, 628 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/56/39356/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroup.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroup.java new file mode 100644 index 0000000..2366442 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroup.java @@ -0,0 +1,182 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.KeyPressEvent; +import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; +import com.google.gwt.text.shared.Renderer; +import com.google.gwt.user.client.TakesValue; +import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HasConstrainedValue; + +/** + * The CheckboxGroup Widget is used to group together a set of Checkbox buttons. By default first checkbox is checked + * due to default behaviour of UiCommonEditorVisitor. Use clearAllSelections to deselect all checkboxes. Any number of + * checkboxes can be checked/set at any point in time. Pushing/Clicking any checkbox in the group toggles its state. + */ + +public class CheckBoxGroup<T> extends Composite implements TakesValue<List<T>>, HasConstrainedValue<List<T>> { + + private final Map<T, CheckBox> checkBoxes = new LinkedHashMap<>(); + + private static Resources RESOURCES = GWT.create(Resources.class); + private final FlowPanel wrapperPanel = new FlowPanel(); + + private CheckBoxGroupCss style; + + private boolean enabled = true; + + Renderer<T> renderer; + + int tabIndex; + + public interface Resources extends ClientBundle { + @Source("org/ovirt/engine/ui/common/css/CheckBoxGroup.css") + CheckBoxGroupCss checkBoxGroupCss(); + } + + public CheckBoxGroup(Renderer<T> renderer) { + this.renderer = renderer; + style = RESOURCES.checkBoxGroupCss(); + style.ensureInjected(); + initWidget(wrapperPanel); + } + + private void addCheckBox(T checkBoxValue) { + String checkBoxLabel = renderer.render(checkBoxValue); + if (checkBoxLabel == null) { + throw new IllegalArgumentException("null value is not permited"); //$NON-NLS-1$ + } + final CheckBox newCheckBox = buildCheckbox(checkBoxValue); + checkBoxes.put(checkBoxValue, newCheckBox); + } + + private CheckBox buildCheckbox(final T checkBoxValue) { + final CheckBox newCheckBox = new CheckBox(SafeHtmlUtils.fromString(renderer.render(checkBoxValue))); + newCheckBox.setValue(false); + newCheckBox.setStyleName(style.checkBox()); + newCheckBox.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + ValueChangeEvent.fire(CheckBoxGroup.this, getValue()); + } + }); + return newCheckBox; + } + + /** + * Clear All checkBoxes' selection in the group + */ + public void clearAllSelections() { + for (Entry<T, CheckBox> currentcheckBoxValue : checkBoxes.entrySet()) { + currentcheckBoxValue.getValue().setValue(false); + } + } + + public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) { + return addDomHandler(handler, KeyUpEvent.getType()); + } + + public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { + return addDomHandler(handler, KeyDownEvent.getType()); + } + + public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { + return addDomHandler(handler, KeyPressEvent.getType()); + } + + + public boolean isEnabled() { + return enabled; + } + + /** + * Enable/disable all checkboxes + */ + public void setEnabled(boolean enabled) { + for(Entry<T, CheckBox> currentValue : checkBoxes.entrySet()) { + currentValue.getValue().setEnabled(enabled); + } + } + + public int getTabIndex() { + return tabIndex; + } + + public void setTabIndex(int index) { + tabIndex = index; + } + + @Override + public void setValue(List<T> value, boolean fireEvents) { + for (T currentvalue : value) { + if (checkBoxes.containsKey(currentvalue)) { + checkBoxes.get(currentvalue).setValue(true); + } + } + if (fireEvents) { + ValueChangeEvent.fire(this, value); + } + } + + @Override + public HandlerRegistration addValueChangeHandler(ValueChangeHandler<List<T>> handler) { + return addHandler(handler, ValueChangeEvent.getType()); + } + + @Override + public void setAcceptableValues(Collection<List<T>> values) { + if (values.isEmpty()) { + throw new IllegalArgumentException("Widget has nothing to do");//$NON-NLS-1$ + } + List<T> acceptableValues = (List<T>) values.toArray()[0]; + for(T currentValue : acceptableValues) { + if(!checkBoxes.containsKey(currentValue)) { + addCheckBox(currentValue); + } + } + showCheckBoxes(); + } + + private void showCheckBoxes() { + for (Entry<T, CheckBox> currentEntry : checkBoxes.entrySet()) { + wrapperPanel.add(currentEntry.getValue()); + } + } + + @Override + public void setValue(List<T> value) { + setValue(value, false); + } + + @Override + public List<T> getValue() { + List<T> selectedItems = new ArrayList<>(); + for (Entry<T, CheckBox> currentEntry : checkBoxes.entrySet()) { + if (currentEntry.getValue().getValue()) { + selectedItems.add(currentEntry.getKey()); + } + } + return selectedItems; + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroupCss.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroupCss.java new file mode 100644 index 0000000..1c2ce1b --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/CheckBoxGroupCss.java @@ -0,0 +1,8 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import com.google.gwt.resources.client.CssResource; + +public interface CheckBoxGroupCss extends CssResource { + @ClassName("checkBox") + String checkBox(); +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelector.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelector.java new file mode 100644 index 0000000..128a2a7 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelector.java @@ -0,0 +1,182 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.UIConstants; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.user.client.TakesValue; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlexTable; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HTMLTable.Cell; +import com.google.gwt.user.client.ui.HasValue; +import com.google.gwt.user.client.ui.Label; + +public class DaysOfMonthSelector extends Composite implements TakesValue<String>, HasValue<String> { + + private static final int DAYS_IN_WEEK = 7; + private static final int LAST_DAY_OF_MONTH_INDEX = 31; + private static final UIConstants constants = ConstantsManager.getInstance().getConstants(); + + private static Resources RESOURCES = GWT.create(Resources.class); + private DaysOfMonthSelectorCss style; + + private final FlowPanel wrapperPanel = new FlowPanel(); + private final FlexTable daysOfMonth = new FlexTable(); + + // Starts from index 0 and goes upto 31(Assumed to be last day of month(recurrence)) + List<Boolean> clickedList = new ArrayList<>(); + + public interface Resources extends ClientBundle { + @Source("org/ovirt/engine/ui/common/css/DaysOfMonthSelector.css") + DaysOfMonthSelectorCss daysOfMonthSelectorCSS(); + } + + public DaysOfMonthSelector() { + initWidget(wrapperPanel); + style = RESOURCES.daysOfMonthSelectorCSS(); + style.ensureInjected(); + daysOfMonth.setStyleName(style.daysOfMonthWidget()); + showDaysOfMonth(); + daysOfMonth.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + Cell cellClicked = daysOfMonth.getCellForEvent(event); + int cellColumn = cellClicked.getCellIndex(); + int cellRow = cellClicked.getRowIndex(); + int actualCellIndex = (cellRow - 1) * DAYS_IN_WEEK + cellColumn; + if (!clickedList.get(actualCellIndex)) { + ValueChangeEvent.fire(DaysOfMonthSelector.this, + addSelectedDate(getValue(), getDateFromIndex(actualCellIndex))); + } else { + ValueChangeEvent.fire(DaysOfMonthSelector.this, + removeSelectedDate(getValue(), getDateFromIndex(actualCellIndex))); + } + } + }); + } + + private void onSelectedItemsChange(int date, boolean clicked) { + String className = style.normalFlexTableCell(); + if (clicked) { + className = style.selectedFlexTableCell(); + } + daysOfMonth.getCellFormatter() + .getElement(getRowForTheDay(date), getColumnForTheDay(date)) + .setClassName(className); + } + + private void showDaysOfMonth() { + int row = 0; + int column = 0; + for (int i = 0; i < LAST_DAY_OF_MONTH_INDEX; i++) { + if ((i + 1) % DAYS_IN_WEEK == 1 && i != 1) { + row++; + column = 0; + } + daysOfMonth.setWidget(row, column, new Label(Integer.toString(i + 1))); + daysOfMonth.getCellFormatter().getElement(row, column).addClassName(style.normalFlexTableCell()); + clickedList.add(i, false); + column++; + } + Label widget = new Label(constants.lastDay()); + clickedList.add(LAST_DAY_OF_MONTH_INDEX, false); + daysOfMonth.setWidget(row, column, widget); + daysOfMonth.getFlexCellFormatter().setColSpan(row, column, 4); + wrapperPanel.add(daysOfMonth); + } + + @Override + public void setValue(String value, boolean fireEvents) { + clearSelections(); + if (value != null && !value.isEmpty()) { + for (String valueInProcess : Arrays.asList(value.split(","))) {//$NON-NLS-1$ + int selectedIndex = getIndexFromDate(valueInProcess); + if (clickedList.get(selectedIndex) != null) { + clickedList.set(selectedIndex, true); + onSelectedItemsChange(selectedIndex + 1, true); + } + } + if (fireEvents) { + ValueChangeEvent.fire(this, value); + } + } + } + + @Override + public void setValue(String value) { + setValue(value, false); + } + + private void clearSelections() { + for (int index = 0; index <= LAST_DAY_OF_MONTH_INDEX; index++) { + clickedList.set(index, false); + onSelectedItemsChange(index + 1, false); + } + } + + @Override + public String getValue() { + String selectedValues = null; + for (int dayInProcess = 0; dayInProcess <= LAST_DAY_OF_MONTH_INDEX; dayInProcess++) { + if (clickedList.get(dayInProcess)) { + selectedValues = addSelectedDate(selectedValues, getDateFromIndex(dayInProcess)); + } + } + return selectedValues; + } + + private String addSelectedDate(String selectedValues, String dateString) { + if (selectedValues == null) { + selectedValues = dateString; + } else { + selectedValues = selectedValues.concat(",");//$NON-NLS-1$ + selectedValues = selectedValues.concat(dateString); + } + return selectedValues; + } + + private String removeSelectedDate(String selectedValues, String dayInProcess) { + List<String> selectedDatesList = new ArrayList<>(Arrays.asList(selectedValues.split(",")));//$NON-NLS-1$ + selectedDatesList.remove(dayInProcess); + String selectedDatesString = null; + for (String currentSelectedDate : selectedDatesList) { + selectedDatesString = addSelectedDate(selectedDatesString, currentSelectedDate); + } + return selectedDatesString; + } + + private String getDateFromIndex(int dayInProcess) { + return dayInProcess == LAST_DAY_OF_MONTH_INDEX ? "L" : Integer.toString(dayInProcess + 1);//$NON-NLS-1$ + } + + private int getIndexFromDate(String value) { + return value.equals("L") ? LAST_DAY_OF_MONTH_INDEX : Integer.parseInt(value) - 1;//$NON-NLS-1$ + } + + private int getRowForTheDay(int date) { + int row = date / DAYS_IN_WEEK; + return date % DAYS_IN_WEEK == 0 ? row : row + 1; + } + + private int getColumnForTheDay(int date) { + int probableColumn = date % DAYS_IN_WEEK; + int cellColumn = probableColumn == 0 ? 6 : probableColumn - 1; + return cellColumn; + } + + @Override + public HandlerRegistration addValueChangeHandler(ValueChangeHandler<String> handler) { + return addHandler(handler, ValueChangeEvent.getType()); + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelectorCss.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelectorCss.java new file mode 100644 index 0000000..76a6f29 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/DaysOfMonthSelectorCss.java @@ -0,0 +1,14 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import com.google.gwt.resources.client.CssResource; + +public interface DaysOfMonthSelectorCss extends CssResource { + @ClassName("normalFlexTableCell") + String normalFlexTableCell(); + + @ClassName("selectedFlexTableCell") + String selectedFlexTableCell(); + + @ClassName("daysOfMonthWidget") + String daysOfMonthWidget(); +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroup.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroup.java new file mode 100644 index 0000000..d1757bc --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroup.java @@ -0,0 +1,42 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.List; + +import com.google.gwt.editor.client.adapters.TakesValueEditor; +import com.google.gwt.text.shared.Renderer; +import com.google.gwt.user.client.ui.HasConstrainedValue; + +/** + * ListModel bound CheckBoxGroup that uses {@link CheckBoxGroup}. + */ +public class ListModelCheckBoxGroup<T> extends CheckBoxGroup<T> implements EditorWidget<List<T>, TakesValueEditor<List<T>>>, HasConstrainedValue<List<T>> { + + private TakesConstrainedValueEditor<List<T>> editor; + + private char accessKey; + + public ListModelCheckBoxGroup(Renderer<T> renderer) { + super(renderer); + } + + @Override + public TakesValueEditor<List<T>> asEditor() { + if (editor == null) { + editor = TakesConstrainedValueEditor.of(this, this, this); + } + return editor; + } + + public char getAccessKey() { + return accessKey; + } + + @Override + public void setAccessKey(char key) { + this.accessKey = key; + } + + @Override + public void setFocus(boolean focused) { + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroupEditor.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroupEditor.java new file mode 100644 index 0000000..68b1908 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelCheckBoxGroupEditor.java @@ -0,0 +1,49 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.List; + +import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel; +import org.ovirt.engine.ui.common.widget.VisibilityRenderer; +import org.ovirt.engine.ui.common.widget.renderer.StringRenderer; + +import com.google.gwt.dom.client.Style.BorderStyle; +import com.google.gwt.editor.client.IsEditor; +import com.google.gwt.text.shared.Renderer; + +/** + * ListModel bound CheckBoxGroup Editor that uses {@link ListModelCheckBoxGroup}. + */ + +public class ListModelCheckBoxGroupEditor<T> extends AbstractValidatedWidgetWithLabel<List<T>, ListModelCheckBoxGroup<T>> implements IsEditor<WidgetWithLabelEditor<List<T>, ListModelCheckBoxGroupEditor<T>>>{ + + private final WidgetWithLabelEditor<List<T>, ListModelCheckBoxGroupEditor<T>> editor; + + public ListModelCheckBoxGroupEditor() { + this(new StringRenderer<T>()); + } + + public ListModelCheckBoxGroupEditor(Renderer<T> renderer) { + super(new ListModelCheckBoxGroup<>(renderer), new VisibilityRenderer.SimpleVisibilityRenderer()); + editor = WidgetWithLabelEditor.of(getContentWidget().asEditor(), this); + } + + @Override + public void markAsValid() { + super.markAsValid(); + getValidatedWidgetStyle().setBorderStyle(BorderStyle.NONE); + } + + @Override + public void markAsInvalid(List<String> validationHints) { + super.markAsInvalid(validationHints); + } + + @Override + public WidgetWithLabelEditor<List<T>, ListModelCheckBoxGroupEditor<T>> asEditor() { + return editor; + } + + public CheckBoxGroup<T> asCheckBoxGroup() { + return getContentWidget(); + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelector.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelector.java new file mode 100644 index 0000000..f264e46 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelector.java @@ -0,0 +1,84 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.Collection; + +import com.google.gwt.editor.client.adapters.TakesValueEditor; +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.KeyPressEvent; +import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.ui.HasConstrainedValue; + +/** + * ListModel bound DaysOfMonthSelector that uses {@link DaysOfMonthSelector}. + */ +public class ListModelDaysOfMonthSelector extends DaysOfMonthSelector implements EditorWidget<String, TakesValueEditor<String>>, HasConstrainedValue<String> { + + private TakesConstrainedValueEditor<String> editor; + + private int tabIndex; + + @Override + public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) { + return addDomHandler(handler, KeyUpEvent.getType()); + } + + @Override + public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { + return addDomHandler(handler, KeyDownEvent.getType()); + } + + @Override + public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { + return addDomHandler(handler, KeyPressEvent.getType()); + } + + @Override + public int getTabIndex() { + return tabIndex; + } + + @Override + public void setAccessKey(char key) { + + } + + @Override + public void setFocus(boolean focused) { + + } + + @Override + public void setTabIndex(int index) { + this.tabIndex = index; + } + + @Override + public TakesValueEditor<String> asEditor() { + if (editor == null) { + editor = TakesConstrainedValueEditor.of(this, this, this); + } + return editor; + } + + @Override + public void setAcceptableValues(Collection<String> values) { + // Keeping this mute as of now because the values set from the bound ListModel's setItems don't have any + // significance here and hence shouldn't be done. + } + + @Override + public void setEnabled(boolean enabled) { + // Keeping this mute as no use of this can thought as of now. + + } + + @Override + public boolean isEnabled() { + return true; + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelectorEditor.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelectorEditor.java new file mode 100644 index 0000000..eb9a919 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelDaysOfMonthSelectorEditor.java @@ -0,0 +1,44 @@ +package org.ovirt.engine.ui.common.widget.editor; + +import java.util.List; + +import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel; +import org.ovirt.engine.ui.common.widget.VisibilityRenderer; + +import com.google.gwt.dom.client.Style.BorderStyle; +import com.google.gwt.editor.client.IsEditor; + +public class ListModelDaysOfMonthSelectorEditor extends AbstractValidatedWidgetWithLabel<String, ListModelDaysOfMonthSelector> implements IsEditor<WidgetWithLabelEditor<String, ListModelDaysOfMonthSelectorEditor>> { + + /** + * ListModel bound DaysOfMonthSelector editor that uses {@link ListModelDaysOfMonthSelector}. + */ + + private final WidgetWithLabelEditor<String, ListModelDaysOfMonthSelectorEditor> editor; + + public ListModelDaysOfMonthSelectorEditor() { + super(new ListModelDaysOfMonthSelector(), new VisibilityRenderer.SimpleVisibilityRenderer()); + editor = WidgetWithLabelEditor.of(getContentWidget().asEditor(), this); + } + + public DaysOfMonthSelector asDaysOfMonthSelector() { + return getContentWidget(); + } + + @Override + public WidgetWithLabelEditor<String, ListModelDaysOfMonthSelectorEditor> asEditor() { + return editor; + } + + @Override + public void markAsValid() { + super.markAsValid(); + getValidatedWidgetStyle().setBorderStyle(BorderStyle.NONE); + } + + @Override + public void markAsInvalid(List<String> validationHints) { + super.markAsInvalid(validationHints); + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/CheckBoxGroup.css b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/CheckBoxGroup.css new file mode 100644 index 0000000..de8cbee --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/CheckBoxGroup.css @@ -0,0 +1,5 @@ +.checkBox { + width: auto; + margin-right: 10px; + float: left; +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/DaysOfMonthSelector.css b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/DaysOfMonthSelector.css new file mode 100644 index 0000000..ae5c660 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/DaysOfMonthSelector.css @@ -0,0 +1,15 @@ +.selectedFlexTableCell { + background-color : #E6E6FA; + width: 25px; + border: 1px solid black; +} + +.normalFlexTableCell { + background-color: white; + width: 25px; + border: 1px solid black; +} + +.daysOfMonthWidget { + border: 2px solid black; +} \ No newline at end of file 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 b7905cf..c70346a 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 @@ -2464,5 +2464,8 @@ @DefaultStringValue("The selected snapshot will be deactivated.\n Do you want to continue?") String confirmVolumeSnapshotDeactivateMessage(); + + @DefaultStringValue("Last Day") + String lastDay(); } -- To view, visit https://gerrit.ovirt.org/39356 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I38daa0d2c151eb0e34603488496a8a1ea4719c87 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5-gluster Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com> Gerrit-Reviewer: anmolbabu <anb...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches