20 package net.sf.gridarta.textedit.scripteditor;
22 import java.io.BufferedReader;
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.io.InputStreamReader;
26 import java.io.Reader;
27 import java.io.Serializable;
28 import java.io.UnsupportedEncodingException;
29 import java.util.ArrayList;
30 import java.util.Collections;
31 import java.util.Iterator;
32 import java.util.List;
34 import org.apache.log4j.Category;
35 import org.apache.log4j.Logger;
36 import org.jetbrains.annotations.NotNull;
42 public class MenuEntries implements Iterable<String>, Serializable {
73 final InputStream inputStream =
CFPythonPopup.class.getResourceAsStream(PYTHON_MENU_FILE);
74 if (inputStream == null) {
75 LOG.error(
"Resource '" + PYTHON_MENU_FILE +
"' not found");
80 try (BufferedReader bufferedReader =
new BufferedReader(reader)) {
83 final String inputLine = bufferedReader.readLine();
84 if (inputLine == null) {
87 final String line = inputLine.trim();
88 if (!line.isEmpty() && !line.startsWith(
"#")) {
91 final int k = line.indexOf(
'(');
93 menuEntries.add(line.substring(0, k) +
"()");
95 LOG.error(
"Parse error in " + PYTHON_MENU_FILE +
":");
96 LOG.error(
" \"" + line +
"\" missing '()'");
97 menuEntries.add(line +
"()");
101 menuEntries.sort(String.CASE_INSENSITIVE_ORDER);
107 }
catch (
final UnsupportedEncodingException ex) {
108 LOG.error(
"Cannot decode file '" + PYTHON_MENU_FILE +
"': " + ex.getMessage());
109 }
catch (
final IOException ex) {
110 LOG.error(
"Cannot read file '" + PYTHON_MENU_FILE +
"': " + ex.getMessage());
117 return Collections.unmodifiableCollection(menuEntries).iterator();
125 return menuEntries.isEmpty();
static final String MAP_ENCODING
Encoding to use for maps and other data.
Base package of all Gridarta classes.
Utility-class for Gridarta's I/O.