Skip to content

Commit

Permalink
Revert "JBR-7232 Refactor deriveFontWithFeatures & JBRFileDialog JBR …
Browse files Browse the repository at this point in the history
…API"

This reverts commit c430c1e.
  • Loading branch information
vprovodin committed Jun 1, 2024
1 parent 3f91b5c commit 9bffde9
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 139 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/*
* Copyright 2000-2023 JetBrains s.r.o.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

package com.jetbrains.desktop;

import com.jetbrains.internal.JBRApi;

import java.awt.*;
import java.lang.invoke.MethodHandles;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

public class FontExtensions {
private interface FontExtension {
FontExtension INSTANCE = (FontExtension) JBRApi.internalServiceBuilder(MethodHandles.lookup())
.withStatic("getFeatures", "getFeatures", "java.awt.Font")
.withStatic("isComplexRendering", "isComplexRendering", "java.awt.Font")
.withStatic("isKerning", "isKerning", "java.awt.Font")
.build();

TreeMap<String, Integer> getFeatures(Font font);
boolean isComplexRendering(Font font);
boolean isKerning(Font font);
}

public static String[] featuresToStringArray(Map<String, Integer> features) {
return features.entrySet().stream().map(feature -> (feature.getKey() + "=" + feature.getValue())).
toArray(String[]::new);
}

public static TreeMap<String, Integer> getFeatures(Font font) {
return FontExtension.INSTANCE.getFeatures(font);
}

public static boolean isComplexRendering(Font font) {
return FontExtension.INSTANCE.isComplexRendering(font);
}

public static boolean isKerning(Font font) {
return FontExtension.INSTANCE.isKerning(font);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ public class JBRApiModule {
.withStatic("getSubpixelResolution", "getSubpixelResolution", "sun.font.FontUtilities")
.withStatic("deriveFontWithFeatures", "deriveFont", "java.awt.Font")
.withStatic("getAvailableFeatures", "getAvailableFeatures", "java.awt.Font")
.withStatic("getEnabledFeatures", "getEnabledFeatures", "java.awt.Font")
.service("com.jetbrains.FontOpenTypeFeatures")
.withStatic("getAvailableFeatures", "getAvailableFeatures", "java.awt.Font")
.clientProxy("java.awt.Font$Features", "com.jetbrains.FontExtensions$Features")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.awt.*;
import java.util.Objects;

public class JBRFileDialog implements Serializable {

Expand All @@ -26,19 +25,28 @@ public static JBRFileDialog get(FileDialog dialog) {
return (JBRFileDialog) getter.get(dialog);
}

/**
* Whether to select files, directories or both (used when common file dialogs are enabled on Windows, or on macOS)
*/
@Native public static final int SELECT_FILES_HINT = 1, SELECT_DIRECTORIES_HINT = 2;
/**
* Whether to allow creating directories or not (used on macOS)
*/
@Native public static final int CREATE_DIRECTORIES_HINT = 4;

public static final String OPEN_FILE_BUTTON_KEY = "jbrFileDialogOpenFile";
public static final String OPEN_DIRECTORY_BUTTON_KEY = "jbrFileDialogSelectDir";
public static final String ALL_FILES_COMBO_KEY = "jbrFileDialogAllFiles";

public int hints = CREATE_DIRECTORIES_HINT;

/**
* Text for "Open" button (used when common file dialogs are enabled on
* Windows).
*/
public String openButtonText;

/**
* Text for "Select Folder" button (used when common file dialogs are
* enabled on Windows).
*/
public String selectFolderButtonText;
public String allFilesFilterDescription;
public String fileFilterDescription;
public String[] fileFilterExtensions;

public void setHints(int hints) {
this.hints = hints;
Expand All @@ -47,23 +55,9 @@ public int getHints() {
return hints;
}

public void setLocalizationString(String key, String text) {
Objects.requireNonNull(key);
switch (key) {
case OPEN_FILE_BUTTON_KEY -> openButtonText = text;
case OPEN_DIRECTORY_BUTTON_KEY -> selectFolderButtonText = text;
case ALL_FILES_COMBO_KEY -> allFilesFilterDescription = text;
default -> throw new IllegalArgumentException("unrecognized key: " + key);
}
}

public void setLocalizationStrings(String openButtonText, String selectFolderButtonText) {
setLocalizationString(OPEN_FILE_BUTTON_KEY, openButtonText);
setLocalizationString(OPEN_DIRECTORY_BUTTON_KEY, selectFolderButtonText);
this.openButtonText = openButtonText;
this.selectFolderButtonText = selectFolderButtonText;
}

public void setFileFilterExtensions(String fileFilterDescription, String[] fileFilterExtensions) {
this.fileFilterDescription = fileFilterDescription;
this.fileFilterExtensions = fileFilterExtensions;
}
}
Loading

0 comments on commit 9bffde9

Please sign in to comment.