Go to the documentation of this file.00001 package edu.tum.cs.ias.knowrob.vis.applets;
00002
00003 import java.util.HashMap;
00004 import java.util.Map;
00005
00006 import controlP5.Button;
00007 import controlP5.ControlEvent;
00008 import controlP5.ControlListener;
00009 import controlP5.ControlP5;
00010 import controlP5.ControlWindow;
00011 import controlP5.ListBox;
00012 import controlP5.ListBoxItem;
00013 import edu.tum.cs.ias.knowrob.vis.actions.ActionTransition;
00014 import edu.tum.cs.ias.knowrob.vis.actions.FsmActionResult;
00015 import edu.tum.cs.ias.knowrob.vis.themes.GreyTheme;
00016
00017
00025 public class TransitionPropertiesEditor {
00026
00027 public ControlP5 controlP5;
00028 ControlWindow controlWindow;
00029 DialogListener dialogListener;
00030
00031 private ActionTransition transition;
00032
00033 String recipe_owl_file = "";
00034
00035 public PlanVisAppletFsm app;
00036
00037 private Map<Integer, ListBoxItem> id2button;
00038 ListBoxItem cur = null;
00039 ListBox props;
00040
00048 public TransitionPropertiesEditor(PlanVisAppletFsm applet, ActionTransition t) {
00049
00050 this.app = applet;
00051 transition = t;
00052
00053 controlP5 = new ControlP5(app);
00054 GreyTheme.applyStyle(controlP5);
00055
00056 controlWindow = controlP5.addControlWindow("controlP5window",200,200,350,150)
00057 .setBackground(app.color(50))
00058 .setUpdateMode(ControlWindow.NORMAL)
00059 .setTitle("Edit state transitions");
00060
00061 controlP5.addTextlabel("from action", "From action: " + transition.getFrom().getLabel(), 20, 30 );
00062 controlP5.addTextlabel("to action", "To action: " + transition.getFrom().getLabel(), 20, 65 );
00063
00064 Button b = GreyTheme.applyStyle(controlP5.addButton("apply", 23, 220, 30, 80, 20)).moveTo(controlWindow);
00065
00066
00067 props = controlP5.addListBox("Transition type", 10, 30, 200, 125);
00068 props.setBarHeight(15).setItemHeight(15);
00069 props.setColorValue(app.color(120,40,40));
00070 GreyTheme.applyStyle(props, 15).moveTo(controlWindow);
00071
00072 id2button = new HashMap<Integer, ListBoxItem>();
00073 int props_idx = 0;
00074 for(FsmActionResult r : FsmActionResult.values()) {
00075
00076 ListBoxItem i = props.addItem(r.toString(), props_idx);
00077
00078 if(transition.getCause().endsWith(i.getName())) {
00079 i.setColorBackground(120);
00080 cur = i;
00081 }
00082
00083 id2button.put(props_idx, i);
00084 props_idx++;
00085 }
00086
00087 dialogListener = new DialogListener();
00088
00089 b.addListener(dialogListener);
00090 props.addListener(dialogListener);
00091
00092 }
00093
00094
00105 public class DialogListener implements ControlListener {
00106
00107 public void controlEvent(ControlEvent ev) {
00108 try {
00109
00110 if (ev != null && ev.isGroup()) {
00111
00112 if(ev.getGroup().getName().equals("Transition type")) {
00113
00114 if(cur!=null)
00115 cur.setColorBackground(80);
00116
00117 cur = id2button.get((int)ev.getValue());
00118 cur.setColorBackground(120);
00119
00120 }
00121
00122 } else if (ev.isController()) {
00123
00124 if(ev.getController().getName().equals("apply")) {
00125
00126 transition.setCause(FsmActionResult.toOWLIdentifier(
00127 FsmActionResult.fromString(
00128 id2button.get((int)props.getValue()).getName())));
00129 controlWindow.hide();
00130 return;
00131 }
00132 }
00133
00134 } catch (Exception e ) {
00135 e.printStackTrace();
00136 }
00137 }
00138 }
00139
00140 }