Woonsan Ko pushed to branch feature/HIPPLUG-1464 at cms-community / hippo-plugin-taxonomy
Commits: ca91063c by Woonsan Ko at 2017-06-08T21:22:12-04:00 HIPPLUG-1464: adding up/down link actions - - - - - 2 changed files: - addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/TaxonomyPickerPlugin.java - addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/model/Classification.java Changes: ===================================== addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/TaxonomyPickerPlugin.java ===================================== --- a/addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/TaxonomyPickerPlugin.java +++ b/addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/TaxonomyPickerPlugin.java @@ -450,6 +450,9 @@ public class TaxonomyPickerPlugin extends RenderPlugin<Node> { private void addControlsToListItem(final ListItem<?> item) { final boolean isEditMode = (mode == Mode.EDIT); + + final Classification classification = dao.getClassification(TaxonomyPickerPlugin.this.getModelObject()); + final int itemCount = classification.getKeyCount(); final int itemIndex = item.getIndex(); final WebMarkupContainer controls = new WebMarkupContainer("controls"); @@ -458,7 +461,14 @@ public class TaxonomyPickerPlugin extends RenderPlugin<Node> { final MarkupContainer upLink = new AjaxLink("up") { @Override public void onClick(AjaxRequestTarget target) { - // TODO + final String curKey = (String) item.getModelObject(); + if (classification.containsKey(curKey)) { + final int curIndex = classification.indexOfKey(curKey); + classification.removeKey(curKey); + classification.addKey(curIndex - 1, curKey); + dao.save(classification); + target.add(TaxonomyPickerPlugin.this); + } } }; upLink.setEnabled(isEditMode && itemIndex > 0); @@ -470,10 +480,17 @@ public class TaxonomyPickerPlugin extends RenderPlugin<Node> { final MarkupContainer downLink = new AjaxLink("down") { @Override public void onClick(AjaxRequestTarget target) { - // TODO + final String curKey = (String) item.getModelObject(); + if (classification.containsKey(curKey)) { + final int curIndex = classification.indexOfKey(curKey); + classification.removeKey(curKey); + classification.addKey(curIndex + 1, curKey); + dao.save(classification); + target.add(TaxonomyPickerPlugin.this); + } } }; - downLink.setEnabled(isEditMode); + downLink.setEnabled(isEditMode && itemIndex < itemCount - 1); downLink.setVisible(isEditMode); final HippoIcon downIcon = HippoIcon.fromSprite("down-icon", Icon.ARROW_DOWN); downLink.add(downIcon); @@ -482,7 +499,6 @@ public class TaxonomyPickerPlugin extends RenderPlugin<Node> { final MarkupContainer removeLink = new AjaxLink("remove") { @Override public void onClick(AjaxRequestTarget target) { - final Classification classification = dao.getClassification(TaxonomyPickerPlugin.this.getModelObject()); final String curKey = (String) item.getModelObject(); if (classification.containsKey(curKey)) { classification.removeKey(curKey); ===================================== addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/model/Classification.java ===================================== --- a/addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/model/Classification.java +++ b/addon/frontend/src/main/java/org/onehippo/taxonomy/plugin/model/Classification.java @@ -40,11 +40,10 @@ public class Classification implements IDetachable { this.canonical = canonical; } - public IDetachable getId() { return id; } - + public List<String> getKeys() { return values; } @@ -53,17 +52,44 @@ public class Classification implements IDetachable { return getKeys().contains(key); } + /** + * Returns the size of keys. + * @return the size of keys + */ + public int getKeyCount() { + return values.size(); + } + + /** + * Returns the index of the {@code key}, or -1 if this {@code key} does not exist. + * @param key category key + * @return the index of the {@code key}, or -1 if this {@code key} does not exist + */ + public int indexOfKey(String key) { + return values.indexOf(key); + } + public void addKey(String key) { if (!values.contains(key)) { values.add(key); } } + /** + * Inserts the specified {@code key} at the specified position. + * @param index index + * @param key category key + */ + public void addKey(int index, String key) { + if (!values.contains(key)) { + values.add(index, key); + } + } + public void removeKey(String key) { if (values.contains(key)) { values.remove(key); } - } public void detach() { View it on GitLab: https://code.onehippo.org/cms-community/hippo-plugin-taxonomy/commit/ca91063ca2aed4fe36c1d9de0099c42a4bfab4e4
_______________________________________________ Hippocms-svn mailing list Hippocms-svn@lists.onehippo.org https://lists.onehippo.org/mailman/listinfo/hippocms-svn