![JAR search and dependency download from the Maven repository](/logo.png)
fr.laas.fape.planning.gui.SearchView Maven / Gradle / Ivy
package fr.laas.fape.planning.gui;
//import fr.laas.fape.gui.ChartWindow;
//import fr.laas.fape.gui.TimedCanvas;
import fr.laas.fape.planning.core.planning.planner.Planner;
import fr.laas.fape.planning.core.planning.states.SearchNode;
//import prefuse.Visualization;
//import prefuse.controls.ControlAdapter;
//import prefuse.data.Node;
//import prefuse.data.Table;
//import prefuse.data.Tree;
//import prefuse.data.tuple.TupleSet;
//import prefuse.visual.VisualItem;
//
//import javax.swing.*;
//import java.awt.*;
//import java.awt.event.ItemEvent;
//import java.awt.event.ItemListener;
//import java.awt.event.MouseEvent;
//import java.util.HashMap;
public class SearchView {
final static String LABEL = "label";
final static String NODE_STATUS = "status";
public final static String LAST_APPLIED_RESOLVER = "last-applied-resolver";
public final static String SELECTED_FLAW = "selected-flaw";
public final static String HEURISTIC_VALUES ="heuristic-values";
public final static String ACTIONS_CANVAS = "actions-canvas";
public final static String COMMENT = "comment";
// final static Color BACKGROUND = Color.WHITE;
// final static Color FOREGROUND = Color.BLACK;
//
// final static String helpMessage =
// " Help\n"+
// " - go over a node to see a description of the partial plan.\n" +
// " This Description contains the flaw that was selected to for solvind,\n" +
// " the resolver that was used to get from the parent partial plan to\n" +
// " this one. And some basic information on heuristics value.\n" +
// " - click on a node to see the correspondig partial plan.\n" +
// " - nodes en green are the one that have been expanded, those in red are\n" +
// " dead-ends, other are still in the queue.";
// final Tree t;
// final TreeView tview;
// final HashMap nodes = new HashMap<>();
//
// final Node root;
// final static String ACTIVITY_ON_FOCUS_CHANGE = "filter";
//
// final Planner planner;
//
// boolean skipDrawing = false;
// boolean followCurrentNode = true;
//
// ChartWindow actionsChartWindow = null;
public SearchView(Planner planner) {
// this.planner = planner;
// Table nodeData = new Table();
// Table edgeData = new Table(0,1);
// nodeData.addColumn("flag", boolean.class);
// nodeData.addColumn(LABEL, String.class);
// nodeData.addColumn(NODE_STATUS, String.class);
// nodeData.addColumn(LAST_APPLIED_RESOLVER, String.class);
// nodeData.addColumn(SELECTED_FLAW, String.class);
// nodeData.addColumn(HEURISTIC_VALUES, String.class);
// nodeData.addColumn(COMMENT, String.class);
// nodeData.addColumn(ACTIONS_CANVAS, TimedCanvas.class);
// edgeData.addColumn(Tree.DEFAULT_SOURCE_KEY, int.class);
// edgeData.addColumn(Tree.DEFAULT_TARGET_KEY, int.class);
// edgeData.addColumn("LABEL", String.class);
//
// t = new Tree(nodeData, edgeData);
// root = t.addRoot();
// root.setString(LABEL, "Init");
// root.setString(NODE_STATUS, "init");
// root.setString(LAST_APPLIED_RESOLVER, "");
// root.setString(SELECTED_FLAW, "");
// root.setString(HEURISTIC_VALUES, "");
// root.set(ACTIONS_CANVAS, null);
//
// tview = new TreeView(t, LABEL);
//
//
// final JTextArea title = new JTextArea(helpMessage, 10, 20);
//
// tview.addControlListener(new ControlAdapter() {
// public void itemEntered(VisualItem item, MouseEvent e) {
// StringBuilder sb = new StringBuilder();
// if(item.canGetString(NODE_STATUS)) {
// sb.append("Status: "); sb.append(item.getString(NODE_STATUS));
// sb.append("\n");
// sb.append(item.getString(HEURISTIC_VALUES)); sb.append("\n");
// sb.append("Last resolver: "); sb.append(item.getString(LAST_APPLIED_RESOLVER)); sb.append("\n");
// sb.append("Selected flaw: "); sb.append(item.getString(SELECTED_FLAW)); sb.append("\n");
// if(!item.getString(COMMENT).isEmpty()) {
// sb.append("Comment: "); sb.append(item.getString(COMMENT));
// }
// }
// title.setText(sb.toString());
// }
//
// @Override
// public void itemClicked(VisualItem item, MouseEvent e) {
// if(item.canGet(ACTIONS_CANVAS, TimedCanvas.class) && item.get(ACTIONS_CANVAS) != null) {
// if (actionsChartWindow == null)
// actionsChartWindow = new ChartWindow("Action chart");
// actionsChartWindow.draw((TimedCanvas) item.get(ACTIONS_CANVAS));
// }
// }
//// public void itemExited(VisualItem item, MouseEvent e) {
//// title.setText(null);
//// }
// });
//
// Box box = new Box(BoxLayout.X_AXIS);
// box.add(Box.createHorizontalStrut(10));
// box.add(title);
// box.add(Box.createHorizontalGlue());
//// box.add(search);
// box.add(Box.createHorizontalStrut(3));
// box.setBackground(BACKGROUND);
//
// JPanel optionsPanel = new JPanel();
// JCheckBox fastCB = new JCheckBox("Fast", false);
// fastCB.addItemListener(new ItemListener() {
// @Override
// public void itemStateChanged(ItemEvent itemEvent) {
// if(itemEvent.getStateChange() == ItemEvent.DESELECTED)
// skipDrawing = false;
// else if(itemEvent.getStateChange() == ItemEvent.SELECTED)
// skipDrawing = true;
// }
// });
// fastCB.setToolTipText("Only draw once every fifty state expansion.");
//
// final JCheckBox followCB = new JCheckBox("Follow", true);
// followCB.addItemListener(new ItemListener() {
// @Override
// public void itemStateChanged(ItemEvent itemEvent) {
// if(itemEvent.getStateChange() == ItemEvent.DESELECTED)
// followCurrentNode = false;
// else if(itemEvent.getStateChange() == ItemEvent.SELECTED)
// followCurrentNode = true;
// }
// });
// followCB.setToolTipText("Puts the currently expanded node on at the center of the screen.");
// optionsPanel.setLayout(new GridLayout(1,0));
// optionsPanel.add(fastCB);
// optionsPanel.add(followCB);
//
// JPanel panel = new JPanel(new BorderLayout());
// panel.setBackground(BACKGROUND);
// panel.setForeground(FOREGROUND);
// panel.add(optionsPanel, BorderLayout.NORTH);
// panel.add(tview, BorderLayout.CENTER);
// panel.add(box, BorderLayout.SOUTH);
//
// JFrame frame = new JFrame("FAPE Search view");
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// frame.setContentPane(panel);
// frame.pack();
// frame.setVisible(true);
}
public void setDeadEnd(SearchNode st) {
// assert nodes.containsKey(st.getID());
// nodes.get(st.getID()).setString(NODE_STATUS, "deadend");
}
public void setSolution(SearchNode st) {
// assert nodes.containsKey(st.getID());
// nodes.get(st.getID()).setString(NODE_STATUS, "solution");
// tview.updated();
}
public void setProperty(SearchNode st, String propertyID, String value) {
// assert nodes.containsKey(st.getID());
// Node item = nodes.get(st.getID());
// assert item.canGetString(propertyID);
// item.setString(propertyID, value);
}
public void setCurrentFocus(SearchNode st) {
// assert nodes.containsKey(st.getID());
// nodes.get(st.getID()).setString(NODE_STATUS, "expanded");
// if(followCurrentNode) {
// VisualItem v = tview.getVisualItem(nodes.get(st.getID()));
// TupleSet ts = tview.vis().getFocusGroup(Visualization.FOCUS_ITEMS);
// ts.setTuple(v);
// } else {
// if(tview.vis().getFocusGroup(Visualization.FOCUS_ITEMS).getTupleCount() != 0)
// tview.vis().getFocusGroup(Visualization.FOCUS_ITEMS).clear();
// }
// if(!skipDrawing) {
// tview.updated();
// } else {
// if (cnt == 0)
// tview.updated();
// cnt = (cnt + 1) % 50;
// }
}
// int cnt = 0;
// private Node addNode(int id, int parentID) {
// Node n;
// if(parentID < 0)
// n = t.addChild(root);
// else {
// assert nodes.containsKey(parentID);
// assert nodes.get(parentID) != null;
// n = t.addChild(nodes.get(parentID));
// }
// nodes.put(id, n);
//
// if(!skipDrawing) {
// tview.updated();
// } else {
// if (cnt == 0)
// tview.updated();
// cnt = (cnt + 1) % 50;
// }
// return n;
// }
public void addNode(SearchNode st) {
// String label = Integer.valueOf(st.getID()).toString();
// Node n;
// if(st.getParent() != null)
// n = addNode(st.getID(), st.getParent().getID());
// else
// n = addNode(st.getID(), -1);
//
// StringBuilder h = new StringBuilder();
// h.append("num-actions: "); h.append(st.getState().getNumActions());
// h.append(" num-open-goals: "); h.append(st.getState().tdb.getConsumers().size());
// h.append(" num-threats: "); h.append(st.getState().getAllThreats().size());
// h.append(" num-opentasks: "); h.append(st.getState().getOpenTasks().size());
// h.append(" num-unmotivated: "); h.append(st.getState().getUnmotivatedActions().size());
// h.append(" num-unbound: "); h.append(st.getState().getUnboundVariables().size());
// h.append("\n");
// try {
// h.append(planner.heuristicComputer().reportOnState(st.getState()));
// h.append(String.format(" g: %s, h: %s", planner.heuristicComputer().g(st), planner.heuristicComputer().h(st)));
// } catch (Throwable e) {} // just to make sure the planner does not crash because of the view
//
// n.setString(LABEL, label);
// n.setString(NODE_STATUS, "inqueue");
// n.setString(HEURISTIC_VALUES, h.toString());
// n.setString(SELECTED_FLAW, "???");
// n.setString(LAST_APPLIED_RESOLVER, "???");
// n.setString(COMMENT, "");
// n.set(ACTIONS_CANVAS, st.getState().getCanvasOfActions());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy