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

Reply via email to