List<ColorAndFontPanelFactory> () { List<ColorAndFontPanelFactory> extensions = new ArrayList<>(); extensions.add(new FontConfigurableFactory()); extensions.add(new ConsoleFontConfigurableFactory()); ColorSettingsPage[] pages = ColorSettingsPages.getInstance().getRegisteredPages(); for (final ColorSettingsPage page : pages) { extensions.add(new ColorAndFontPanelFactoryEx() { @Override public @NotNull NewColorAndFontPanel createPanel(@NotNull ColorAndFontOptions options) { final SimpleEditorPreview preview = new SimpleEditorPreview(options, page); return NewColorAndFontPanel.create(preview, page.getDisplayName(), options, null, page); } @Override public @NotNull String getPanelDisplayName() { return page.getDisplayName(); } @Override public DisplayPriority getPriority() { if (page instanceof DisplayPrioritySortable) { return ((DisplayPrioritySortable)page).getPriority(); } return DisplayPriority.LANGUAGE_SETTINGS; } @Override public int getWeight() { if (page instanceof DisplayPrioritySortable) { return ((DisplayPrioritySortable)page).getWeight(); } return ColorAndFontPanelFactoryEx.super.getWeight(); } @Override public @NotNull Class<?> getOriginalClass() { return page.getClass(); } }); } extensions.addAll(ColorAndFontPanelFactory.EP_NAME.getExtensionList()); extensions.sort( (f1, f2) -> DisplayPrioritySortable.compare(f1, f2, factory -> factory.getPanelDisplayName()) ); return new ArrayList<>(extensions); }