Пример #1
0
 private void process(final boolean parallel) {
   if (sim != null) {
     sim.stopAndWait();
   }
   try {
     sim = null;
     final Future<Result<T>> fenv = EnvironmentBuilder.build(new FileInputStream(xml));
     final IEnvironment<T> env = fenv.get().getEnvironment();
     rand = fenv.get().getRandomEngine();
     sim = new Simulation<>(env, new DoubleTime(Double.POSITIVE_INFINITY), parallel);
     bar.setSimulation(sim);
     scp.setSimulation(sim);
     final Thread simThread = new Thread(sim);
     createMonitor();
     simThread.start();
     final TimeStepMonitor<T> tm = bar.getTimeMonitor();
     sim.addOutputMonitor(tm);
     bar.setRandom(rand.getSeed());
     bar.setFileOK(true);
     bar.setProcessOK(true);
     effectsTab.setEnabled(true);
     status.setOK();
     status.setText(r(Res.FILE_PROCESSED) + ": " + xml.getAbsolutePath());
   } catch (Exception e) {
     processError(e);
   }
 }
Пример #2
0
 private void processError(final Throwable e) {
   SwingUtilities.invokeLater(
       () -> {
         bar.setFileOK(false);
         bar.setProcessOK(false);
         status.setText(r(Res.FILE_NOT_VALID) + " " + xml.getAbsolutePath());
         status.setNo();
         L.error(e);
       });
 }
Пример #3
0
 @Override
 public void actionPerformed(final ActionEvent e) {
   if (Commands.OPEN.equalsToString(e.getActionCommand())) {
     openXML();
   } else if (Commands.PARALLEL.equalsToString(e.getActionCommand())) {
     process(true);
   } else if (Commands.PROCESS.equalsToString(e.getActionCommand())) {
     process(false);
   } else if (Commands.DICE.equalsToString(e.getActionCommand())) {
     setRandom();
   } else if (SimControlCommand.PLAY.equalsToString(e.getActionCommand())) {
     sim.play();
     bar.setPlay(true);
   } else if (SimControlCommand.PAUSE.equalsToString(e.getActionCommand())) {
     sim.pause();
     bar.setPlay(false);
   } else if (SimControlCommand.STEP.equalsToString(e.getActionCommand())) {
     sim.play();
     sim.pause();
   } else if (SimControlCommand.STOP.equalsToString(e.getActionCommand())) {
     sim.stop();
     bar.setFileOK(true);
   } else if (Commands.PAINT_LINKS.equalsToString(e.getActionCommand())) {
     main.setDrawLinks(effectsTab.isDrawingLinks()); // side.isDrawingLinks());
   } else if (Commands.REACTIVITY.equalsToString(e.getActionCommand())) {
     switch (bar.getReactivityStatus()) {
       case MAX_REACTIVITY:
         main.setStep(1);
         main.setRealTime(false);
         break;
       case REAL_TIME:
         main.setRealTime(true);
         main.setStep(1);
         break;
       case USER_SELECTED:
         main.setStep(bar.getReactivity());
         main.setRealTime(false);
         break;
       default:
         break;
     }
   } else {
     dispose();
   }
 }
Пример #4
0
  /** Builds a new SAPERE perspective. */
  public Perspective() {
    super();
    setLayout(new BorderLayout());

    bar = new UpperBar(scp);
    add(bar, BorderLayout.NORTH);
    bar.addActionListener(this);
    bar.addChangeListener(this);

    status = new StatusBar();
    status.setText(r(Res.SAPERE_PERSPECTIVE));
    add(status, BorderLayout.SOUTH);

    effectsTab = new JEffectsTab<>();
    effectsTab.addLinksToggleActionListener(this);
    effectsTab.setEnabled(false);

    bar.registerTab(effectsTab);

    setMainDisplay(new Generic2DDisplay<T>());
  }
Пример #5
0
 private void openXML() {
   final JFileChooser fc = new JFileChooser();
   fc.setMultiSelectionEnabled(false);
   fc.setFileFilter(XML_FILTER);
   fc.setCurrentDirectory(currentDirectory);
   final int returnVal = fc.showOpenDialog(null);
   if (returnVal == JFileChooser.APPROVE_OPTION) {
     xml = fc.getSelectedFile();
     currentDirectory = fc.getSelectedFile().getParentFile();
     if (xml.exists() && xml.getName().endsWith("xml")) {
       status.setText(r(Res.READY_TO_PROCESS) + " " + xml.getAbsolutePath());
       status.setOK();
       if (sim != null) {
         sim.stop();
       }
       bar.setFileOK(true);
     } else {
       status.setText(r(Res.FILE_NOT_VALID) + " " + xml.getAbsolutePath());
       status.setNo();
       bar.setFileOK(false);
     }
   }
 }
Пример #6
0
 private void setRandom() {
   if (rand != null) {
     try {
       rand.setSeed(bar.getRandomText());
       status.setOK();
       status.setText(r(Res.RANDOM_REINIT_SUCCESS) + ": " + rand.getSeed());
     } catch (final NumberFormatException e) {
       status.setNo();
       status.setText(r(Res.RANDOM_REINIT_FAIL) + ": " + r(Res.IS_NOT_AN_INTEGER));
     }
   } else {
     status.setNo();
     status.setText(r(Res.RANDOM_REINIT_FAIL) + ": RandomEngine " + r(Res.IS_NOT_INITIALIZED_YET));
   }
 }
Пример #7
0
 @Override
 public void stateChanged(final ChangeEvent e) {
   if (bar.getReactivityStatus().equals(Status.USER_SELECTED)) {
     main.setStep(bar.getReactivity());
   }
 }