Add sorting and ordering controls for layer control (layerprio attribute)
This commit is contained in:
parent
36ea3c20ca
commit
afc6f429f0
8 changed files with 112 additions and 12 deletions
|
|
@ -101,4 +101,12 @@ public interface MarkerSet {
|
|||
* @return true if layer for set will be hidden by default
|
||||
*/
|
||||
public boolean getHideByDefault();
|
||||
/**
|
||||
* Set layer ordering priority (0=default, low before high in layer order)
|
||||
*/
|
||||
public void setLayerPriority(int prio);
|
||||
/**
|
||||
* Get layer ordering priority (0=default, low before high in layer order)
|
||||
*/
|
||||
public int getLayerPriority();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -424,6 +424,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
private static final String ARG_HIDE = "hide";
|
||||
private static final String ARG_ICON = "icon";
|
||||
private static final String ARG_SET = "set";
|
||||
private static final String ARG_PRIO = "prio";
|
||||
|
||||
/* Parse argument strings : handle 'attrib:value' and quoted strings */
|
||||
private static Map<String,String> parseArgs(String[] args, CommandSender snd) {
|
||||
|
|
@ -487,7 +488,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
|
||||
|
||||
public static boolean onCommand(DynmapPlugin plugin, CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||
String id, setid, file, label, newlabel, iconid;
|
||||
String id, setid, file, label, newlabel, iconid, prio;
|
||||
|
||||
if(api == null) {
|
||||
sender.sendMessage("Markers component is not enabled.");
|
||||
|
|
@ -734,6 +735,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
if(parms == null) return true;
|
||||
id = parms.get(ARG_ID);
|
||||
label = parms.get(ARG_LABEL);
|
||||
prio = parms.get(ARG_PRIO);
|
||||
if((id == null) && (label == null)) {
|
||||
sender.sendMessage("<label> or id:<marker-id> required");
|
||||
return true;
|
||||
|
|
@ -757,6 +759,13 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
String h = parms.get(ARG_HIDE);
|
||||
if((h != null) && (h.equals("true")))
|
||||
set.setHideByDefault(true);
|
||||
if(prio != null) {
|
||||
try {
|
||||
set.setLayerPriority(Integer.valueOf(prio));
|
||||
} catch (NumberFormatException nfx) {
|
||||
sender.sendMessage("Invalid priority: " + prio);
|
||||
}
|
||||
}
|
||||
sender.sendMessage("Added marker set id:'" + set.getMarkerSetID() + "' (" + set.getMarkerSetLabel() + ")");
|
||||
}
|
||||
}
|
||||
|
|
@ -771,6 +780,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
if(parms == null) return true;
|
||||
id = parms.get(ARG_ID);
|
||||
label = parms.get(ARG_LABEL);
|
||||
prio = parms.get(ARG_PRIO);
|
||||
if((id == null) && (label == null)) {
|
||||
sender.sendMessage("<label> or id:<marker-id> required");
|
||||
return true;
|
||||
|
|
@ -804,6 +814,13 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
if(hide != null) {
|
||||
set.setHideByDefault(hide.equals("true"));
|
||||
}
|
||||
if(prio != null) {
|
||||
try {
|
||||
set.setLayerPriority(Integer.valueOf(prio));
|
||||
} catch (NumberFormatException nfx) {
|
||||
sender.sendMessage("Invalid priority: " + prio);
|
||||
}
|
||||
}
|
||||
sender.sendMessage("Marker set '" + set.getMarkerSetID() + "' updated");
|
||||
}
|
||||
else {
|
||||
|
|
@ -855,7 +872,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
Set<String> setids = new TreeSet<String>(api.markersets.keySet());
|
||||
for(String s : setids) {
|
||||
MarkerSet set = api.markersets.get(s);
|
||||
sender.sendMessage(set.getMarkerSetID() + ": label:\"" + set.getMarkerSetLabel() + "\", hide=" + set.getHideByDefault());
|
||||
sender.sendMessage(set.getMarkerSetID() + ": label:\"" + set.getMarkerSetLabel() + "\", hide:" + set.getHideByDefault() + ", prio:" + set.getLayerPriority());
|
||||
}
|
||||
}
|
||||
/* Add new icon */
|
||||
|
|
@ -1025,6 +1042,7 @@ public class MarkerAPIImpl implements MarkerAPI, Event.Listener<DynmapWorld> {
|
|||
HashMap<String, Object> msdata = new HashMap<String, Object>();
|
||||
msdata.put("label", ms.getMarkerSetLabel());
|
||||
msdata.put("hide", ms.getHideByDefault());
|
||||
msdata.put("layerprio", ms.getLayerPriority());
|
||||
HashMap<String, Object> markers = new HashMap<String, Object>();
|
||||
for(Marker m : ms.getMarkers()) {
|
||||
if(m.getWorld().equals(wname) == false) continue;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ class MarkerSetImpl implements MarkerSet {
|
|||
private HashMap<String, MarkerIconImpl> allowedicons = null;
|
||||
private boolean hide_by_def;
|
||||
private boolean ispersistent;
|
||||
private int prio = 0;
|
||||
|
||||
MarkerSetImpl(String id) {
|
||||
setid = id;
|
||||
|
|
@ -215,6 +216,7 @@ class MarkerSetImpl implements MarkerSet {
|
|||
}
|
||||
setnode.put("markers", node);
|
||||
setnode.put("hide", hide_by_def);
|
||||
setnode.put("layerprio", prio);
|
||||
return setnode;
|
||||
}
|
||||
|
||||
|
|
@ -248,6 +250,7 @@ class MarkerSetImpl implements MarkerSet {
|
|||
}
|
||||
}
|
||||
hide_by_def = node.getBoolean("hide", false);
|
||||
prio = node.getInt("layerprio", 0);
|
||||
ispersistent = true;
|
||||
|
||||
return true;
|
||||
|
|
@ -265,4 +268,18 @@ class MarkerSetImpl implements MarkerSet {
|
|||
public boolean getHideByDefault() {
|
||||
return hide_by_def;
|
||||
}
|
||||
@Override
|
||||
public void setLayerPriority(int prio) {
|
||||
if(this.prio != prio) {
|
||||
this.prio = prio;
|
||||
MarkerAPIImpl.markerSetUpdated(this, MarkerUpdate.UPDATED);
|
||||
if(ispersistent)
|
||||
MarkerAPIImpl.saveMarkers();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public int getLayerPriority() {
|
||||
return this.prio;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue