MATSIM
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.matsim.run.gui.Gui Class Reference
Inheritance diagram for org.matsim.run.gui.Gui:
Inheritance graph
[legend]

Public Member Functions

void loadConfigFile (final File configFile)
 
void setWorkingDirectory (File cwd)
 

Static Public Member Functions

static Future< Guishow (final String title, final Class<?> mainClass)
 
static Future< Guishow (final String title, final Class<?> mainClass, File configFile)
 
static void main (String[] args)
 

Private Member Functions

 Gui (final String title, final Class<?> mainClass)
 
void createLayout ()
 
void startMATSim ()
 
void stopMATSim ()
 

Private Attributes

JTextField txtConfigfilename
 
JTextField txtMatsimversion
 
JTextField txtRam
 
JTextField txtJvmversion
 
JTextField txtJvmlocation
 
JTextField txtOutput
 
JButton btnStartMatsim
 
JProgressBar progressBar
 
JTextArea textStdOut
 
JScrollPane scrollPane
 
JButton btnEdit
 
volatile ExeRunner exeRunner = null
 
JMenuBar menuBar
 
JMenu mnTools
 
JMenuItem mntmCompressFile
 
JMenuItem mntmUncompressFile
 
JMenuItem mntmCreateDefaultConfig
 
JMenuItem mntmCreateSamplePopulation
 
PopulationSampler popSampler = null
 
JTextArea textErrOut
 
final String mainClass
 
File configFile
 
File lastUsedDirectory
 
File workingDirectory = null
 
ConfigEditor editor = null
 
ScheduleValidatorWindow transitValidator = null
 

Static Private Attributes

static final long serialVersionUID = 1L
 
static final JLabel lblFilepaths
 
static final JLabel lblJavaLocation = new JLabel("Java Location:")
 
static final JLabel lblConfigurationFile = new JLabel("Configuration file:")
 
static final JLabel lblOutputDirectory = new JLabel("Output Directory:")
 
static final JLabel lblMemory = new JLabel("Memory:")
 
static final JLabel lblMb = new JLabel("MB")
 
static final JLabel lblYouAreUsingJavaVersion = new JLabel("You are using Java version:")
 
static final JLabel lblYouAreUsingMATSimVersion = new JLabel("You are using MATSim version:")
 

Detailed Description

Author
mrieser / Senozon AG

Definition at line 47 of file Gui.java.

Constructor & Destructor Documentation

◆ Gui()

org.matsim.run.gui.Gui.Gui ( final String  title,
final Class<?>  mainClass 
)
private

Definition at line 102 of file Gui.java.

Referenced by org.matsim.run.gui.Gui.show().

102  {
103  setTitle(title);
104  this.mainClass = mainClass.getCanonicalName();
105  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
106  }
final String mainClass
Definition: Gui.java:90

Member Function Documentation

◆ createLayout()

void org.matsim.run.gui.Gui.createLayout ( )
private

Definition at line 108 of file Gui.java.

References org.matsim.core.config.ConfigUtils.createConfig(), org.matsim.core.utils.io.IOUtils.deleteDirectoryRecursively(), org.matsim.core.gbl.Gbl.getBuildInfoString(), org.matsim.core.config.ConfigUtils.loadConfig(), org.matsim.run.gui.Gui.loadConfigFile(), org.matsim.run.gui.ScheduleValidatorWindow.loadFromConfig(), org.matsim.run.gui.Gui.startMATSim(), org.matsim.run.gui.Gui.stopMATSim(), and org.matsim.core.config.ConfigWriter.write().

Referenced by org.matsim.run.gui.Gui.show().

108  {
109  this.lastUsedDirectory = new File(".");
110 
111  txtConfigfilename = new JTextField();
112  txtConfigfilename.setText("");
113  txtConfigfilename.setColumns(10);
114 
115  btnStartMatsim = new JButton("Start MATSim");
116  btnStartMatsim.setEnabled(false);
117 
118  for (JButton button : preprocessButtons.values()) {
119  button.setEnabled(false);
120  }
121  for (JButton button : postprocessButtons.values()) {
122  button.setEnabled(false);
123  }
124 
125  JButton btnChoose = new JButton("Choose");
126  btnChoose.addActionListener(e -> {
127  JFileChooser chooser = new JFileChooser();
128  chooser.setCurrentDirectory(lastUsedDirectory);
129  int result = chooser.showOpenDialog(null);
130  if (result == JFileChooser.APPROVE_OPTION) {
131  File f = chooser.getSelectedFile();
132  lastUsedDirectory = f.getParentFile();
133  loadConfigFile(f);
134  if (editor != null) {
135  editor.closeEditor();
136  editor = null;
137  }
138  }
139  });
140 
141  this.btnEdit = new JButton("Edit…");
142  this.btnEdit.setEnabled(false);
143  this.btnEdit.addActionListener(e -> {
144  if (editor == null) {
145  this.editor = new ConfigEditor(this, configFile, Gui.this::loadConfigFile);
146  }
147  editor.showEditor();
148  editor.toFront();
149  });
150 
151  txtMatsimversion = new JTextField();
152  txtMatsimversion.setEditable(false);
153  txtMatsimversion.setText(Gbl.getBuildInfoString());
154  txtMatsimversion.setColumns(10);
155 
156  txtRam = new JTextField();
157  txtRam.setText("1024");
158  txtRam.setColumns(10);
159 
160  String javaVersion = System.getProperty("java.version")
161  + "; "
162  + System.getProperty("java.vm.vendor")
163  + "; "
164  + System.getProperty("java.vm.info")
165  + "; "
166  + System.getProperty("sun.arch.data.model")
167  + "-bit";
168 
169  txtJvmversion = new JTextField();
170  txtJvmversion.setEditable(false);
171  txtJvmversion.setText(javaVersion);
172  txtJvmversion.setColumns(10);
173 
174  String jvmLocation;
175  if (System.getProperty("os.name").startsWith("Win")) {
176  jvmLocation = System.getProperties().getProperty("java.home")
177  + File.separator
178  + "bin"
179  + File.separator
180  + "java.exe";
181  } else {
182  jvmLocation = System.getProperties().getProperty("java.home")
183  + File.separator
184  + "bin"
185  + File.separator
186  + "java";
187  }
188 
189  txtJvmlocation = new JTextField();
190  txtJvmlocation.setEditable(false);
191  txtJvmlocation.setText(jvmLocation);
192  txtJvmlocation.setColumns(10);
193 
194  txtOutput = new JTextField();
195  txtOutput.setEditable(false);
196  txtOutput.setText("");
197  txtOutput.setColumns(10);
198 
199  progressBar = new JProgressBar();
200  progressBar.setEnabled(false);
201  progressBar.setIndeterminate(true);
202  progressBar.setVisible(false);
203 
204  btnStartMatsim.addActionListener(e -> {
205  if (exeRunner == null) {
206  startMATSim();
207  } else {
208  stopMATSim();
209  }
210  });
211 
212  JButton btnOpen = new JButton("Open");
213  btnOpen.addActionListener(e -> {
214  if (!txtOutput.getText().isEmpty()) {
215  try {
216  File f = new File(txtOutput.getText());
217  Desktop.getDesktop().open(f);
218  } catch (IOException ex) {
219  ex.printStackTrace();
220  }
221  }
222  });
223 
224  JButton btnDelete = new JButton("Delete");
225  btnDelete.addActionListener(e -> {
226  if (!txtOutput.getText().isEmpty()) {
227  int i = JOptionPane.showOptionDialog(Gui.this,
228  "Do you really want to delete the output directory? This action cannot be undone.",
229  "Delete Output Directory", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null,
230  new String[] { "Cancel", "Delete" }, "Cancel");
231  if (i == 1) {
232  try {
233  IOUtils.deleteDirectoryRecursively(new File(txtOutput.getText()).toPath());
234  } catch (Exception ex) {
235  ex.printStackTrace();
236  }
237  }
238  }
239  });
240 
241  JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
242  // scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
243 
244  GroupLayout groupLayout = new GroupLayout(getContentPane());
245 
246  final GroupLayout.SequentialGroup prebuttonsSequentialGroup = groupLayout.createSequentialGroup();
247  final GroupLayout.ParallelGroup prebuttonsParallelGroup = groupLayout.createParallelGroup();
248  for (JButton button : preprocessButtons.values()) {
249  prebuttonsSequentialGroup.addComponent(button);
250  prebuttonsParallelGroup.addComponent(button);
251  }
252 
253  final GroupLayout.SequentialGroup postbuttonsSequentialGroup = groupLayout.createSequentialGroup();
254  final GroupLayout.ParallelGroup postbuttonsParallelGroup = groupLayout.createParallelGroup();
255  for (JButton button : postprocessButtons.values()) {
256  postbuttonsSequentialGroup.addComponent(button);
257  postbuttonsParallelGroup.addComponent(button);
258  }
259 
260  groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
261  .addGroup(Alignment.LEADING, groupLayout.createSequentialGroup()
262  .addContainerGap()
263  .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
264  // a bunch of stuff that can in principle stretch from left to right (although most of it won't):
265  .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, 729, Short.MAX_VALUE)
266  .addComponent(lblFilepaths) // "Filepaths must either ..."
267  .addGroup(prebuttonsSequentialGroup)
268  .addGroup(postbuttonsSequentialGroup)
269  .addGroup(groupLayout.createSequentialGroup()
270  .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
271  // some stuff that stretches from left to somewhere1:
272  .addComponent(lblYouAreUsingMATSimVersion)
273  .addComponent(lblYouAreUsingJavaVersion)
274  .addComponent(lblJavaLocation)
275  .addComponent(lblConfigurationFile)
276  .addComponent(lblOutputDirectory)
277  .addComponent(lblMemory)
278  .addComponent(btnStartMatsim))
279  // a gap from somewhere1 to somewhere2:
280  .addPreferredGap(ComponentPlacement.RELATED)
281  .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
282  // stuff that stretches from somewhere2 to right:
283  .addGroup(groupLayout.createSequentialGroup()
284  .addComponent(txtRam, GroupLayout.PREFERRED_SIZE, 69,
285  GroupLayout.PREFERRED_SIZE)
286  .addPreferredGap(ComponentPlacement.RELATED)
287  .addComponent(lblMb))
288  .addComponent(txtMatsimversion, GroupLayout.DEFAULT_SIZE, 285,
289  Short.MAX_VALUE)
290  .addComponent(txtJvmversion, GroupLayout.DEFAULT_SIZE, 285,
291  Short.MAX_VALUE)
292  .addComponent(txtJvmlocation, GroupLayout.DEFAULT_SIZE, 285,
293  Short.MAX_VALUE)
294  .addGroup(groupLayout.createSequentialGroup()
295  .addComponent(txtConfigfilename, GroupLayout.DEFAULT_SIZE, 188,
296  Short.MAX_VALUE)
297  .addPreferredGap(ComponentPlacement.RELATED)
298  .addComponent(btnChoose)
299  .addPreferredGap(ComponentPlacement.RELATED)
300  .addComponent(btnEdit))
301  .addComponent(progressBar, GroupLayout.DEFAULT_SIZE, 285,
302  Short.MAX_VALUE)
303  .addGroup(groupLayout.createSequentialGroup()
304  .addComponent(txtOutput, GroupLayout.DEFAULT_SIZE, 112,
305  Short.MAX_VALUE)
306  .addPreferredGap(ComponentPlacement.RELATED)
307  .addComponent(btnOpen)
308  .addPreferredGap(ComponentPlacement.RELATED)
309  .addComponent(btnDelete)))))
310  .addContainerGap()));
311  groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING)
312  .addGroup(groupLayout.createSequentialGroup()
313  .addContainerGap()
314  .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
315  .addComponent(lblYouAreUsingMATSimVersion)
316  .addComponent(txtMatsimversion, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
317  GroupLayout.PREFERRED_SIZE))
318  .addPreferredGap(ComponentPlacement.RELATED)
319  .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
320  .addComponent(lblYouAreUsingJavaVersion)
321  .addComponent(txtJvmversion, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
322  GroupLayout.PREFERRED_SIZE))
323  .addPreferredGap(ComponentPlacement.RELATED)
324  .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
325  .addComponent(lblJavaLocation)
326  .addComponent(txtJvmlocation, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
327  GroupLayout.PREFERRED_SIZE))
328  .addPreferredGap(ComponentPlacement.RELATED)
329  .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
330  .addComponent(lblConfigurationFile)
331  .addComponent(txtConfigfilename, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
332  GroupLayout.PREFERRED_SIZE)
333  .addComponent(btnChoose)
334  .addComponent(btnEdit))
335  .addPreferredGap(ComponentPlacement.RELATED)
336  .addComponent(lblFilepaths)
337  .addPreferredGap(ComponentPlacement.RELATED)
338  .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
339  .addComponent(lblOutputDirectory)
340  .addComponent(txtOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
341  GroupLayout.PREFERRED_SIZE)
342  .addComponent(btnDelete)
343  .addComponent(btnOpen))
344  .addPreferredGap(ComponentPlacement.RELATED)
345  .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
346  .addComponent(lblMemory)
347  .addComponent(txtRam, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
348  GroupLayout.PREFERRED_SIZE)
349  .addComponent(lblMb))
350  .addPreferredGap(ComponentPlacement.UNRELATED)
351  .addGroup(prebuttonsParallelGroup)
352  .addPreferredGap(ComponentPlacement.UNRELATED)
353  .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
354  .addComponent(btnStartMatsim)
355  .addComponent(progressBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
356  GroupLayout.PREFERRED_SIZE))
357  .addPreferredGap(ComponentPlacement.UNRELATED)
358  .addGroup(postbuttonsParallelGroup)
359  .addPreferredGap(ComponentPlacement.RELATED)
360  .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, 180, Short.MAX_VALUE)
361  .addContainerGap()));
362 
363  textStdOut = new JTextArea();
364  textStdOut.setWrapStyleWord(true);
365  textStdOut.setTabSize(4);
366  textStdOut.setEditable(false);
367  scrollPane = new JScrollPane(textStdOut);
368  tabbedPane.addTab("Output", null, scrollPane, null);
369 
370  JScrollPane scrollPane_1 = new JScrollPane();
371  tabbedPane.addTab("Warnings & Errors", null, scrollPane_1, null);
372 
373  textErrOut = new JTextArea();
374  textErrOut.setWrapStyleWord(true);
375  textErrOut.setTabSize(4);
376  textErrOut.setEditable(false);
377  scrollPane_1.setViewportView(textErrOut);
378 
379  getContentPane().setLayout(groupLayout);
380 
381  menuBar = new JMenuBar();
382  setJMenuBar(menuBar);
383 
384  mnTools = new JMenu("Tools");
385  menuBar.add(mnTools);
386 
387  mntmCompressFile = new JMenuItem("Compress File…");
389  mntmCompressFile.addActionListener(e -> GUnZipper.gzipFile());
390 
391  mntmUncompressFile = new JMenuItem("Uncompress File…");
393  mntmUncompressFile.addActionListener(e -> GUnZipper.gunzipFile());
394 
395  mnTools.addSeparator();
396 
397  mntmCreateDefaultConfig = new JMenuItem("Create Default config.xml…");
399  mntmCreateDefaultConfig.addActionListener(e -> {
400  SaveFileSaver chooser = new SaveFileSaver();
401  chooser.setSelectedFile(new File("defaultConfig.xml"));
402  int saveResult = chooser.showSaveDialog(null);
403  if (saveResult == JFileChooser.APPROVE_OPTION) {
404  File destFile = chooser.getSelectedFile();
405  Config config = ConfigUtils.createConfig();
406  new ConfigWriter(config).write(destFile.getAbsolutePath());
407  }
408  });
409 
410  mntmCreateSamplePopulation = new JMenuItem("Create Sample Population…");
412  mntmCreateSamplePopulation.addActionListener(e -> {
413  if (popSampler == null) {
414  popSampler = new PopulationSampler(this);
415  popSampler.pack();
416  }
417  popSampler.setVisible(true);
418  });
419 
420  JMenuItem mntmTransitValidator = new JMenuItem("Validate TransitSchedule…");
421  this.mnTools.add(mntmTransitValidator);
422  mntmTransitValidator.addActionListener(e -> {
423  if (this.transitValidator == null) {
424  this.transitValidator = new ScheduleValidatorWindow(this);
425  }
426  String configFilename = this.txtConfigfilename.getText();
427  if (!configFilename.isEmpty()) {
428  Config config = ConfigUtils.createConfig();
429  try {
430  ConfigUtils.loadConfig(config, configFilename);
431  this.transitValidator.loadFromConfig(config, new File(configFilename).getParentFile());
432  } catch (Exception ignore) {
433  }
434  }
435  this.transitValidator.setVisible(true);
436  });
437  }
static final JLabel lblConfigurationFile
Definition: Gui.java:54
static final JLabel lblFilepaths
Definition: Gui.java:51
static final JLabel lblOutputDirectory
Definition: Gui.java:55
void loadFromConfig(Config config, File configDirectory)
JMenuItem mntmCreateDefaultConfig
Definition: Gui.java:85
JTextArea textStdOut
Definition: Gui.java:71
JTextField txtConfigfilename
Definition: Gui.java:61
void loadConfigFile(final File configFile)
Definition: Gui.java:495
PopulationSampler popSampler
Definition: Gui.java:88
JMenuItem mntmCreateSamplePopulation
Definition: Gui.java:86
JMenuItem mntmUncompressFile
Definition: Gui.java:84
volatile ExeRunner exeRunner
Definition: Gui.java:79
JTextField txtOutput
Definition: Gui.java:66
JProgressBar progressBar
Definition: Gui.java:69
ScheduleValidatorWindow transitValidator
Definition: Gui.java:100
JTextField txtJvmversion
Definition: Gui.java:64
static final JLabel lblMemory
Definition: Gui.java:56
JTextArea textErrOut
Definition: Gui.java:89
JScrollPane scrollPane
Definition: Gui.java:72
static final JLabel lblJavaLocation
Definition: Gui.java:53
static final JLabel lblYouAreUsingMATSimVersion
Definition: Gui.java:59
JTextField txtMatsimversion
Definition: Gui.java:62
JButton btnStartMatsim
Definition: Gui.java:68
ConfigEditor editor
Definition: Gui.java:99
Gui(final String title, final Class<?> mainClass)
Definition: Gui.java:102
JMenuBar menuBar
Definition: Gui.java:81
JMenuItem mntmCompressFile
Definition: Gui.java:83
JTextField txtRam
Definition: Gui.java:63
static final JLabel lblYouAreUsingJavaVersion
Definition: Gui.java:58
JTextField txtJvmlocation
Definition: Gui.java:65
static final JLabel lblMb
Definition: Gui.java:57
File lastUsedDirectory
Definition: Gui.java:93
Here is the call graph for this function:

◆ startMATSim()

void org.matsim.run.gui.Gui.startMATSim ( )
private

Definition at line 439 of file Gui.java.

References org.matsim.run.gui.Gui.mainClass.

Referenced by org.matsim.run.gui.Gui.createLayout().

439  {
440  progressBar.setVisible(true);
441  progressBar.setEnabled(true);
442  this.btnStartMatsim.setEnabled(false);
443 
444  textStdOut.setText("");
445  textErrOut.setText("");
446 
447  String cwd = workingDirectory == null ? new File(txtConfigfilename.getText()).getParent() : workingDirectory.getAbsolutePath();
448 
449  new Thread(() -> {
450  String classpath = System.getProperty("java.class.path");
451  String[] cpParts = classpath.split(File.pathSeparator);
452  StringBuilder absoluteClasspath = new StringBuilder();
453  for (String cpPart : cpParts) {
454  if (absoluteClasspath.length() > 0) {
455  absoluteClasspath.append(File.pathSeparatorChar);
456  }
457  absoluteClasspath.append(new File(cpPart).getAbsolutePath());
458  }
459  String[] cmdArgs = new String[] { txtJvmlocation.getText(),
460  "-cp", absoluteClasspath.toString(),
461  "-Xmx" + txtRam.getText() + "m",
462  "--add-exports", "java.base/java.lang=ALL-UNNAMED",
463  "--add-exports", "java.desktop/sun.awt=ALL-UNNAMED",
464  "--add-exports", "java.desktop/sun.java2d=ALL-UNNAMED",
465  mainClass, txtConfigfilename.getText() };
466  // see https://jogamp.org/bugzilla/show_bug.cgi?id=1317#c21 and/or https://github.com/matsim-org/matsim-libs/pull/2940
467  exeRunner = ExeRunner.run(cmdArgs, textStdOut, textErrOut, cwd);
468  int exitcode = exeRunner.waitForFinish();
469  exeRunner = null;
470 
471  SwingUtilities.invokeLater(() -> {
472  progressBar.setVisible(false);
473  btnStartMatsim.setText("Start MATSim");
474  btnStartMatsim.setEnabled(true);
475  if (exitcode != 0) {
476  textStdOut.append("\n");
477  textStdOut.append("The simulation did not run properly. Error/Exit code: " + exitcode);
478  textStdOut.setCaretPosition(textStdOut.getDocument().getLength());
479  textErrOut.append("\n");
480  textErrOut.append("The simulation did not run properly. Error/Exit code: " + exitcode);
481  textErrOut.setCaretPosition(textErrOut.getDocument().getLength());
482  }
483  });
484 
485  if (exitcode != 0) {
486  throw new RuntimeException("There was a problem running MATSim. exit code: " + exitcode);
487  }
488 
489  }).start();
490 
491  btnStartMatsim.setText("Stop MATSim");
492  btnStartMatsim.setEnabled(true);
493  }
JTextArea textStdOut
Definition: Gui.java:71
final String mainClass
Definition: Gui.java:90
JTextField txtConfigfilename
Definition: Gui.java:61
volatile ExeRunner exeRunner
Definition: Gui.java:79
JProgressBar progressBar
Definition: Gui.java:69
JTextArea textErrOut
Definition: Gui.java:89
JButton btnStartMatsim
Definition: Gui.java:68
JTextField txtRam
Definition: Gui.java:63
JTextField txtJvmlocation
Definition: Gui.java:65

◆ loadConfigFile()

void org.matsim.run.gui.Gui.loadConfigFile ( final File  configFile)

Definition at line 495 of file Gui.java.

References org.matsim.run.gui.Gui.configFile, org.matsim.core.config.Config.controller(), org.matsim.core.config.ConfigUtils.createConfig(), org.matsim.core.config.groups.ControllerConfigGroup.getOutputDirectory(), and org.matsim.core.config.ConfigUtils.loadConfig().

Referenced by org.matsim.run.gui.Gui.createLayout(), and org.matsim.run.gui.Gui.show().

495  {
496  this.configFile = configFile;
497  String configFilename = configFile.getAbsolutePath();
498 
499  Config config = ConfigUtils.createConfig();
500  try {
501  ConfigUtils.loadConfig(config, configFilename);
502  } catch (Exception e) {
503  textStdOut.setText("");
504  textStdOut.append("The configuration file could not be loaded. Error message:\n");
505  textStdOut.append(e.getMessage());
506  textErrOut.setText("");
507  textErrOut.append("The configuration file could not be loaded. Error message:\n");
508  textErrOut.append(e.getMessage());
509  return;
510  }
511  txtConfigfilename.setText(configFilename);
512 
513  File par = configFile.getParentFile();
514  File outputDir = new File(par, config.controller().getOutputDirectory());
515  try {
516  txtOutput.setText(outputDir.getCanonicalPath());
517  } catch (IOException e1) {
518  txtOutput.setText(outputDir.getAbsolutePath());
519  }
520 
521  btnStartMatsim.setEnabled(true);
522  btnEdit.setEnabled(true);
523  for (JButton button : preprocessButtons.values()) {
524  button.setEnabled(true);
525  }
526  for (JButton button : postprocessButtons.values()) {
527  button.setEnabled(true);
528  }
529  }
JTextArea textStdOut
Definition: Gui.java:71
JTextField txtConfigfilename
Definition: Gui.java:61
JTextField txtOutput
Definition: Gui.java:66
JTextArea textErrOut
Definition: Gui.java:89
JButton btnStartMatsim
Definition: Gui.java:68
Here is the call graph for this function:

◆ stopMATSim()

void org.matsim.run.gui.Gui.stopMATSim ( )
private

Definition at line 531 of file Gui.java.

References org.matsim.run.gui.Gui.exeRunner.

Referenced by org.matsim.run.gui.Gui.createLayout().

531  {
532  ExeRunner runner = this.exeRunner;
533  if (runner != null) {
534  runner.killProcess();
535 
536  //TODO Double check if this works
537  exeRunner = null;
538 
539  progressBar.setVisible(false);
540  btnStartMatsim.setText("Start MATSim");
541  btnStartMatsim.setEnabled(true);
542 
543  textStdOut.append("\n");
544  textStdOut.append("The simulation was stopped forcefully.");
545  textStdOut.setCaretPosition(textStdOut.getDocument().getLength());
546  textErrOut.append("\n");
547  textErrOut.append("The simulation was stopped forcefully.");
548  textErrOut.setCaretPosition(textErrOut.getDocument().getLength());
549  }
550  }
JTextArea textStdOut
Definition: Gui.java:71
volatile ExeRunner exeRunner
Definition: Gui.java:79
JProgressBar progressBar
Definition: Gui.java:69
JTextArea textErrOut
Definition: Gui.java:89
JButton btnStartMatsim
Definition: Gui.java:68

◆ show() [1/2]

static Future<Gui> org.matsim.run.gui.Gui.show ( final String  title,
final Class<?>  mainClass 
)
static

Definition at line 552 of file Gui.java.

Referenced by org.matsim.run.gui.Gui.main().

552  {
553  return show(title, mainClass, null);
554  }
final String mainClass
Definition: Gui.java:90
static Future< Gui > show(final String title, final Class<?> mainClass)
Definition: Gui.java:552

◆ show() [2/2]

static Future<Gui> org.matsim.run.gui.Gui.show ( final String  title,
final Class<?>  mainClass,
File  configFile 
)
static

Create the GUI and return it as future when created.

Definition at line 559 of file Gui.java.

References org.matsim.run.gui.Gui.createLayout(), org.matsim.run.gui.Gui.Gui(), and org.matsim.run.gui.Gui.loadConfigFile().

559  {
560  System.setProperty("apple.laf.useScreenMenuBar", "true");
561 
562  RunnableFuture<Gui> rf = new FutureTask<>(() -> {
563  Gui gui = new Gui(title, mainClass);
564  gui.createLayout();
565  gui.pack();
566  gui.setLocationByPlatform(true);
567  gui.setVisible(true);
568  if (configFile != null && configFile.exists()) {
569  gui.loadConfigFile(configFile);
570  }
571 
572  return gui;
573  });
574 
575  SwingUtilities.invokeLater(rf);
576  return rf;
577  }
final String mainClass
Definition: Gui.java:90
Gui(final String title, final Class<?> mainClass)
Definition: Gui.java:102
Here is the call graph for this function:

◆ main()

static void org.matsim.run.gui.Gui.main ( String []  args)
static

Definition at line 579 of file Gui.java.

References org.matsim.run.gui.Gui.show().

579  {
580  Preconditions.checkArgument(args.length < 2);
581  Gui.show("MATSim", RunMatsim.class, args.length == 1 ? new File(args[0]) : null);
582  }
Gui(final String title, final Class<?> mainClass)
Definition: Gui.java:102
Here is the call graph for this function:

◆ setWorkingDirectory()

void org.matsim.run.gui.Gui.setWorkingDirectory ( File  cwd)

Definition at line 584 of file Gui.java.

584  {
585  this.workingDirectory = cwd;
586  }

Member Data Documentation

◆ serialVersionUID

final long org.matsim.run.gui.Gui.serialVersionUID = 1L
staticprivate

Definition at line 49 of file Gui.java.

◆ lblFilepaths

final JLabel org.matsim.run.gui.Gui.lblFilepaths
staticprivate
Initial value:
= new JLabel(
"Filepaths must either be absolute or relative to the location of the config file.")

Definition at line 51 of file Gui.java.

◆ lblJavaLocation

final JLabel org.matsim.run.gui.Gui.lblJavaLocation = new JLabel("Java Location:")
staticprivate

Definition at line 53 of file Gui.java.

◆ lblConfigurationFile

final JLabel org.matsim.run.gui.Gui.lblConfigurationFile = new JLabel("Configuration file:")
staticprivate

Definition at line 54 of file Gui.java.

◆ lblOutputDirectory

final JLabel org.matsim.run.gui.Gui.lblOutputDirectory = new JLabel("Output Directory:")
staticprivate

Definition at line 55 of file Gui.java.

◆ lblMemory

final JLabel org.matsim.run.gui.Gui.lblMemory = new JLabel("Memory:")
staticprivate

Definition at line 56 of file Gui.java.

◆ lblMb

final JLabel org.matsim.run.gui.Gui.lblMb = new JLabel("MB")
staticprivate

Definition at line 57 of file Gui.java.

◆ lblYouAreUsingJavaVersion

final JLabel org.matsim.run.gui.Gui.lblYouAreUsingJavaVersion = new JLabel("You are using Java version:")
staticprivate

Definition at line 58 of file Gui.java.

◆ lblYouAreUsingMATSimVersion

final JLabel org.matsim.run.gui.Gui.lblYouAreUsingMATSimVersion = new JLabel("You are using MATSim version:")
staticprivate

Definition at line 59 of file Gui.java.

◆ txtConfigfilename

JTextField org.matsim.run.gui.Gui.txtConfigfilename
private

Definition at line 61 of file Gui.java.

◆ txtMatsimversion

JTextField org.matsim.run.gui.Gui.txtMatsimversion
private

Definition at line 62 of file Gui.java.

◆ txtRam

JTextField org.matsim.run.gui.Gui.txtRam
private

Definition at line 63 of file Gui.java.

◆ txtJvmversion

JTextField org.matsim.run.gui.Gui.txtJvmversion
private

Definition at line 64 of file Gui.java.

◆ txtJvmlocation

JTextField org.matsim.run.gui.Gui.txtJvmlocation
private

Definition at line 65 of file Gui.java.

◆ txtOutput

JTextField org.matsim.run.gui.Gui.txtOutput
private

Definition at line 66 of file Gui.java.

◆ btnStartMatsim

JButton org.matsim.run.gui.Gui.btnStartMatsim
private

Definition at line 68 of file Gui.java.

◆ progressBar

JProgressBar org.matsim.run.gui.Gui.progressBar
private

Definition at line 69 of file Gui.java.

◆ textStdOut

JTextArea org.matsim.run.gui.Gui.textStdOut
private

Definition at line 71 of file Gui.java.

◆ scrollPane

JScrollPane org.matsim.run.gui.Gui.scrollPane
private

Definition at line 72 of file Gui.java.

◆ btnEdit

JButton org.matsim.run.gui.Gui.btnEdit
private

Definition at line 73 of file Gui.java.

◆ exeRunner

volatile ExeRunner org.matsim.run.gui.Gui.exeRunner = null
private

Definition at line 79 of file Gui.java.

Referenced by org.matsim.run.gui.Gui.stopMATSim().

◆ menuBar

JMenuBar org.matsim.run.gui.Gui.menuBar
private

Definition at line 81 of file Gui.java.

◆ mnTools

JMenu org.matsim.run.gui.Gui.mnTools
private

Definition at line 82 of file Gui.java.

◆ mntmCompressFile

JMenuItem org.matsim.run.gui.Gui.mntmCompressFile
private

Definition at line 83 of file Gui.java.

◆ mntmUncompressFile

JMenuItem org.matsim.run.gui.Gui.mntmUncompressFile
private

Definition at line 84 of file Gui.java.

◆ mntmCreateDefaultConfig

JMenuItem org.matsim.run.gui.Gui.mntmCreateDefaultConfig
private

Definition at line 85 of file Gui.java.

◆ mntmCreateSamplePopulation

JMenuItem org.matsim.run.gui.Gui.mntmCreateSamplePopulation
private

Definition at line 86 of file Gui.java.

◆ popSampler

PopulationSampler org.matsim.run.gui.Gui.popSampler = null
private

Definition at line 88 of file Gui.java.

◆ textErrOut

JTextArea org.matsim.run.gui.Gui.textErrOut
private

Definition at line 89 of file Gui.java.

◆ mainClass

final String org.matsim.run.gui.Gui.mainClass
private

Definition at line 90 of file Gui.java.

Referenced by org.matsim.run.gui.Gui.startMATSim().

◆ configFile

File org.matsim.run.gui.Gui.configFile
private

Definition at line 92 of file Gui.java.

Referenced by org.matsim.run.gui.Gui.loadConfigFile().

◆ lastUsedDirectory

File org.matsim.run.gui.Gui.lastUsedDirectory
private

Definition at line 93 of file Gui.java.

◆ workingDirectory

File org.matsim.run.gui.Gui.workingDirectory = null
private

This is the working directory for the simulation. If it is null, the working directory is the directory of the config file.

Definition at line 98 of file Gui.java.

◆ editor

ConfigEditor org.matsim.run.gui.Gui.editor = null
private

Definition at line 99 of file Gui.java.

◆ transitValidator

ScheduleValidatorWindow org.matsim.run.gui.Gui.transitValidator = null
private

Definition at line 100 of file Gui.java.


The documentation for this class was generated from the following file: