コード例 #1
0
ファイル: FsmPanel.java プロジェクト: JanUlrich/HamsterKI
 /**
  * Erstellt einen neuen Zustand an der gegebenen Position.
  *
  * @param x x-Koordinate des Zustands
  * @param y y-Koordinate des Zustands
  */
 public void createState(int x, int y) {
   StateObject newState = new StateObject(false, false);
   newState.setCoordinates(x, y);
   getFsmProgram().addState(newState);
   this.modified();
   this.automataPanel.refresh();
 }
コード例 #2
0
ファイル: FsmPanel.java プロジェクト: JanUlrich/HamsterKI
  /**
   * Ordnet den Graphen des endlichen Automaten an. Die Zustände werden dabei in einem Kreis
   * angeordnet.
   */
  public void layoutGraph() {
    double height = this.automataPanel.getHeight();
    double width = this.automataPanel.getWidth();
    double radius = 0;
    if (height < width) {
      radius = (height / 2) - 50;
    } else {
      radius = (width / 2) - 50;
    }
    double angle_step = 360.0 / getFsmProgram().getAllStates().size();
    double angle = 0;

    for (StateObject state : getFsmProgram().getAllStates()) {
      state.setCoordinates(xCoordinate(radius, width, angle), yCoordinate(radius, height, angle));
      angle += angle_step;
    }
    this.modified();
    this.automataPanel.refresh();
  }
コード例 #3
0
ファイル: FsmPanel.java プロジェクト: JanUlrich/HamsterKI
 /**
  * Modifiziert einen Zustand.
  *
  * @param state Zustand, der modifiziert werden soll.
  * @param setInitial sagt aus, ob er initial sein soll.
  * @param setFinalNew sagt aus, ob er final oder nicht final gesetzt werden soll.
  * @param x neue x-Koordinate des Zustands.
  * @param y neue y-Koordinate des Zustands.
  */
 public void modifyState(
     StateObject state, boolean setInitial, boolean setFinalNew, int x, int y) {
   boolean hasChanged = false;
   if (state.isInitial() != true && setInitial) {
     state.setInitial(true);
     this.getFsmProgram().getStartState().setInitial(false);
     this.getFsmProgram().setStartState(state);
     hasChanged = true;
   }
   if (setFinalNew) {
     state.setFinal(!state.isFinal());
     hasChanged = true;
   }
   if (state.getXCoordinate() != x || state.getYCoordinate() != y) {
     state.setCoordinates(x, y);
     hasChanged = true;
   }
   if (hasChanged) {
     this.modified();
     this.automataPanel.refresh();
   }
 }