146 UNIX
147 }
148
149 private static final Map<Flavor, Callable<? extends Terminal>> FLAVORS = new HashMap<>();
150
151 static {
152 // registerFlavor(Flavor.WINDOWS, AnsiWindowsTerminal.class);
153 // registerFlavor(Flavor.UNIX, UnixTerminal.class);
154 registerFlavor(Flavor.WINDOWS, WindowsTerminal :: new);
155 registerFlavor(Flavor.UNIX, UnixTerminal :: new);
156 }
157
158 public static synchronized Terminal get() {
159 if (term == null) {
160 term = create();
161 }
162 return term;
163 }
164
165 public static Terminal getFlavor(final Flavor flavor) throws Exception {
166 Callable<? extends Terminal> sup = FLAVORS.get(flavor);
167 if (sup != null) {
168 return sup.call();
169 }
170
171 throw new InternalError();
172 }
173
174 public static void registerFlavor(final Flavor flavor, final Callable<? extends Terminal> sup) {
175 FLAVORS.put(flavor, sup);
176 }
177
178 }
|
146 UNIX
147 }
148
149 private static final Map<Flavor, Callable<? extends Terminal>> FLAVORS = new HashMap<>();
150
151 static {
152 // registerFlavor(Flavor.WINDOWS, AnsiWindowsTerminal.class);
153 // registerFlavor(Flavor.UNIX, UnixTerminal.class);
154 registerFlavor(Flavor.WINDOWS, WindowsTerminal :: new);
155 registerFlavor(Flavor.UNIX, UnixTerminal :: new);
156 }
157
158 public static synchronized Terminal get() {
159 if (term == null) {
160 term = create();
161 }
162 return term;
163 }
164
165 public static Terminal getFlavor(final Flavor flavor) throws Exception {
166 return FLAVORS.getOrDefault(flavor, () -> {throw new InternalError();}).call();
167 }
168
169 public static void registerFlavor(final Flavor flavor, final Callable<? extends Terminal> sup) {
170 FLAVORS.put(flavor, sup);
171 }
172
173 }
|