EOS 2  1.1.0
Einfache Objektbasierte Sprache
Start.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos;
2 
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.InputStreamReader;
7 import java.util.Locale;
8 
9 import javax.swing.JOptionPane;
10 import javax.swing.UIManager;
11 import javax.swing.UIManager.LookAndFeelInfo;
12 import javax.swing.UnsupportedLookAndFeelException;
13 
14 import de.lathanda.eos.baseparser.AbstractProgram;
15 import de.lathanda.eos.baseparser.Program;
16 import de.lathanda.eos.common.gui.GuiConfiguration;
17 import de.lathanda.eos.common.gui.Messages;
18 import de.lathanda.eos.config.Language;
19 import de.lathanda.eos.gui.MainWindow;
20 import de.lathanda.eos.interpreter.parser.de.EosParserFactory;
21 
22 
23 
31 public class Start {
32 
44  public static void main(String args[]) {
45  try {
46  for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
47  if ("Nimbus".equals(info.getName())) {
48  UIManager.setLookAndFeel(info.getClassName());
49  }
50  }
51  } catch (Throwable t) {
52  }
53 
54  Runtime.getRuntime().addShutdownHook(new Stop());
55  loadLanguage();
56  apply(args);
57  switch (mode) {
58  case EDITOR:
59  editorStart();
60  break;
61  case PROGRAM:
62  programStart();
63  break;
64  default:
65  editorStart();
66  }
67  }
68 
69  private static void loadLanguage() {
70  String id = GuiConfiguration.def.getLanguage();
72  for(var config : langs) {
73  if (config.getID().equals(id)) {
74  config.apply(Language.def);
75  return;
76  }
77  }
78  if (!langs.isEmpty()) {
79  var lc = langs.iterator().next();
80  lc.apply(Language.def);
81  GuiConfiguration.def.setLanguage(lc.getID());
82  } else {
83  JOptionPane.showMessageDialog(null, "No languagedefinition found. Cannot start!", "Fatal Error", JOptionPane.ERROR_MESSAGE);
84  System.exit(-1);
85 
86  }
87  }
88 
96  private static void apply(String[] args) {
97  for (int an = 0; an < args.length; an++) {
98  if (args[an].startsWith("/") || args[an].startsWith("-")) {
99  for (int i = 1; i < args[an].length(); i++) {
100  switch (args[an].charAt(i)) {
101  case 'p': // directly start the program, no editor
102  mode = Mode.PROGRAM;
103  break;
104  case 'm': // only methods are allowed
105  allowProperties = false;
106  break;
107  case 'e':
108  Locale.setDefault(Locale.ENGLISH);
109  break;
110  case 'd':
111  Locale.setDefault(Locale.GERMAN);
112  break;
113  }
114  }
115  } else {
116  file = new File(args[an]);
117  }
118  }
119 
120  }
121 
127  private enum Mode {
131  EDITOR,
135  PROGRAM
136  };
137 
141  private static File file = null;
145  private static Mode mode = Mode.EDITOR;
149  private static boolean allowProperties = true;
150 
154  private static void editorStart() {
155  if (!allowProperties) {
156  Language.def.setLockProperties(true);
157  }
158  MainWindow mainWindow = new MainWindow();
159  if (file != null) {
160  mainWindow.load(file);
161  }
162  mainWindow.setVisible(true);
163  mainWindow.startCompiler();
164  }
165 
169  private static void programStart() {
170  if (file == null) {
171  editorStart();
172  return;
173  }
174  try {
175  StringBuilder src = new StringBuilder();
176  String path = file.getParent();
177 
178  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "Utf-8"));
179  while (br.ready()) {
180  src.append(br.readLine());
181  src.append("\n");
182  }
183  br.close();
184 
185  AbstractProgram program = new Program(
186  src.toString(),
187  new EosParserFactory(),
188  Language.def.getDefaultWindowName(),
189  Language.def.isLockProperties()
190  );
191  program.parse(path);
192  program.compile();
193  program.getMachine().skip();
194  } catch (Exception e) {
195  JOptionPane.showMessageDialog(null, Messages.getString("Export.Error.Title"), e.getLocalizedMessage(),
196  JOptionPane.ERROR_MESSAGE);
197  }
198  }
199 }
Startklasse.
Definition: Start.java:31
static void main(String args[])
Definition: Start.java:44
Aufräumklasse.
Definition: Stop.java:15
Collection< LanguageConfig > getAvailableLanguageConfigs()
Definition: Language.java:56
Impressum