From e61af8441b050bddb89860b670c70bc32583aad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Bl=C3=A4sing?= Date: Thu, 29 Dec 2022 23:10:08 +0100 Subject: [PATCH 1/3] Fix/enable unittests for editor.options --- .github/workflows/main.yml | 3 +++ .../modules/options/editor/EditorOptionsTest.java | 11 ++++++----- .../netbeans/modules/options/OptionsCategoryImpl.java | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fc6e71dbb5d1..bde0eeea1d50 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -550,6 +550,9 @@ jobs: - name: ide/o.openidex.util run: ant $OPTS -f ide/o.openidex.util test + - name: ide/options.editor + run: ant $OPTS -f ide/options.editor test + # - name: ide/parsing.api # run: ant $OPTS -f ide/parsing.api test diff --git a/ide/options.editor/test/unit/src/org/netbeans/modules/options/editor/EditorOptionsTest.java b/ide/options.editor/test/unit/src/org/netbeans/modules/options/editor/EditorOptionsTest.java index 28fde0ca98c3..8a9b1ae16665 100644 --- a/ide/options.editor/test/unit/src/org/netbeans/modules/options/editor/EditorOptionsTest.java +++ b/ide/options.editor/test/unit/src/org/netbeans/modules/options/editor/EditorOptionsTest.java @@ -46,6 +46,8 @@ public class EditorOptionsTest extends NbTestCase { EditorTestLookup.setLookup( new URL[] { + getClass().getClassLoader().getResource("org/netbeans/core/resources/mf-layer.xml"), + getClass().getClassLoader().getResource("org/netbeans/core/ui/resources/layer.xml"), getClass().getClassLoader().getResource("org/netbeans/modules/options/editor/mf-layer.xml"), getClass().getClassLoader().getResource("org/netbeans/modules/options/keymap/mf-layer.xml"), getClass().getClassLoader().getResource("org/netbeans/modules/options/editor/test-layer.xml"), @@ -67,15 +69,14 @@ public EditorOptionsTest (String testName) { public void testPanelsRegistration () { // there are two panels registered from this module - Editor, Fonts & Colors - // and one panel from core/options/keymap - assertEquals (3, getCategories ().size ()); + // and two panels from core/options/keymap (General, Keymaps) + assertEquals (4, getCategories ().size ()); } public void testOptionsCategories () { for(OptionsCategory oc : getCategories()) { - assertNotNull (oc.getCategoryName ()); - assertNotNull (oc.getIcon()); - assertNotNull (oc.getTitle ()); + assertNotNull (oc + " no category name", oc.getCategoryName ()); + assertNotNull (oc + " no icon", oc.getIcon()); } } diff --git a/platform/options.api/src/org/netbeans/modules/options/OptionsCategoryImpl.java b/platform/options.api/src/org/netbeans/modules/options/OptionsCategoryImpl.java index 327682997360..eddcd49d15fc 100644 --- a/platform/options.api/src/org/netbeans/modules/options/OptionsCategoryImpl.java +++ b/platform/options.api/src/org/netbeans/modules/options/OptionsCategoryImpl.java @@ -109,4 +109,9 @@ final Set getKeywordsByCategory() { return Collections.emptySet(); } } + + @Override + public String toString() { + return "OptionsCategoryImpl{" + "title=" + title + ", categoryName=" + categoryName + ", iconBase=" + iconBase + ", icon=" + icon + ", controller=" + controller + ", keywords=" + keywords + ", keywordsCategory=" + keywordsCategory + ", advancedOptionsFolder=" + advancedOptionsFolder + '}'; + } } From f7791e09dee9d0abf12a26fbc962fc61d6220055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Bl=C3=A4sing?= Date: Thu, 29 Dec 2022 22:22:36 +0100 Subject: [PATCH 2/3] Add display name for Maven POM files (text/x-maven-pom+xml -> Maven POM) --- .../src/org/netbeans/modules/maven/grammar/Bundle.properties | 1 + .../src/org/netbeans/modules/maven/grammar/layer.xml | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/maven.grammar/src/org/netbeans/modules/maven/grammar/Bundle.properties b/java/maven.grammar/src/org/netbeans/modules/maven/grammar/Bundle.properties index 651a0957d732..bf75109b6bfe 100644 --- a/java/maven.grammar/src/org/netbeans/modules/maven/grammar/Bundle.properties +++ b/java/maven.grammar/src/org/netbeans/modules/maven/grammar/Bundle.properties @@ -23,3 +23,4 @@ ShowEffPomDiffPanel.rbConfiguration.text=By Configuration ShowEffPomDiffPanel.rbCustom.text=By Profiles and Properties ShowEffPomDiffPanel.lblProfiles.text=Profiles: ShowEffPomDiffPanel.lblProperties.text=Properties: +Editors/text/x-maven-pom+xml=Maven POM \ No newline at end of file diff --git a/java/maven.grammar/src/org/netbeans/modules/maven/grammar/layer.xml b/java/maven.grammar/src/org/netbeans/modules/maven/grammar/layer.xml index f3c0a47dbcc0..9af8c01528c9 100644 --- a/java/maven.grammar/src/org/netbeans/modules/maven/grammar/layer.xml +++ b/java/maven.grammar/src/org/netbeans/modules/maven/grammar/layer.xml @@ -150,8 +150,7 @@ - - + From 5b87b53aab801a8e619d12db066aa5d788f9681d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Bl=C3=A4sing?= Date: Thu, 29 Dec 2022 22:26:20 +0100 Subject: [PATCH 3/3] Ensure languages in Options/Editor panels are alphabetically sorted The languages in the formatting and code completion panels are already alphabetically sorted by their display name. The comparator is pulled out of the individual implementations and also used in the folder based panels. --- .../options/editor/FolderBasedController.java | 12 ++++- .../CodeCompletionOptionsPanel.java | 16 +------ .../options/indentation/FormattingPanel.form | 5 -- .../options/indentation/FormattingPanel.java | 17 +------ .../options/util/LanguagesComparator.java | 46 +++++++++++++++++++ 5 files changed, 60 insertions(+), 36 deletions(-) create mode 100644 ide/options.editor/src/org/netbeans/modules/options/util/LanguagesComparator.java diff --git a/ide/options.editor/src/org/netbeans/modules/options/editor/FolderBasedController.java b/ide/options.editor/src/org/netbeans/modules/options/editor/FolderBasedController.java index 0f9871d35a09..823bf4ee1a55 100644 --- a/ide/options.editor/src/org/netbeans/modules/options/editor/FolderBasedController.java +++ b/ide/options.editor/src/org/netbeans/modules/options/editor/FolderBasedController.java @@ -21,9 +21,11 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -35,6 +37,7 @@ import org.netbeans.api.options.OptionsDisplayer; import org.netbeans.modules.editor.settings.storage.api.EditorSettings; import org.netbeans.modules.options.editor.spi.OptionsFilter; +import org.netbeans.modules.options.util.LanguagesComparator; import org.netbeans.spi.options.OptionsPanelController; import org.openide.util.HelpCtx; import org.openide.util.Lookup; @@ -239,8 +242,13 @@ protected void setCurrentSubcategory(String subpath) { Logger.getLogger(FolderBasedController.class.getName()).log(Level.WARNING, "setCurrentSubcategory: cannot open: {0}", subpath); } - Iterable getMimeTypes() { - return getMimeType2delegates ().keySet(); + /** + * @return Copy of the list of mime types sorted by display name + */ + List getMimeTypes() { + List mimeTypes = new ArrayList<>(getMimeType2delegates().keySet()); + mimeTypes.sort(LanguagesComparator.INSTANCE); + return mimeTypes; } OptionsPanelController getController(String mimeType) { diff --git a/ide/options.editor/src/org/netbeans/modules/options/editor/completion/CodeCompletionOptionsPanel.java b/ide/options.editor/src/org/netbeans/modules/options/editor/completion/CodeCompletionOptionsPanel.java index 54d4b30a4888..ed05424114ad 100644 --- a/ide/options.editor/src/org/netbeans/modules/options/editor/completion/CodeCompletionOptionsPanel.java +++ b/ide/options.editor/src/org/netbeans/modules/options/editor/completion/CodeCompletionOptionsPanel.java @@ -33,6 +33,7 @@ import org.netbeans.api.options.OptionsDisplayer; import org.netbeans.modules.editor.settings.storage.api.EditorSettings; import org.netbeans.modules.options.editor.spi.PreferencesCustomizer; +import org.netbeans.modules.options.util.LanguagesComparator; import org.netbeans.spi.options.OptionsPanelController; import org.openide.util.WeakListeners; @@ -82,7 +83,7 @@ public void setSelector(CodeCompletionOptionsSelector selector) { DefaultComboBoxModel model = new DefaultComboBoxModel<>(); ArrayList mimeTypes = new ArrayList(); mimeTypes.addAll(selector.getMimeTypes()); - Collections.sort(mimeTypes, new LanguagesComparator()); + Collections.sort(mimeTypes, LanguagesComparator.INSTANCE); for (String mimeType : mimeTypes) { model.addElement(mimeType); @@ -169,17 +170,4 @@ private void languageChanged(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ private javax.swing.JPanel panel; // End of variables declaration//GEN-END:variables - private static final class LanguagesComparator implements Comparator { - public int compare(String mimeType1, String mimeType2) { - if (mimeType1.length() == 0) - return mimeType2.length() == 0 ? 0 : -1; - if (mimeType2.length() == 0) - return 1; - - String langName1 = EditorSettings.getDefault().getLanguageName(mimeType1); - String langName2 = EditorSettings.getDefault().getLanguageName(mimeType2); - - return langName1.compareTo(langName2); - } - } } diff --git a/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.form b/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.form index 313332564871..2700797718c7 100644 --- a/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.form +++ b/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.form @@ -45,11 +45,6 @@ - - - - - diff --git a/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.java b/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.java index 83ea66642e7f..a3b31c5fb172 100644 --- a/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.java +++ b/ide/options.editor/src/org/netbeans/modules/options/indentation/FormattingPanel.java @@ -25,7 +25,6 @@ import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListCellRenderer; @@ -43,6 +42,7 @@ import org.netbeans.modules.editor.settings.storage.api.EditorSettings; import org.netbeans.modules.options.editor.spi.PreferencesCustomizer; import org.netbeans.modules.options.editor.spi.PreviewProvider; +import org.netbeans.modules.options.util.LanguagesComparator; import org.netbeans.spi.options.OptionsPanelController; import org.openide.util.NbBundle; import org.openide.util.WeakListeners; @@ -111,7 +111,7 @@ public void setSelector(CustomizerSelector selector) { DefaultComboBoxModel model = new DefaultComboBoxModel<>(); ArrayList mimeTypes = new ArrayList(); mimeTypes.addAll(selector.getMimeTypes()); - Collections.sort(mimeTypes, new LanguagesComparator()); + Collections.sort(mimeTypes, LanguagesComparator.INSTANCE); String preSelectMimeType = null; for (String mimeType : mimeTypes) { @@ -366,17 +366,4 @@ private void categoryChanged(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ private CustomizerSelector selector; private PropertyChangeListener weakListener; - private static final class LanguagesComparator implements Comparator { - public int compare(String mimeType1, String mimeType2) { - if (mimeType1.length() == 0) - return mimeType2.length() == 0 ? 0 : -1; - if (mimeType2.length() == 0) - return 1; - - String langName1 = EditorSettings.getDefault().getLanguageName(mimeType1); - String langName2 = EditorSettings.getDefault().getLanguageName(mimeType2); - - return langName1.compareTo(langName2); - } - } } diff --git a/ide/options.editor/src/org/netbeans/modules/options/util/LanguagesComparator.java b/ide/options.editor/src/org/netbeans/modules/options/util/LanguagesComparator.java new file mode 100644 index 000000000000..57647f9e8ac2 --- /dev/null +++ b/ide/options.editor/src/org/netbeans/modules/options/util/LanguagesComparator.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.netbeans.modules.options.util; + +import java.util.Comparator; +import org.netbeans.modules.editor.settings.storage.api.EditorSettings; + +/** + * Comparator sorting a list of mime types by their language display name + */ +public final class LanguagesComparator implements Comparator { + + public static final LanguagesComparator INSTANCE = new LanguagesComparator(); + + private LanguagesComparator() {} + + @Override + public int compare(String mimeType1, String mimeType2) { + if (mimeType1.length() == 0) { + return mimeType2.length() == 0 ? 0 : -1; + } + if (mimeType2.length() == 0) { + return 1; + } + String langName1 = EditorSettings.getDefault().getLanguageName(mimeType1); + String langName2 = EditorSettings.getDefault().getLanguageName(mimeType2); + return langName1.compareTo(langName2); + } + +}