Browse Source

display status flags as checkboxes

Martin Kunz 4 years ago
parent
commit
3ae3f5a3d8

+ 4 - 3
src/main/java/uraxis/MyDaemonInterface.java

@@ -3,6 +3,7 @@ package uraxis;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 
 import org.apache.xmlrpc.XmlRpcException;
@@ -66,13 +67,13 @@ public class MyDaemonInterface {
 		}
 		return cf;
 	}
-	public CompletableFuture<String> getstatus() {
-		CompletableFuture<String> cf = new CompletableFuture();
+	public CompletableFuture<Map<String, Object>> getstatus() {
+		CompletableFuture<Map<String, Object>> cf = new CompletableFuture();
 		try {
 			client.executeAsync("status", new Object[]{}, new AsyncCallback() {
 				@Override
 				public void handleResult(XmlRpcRequest xmlRpcRequest, Object o) {
-					cf.complete((String) o);
+					cf.complete((Map<String, Object>) o);
 				}
 
 				@Override

+ 17 - 3
src/main/java/uraxis/toolbar/MyToolbarContribution.java

@@ -19,6 +19,7 @@ class MyToolbarContribution implements SwingToolbarContribution {
     private final ToolbarContext context;
     private JLabel demoToolStatus;
     private Timer uiTimer;
+    HashMap<String, JCheckBox> boxes=new HashMap<>();
 
 
     MyToolbarContribution(ToolbarContext context) {
@@ -36,11 +37,21 @@ class MyToolbarContribution implements SwingToolbarContribution {
                     @Override
                     public void run() {
                         CompletableFuture<Integer> fPos = Activator.daemonInterface.getpos();
-                        CompletableFuture<String> fStatus = Activator.daemonInterface.getstatus();
+                        CompletableFuture<Map<String, Object>> fStatus = Activator.daemonInterface.getstatus();
                         CompletableFuture.allOf(fPos, fStatus).whenComplete((aVoid, throwable) -> {
                             Date now = new Date();
                             try {
-                                updateText(String.format("Position: %d, read at %tF %tT.<br/>%s", fPos.get(), now, now, fStatus.get()));
+                                Map<String, Object> asd = fStatus.get();
+                                for(JCheckBox cb: boxes.values()) {
+                                    String cbName=cb.getName();
+                                    Object val= asd.get(cbName);
+                                    if(val instanceof  Boolean) {
+                                        cb.setSelected((Boolean) val);
+                                    }
+
+                                }
+                                //updateText(String.format("Position: %d, read at %tF %tT.<br/>%s", fPos.get(), now, now, fStatus.get()));
+                                updateText(String.format("Position: %d, read at %tF %tT.<br/>", fPos.get(), now, now));
                             } catch (InterruptedException|ExecutionException e) {
                                 e.printStackTrace();
                             }
@@ -113,7 +124,10 @@ class MyToolbarContribution implements SwingToolbarContribution {
     }
 
     private JCheckBox newCheckbox(String name) {
-        return new JCheckBox(name);
+        JCheckBox cb=new JCheckBox(name);
+        cb.setName(name);
+        boxes.put(name, cb);
+        return  cb;
     }
 
     private Box createHeader() {