Skip to content

Commit

Permalink
Fixed #159
Browse files Browse the repository at this point in the history
  • Loading branch information
Willem Elbers committed Jul 20, 2021
1 parent f58add0 commit e2d598f
Show file tree
Hide file tree
Showing 5 changed files with 135 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,8 @@ public ReferenceLinkPanel(String id, IModel<Resource> model) {
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Node document = parser.parse(model.getObject().getDescription());
htmlValue = renderer.render(document);

logger.info("Original value={}, html value={}", model.getObject().getDescription(), htmlValue);
}

//final PropertyModel<String> descriptionModel = new PropertyModel<>(model, "description");
Label lbl = new Label("description", Model.of(htmlValue)) {
@Override
protected void onConfigure() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import org.apache.wicket.ajax.AjaxRequestTarget;

public interface MoveListEventHandler {
public void handleMoveUp(Long id, AjaxRequestTarget target);
public void handleMoveDown(Long id, AjaxRequestTarget target);
public void handleMoveTop(Long id, AjaxRequestTarget target);
public void handleMoveEnd(Long id, AjaxRequestTarget target);
public void handleMoveUp(Long displayOrder, AjaxRequestTarget target);
public void handleMoveDown(Long displayOrder, AjaxRequestTarget target);
public void handleMoveTop(Long displayOrder, AjaxRequestTarget target);
public void handleMoveEnd(Long displayOrder, AjaxRequestTarget target);
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
Expand All @@ -37,6 +38,11 @@ public class AuthorsEditor extends ComposedField {

private final static Logger logger = LoggerFactory.getLogger(AuthorsEditor.class);

private final static int MOVE_UP = 1; //towards beginning of the list (rendered first)
private final static int MOVE_DOWN = 2; //towards end of the list (rendered last)
private final static int MOVE_START = 3;
private final static int MOVE_END = 4;

private final List<Editable<Creator>> authors = new ArrayList<>();

private AuthorEditPanel pnl;
Expand Down Expand Up @@ -80,12 +86,33 @@ public int compareTo(@NotNull Object o) {
}
}

public class AuthorPanel extends ActionablePanel {
private long getMaxDisplayOrder() {
long maxDisplayOrder = 0;
for(Editable<Creator> c : authors) {
if(c.getData().getDisplayOrder() > maxDisplayOrder) {
maxDisplayOrder = c.getData().getDisplayOrder();
}
}
return maxDisplayOrder;
}

/**
* Get next highest display order, start with 0
* @return
*/
private Long getNextDisplayOrder() {
if(authors.size() <= 0 ) {
return 0L;
}
return getMaxDisplayOrder()+1;
}

public class AuthorPanel extends ActionablePanel {
public AuthorPanel(String id, final Editable<Creator> editableAuthor, final Component componentToUpdate) {
super(id);
setOutputMarkupId(true);

long maxDisplayOrder = getMaxDisplayOrder();
final Creator a = editableAuthor.getData();
add(new Label("name", a.getPerson()));
add(new Label("email", a.getEMail()));
Expand All @@ -94,47 +121,63 @@ public AuthorPanel(String id, final Editable<Creator> editableAuthor, final Comp
AjaxFallbackLink orderTopButton = new AjaxFallbackLink("btn_order_top") {
@Override
public void onClick(AjaxRequestTarget target) {
move(0, a.getId());
move(MOVE_START, a.getDisplayOrder());
if (target != null) {
target.add(componentToUpdate);
}
}
};
orderTopButton.setEnabled(authors.size() > 1);
if(a.getDisplayOrder() == 0) {
orderTopButton.setEnabled(false);
orderTopButton.add(new AttributeAppender("class", " disabled"));
}

add(orderTopButton);
AjaxFallbackLink orderUpButton = new AjaxFallbackLink("btn_order_up") {
@Override
public void onClick(AjaxRequestTarget target) {
move(-1, a.getId());
move(MOVE_UP, a.getDisplayOrder());
if (target != null) {
target.add(componentToUpdate);
}
}
};
orderUpButton.setEnabled(authors.size() > 1);
if(a.getDisplayOrder() == 0) {
orderUpButton.setEnabled(false);
orderUpButton.add(new AttributeAppender("class", " disabled"));
}

add(orderUpButton);
AjaxFallbackLink orderDownButton = new AjaxFallbackLink("btn_order_down") {
@Override
public void onClick(AjaxRequestTarget target) {
move(1, a.getId());
move(MOVE_DOWN, a.getDisplayOrder());
if (target != null) {
target.add(componentToUpdate);
}
}
};
orderDownButton.setEnabled(authors.size() > 1);
if(a.getDisplayOrder() == maxDisplayOrder) {
orderDownButton.setEnabled(false);
orderDownButton.add(new AttributeAppender("class", " disabled"));
}

add(orderDownButton);
AjaxFallbackLink orderBottomButton = new AjaxFallbackLink("btn_order_bottom") {
@Override
public void onClick(AjaxRequestTarget target) {
move(authors.size()-1, a.getId());
move(MOVE_END, a.getDisplayOrder());
if (target != null) {
target.add(componentToUpdate);
}
}
};
orderBottomButton.setEnabled(authors.size() > 1);
if(a.getDisplayOrder() == maxDisplayOrder) {
orderBottomButton.setEnabled(false);
orderBottomButton.add(new AttributeAppender("class", " disabled"));
}
add(orderBottomButton);

AjaxFallbackLink editButton = new AjaxFallbackLink("btn_edit") {
@Override
public void onClick(AjaxRequestTarget target) {
Expand Down Expand Up @@ -166,7 +209,6 @@ public void onClick(AjaxRequestTarget target) {
};
add(removeButton);
}

}

public class AuthorEditPanel extends Panel implements FieldComposition, Serializable {
Expand Down Expand Up @@ -289,6 +331,8 @@ public boolean completeSubmit(AjaxRequestTarget target) {
Creator creator = new Creator(mdlFamilyName.getObject(), mdlGivenName.getObject());
creator.setEMail(email);
creator.setOrganisation(affiliation);
long nextDisplayOrder = getNextDisplayOrder();
creator.setDisplayOrder(nextDisplayOrder);
authors.add(new Editable(creator));
} else {
editableAuthor.getData().setFamilyName(mdlFamilyName.getObject());
Expand Down Expand Up @@ -482,24 +526,32 @@ public boolean validate() {
return setError(null);
}

protected void move(int direction, Long id) {
protected void move(int move, Long displayOrder) {
int direction = 0;
switch(move) {
case MOVE_UP: direction = -1; break;
case MOVE_DOWN: direction = 1; break;
case MOVE_START: direction = 0; break;
case MOVE_END: direction = authors.size() > 0 ? authors.size() - 1 : 0; break;
}

//Abort on invalid direction
if(direction < -1 || direction >= authors.size()) {
logger.warn("Author list move: invalid direction={}, authors size={}.", direction, authors.size());
return;
}

//Find index of specified (by id) collection
//Find index of specified (by id) author
int idx = -1;
for(int i = 0; i < authors.size() && idx == -1; i++) {
if(authors.get(i).getData().getId() == id) {
if(authors.get(i).getData().getDisplayOrder() == displayOrder) {
idx = i;
}
}

//Abort if the collection was not found
if(idx == -1) {
logger.warn("Author list move: author with id = {} not found.", id);
logger.warn("Author list move: author with displayOrder = {} not found.", displayOrder);
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ public class ReferencePanel extends Panel {
* @param id The wicket component id
* @param ref
*/
public ReferencePanel(String id, final ReferencesEditor.ReferenceJob ref, Model<Boolean> advancedEditorMode, boolean moveActionsEnabled) {
public ReferencePanel(String id, final ReferencesEditor.ReferenceJob ref, Model<Boolean> advancedEditorMode, long maxDisplayOrder) {
super(id);
long displayOrder = ref.getReference().getDisplayOrder();

Model titleModel = Model.of("<required>");
if(ref.getReference().getLabel() != null) {
Expand All @@ -49,8 +50,6 @@ public ReferencePanel(String id, final ReferencesEditor.ReferenceJob ref, Model<

WebMarkupContainer editorWrapper = new WebMarkupContainer("wrapper");

//String check = ref.getReference().getCheck();

boolean analysing = false;
if(ref.getState() == ReferencesEditor.State.INITIALIZED || ref.getState() == ReferencesEditor.State.ANALYZING) {
analysing = true;
Expand Down Expand Up @@ -118,45 +117,57 @@ public ReferencePanel(String id, final ReferencesEditor.ReferenceJob ref, Model<
@Override
public void onClick(AjaxRequestTarget target) {
for(MoveListEventHandler handler : moveListEventHandlers) {
handler.handleMoveTop(ref.getReference().getId(), target);
handler.handleMoveTop(ref.getReference().getDisplayOrder(), target);
}
}
};
orderTopButton.setVisible(!analysing);
orderTopButton.setEnabled(moveActionsEnabled);
if(displayOrder == 0) {
orderTopButton.setEnabled(false);
orderTopButton.add(new AttributeAppender("class", " disabled"));
}
editorWrapper.add(orderTopButton);
AjaxFallbackLink orderUpButton = new AjaxFallbackLink("btn_order_up") {
@Override
public void onClick(AjaxRequestTarget target) {
for(MoveListEventHandler handler : moveListEventHandlers) {
handler.handleMoveUp(ref.getReference().getId(), target);
handler.handleMoveUp(ref.getReference().getDisplayOrder(), target);
}
}
};
orderUpButton.setVisible(!analysing);
orderUpButton.setEnabled(moveActionsEnabled);
if(displayOrder == 0) {
orderUpButton.setEnabled(false);
orderUpButton.add(new AttributeAppender("class", " disabled"));
}
editorWrapper.add(orderUpButton);
AjaxFallbackLink orderDownButton = new AjaxFallbackLink("btn_order_down") {
@Override
public void onClick(AjaxRequestTarget target) {
for(MoveListEventHandler handler : moveListEventHandlers) {
handler.handleMoveDown(ref.getReference().getId(), target);
handler.handleMoveDown(ref.getReference().getDisplayOrder(), target);
}
}
};
orderDownButton.setVisible(!analysing);
orderDownButton.setEnabled(moveActionsEnabled);
if(displayOrder == maxDisplayOrder) {
orderDownButton.setEnabled(false);
orderDownButton.add(new AttributeAppender("class", " disabled"));
}
editorWrapper.add(orderDownButton);
AjaxFallbackLink orderBottomButton = new AjaxFallbackLink("btn_order_bottom") {
@Override
public void onClick(AjaxRequestTarget target) {
for(MoveListEventHandler handler : moveListEventHandlers) {
handler.handleMoveEnd(ref.getReference().getId(), target);
handler.handleMoveEnd(ref.getReference().getDisplayOrder(), target);
}
}
};
orderBottomButton.setVisible(!analysing);
orderBottomButton.setEnabled(moveActionsEnabled);
if(displayOrder == maxDisplayOrder) {
orderBottomButton.setEnabled(false);
orderBottomButton.add(new AttributeAppender("class", " disabled"));
}
editorWrapper.add(orderBottomButton);

AjaxFallbackLink btnEdit = new AjaxFallbackLink("btn_edit") {
Expand Down
Loading

0 comments on commit e2d598f

Please sign in to comment.