Skip to content
Snippets Groups Projects
Commit faa4f36d authored by uhensler's avatar uhensler
Browse files

OO-3855: Move sliders of a rubric up and down

parent 5406dbaa
No related branches found
No related tags found
No related merge requests found
Showing
with 103 additions and 16 deletions
......@@ -1298,4 +1298,5 @@ public class FormUIFactory {
}
return ratingCmp;
}
}
......@@ -174,6 +174,7 @@ public class Link extends AbstractComponent {
/**
* @see org.olat.core.gui.components.Component#dispatchRequest(org.olat.core.gui.UserRequest)
*/
@Override
protected void doDispatchRequest(UserRequest ureq) {
setDirty(true);
String cmd = ureq.getParameter(VelocityContainer.COMMAND_ID);
......@@ -203,6 +204,7 @@ public class Link extends AbstractComponent {
/**
* @see org.olat.core.gui.components.Component#getHTMLRendererSingleton()
*/
@Override
public ComponentRenderer getHTMLRendererSingleton() {
return RENDERER;
}
......
......@@ -56,7 +56,7 @@ public class UpDown extends AbstractComponent implements ComponentCollection, Co
private boolean loweremost = false;
private Object userObject;
public UpDown(String name, Layout layout) {
UpDown(String name, Layout layout) {
super(name);
this.layout = layout;
setDomReplacementWrapperRequired(false);
......
......@@ -32,7 +32,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
public class UpDownFactory {
public static UpDown createUpDown(String name, Layout layout, VelocityContainer vc, ComponentEventListener listener) {
UpDown upDown = new UpDown(name, layout);
UpDown upDown = createUpDown(name, layout);
if (listener != null) {
upDown.addListener(listener);
}
......@@ -41,5 +41,9 @@ public class UpDownFactory {
}
return upDown;
}
static UpDown createUpDown(String name, Layout layout) {
return new UpDown(name, layout);
}
}
......@@ -68,14 +68,9 @@ public class UpDownRenderer extends DefaultComponentRenderer {
private void renderButtonHorizontal(Renderer renderer, StringOutput sb, String[] args, UpDown upDown) {
sb.append("<div class='btn-group o_updown'>");
if (upDown.isTopmost()) {
upDown.getUp().setEnabled(false);
}
upDown.getUp().setEnabled(!upDown.isTopmost());
renderer.render(upDown.getUp(), sb, args);
if (upDown.isLowermost()) {
upDown.getDown().setEnabled(false);
}
upDown.getDown().setEnabled(!upDown.isLowermost());
renderer.render(upDown.getDown(), sb, args);
sb.append("</div>");
}
......
......@@ -29,6 +29,7 @@ import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.FormLink;
......@@ -40,7 +41,12 @@ import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
import org.olat.core.gui.components.form.flexible.impl.FormEvent;
import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.updown.UpDown;
import org.olat.core.gui.components.updown.UpDownEvent;
import org.olat.core.gui.components.updown.UpDownEvent.Direction;
import org.olat.core.gui.components.updown.UpDownFactory;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.util.CodeHelper;
import org.olat.core.util.StringHelper;
......@@ -256,6 +262,7 @@ public class RubricEditorController extends FormBasicController implements PageE
SliderRow row = forgeSliderRow(slider);
sliders.add(row);
}
setUpDownVisibility();
if(formLayout instanceof FormLayoutContainer) {
FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
......@@ -345,6 +352,13 @@ public class RubricEditorController extends FormBasicController implements PageE
row.setDeleteButton(deleteButton);
flc.contextPut("deleteButtons", Boolean.TRUE);
}
String name = "ud." + count.incrementAndGet();
UpDown upDown = UpDownFactory.createUpDown(name, UpDown.Layout.BUTTON_HORIZONTAL, flc.getFormItemComponent(), this);
upDown.setUserObject(row);
row.setUpDown(upDown);
flc.put(name, upDown);
return row;
}
......@@ -442,10 +456,45 @@ public class RubricEditorController extends FormBasicController implements PageE
super.formInnerEvent(ureq, source, event);
}
@Override
public void event(UserRequest ureq, Component source, Event event) {
if (event instanceof UpDownEvent) {
UpDownEvent ude = (UpDownEvent) event;
SliderRow row = (SliderRow) ude.getUserObject();
doMove(row.getSlider(), ude.getDirection());
}
super.event(ureq, source, event);
}
private void doMove(Slider slider, Direction direction) {
int index = rubric.getSliders().indexOf(slider);
if (index > -1) {
if (Direction.UP.equals(direction)) {
swapSliders(index - 1, index);
} else if (Direction.DOWN.equals(direction)) {
swapSliders(index, index + 1);
}
setUpDownVisibility();
flc.setDirty(true);
}
}
private void swapSliders(int i, int j) {
List<Slider> rubricSliders = rubric.getSliders();
Slider tempRubricSlider = rubricSliders.get(i);
rubricSliders.set(i, rubricSliders.get(j));
rubricSliders.set(j, tempRubricSlider);
SliderRow tempSlider = sliders.get(i);
sliders.set(i, sliders.get(j));
sliders.set(j, tempSlider);
}
private void doRemoveSlider(SliderRow row) {
updateSteps();
sliders.remove(row);
rubric.getSliders().remove(row.getSlider());
setUpDownVisibility();
flc.setDirty(true);
}
......@@ -455,8 +504,24 @@ public class RubricEditorController extends FormBasicController implements PageE
rubric.getSliders().add(slider);
SliderRow row = forgeSliderRow(slider);
sliders.add(row);
setUpDownVisibility();
flc.setDirty(true);
}
private void setUpDownVisibility() {
for (int i = 0; i < sliders.size(); i++) {
SliderRow sliderRow = sliders.get(i);
UpDown upDown = sliderRow.getUpDown();
upDown.setTopmost(false);
upDown.setLowermost(false);
if (i == 0) {
upDown.setTopmost(true);
}
if (i == sliders.size() -1) {
upDown.setLowermost(true);
}
}
}
@Override
protected boolean validateFormLogic(UserRequest ureq) {
......@@ -718,6 +783,7 @@ public class RubricEditorController extends FormBasicController implements PageE
private final TextElement startLabelEl;
private final TextElement endLabelEl;
private FormLink deleteButton;
private UpDown upDown;
private FormItem sliderEl;
private final Slider slider;
......@@ -728,7 +794,7 @@ public class RubricEditorController extends FormBasicController implements PageE
this.endLabelEl = endLabelEl;
this.sliderEl = sliderEl;
}
public Slider getSlider() {
return slider;
}
......@@ -749,6 +815,14 @@ public class RubricEditorController extends FormBasicController implements PageE
this.deleteButton = deleteButton;
}
public UpDown getUpDown() {
return upDown;
}
void setUpDown(UpDown upDown) {
this.upDown = upDown;
}
public FormItem getSliderEl() {
return sliderEl;
}
......
......@@ -28,6 +28,7 @@
<div class="col-sm-3">$r.render($slider.startLabelEl)</div>
<div class="col-sm-6 $slider.sliderCss">$r.render($slider.sliderEl)</div>
<div class="col-sm-3">$r.render($slider.endLabelEl)</div>
<div class="o_slider_editor_ud_button">$r.render($slider.upDown)</div>
#if($r.isNotNull($slider.deleteButton) && $r.visible($slider.deleteButton))<div class="o_slider_editor_delete_button">$r.render($slider.deleteButton)</div>#end
</div>
#end
......
......@@ -248,6 +248,7 @@
margin: 10px 10px 0 10px;
.o_slider_editor {
padding-right: 80px;
margin-top: 10px;
position:relative;
}
......@@ -289,8 +290,17 @@
font-size: 90%;
}
.o_slider_editor_ud_button {
position: absolute;
right: 15px;
}
.o_slider_editor_delete {
padding-right: 48px;
padding-right: 125px;
.o_slider_editor_ud_button {
right: 60px;
}
.o_slider_editor_delete_button {
position: absolute;
......
source diff could not be displayed: it is too large. Options to address this: view the blob.
source diff could not be displayed: it is too large. Options to address this: view the blob.
source diff could not be displayed: it is too large. Options to address this: view the blob.
source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment