package GKA.Controler.MouseControler;
import javax.swing.JOptionPane;
import javax.xml.ws.spi.Invoker;
import GKA.Controler.MainControler;
import com.mxgraph.model.mxCell;
public class MouseAddEdgeHandler implements MouseEventInterface{
private boolean isFinished = false;
private String source;
public MouseAddEdgeHandler() {
MainControler.sendMessage("Please select SourceVertex.");
}
@Override
public void cancelOperation() {
setFinished(true);
}
@Override
public boolean isFinished() {
return isFinished;
}
private void setFinished(boolean isFinished) {
this.isFinished = isFinished;
}
@Override
public void addEventObject(mxCell eventObj) {
if (eventObj.isVertex()){
if (source == null || source.isEmpty()){
source = eventObj.getValue().toString();
MainControler.sendMessage("Please select TargetVertex.");
}else{
String edgeName = JOptionPane.showInputDialog("Please enter EdgeName.");
if (edgeName == null){
return;
}else if (edgeName.isEmpty()){
edgeName = null;
}else if(!edgeName.matches("[\\p{L}|[0-9]]+")){
MainControler.sendMessage("Please Enter a correct VertexName.");
return;
}
String weightString = null;
if (MainControler.getGraph().isWeighted()){
weightString = JOptionPane.showInputDialog("Please enter the EdgeWeight.");
if (weightString == null){
return;
}else if (weightString.isEmpty()){
MainControler.sendMessage("Please Enter a a weight.");
return;
}else if(!weightString.matches("[0-9]+([.]?[0-9]*)?")){
MainControler.sendMessage("Please Enter a correct weight.");
return;
}
}
Double weight = weightString == null ? null : Double.valueOf(weightString);
if(MainControler.addEdge(source, eventObj.getValue().toString(), edgeName, weight)){
//MainControler.sendMessage("Edge \"(" + source + " - " + eventObj.getValue().toString() + ")\" was added.");
}else{
MainControler.sendMessage("Unable to add Edge \"(" + source + " - " + eventObj.getValue().toString() + ")\"!");
}
setFinished(true);
}
}
}
}