*/
public class BrowseDevice{
public static void run(Device dev, WireEnumerator we){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Tile t = null;
while(true){
System.out.println("Commands: ");
System.out.println(" 1: Get wire connections in tile");
System.out.println(" 2: Check if wire is a PIP wire");
System.out.println(" 3: List RouteThrough wires");
System.out.println(" 4: Follow wire connections");
System.out.println(" 5: List primitives of a tile");
System.out.println(" 6: Get tile of a primitive site");
System.out.println(" 7: Exit");
try {
Integer cmd = Integer.parseInt(br.readLine().trim());
switch(cmd){
case 1:
System.out.println("Enter tile name: ");
t = dev.getTile(br.readLine().trim());
System.out.println("Choosen Tile: " + t.getName());
System.out.println("Enter wire name: ");
String wire = br.readLine().trim();
WireConnection[] wires = t.getWireConnections(we.getWireEnum(wire));
if(wires != null){
for(WireConnection w : wires){
System.out.println(" " + w.toString(we));
}
}
else{
System.out.println(" No Connections");
}
break;
case 2:
System.out.println("Enter wire name:");
String wire1 = br.readLine().trim();
System.out.println("isPIP? " + we.isPIPWire(wire1));
break;
case 3:
System.out.println("PIPRouteThroughs");
for(WireConnection w : dev.getRouteThroughMap().keySet()){
System.out.println(" " + w.toString(we) + " " + dev.getRouteThroughMap().get(w).toString(we));
}
break;
case 4:
System.out.println("Enter start tile name: ");
t = dev.getTile(br.readLine().trim());
System.out.println("Choosen start tile: " + t.getName());
System.out.println("Enter start wire name: ");
String startWire = br.readLine().trim();
while(true){
if(t.getWireHashMap() == null){
System.out.println("This tile has no wires.");
break;
}
if(t.getWireConnections(we.getWireEnum(startWire)) == null){
System.out.println("This wire has no connections, it may be a sink");
break;
}
WireConnection[] wireConnections = t.getWireConnections(we.getWireEnum(startWire));
System.out.println(t.getName() + " " + startWire + ":");
for (int i = 0; i < wireConnections.length; i++) {
System.out.println(" " + i + ". " + wireConnections[i].getTile(t) +" " + we.getWireName(wireConnections[i].getWire()));
}
System.out.print("Choose a wire: ");
int ndx;
try{
ndx = Integer.parseInt(br.readLine().trim());
t = wireConnections[ndx].getTile(t);
startWire = we.getWireName(wireConnections[ndx].getWire());
}
catch(Exception e){
System.out.println("Did not understand, try again.");
continue;
}
}
break;
case 5:
System.out.println("Enter tile name: ");
t = dev.getTile(br.readLine().trim());
System.out.println("Choosen Tile: " + t.getName());
if(t.getPrimitiveSites() == null){
System.out.println(t.getName() + " has no primitive sites.");
}
else{
for(PrimitiveSite p : t.getPrimitiveSites()){
System.out.println(" " + p.getName());
}
}
break;