this is the basic, to help you out a little
public void handleThis() {
if (widget is visible) {
//handle widget
}else{
if (!getInventory().isItemSelected()) {
getInventory().getItem("name").interact("action");
sleep(gRandom(400, 100));
}else{
NPC npc = getNpcs().closest("name");
if (npc != null) {
if (npc.isVisible()) {
npc.interact(); //no arugment should force left click
}else{
//handle visiblity
}
}
}
}
}