You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2020/04/18 14:37:35 UTC

[netbeans] 01/01: Revert "[NETBEANS-4039] Added SPI for Preferred Color Profile Changes"

This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch revert-2039-NETBEANS-4039
in repository https://gitbox.apache.org/repos/asf/netbeans.git

commit 6738ea3f26d340543ff8abb53ba9708fb1123666
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sat Apr 18 07:37:22 2020 -0700

    Revert "[NETBEANS-4039] Added SPI for Preferred Color Profile Changes"
---
 ide/options.editor/nbproject/project.xml           |  9 ---
 .../modules/options/colors/ColorModel.java         | 19 +-----
 platform/core.windows/apichanges.xml               | 20 -------
 platform/core.windows/manifest.mf                  |  2 +-
 platform/core.windows/nbproject/project.xml        |  7 ++-
 .../netbeans/core/windows/options/LafPanel.java    | 70 ++++++++++++++++------
 .../options/spi/PreferredColorProfileSupport.java  | 50 ----------------
 7 files changed, 60 insertions(+), 117 deletions(-)

diff --git a/ide/options.editor/nbproject/project.xml b/ide/options.editor/nbproject/project.xml
index 47a637f..61f2d4f 100644
--- a/ide/options.editor/nbproject/project.xml
+++ b/ide/options.editor/nbproject/project.xml
@@ -26,15 +26,6 @@
             <code-name-base>org.netbeans.modules.options.editor</code-name-base>
             <module-dependencies>
                 <dependency>
-                    <code-name-base>org.netbeans.core.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>2</release-version>
-                        <specification-version>2.92</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
                     <code-name-base>org.netbeans.modules.editor</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
diff --git a/ide/options.editor/src/org/netbeans/modules/options/colors/ColorModel.java b/ide/options.editor/src/org/netbeans/modules/options/colors/ColorModel.java
index e1749de..dc98303 100644
--- a/ide/options.editor/src/org/netbeans/modules/options/colors/ColorModel.java
+++ b/ide/options.editor/src/org/netbeans/modules/options/colors/ColorModel.java
@@ -71,11 +71,9 @@ import org.openide.filesystems.FileUtil;
 import org.openide.text.CloneableEditorSupport;
 import org.openide.util.ImageUtilities;
 import org.openide.util.NbBundle;
-import org.openide.util.lookup.ServiceProvider;
-import org.netbeans.core.windows.options.spi.PreferredColorProfileSupport;
 
-@ServiceProvider(service = PreferredColorProfileSupport.class)
-public final class ColorModel implements PreferredColorProfileSupport {
+
+public final class ColorModel {
 
     private static final Logger LOG = Logger.getLogger(ColorModel.class.getName());
     
@@ -97,12 +95,6 @@ public final class ColorModel implements PreferredColorProfileSupport {
         return EditorSettings.getDefault().isCustomFontColorProfile (profile);
     }
     
-    @Override
-    public String getCurrentProfileName () {
-        String name = getCurrentProfile();
-        return isCustomProfile(name) ? null : name;
-    }
-    
     public void setCurrentProfile (String profile) {
         EditorSettings.getDefault().setCurrentFontColorProfile (profile);
     }
@@ -299,13 +291,6 @@ public final class ColorModel implements PreferredColorProfileSupport {
         return new Preview("test" + hashCode(), mimeType); //NOI18N
     }
 
-    @Override
-    public void setPreferredProfile(String profileName) {
-        setCurrentProfile(profileName);
-        Collection<AttributeSet> annotations = getAnnotations(profileName);
-        setAnnotations(profileName, annotations);
-    }
-
     final class Preview extends JPanel {
         
         static final String         PROP_CURRENT_ELEMENT = "currentAElement";
diff --git a/platform/core.windows/apichanges.xml b/platform/core.windows/apichanges.xml
index 10179c9..9fa948c 100644
--- a/platform/core.windows/apichanges.xml
+++ b/platform/core.windows/apichanges.xml
@@ -84,26 +84,6 @@ is the proper place.
 
   <changes>
 
-    <change id="preferred-color-profile-spi" >
-        <api name="winsys"/>
-        <summary>Add SPI support for preferred color profile change.</summary>
-        <version major="2" minor="91"/>
-        <date day="18" month="3" year="2020"/>
-        <author login="lkishalmi"/>
-        <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
-        <description>
-            A new interface <code>PreferredColorProfileSupport</code> has been
-            added in order to let other modules reflect on preferred color profile
-            change when the user requests for that during Look and Feel change.
-            Look and Feels can register a color profile name as <code>String</code>
-            named <code>nb.preferred.color.profile</code> in their UIDefaults.
-            Changing the Look and Feel would offer the user to change the color
-            profile of additional components (most likely the Editor), if it's
-            current profile does not match the one preferred by the
-            selected Look and Feel.
-        </description>
-        <issue number="NETBEANS-4039"/>
-    </change>
     <change id="sort-editor-tabs" >
         <api name="winsys"/>
         <summary>Add preference for sorting editor tabs</summary>
diff --git a/platform/core.windows/manifest.mf b/platform/core.windows/manifest.mf
index 92b06fe..0978ba6 100644
--- a/platform/core.windows/manifest.mf
+++ b/platform/core.windows/manifest.mf
@@ -6,5 +6,5 @@ OpenIDE-Module-Provides: org.netbeans.core.WindowSystem, org.openide.windows.Win
 OpenIDE-Module-Recommends: org.netbeans.core.windows.nativeaccess.NativeWindowSystem
 AutoUpdate-Show-In-Client: false
 AutoUpdate-Essential-Module: true
-OpenIDE-Module-Specification-Version: 2.92
+OpenIDE-Module-Specification-Version: 2.91
 
diff --git a/platform/core.windows/nbproject/project.xml b/platform/core.windows/nbproject/project.xml
index 9ef0018..4d647f2 100644
--- a/platform/core.windows/nbproject/project.xml
+++ b/platform/core.windows/nbproject/project.xml
@@ -208,12 +208,13 @@
                     </test-dependency>
                 </test-type>
             </test-dependencies>
-            <public-packages>
+            <friend-packages>
+                <friend>org.netbeans.core.multitabs</friend>
+                <friend>org.netbeans.core.nativeaccess</friend>
                 <package>org.netbeans.core.windows.nativeaccess</package>
                 <package>org.netbeans.core.windows.options</package>
-                <package>org.netbeans.core.windows.options.spi</package>
                 <package>org.netbeans.core.windows.view.ui.tabcontrol</package>
-            </public-packages>
+            </friend-packages>
         </data>
     </configuration>
 </project>
diff --git a/platform/core.windows/src/org/netbeans/core/windows/options/LafPanel.java b/platform/core.windows/src/org/netbeans/core/windows/options/LafPanel.java
index d94d2a0..08d949f 100644
--- a/platform/core.windows/src/org/netbeans/core/windows/options/LafPanel.java
+++ b/platform/core.windows/src/org/netbeans/core/windows/options/LafPanel.java
@@ -22,8 +22,10 @@ package org.netbeans.core.windows.options;
 import java.awt.BorderLayout;
 import java.awt.Cursor;
 import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.logging.Level;
@@ -39,7 +41,6 @@ import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.UIManager.LookAndFeelInfo;
 import javax.swing.UnsupportedLookAndFeelException;
-import org.netbeans.core.windows.options.spi.PreferredColorProfileSupport;
 import org.netbeans.spi.options.OptionsPanelController;
 import org.openide.LifecycleManager;
 import org.openide.awt.Notification;
@@ -57,6 +58,7 @@ public class LafPanel extends javax.swing.JPanel {
     
     private final Preferences prefs = NbPreferences.forModule(LafPanel.class);
     
+    private final boolean isAquaLaF = "Aqua".equals(UIManager.getLookAndFeel().getID()); //NOI18N
     private static final boolean NO_RESTART_ON_LAF_CHANGE = Boolean.getBoolean("nb.laf.norestart"); //NOI18N
     private int defaultLookAndFeelIndex;
     private final ArrayList<LookAndFeelInfo> lafs = new ArrayList<LookAndFeelInfo>( 10 );
@@ -65,8 +67,12 @@ public class LafPanel extends javax.swing.JPanel {
         this.controller = controller;
         initComponents();
         // TODO listen to changes in form fields and call controller.changed()
-        checkMaximizeNativeLaF.addItemListener((ItemEvent e) -> {
-            fireChanged();
+        checkMaximizeNativeLaF.addItemListener(new ItemListener() {
+
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                fireChanged();
+            }
         });
         initLookAndFeel();
         lblRestart.setVisible(!NO_RESTART_ON_LAF_CHANGE);
@@ -75,14 +81,21 @@ public class LafPanel extends javax.swing.JPanel {
             model.addElement( li.getName() );
         }
         comboLaf.setModel( model );
-        comboLaf.addItemListener((ItemEvent e) -> {
-            fireChanged();
+        comboLaf.addItemListener( new ItemListener() {
+
+            @Override
+            public void itemStateChanged( ItemEvent e ) {
+                fireChanged();
+            }
         });
     }
     
     private void fireChanged() {
-        boolean isChanged = checkMaximizeNativeLaF.isSelected() != prefs.getBoolean(WinSysPrefs.MAXIMIZE_NATIVE_LAF, false);
-        isChanged |= comboLaf.getSelectedIndex() != lafs.indexOf(isForcedLaF() ? getCurrentLaF() : getPreferredLaF());
+        boolean isChanged = false;
+        if (checkMaximizeNativeLaF.isSelected() != prefs.getBoolean(WinSysPrefs.MAXIMIZE_NATIVE_LAF, false)
+                || comboLaf.getSelectedIndex() != lafs.indexOf(isForcedLaF() ? getCurrentLaF() : getPreferredLaF())) {
+            isChanged = true;
+        }
         controller.changed(isChanged);
     }
 
@@ -242,31 +255,54 @@ public class LafPanel extends javax.swing.JPanel {
 
     void selectDarkLookAndFeel() {
         comboLaf.requestFocusInWindow();
-        SwingUtilities.invokeLater(() -> {
-            comboLaf.setPopupVisible( true );
+        SwingUtilities.invokeLater( new Runnable() {
+
+            @Override
+            public void run() {
+                comboLaf.setPopupVisible( true );
+            }
         });
     }
 
+    //Use reflection to instantiate ColorModel class and get/set the current profile
+    private static final String COLOR_MODEL_CLASS_NAME = "org.netbeans.modules.options.colors.ColorModel"; //NOI18N
+
     private boolean isChangeEditorColorsPossible() {
         String preferredProfile = getPreferredColorProfile();
         if( preferredProfile == null )
             return false;
-        boolean ret = false;
-        Collection<? extends PreferredColorProfileSupport> supports = Lookup.getDefault().lookupAll(PreferredColorProfileSupport.class);
-        for (PreferredColorProfileSupport support : supports) {
-            ret |= !preferredProfile.equals(support.getCurrentProfileName());
+        ClassLoader cl = Lookup.getDefault().lookup( ClassLoader.class );
+        if( null == cl )
+            cl = LafPanel.class.getClassLoader();
+        try {
+            Class klz = cl.loadClass( COLOR_MODEL_CLASS_NAME );
+            Object colorModel = klz.newInstance();
+            Method m = klz.getDeclaredMethod( "getCurrentProfile", new Class[0] ); //NOI18N
+            Object res = m.invoke( colorModel, new Object[0] );
+            return res != null && !preferredProfile.equals( res );
+        } catch( Exception ex ) {
+            //ignore
         }
-        return ret;
+        return false;
     }
 
     private void switchEditorColorsProfile() {
         if( !isChangeEditorColorsPossible() )
             return;
         String preferredProfile = getPreferredColorProfile();
+
+        ClassLoader cl = Lookup.getDefault().lookup( ClassLoader.class );
+        if( null == cl )
+            cl = LafPanel.class.getClassLoader();
         try {
-            Lookup.getDefault().lookupAll(PreferredColorProfileSupport.class).forEach((supp) -> {
-                supp.setPreferredProfile(preferredProfile);
-            });
+            Class klz = cl.loadClass( COLOR_MODEL_CLASS_NAME );
+            Object colorModel = klz.newInstance();
+            Method m = klz.getDeclaredMethod( "getAnnotations", String.class ); //NOI18N
+            Object annotations = m.invoke( colorModel, preferredProfile );
+            m = klz.getDeclaredMethod( "setAnnotations", String.class, Collection.class ); //NOI18N
+            m.invoke( colorModel, preferredProfile, annotations );
+            m = klz.getDeclaredMethod( "setCurrentProfile", String.class ); //NOI18N
+            m.invoke( colorModel, preferredProfile );
         } catch( Exception ex ) {
             //ignore
             Logger.getLogger( LafPanel.class.getName() ).log( Level.INFO, "Cannot change editor colors profile.", ex ); //NOI18N
diff --git a/platform/core.windows/src/org/netbeans/core/windows/options/spi/PreferredColorProfileSupport.java b/platform/core.windows/src/org/netbeans/core/windows/options/spi/PreferredColorProfileSupport.java
deleted file mode 100644
index f4bb946..0000000
--- a/platform/core.windows/src/org/netbeans/core/windows/options/spi/PreferredColorProfileSupport.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.core.windows.options.spi;
-
-/**
- * Whenever a component supports color profiles it can implement this interface
- * in order to be updated when LaF change requested with a color profile change.
- *
- * @author lkishalmi
- * @since 2.92
- */
-public interface PreferredColorProfileSupport {
-    /**
-     * This method shall try to set the current color profile of the supported
-     * component according to the provided profile name. The default profile
-     * name is usually called {@code "NetBeans"}.
-     *
-     * @param profileName the color profile name to be set.
-     * @since 2.92
-     */
-    void setPreferredProfile(String profileName);
-
-    /**
-     * This method shall return the name of the current color profile used by
-     * the implementation. It can return <code>null</code> if this information
-     * cannot be determined (e.g. some user customized profile is in use). In
-     * that case the color profile change option will always be presented to
-     * the user.
-     *
-     * @return the current color profile name or <code>null</code>.
-     * @since 2.92
-     */
-    String getCurrentProfileName();
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists