mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-27 03:46:17 -06:00
Merge main into system-file-chooser
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
|
||||
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
|
||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||
|
||||
@@ -179,14 +179,10 @@ class BasicComponentsPanel
|
||||
JScrollPane scrollPane12 = new JScrollPane();
|
||||
JTextPane textPane4 = new JTextPane();
|
||||
JTextPane textPane5 = new JTextPane();
|
||||
JLabel errorHintsLabel = new JLabel();
|
||||
JLabel hintsLabel = new JLabel();
|
||||
JTextField errorHintsTextField = new JTextField();
|
||||
JComboBox<String> errorHintsComboBox = new JComboBox<>();
|
||||
JSpinner errorHintsSpinner = new JSpinner();
|
||||
JLabel warningHintsLabel = new JLabel();
|
||||
JTextField warningHintsTextField = new JTextField();
|
||||
JComboBox<String> warningHintsComboBox = new JComboBox<>();
|
||||
JSpinner warningHintsSpinner = new JSpinner();
|
||||
JTextField successHintsTextField = new JTextField();
|
||||
JLabel iconsLabel = new JLabel();
|
||||
leadingIconTextField = new JTextField();
|
||||
trailingIconTextField = new JTextField();
|
||||
@@ -241,7 +237,6 @@ class BasicComponentsPanel
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]0" +
|
||||
"[]"));
|
||||
|
||||
@@ -698,145 +693,122 @@ class BasicComponentsPanel
|
||||
textPane5.setText("No scroll pane");
|
||||
add(textPane5, "cell 5 11,growx");
|
||||
|
||||
//---- errorHintsLabel ----
|
||||
errorHintsLabel.setText("Error hints:");
|
||||
add(errorHintsLabel, "cell 0 12");
|
||||
//---- hintsLabel ----
|
||||
hintsLabel.setText("Error/warning/success:");
|
||||
add(hintsLabel, "cell 0 12");
|
||||
|
||||
//---- errorHintsTextField ----
|
||||
errorHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR);
|
||||
add(errorHintsTextField, "cell 1 12,growx");
|
||||
|
||||
//---- errorHintsComboBox ----
|
||||
errorHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR);
|
||||
errorHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"Editable"
|
||||
}));
|
||||
errorHintsComboBox.setEditable(true);
|
||||
add(errorHintsComboBox, "cell 2 12,growx");
|
||||
|
||||
//---- errorHintsSpinner ----
|
||||
errorHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR);
|
||||
add(errorHintsSpinner, "cell 3 12,growx");
|
||||
|
||||
//---- warningHintsLabel ----
|
||||
warningHintsLabel.setText("Warning hints:");
|
||||
add(warningHintsLabel, "cell 0 13");
|
||||
|
||||
//---- warningHintsTextField ----
|
||||
warningHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING);
|
||||
add(warningHintsTextField, "cell 1 13,growx");
|
||||
add(warningHintsTextField, "cell 2 12,growx");
|
||||
|
||||
//---- warningHintsComboBox ----
|
||||
warningHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING);
|
||||
warningHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"Not editable"
|
||||
}));
|
||||
add(warningHintsComboBox, "cell 2 13,growx");
|
||||
|
||||
//---- warningHintsSpinner ----
|
||||
warningHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING);
|
||||
add(warningHintsSpinner, "cell 3 13,growx");
|
||||
//---- successHintsTextField ----
|
||||
successHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, "success");
|
||||
add(successHintsTextField, "cell 3 12,growx");
|
||||
|
||||
//---- iconsLabel ----
|
||||
iconsLabel.setText("Leading/trailing icons:");
|
||||
add(iconsLabel, "cell 0 14");
|
||||
add(leadingIconTextField, "cell 1 14,growx");
|
||||
add(iconsLabel, "cell 0 13");
|
||||
add(leadingIconTextField, "cell 1 13,growx");
|
||||
|
||||
//---- trailingIconTextField ----
|
||||
trailingIconTextField.setText("text");
|
||||
add(trailingIconTextField, "cell 2 14,growx");
|
||||
add(trailingIconTextField, "cell 2 13,growx");
|
||||
|
||||
//---- iconsTextField ----
|
||||
iconsTextField.setText("text");
|
||||
add(iconsTextField, "cell 3 14,growx");
|
||||
add(iconsTextField, "cell 3 13,growx");
|
||||
|
||||
//---- compsLabel ----
|
||||
compsLabel.setText("Leading/trailing comp.:");
|
||||
add(compsLabel, "cell 0 15");
|
||||
add(compsTextField, "cell 1 15 2 1,growx");
|
||||
add(compsLabel, "cell 0 14");
|
||||
add(compsTextField, "cell 1 14 2 1,growx");
|
||||
|
||||
//---- clearTextField ----
|
||||
clearTextField.setText("clear me");
|
||||
add(clearTextField, "cell 3 15,growx");
|
||||
add(clearTextField, "cell 3 14,growx");
|
||||
|
||||
//---- fontsLabel ----
|
||||
fontsLabel.setText("Typography / Fonts:");
|
||||
add(fontsLabel, "cell 0 16");
|
||||
add(fontsLabel, "cell 0 15");
|
||||
|
||||
//---- h00Label ----
|
||||
h00Label.setText("H00");
|
||||
h00Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h00");
|
||||
add(h00Label, "cell 1 16 5 1");
|
||||
add(h00Label, "cell 1 15 5 1");
|
||||
|
||||
//---- h0Label ----
|
||||
h0Label.setText("H0");
|
||||
h0Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h0");
|
||||
add(h0Label, "cell 1 16 5 1");
|
||||
add(h0Label, "cell 1 15 5 1");
|
||||
|
||||
//---- h1Label ----
|
||||
h1Label.setText("H1");
|
||||
h1Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h1");
|
||||
add(h1Label, "cell 1 16 5 1");
|
||||
add(h1Label, "cell 1 15 5 1");
|
||||
|
||||
//---- h2Label ----
|
||||
h2Label.setText("H2");
|
||||
h2Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h2");
|
||||
add(h2Label, "cell 1 16 5 1");
|
||||
add(h2Label, "cell 1 15 5 1");
|
||||
|
||||
//---- h3Label ----
|
||||
h3Label.setText("H3");
|
||||
h3Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h3");
|
||||
add(h3Label, "cell 1 16 5 1");
|
||||
add(h3Label, "cell 1 15 5 1");
|
||||
|
||||
//---- h4Label ----
|
||||
h4Label.setText("H4");
|
||||
h4Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h4");
|
||||
add(h4Label, "cell 1 16 5 1");
|
||||
add(h4Label, "cell 1 15 5 1");
|
||||
|
||||
//---- lightLabel ----
|
||||
lightLabel.setText("light");
|
||||
lightLabel.putClientProperty(FlatClientProperties.STYLE, "font: 200% $light.font");
|
||||
add(lightLabel, "cell 1 16 5 1,gapx 30");
|
||||
add(lightLabel, "cell 1 15 5 1,gapx 30");
|
||||
|
||||
//---- semiboldLabel ----
|
||||
semiboldLabel.setText("semibold");
|
||||
semiboldLabel.putClientProperty(FlatClientProperties.STYLE, "font: 200% $semibold.font");
|
||||
add(semiboldLabel, "cell 1 16 5 1");
|
||||
add(semiboldLabel, "cell 1 15 5 1");
|
||||
|
||||
//---- fontZoomLabel ----
|
||||
fontZoomLabel.setText("(200%)");
|
||||
fontZoomLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small");
|
||||
fontZoomLabel.setEnabled(false);
|
||||
add(fontZoomLabel, "cell 1 16 5 1");
|
||||
add(fontZoomLabel, "cell 1 15 5 1");
|
||||
|
||||
//---- largeLabel ----
|
||||
largeLabel.setText("large");
|
||||
largeLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "large");
|
||||
add(largeLabel, "cell 1 17 5 1");
|
||||
add(largeLabel, "cell 1 16 5 1");
|
||||
|
||||
//---- defaultLabel ----
|
||||
defaultLabel.setText("default");
|
||||
add(defaultLabel, "cell 1 17 5 1");
|
||||
add(defaultLabel, "cell 1 16 5 1");
|
||||
|
||||
//---- mediumLabel ----
|
||||
mediumLabel.setText("medium");
|
||||
mediumLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "medium");
|
||||
add(mediumLabel, "cell 1 17 5 1");
|
||||
add(mediumLabel, "cell 1 16 5 1");
|
||||
|
||||
//---- smallLabel ----
|
||||
smallLabel.setText("small");
|
||||
smallLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small");
|
||||
add(smallLabel, "cell 1 17 5 1");
|
||||
add(smallLabel, "cell 1 16 5 1");
|
||||
|
||||
//---- miniLabel ----
|
||||
miniLabel.setText("mini");
|
||||
miniLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "mini");
|
||||
add(miniLabel, "cell 1 17 5 1");
|
||||
add(miniLabel, "cell 1 16 5 1");
|
||||
|
||||
//---- monospacedLabel ----
|
||||
monospacedLabel.setText("monospaced");
|
||||
monospacedLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "monospaced");
|
||||
add(monospacedLabel, "cell 1 17 5 1,gapx 30");
|
||||
add(monospacedLabel, "cell 1 16 5 1,gapx 30");
|
||||
|
||||
//======== popupMenu1 ========
|
||||
{
|
||||
@@ -875,8 +847,7 @@ class BasicComponentsPanel
|
||||
editorPaneLabel, scrollPane5, scrollPane6, scrollPane7, scrollPane8, editorPane5,
|
||||
textPaneLabel, scrollPane9, scrollPane10, scrollPane11, scrollPane12, textPane5,
|
||||
|
||||
errorHintsLabel, errorHintsTextField, errorHintsComboBox, errorHintsSpinner,
|
||||
warningHintsLabel, warningHintsTextField, warningHintsComboBox, warningHintsSpinner,
|
||||
hintsLabel, errorHintsTextField, warningHintsTextField, successHintsTextField,
|
||||
|
||||
fontZoomLabel,
|
||||
};
|
||||
@@ -899,8 +870,7 @@ class BasicComponentsPanel
|
||||
rows[11].setGapBefore( zeroGap );
|
||||
rows[11].setGapAfter( zeroGap );
|
||||
rows[12].setGapBefore( zeroGap );
|
||||
rows[13].setGapBefore( zeroGap );
|
||||
rows[16].setGapBefore( zeroGap );
|
||||
rows[15].setGapBefore( zeroGap );
|
||||
layout.setRowConstraints( ac );
|
||||
|
||||
// move two text field into same row as spinners
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
JFDML JFormDesigner: "7.0.5.0.404" Java: "17" encoding: "UTF-8"
|
||||
JFDML JFormDesigner: "8.3" encoding: "UTF-8"
|
||||
|
||||
new FormModel {
|
||||
contentType: "form/swing"
|
||||
@@ -9,7 +9,7 @@ new FormModel {
|
||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||
"$layoutConstraints": "insets dialog,hidemode 3"
|
||||
"$columnConstraints": "[][sizegroup 1][sizegroup 1][sizegroup 1][][]"
|
||||
"$rowConstraints": "[][][][][][][][][][][][]para[][][][][]0[]"
|
||||
"$rowConstraints": "[][][][][][][][][][][][]para[][][][]0[]"
|
||||
} ) {
|
||||
name: "this"
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
@@ -595,8 +595,8 @@ new FormModel {
|
||||
"value": "cell 5 11,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "errorHintsLabel"
|
||||
"text": "Error hints:"
|
||||
name: "hintsLabel"
|
||||
"text": "Error/warning/success:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 12"
|
||||
} )
|
||||
@@ -606,56 +606,23 @@ new FormModel {
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 12,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "errorHintsComboBox"
|
||||
"$client.JComponent.outline": "error"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "Editable"
|
||||
addElement( "Editable" )
|
||||
}
|
||||
"editable": true
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 2 12,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JSpinner" ) {
|
||||
name: "errorHintsSpinner"
|
||||
"$client.JComponent.outline": "error"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 3 12,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "warningHintsLabel"
|
||||
"text": "Warning hints:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 13"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "warningHintsTextField"
|
||||
"$client.JComponent.outline": "warning"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 13,growx"
|
||||
"value": "cell 2 12,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "warningHintsComboBox"
|
||||
"$client.JComponent.outline": "warning"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "Not editable"
|
||||
addElement( "Not editable" )
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "successHintsTextField"
|
||||
"$client.JComponent.outline": "success"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 2 13,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JSpinner" ) {
|
||||
name: "warningHintsSpinner"
|
||||
"$client.JComponent.outline": "warning"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 3 13,growx"
|
||||
"value": "cell 3 12,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "iconsLabel"
|
||||
"text": "Leading/trailing icons:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 14"
|
||||
"value": "cell 0 13"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "leadingIconTextField"
|
||||
@@ -663,7 +630,7 @@ new FormModel {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 14,growx"
|
||||
"value": "cell 1 13,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "trailingIconTextField"
|
||||
@@ -672,7 +639,7 @@ new FormModel {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 2 14,growx"
|
||||
"value": "cell 2 13,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "iconsTextField"
|
||||
@@ -681,13 +648,13 @@ new FormModel {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 3 14,growx"
|
||||
"value": "cell 3 13,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "compsLabel"
|
||||
"text": "Leading/trailing comp.:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 15"
|
||||
"value": "cell 0 14"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "compsTextField"
|
||||
@@ -695,7 +662,7 @@ new FormModel {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 15 2 1,growx"
|
||||
"value": "cell 1 14 2 1,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "clearTextField"
|
||||
@@ -704,69 +671,69 @@ new FormModel {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 3 15,growx"
|
||||
"value": "cell 3 14,growx"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "fontsLabel"
|
||||
"text": "Typography / Fonts:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 16"
|
||||
"value": "cell 0 15"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "h00Label"
|
||||
"text": "H00"
|
||||
"$client.FlatLaf.styleClass": "h00"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "h0Label"
|
||||
"text": "H0"
|
||||
"$client.FlatLaf.styleClass": "h0"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "h1Label"
|
||||
"text": "H1"
|
||||
"$client.FlatLaf.styleClass": "h1"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "h2Label"
|
||||
"text": "H2"
|
||||
"$client.FlatLaf.styleClass": "h2"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "h3Label"
|
||||
"text": "H3"
|
||||
"$client.FlatLaf.styleClass": "h3"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "h4Label"
|
||||
"text": "H4"
|
||||
"$client.FlatLaf.styleClass": "h4"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "lightLabel"
|
||||
"text": "light"
|
||||
"$client.FlatLaf.style": "font: 200% $light.font"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1,gapx 30"
|
||||
"value": "cell 1 15 5 1,gapx 30"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "semiboldLabel"
|
||||
"text": "semibold"
|
||||
"$client.FlatLaf.style": "font: 200% $semibold.font"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "fontZoomLabel"
|
||||
@@ -774,52 +741,52 @@ new FormModel {
|
||||
"$client.FlatLaf.styleClass": "small"
|
||||
"enabled": false
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 16 5 1"
|
||||
"value": "cell 1 15 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "largeLabel"
|
||||
"text": "large"
|
||||
"$client.FlatLaf.styleClass": "large"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 17 5 1"
|
||||
"value": "cell 1 16 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "defaultLabel"
|
||||
"text": "default"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 17 5 1"
|
||||
"value": "cell 1 16 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "mediumLabel"
|
||||
"text": "medium"
|
||||
"$client.FlatLaf.styleClass": "medium"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 17 5 1"
|
||||
"value": "cell 1 16 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "smallLabel"
|
||||
"text": "small"
|
||||
"$client.FlatLaf.styleClass": "small"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 17 5 1"
|
||||
"value": "cell 1 16 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "miniLabel"
|
||||
"text": "mini"
|
||||
"$client.FlatLaf.styleClass": "mini"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 17 5 1"
|
||||
"value": "cell 1 16 5 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "monospacedLabel"
|
||||
"text": "monospaced"
|
||||
"$client.FlatLaf.styleClass": "monospaced"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 17 5 1,gapx 30"
|
||||
"value": "cell 1 16 5 1,gapx 30"
|
||||
} )
|
||||
}, new FormLayoutConstraints( null ) {
|
||||
"location": new java.awt.Point( 0, 0 )
|
||||
"size": new java.awt.Dimension( 920, 550 )
|
||||
"size": new java.awt.Dimension( 840, 565 )
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) {
|
||||
name: "popupMenu1"
|
||||
@@ -839,7 +806,7 @@ new FormModel {
|
||||
"mnemonic": 80
|
||||
} )
|
||||
}, new FormLayoutConstraints( null ) {
|
||||
"location": new java.awt.Point( 0, 570 )
|
||||
"location": new java.awt.Point( 0, 605 )
|
||||
"size": new java.awt.Dimension( 91, 87 )
|
||||
} )
|
||||
}
|
||||
|
||||
@@ -156,6 +156,9 @@ class ControlBar
|
||||
// register Alt+Shift+F1, F2, ... keys to change system scale factor
|
||||
DemoPrefs.registerSystemScaleFactors( frame );
|
||||
|
||||
// register Alt+Shift+S to enable/disable interprocess Laf sync
|
||||
DemoPrefs.initLafSync( frame );
|
||||
|
||||
// register ESC key to close frame
|
||||
((JComponent)frame.getContentPane()).registerKeyboardAction(
|
||||
e -> {
|
||||
|
||||
@@ -252,7 +252,7 @@ class DataComponentsPanel
|
||||
"[]" +
|
||||
"[150,grow,sizegroup 1,fill]" +
|
||||
"[150,grow,sizegroup 1,fill]" +
|
||||
"[150,grow,sizegroup 1,fill]"));
|
||||
"[150,grow,fill]"));
|
||||
|
||||
//---- label1 ----
|
||||
label1.setText("Square Selection");
|
||||
|
||||
@@ -9,7 +9,7 @@ new FormModel {
|
||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||
"$layoutConstraints": "insets dialog,hidemode 3"
|
||||
"$columnConstraints": "[][150,fill][150,fill][150,fill][fill]"
|
||||
"$rowConstraints": "[][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill]"
|
||||
"$rowConstraints": "[][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,fill]"
|
||||
} ) {
|
||||
name: "this"
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
|
||||
@@ -16,8 +16,15 @@
|
||||
|
||||
package com.formdev.flatlaf.demo;
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.InetAddress;
|
||||
import java.net.MulticastSocket;
|
||||
import java.net.SocketException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.prefs.Preferences;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFrame;
|
||||
@@ -28,7 +35,6 @@ import com.formdev.flatlaf.FlatLaf;
|
||||
import com.formdev.flatlaf.FlatLightLaf;
|
||||
import com.formdev.flatlaf.FlatPropertiesLaf;
|
||||
import com.formdev.flatlaf.IntelliJTheme;
|
||||
import com.formdev.flatlaf.demo.intellijthemes.IJThemesPanel;
|
||||
import com.formdev.flatlaf.util.LoggingFacade;
|
||||
import com.formdev.flatlaf.util.StringUtils;
|
||||
import com.formdev.flatlaf.util.SystemInfo;
|
||||
@@ -38,14 +44,10 @@ import com.formdev.flatlaf.util.SystemInfo;
|
||||
*/
|
||||
public class DemoPrefs
|
||||
{
|
||||
public static final String KEY_LAF = "laf";
|
||||
public static final String KEY_LAF_THEME = "lafTheme";
|
||||
public static final String KEY_LAF_CLASS_NAME = "lafClassName";
|
||||
public static final String KEY_LAF_THEME_FILE = "lafThemeFile";
|
||||
public static final String KEY_SYSTEM_SCALE_FACTOR = "systemScaleFactor";
|
||||
|
||||
public static final String RESOURCE_PREFIX = "res:";
|
||||
public static final String FILE_PREFIX = "file:";
|
||||
|
||||
public static final String THEME_UI_KEY = "__FlatLaf.demo.theme";
|
||||
public static final String KEY_LAF_SYNC = "lafSync";
|
||||
|
||||
private static Preferences state;
|
||||
|
||||
@@ -58,37 +60,14 @@ public class DemoPrefs
|
||||
}
|
||||
|
||||
public static void setupLaf( String[] args ) {
|
||||
// com.formdev.flatlaf.demo.intellijthemes.IJThemesDump.install();
|
||||
|
||||
// set look and feel
|
||||
try {
|
||||
if( args.length > 0 )
|
||||
UIManager.setLookAndFeel( args[0] );
|
||||
else {
|
||||
String lafClassName = state.get( KEY_LAF, FlatLightLaf.class.getName() );
|
||||
if( IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) ) {
|
||||
String theme = state.get( KEY_LAF_THEME, "" );
|
||||
if( theme.startsWith( RESOURCE_PREFIX ) )
|
||||
IntelliJTheme.setup( IJThemesPanel.class.getResourceAsStream( IJThemesPanel.THEMES_PACKAGE + theme.substring( RESOURCE_PREFIX.length() ) ) );
|
||||
else if( theme.startsWith( FILE_PREFIX ) )
|
||||
FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( theme.substring( FILE_PREFIX.length() ) ) ) );
|
||||
else
|
||||
FlatLightLaf.setup();
|
||||
|
||||
if( !theme.isEmpty() )
|
||||
UIManager.getLookAndFeelDefaults().put( THEME_UI_KEY, theme );
|
||||
} else if( FlatPropertiesLaf.class.getName().equals( lafClassName ) ) {
|
||||
String theme = state.get( KEY_LAF_THEME, "" );
|
||||
if( theme.startsWith( FILE_PREFIX ) ) {
|
||||
File themeFile = new File( theme.substring( FILE_PREFIX.length() ) );
|
||||
String themeName = StringUtils.removeTrailing( themeFile.getName(), ".properties" );
|
||||
FlatLaf.setup( new FlatPropertiesLaf( themeName, themeFile ) );
|
||||
} else
|
||||
FlatLightLaf.setup();
|
||||
|
||||
if( !theme.isEmpty() )
|
||||
UIManager.getLookAndFeelDefaults().put( THEME_UI_KEY, theme );
|
||||
} else
|
||||
UIManager.setLookAndFeel( lafClassName );
|
||||
}
|
||||
else
|
||||
restoreLaf();
|
||||
} catch( Throwable ex ) {
|
||||
LoggingFacade.INSTANCE.logSevere( null, ex );
|
||||
|
||||
@@ -98,16 +77,44 @@ public class DemoPrefs
|
||||
|
||||
// remember active look and feel
|
||||
UIManager.addPropertyChangeListener( e -> {
|
||||
if( "lookAndFeel".equals( e.getPropertyName() ) )
|
||||
state.put( KEY_LAF, UIManager.getLookAndFeel().getClass().getName() );
|
||||
if( "lookAndFeel".equals( e.getPropertyName() ) ) {
|
||||
state.put( KEY_LAF_CLASS_NAME, UIManager.getLookAndFeel().getClass().getName() );
|
||||
notifyLafChange();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
private static void restoreLaf()
|
||||
throws Exception
|
||||
{
|
||||
String lafClassName = state.get( KEY_LAF_CLASS_NAME, FlatLightLaf.class.getName() );
|
||||
if( FlatPropertiesLaf.class.getName().equals( lafClassName ) ||
|
||||
IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) )
|
||||
{
|
||||
String themeFileName = state.get( KEY_LAF_THEME_FILE, "" );
|
||||
if( !themeFileName.isEmpty() ) {
|
||||
File themeFile = new File( themeFileName );
|
||||
|
||||
if( themeFileName.endsWith( ".properties" ) ) {
|
||||
String themeName = StringUtils.removeTrailing( themeFile.getName(), ".properties" );
|
||||
FlatLaf.setup( new FlatPropertiesLaf( themeName, themeFile ) );
|
||||
} else
|
||||
FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( themeFile ) ) );
|
||||
} else
|
||||
FlatLightLaf.setup();
|
||||
} else
|
||||
UIManager.setLookAndFeel( lafClassName );
|
||||
}
|
||||
|
||||
public static void initSystemScale() {
|
||||
if( System.getProperty( "sun.java2d.uiScale" ) == null ) {
|
||||
String scaleFactor = getState().get( KEY_SYSTEM_SCALE_FACTOR, null );
|
||||
if( scaleFactor != null )
|
||||
String scaleFactor = state.get( KEY_SYSTEM_SCALE_FACTOR, null );
|
||||
if( scaleFactor != null ) {
|
||||
System.setProperty( "sun.java2d.uiScale", scaleFactor );
|
||||
|
||||
System.out.println( "FlatLaf: setting 'sun.java2d.uiScale' to " + scaleFactor );
|
||||
System.out.println( " use 'Alt+Shift+F1...12' to change it to 1x...4x" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,10 +165,113 @@ public class DemoPrefs
|
||||
return;
|
||||
|
||||
if( scaleFactor != null )
|
||||
DemoPrefs.getState().put( KEY_SYSTEM_SCALE_FACTOR, scaleFactor );
|
||||
state.put( KEY_SYSTEM_SCALE_FACTOR, scaleFactor );
|
||||
else
|
||||
DemoPrefs.getState().remove( KEY_SYSTEM_SCALE_FACTOR );
|
||||
state.remove( KEY_SYSTEM_SCALE_FACTOR );
|
||||
|
||||
System.exit( 0 );
|
||||
}
|
||||
|
||||
//---- inter-process Laf change notification/synchronisation --------------
|
||||
|
||||
// used for FlatLaf development when running multiple testing apps
|
||||
|
||||
private static final String MULTICAST_ADDRESS = "224.63.31.41";
|
||||
private static final int MULTICAST_PORT = 36584;
|
||||
private static final long PROCESS_ID = System.nanoTime();
|
||||
|
||||
private static Thread thread;
|
||||
private static boolean notifyEnabled = true;
|
||||
|
||||
public static void initLafSync( JFrame frame ) {
|
||||
((JComponent)frame.getContentPane()).registerKeyboardAction(
|
||||
e -> enableDisableLafSync(),
|
||||
KeyStroke.getKeyStroke( "alt shift S" ),
|
||||
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
|
||||
|
||||
if( state.getBoolean( KEY_LAF_SYNC, false ) ) {
|
||||
System.out.println( "FlatLaf: theme sync enabled; use Alt+Shift+S to disable it" );
|
||||
listenToLafChange();
|
||||
}
|
||||
}
|
||||
|
||||
private static void enableDisableLafSync() {
|
||||
boolean enabled = !state.getBoolean( KEY_LAF_SYNC, false );
|
||||
state.putBoolean( KEY_LAF_SYNC, enabled );
|
||||
|
||||
if( enabled )
|
||||
listenToLafChange();
|
||||
else if( thread != null) {
|
||||
thread.interrupt();
|
||||
thread = null;
|
||||
}
|
||||
}
|
||||
|
||||
private static void listenToLafChange() {
|
||||
if( thread != null )
|
||||
return;
|
||||
|
||||
thread = new Thread( "FlatLaf Laf change listener" ) {
|
||||
MulticastSocket socket;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try( MulticastSocket socket = new MulticastSocket( MULTICAST_PORT ) ) {
|
||||
this.socket = socket;
|
||||
socket.joinGroup( InetAddress.getByName( MULTICAST_ADDRESS ) );
|
||||
|
||||
byte[] buffer = new byte[Long.BYTES];
|
||||
for(;;) {
|
||||
DatagramPacket packet = new DatagramPacket( buffer, buffer.length );
|
||||
socket.receive( packet );
|
||||
|
||||
long id = ByteBuffer.wrap( buffer ).getLong();
|
||||
if( id == PROCESS_ID )
|
||||
continue; // was sent from this process
|
||||
|
||||
EventQueue.invokeLater( () -> {
|
||||
notifyEnabled = false;
|
||||
try {
|
||||
restoreLaf();
|
||||
FlatLaf.updateUI();
|
||||
} catch( Throwable ex ) {
|
||||
LoggingFacade.INSTANCE.logSevere( null, ex );
|
||||
} finally {
|
||||
notifyEnabled = true;
|
||||
}
|
||||
} );
|
||||
}
|
||||
} catch( IOException ex ) {
|
||||
if( ex instanceof SocketException && "Socket closed".equals( ex.getMessage() ) )
|
||||
return; // interrupted
|
||||
|
||||
LoggingFacade.INSTANCE.logSevere( null, ex );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interrupt() {
|
||||
super.interrupt();
|
||||
socket.close();
|
||||
}
|
||||
};
|
||||
thread.setDaemon( true );
|
||||
thread.start();
|
||||
}
|
||||
|
||||
private static void notifyLafChange() {
|
||||
if( thread == null || !notifyEnabled )
|
||||
return;
|
||||
|
||||
EventQueue.invokeLater( () -> {
|
||||
try( MulticastSocket socket = new MulticastSocket() ) {
|
||||
InetAddress address = InetAddress.getByName( MULTICAST_ADDRESS );
|
||||
byte[] buffer = ByteBuffer.wrap( new byte[Long.BYTES] ).putLong( PROCESS_ID ).array();
|
||||
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, address, MULTICAST_PORT );
|
||||
socket.send( packet );
|
||||
} catch( IOException ex ) {
|
||||
LoggingFacade.INSTANCE.logSevere( null, ex );
|
||||
}
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,24 +25,32 @@ class IJThemeInfo
|
||||
{
|
||||
final String name;
|
||||
final String resourceName;
|
||||
final boolean discontinued;
|
||||
final boolean dark;
|
||||
final String license;
|
||||
final String licenseFile;
|
||||
final String pluginUrl;
|
||||
final String sourceCodeUrl;
|
||||
final String sourceCodePath;
|
||||
final File themeFile;
|
||||
final String lafClassName;
|
||||
|
||||
IJThemeInfo( String name, String resourceName, boolean dark,
|
||||
IJThemeInfo( String name, boolean dark, String lafClassName ) {
|
||||
this( name, null, false, dark, null, null, null, null, null, null, lafClassName );
|
||||
}
|
||||
|
||||
IJThemeInfo( String name, String resourceName, boolean discontinued, boolean dark,
|
||||
String license, String licenseFile,
|
||||
String sourceCodeUrl, String sourceCodePath,
|
||||
String pluginUrl, String sourceCodeUrl, String sourceCodePath,
|
||||
File themeFile, String lafClassName )
|
||||
{
|
||||
this.name = name;
|
||||
this.resourceName = resourceName;
|
||||
this.discontinued = discontinued;
|
||||
this.dark = dark;
|
||||
this.license = license;
|
||||
this.licenseFile = licenseFile;
|
||||
this.pluginUrl = pluginUrl;
|
||||
this.sourceCodeUrl = sourceCodeUrl;
|
||||
this.sourceCodePath = sourceCodePath;
|
||||
this.themeFile = themeFile;
|
||||
|
||||
@@ -73,10 +73,12 @@ public class IJThemesClassGenerator
|
||||
name = name.substring( nameSep + 1 ).trim();
|
||||
|
||||
String themeName = name;
|
||||
if( "material-theme-ui-lite".equals( resourcePath ) )
|
||||
themeName += " (Material)";
|
||||
|
||||
StringBuilder buf = new StringBuilder();
|
||||
if( "material-theme-ui-lite".equals( resourcePath ) ) {
|
||||
themeName += " (Material)";
|
||||
buf.append( "MT" );
|
||||
}
|
||||
|
||||
for( String n : name.split( "[ \\-]" ) ) {
|
||||
if( n.length() == 0 || n.equals( "-" ) )
|
||||
continue;
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright 2025 FormDev Software GmbH
|
||||
*
|
||||
* Licensed 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
|
||||
*
|
||||
* https://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 com.formdev.flatlaf.demo.intellijthemes;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import javax.swing.LookAndFeel;
|
||||
import javax.swing.UIDefaults;
|
||||
import javax.swing.UIManager;
|
||||
import com.formdev.flatlaf.FlatLaf;
|
||||
import com.formdev.flatlaf.IntelliJTheme;
|
||||
import com.formdev.flatlaf.util.LoggingFacade;
|
||||
|
||||
/**
|
||||
* @author Karl Tauber
|
||||
*/
|
||||
public class IJThemesDump
|
||||
{
|
||||
// same as UIDefaultsLoader.KEY_PROPERTIES
|
||||
private static final String KEY_PROPERTIES = "FlatLaf.internal.properties";
|
||||
|
||||
public static void enablePropertiesRecording() {
|
||||
System.setProperty( KEY_PROPERTIES, "true" );
|
||||
}
|
||||
|
||||
public static void install() {
|
||||
enablePropertiesRecording();
|
||||
|
||||
UIManager.addPropertyChangeListener( e -> {
|
||||
if( "lookAndFeel".equals( e.getPropertyName() ) ) {
|
||||
LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
|
||||
if( lookAndFeel instanceof IntelliJTheme.ThemeLaf ) {
|
||||
IntelliJTheme theme = (lookAndFeel.getClass() == IntelliJTheme.ThemeLaf.class)
|
||||
? ((IntelliJTheme.ThemeLaf)lookAndFeel).getTheme()
|
||||
: null;
|
||||
String name = (theme != null) ? theme.name : lookAndFeel.getClass().getSimpleName();
|
||||
File dir = new File( "dumps/properties" );
|
||||
dumpProperties( dir, name, UIManager.getLookAndFeelDefaults() );
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
public static void dumpProperties( File dir, String name, UIDefaults defaults ) {
|
||||
String content = dumpPropertiesToString( defaults );
|
||||
if( content == null )
|
||||
return;
|
||||
|
||||
// write to file
|
||||
File file = new File( dir, name + ".properties" );
|
||||
file.getParentFile().mkdirs();
|
||||
try( Writer fileWriter = new OutputStreamWriter(
|
||||
new FileOutputStream( file ), StandardCharsets.UTF_8 ) )
|
||||
{
|
||||
fileWriter.write( content );
|
||||
} catch( IOException ex ) {
|
||||
LoggingFacade.INSTANCE.logSevere( null, ex );
|
||||
}
|
||||
}
|
||||
|
||||
public static String dumpPropertiesToString( UIDefaults defaults ) {
|
||||
Properties properties = (Properties) defaults.get( KEY_PROPERTIES );
|
||||
if( properties == null )
|
||||
return null;
|
||||
|
||||
// dump to string
|
||||
StringWriter stringWriter = new StringWriter( 100000 );
|
||||
PrintWriter out = new PrintWriter( stringWriter );
|
||||
out.printf( "@baseTheme = %s%n", FlatLaf.isLafDark() ? "dark" : "light" );
|
||||
AtomicReference<String> lastPrefix = new AtomicReference<>();
|
||||
properties.entrySet().stream()
|
||||
.sorted( (e1, e2) -> ((String)e1.getKey()).compareTo( (String) e2.getKey() ) )
|
||||
.forEach( e -> {
|
||||
String key = (String) e.getKey();
|
||||
String value = (String) e.getValue();
|
||||
String prefix = keyPrefix( key );
|
||||
if( !prefix.equals( lastPrefix.get() ) ) {
|
||||
lastPrefix.set( prefix );
|
||||
out.printf( "%n%n#---- %s ----%n%n", prefix );
|
||||
}
|
||||
|
||||
out.printf( "%-50s = %s%n", key, value.replace( ";", "; \\\n\t" ) );
|
||||
} );
|
||||
|
||||
return stringWriter.toString().replace( "\r", "" );
|
||||
}
|
||||
|
||||
private static String keyPrefix( String key ) {
|
||||
int dotIndex = key.indexOf( '.' );
|
||||
return (dotIndex > 0)
|
||||
? key.substring( 0, dotIndex )
|
||||
: key.endsWith( "UI" )
|
||||
? key.substring( 0, key.length() - 2 )
|
||||
: "";
|
||||
}
|
||||
}
|
||||
@@ -56,13 +56,17 @@ class IJThemesManager
|
||||
String resourceName = e.getKey();
|
||||
Map<String, String> value = (Map<String, String>) e.getValue();
|
||||
String name = value.get( "name" );
|
||||
boolean discontinued = Boolean.parseBoolean( value.get( "discontinued" ) );
|
||||
boolean dark = Boolean.parseBoolean( value.get( "dark" ) );
|
||||
String lafClassName = value.get( "lafClassName" );
|
||||
String license = value.get( "license" );
|
||||
String licenseFile = value.get( "licenseFile" );
|
||||
String pluginUrl = value.get( "pluginUrl" );
|
||||
String sourceCodeUrl = value.get( "sourceCodeUrl" );
|
||||
String sourceCodePath = value.get( "sourceCodePath" );
|
||||
|
||||
bundledThemes.add( new IJThemeInfo( name, resourceName, dark, license, licenseFile, sourceCodeUrl, sourceCodePath, null, null ) );
|
||||
bundledThemes.add( new IJThemeInfo( name, resourceName, discontinued, dark,
|
||||
license, licenseFile, pluginUrl, sourceCodeUrl, sourceCodePath, null, lafClassName ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +89,7 @@ class IJThemesManager
|
||||
String name = fname.endsWith( ".properties" )
|
||||
? StringUtils.removeTrailing( fname, ".properties" )
|
||||
: StringUtils.removeTrailing( fname, ".theme.json" );
|
||||
moreThemes.add( new IJThemeInfo( name, null, false, null, null, null, null, f, null ) );
|
||||
moreThemes.add( new IJThemeInfo( name, null, false, false, null, null, null, null, null, f, null ) );
|
||||
lastModifiedMap.put( f, f.lastModified() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,8 +33,6 @@ import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
@@ -59,7 +57,6 @@ import com.formdev.flatlaf.extras.FlatSVGIcon;
|
||||
import com.formdev.flatlaf.themes.*;
|
||||
import com.formdev.flatlaf.ui.FlatListUI;
|
||||
import com.formdev.flatlaf.util.LoggingFacade;
|
||||
import com.formdev.flatlaf.util.StringUtils;
|
||||
import net.miginfocom.swing.*;
|
||||
|
||||
/**
|
||||
@@ -82,14 +79,13 @@ public class IJThemesPanel
|
||||
};
|
||||
private Window window;
|
||||
|
||||
private File lastDirectory;
|
||||
private boolean isAdjustingThemesList;
|
||||
private long lastLafChangeTime = System.currentTimeMillis();
|
||||
|
||||
public IJThemesPanel() {
|
||||
initComponents();
|
||||
|
||||
saveButton.setEnabled( false );
|
||||
pluginButton.setEnabled( false );
|
||||
sourceCodeButton.setEnabled( false );
|
||||
|
||||
// create renderer
|
||||
@@ -144,7 +140,7 @@ public class IJThemesPanel
|
||||
private String buildToolTip( IJThemeInfo ti ) {
|
||||
if( ti.themeFile != null )
|
||||
return ti.themeFile.getPath();
|
||||
if( ti.resourceName == null )
|
||||
if( ti.license == null )
|
||||
return ti.name;
|
||||
|
||||
return "Name: " + ti.name
|
||||
@@ -179,18 +175,18 @@ public class IJThemesPanel
|
||||
// add core themes at beginning
|
||||
categories.put( themes.size(), "Core Themes" );
|
||||
if( showLight )
|
||||
themes.add( new IJThemeInfo( "FlatLaf Light", null, false, null, null, null, null, null, FlatLightLaf.class.getName() ) );
|
||||
themes.add( new IJThemeInfo( "FlatLaf Light", false, FlatLightLaf.class.getName() ) );
|
||||
if( showDark )
|
||||
themes.add( new IJThemeInfo( "FlatLaf Dark", null, true, null, null, null, null, null, FlatDarkLaf.class.getName() ) );
|
||||
themes.add( new IJThemeInfo( "FlatLaf Dark", true, FlatDarkLaf.class.getName() ) );
|
||||
if( showLight )
|
||||
themes.add( new IJThemeInfo( "FlatLaf IntelliJ", null, false, null, null, null, null, null, FlatIntelliJLaf.class.getName() ) );
|
||||
themes.add( new IJThemeInfo( "FlatLaf IntelliJ", false, FlatIntelliJLaf.class.getName() ) );
|
||||
if( showDark )
|
||||
themes.add( new IJThemeInfo( "FlatLaf Darcula", null, true, null, null, null, null, null, FlatDarculaLaf.class.getName() ) );
|
||||
themes.add( new IJThemeInfo( "FlatLaf Darcula", true, FlatDarculaLaf.class.getName() ) );
|
||||
|
||||
if( showLight )
|
||||
themes.add( new IJThemeInfo( "FlatLaf macOS Light", null, false, null, null, null, null, null, FlatMacLightLaf.class.getName() ) );
|
||||
themes.add( new IJThemeInfo( "FlatLaf macOS Light", false, FlatMacLightLaf.class.getName() ) );
|
||||
if( showDark )
|
||||
themes.add( new IJThemeInfo( "FlatLaf macOS Dark", null, true, null, null, null, null, null, FlatMacDarkLaf.class.getName() ) );
|
||||
themes.add( new IJThemeInfo( "FlatLaf macOS Dark", true, FlatMacDarkLaf.class.getName() ) );
|
||||
|
||||
// add themes from directory
|
||||
categories.put( themes.size(), "Current Directory" );
|
||||
@@ -238,7 +234,6 @@ public class IJThemesPanel
|
||||
for( int i = 0; i < themes.size(); i++ ) {
|
||||
IJThemeInfo theme = themes.get( i );
|
||||
if( oldSel.name.equals( theme.name ) &&
|
||||
Objects.equals( oldSel.resourceName, theme.resourceName ) &&
|
||||
Objects.equals( oldSel.themeFile, theme.themeFile ) &&
|
||||
Objects.equals( oldSel.lafClassName, theme.lafClassName ) )
|
||||
{
|
||||
@@ -274,28 +269,28 @@ public class IJThemesPanel
|
||||
|
||||
private void themesListValueChanged( ListSelectionEvent e ) {
|
||||
IJThemeInfo themeInfo = themesList.getSelectedValue();
|
||||
boolean bundledTheme = (themeInfo != null && themeInfo.resourceName != null);
|
||||
saveButton.setEnabled( bundledTheme );
|
||||
sourceCodeButton.setEnabled( bundledTheme );
|
||||
pluginButton.setEnabled( themeInfo != null && themeInfo.pluginUrl != null );
|
||||
sourceCodeButton.setEnabled( themeInfo != null && themeInfo.sourceCodePath != null );
|
||||
|
||||
if( e.getValueIsAdjusting() || isAdjustingThemesList )
|
||||
return;
|
||||
|
||||
EventQueue.invokeLater( () -> {
|
||||
setTheme( themeInfo );
|
||||
setTheme( themeInfo, false );
|
||||
} );
|
||||
}
|
||||
|
||||
private void setTheme( IJThemeInfo themeInfo ) {
|
||||
private void setTheme( IJThemeInfo themeInfo, boolean reload ) {
|
||||
if( themeInfo == null )
|
||||
return;
|
||||
|
||||
// change look and feel
|
||||
if( themeInfo.lafClassName != null ) {
|
||||
if( themeInfo.lafClassName.equals( UIManager.getLookAndFeel().getClass().getName() ) )
|
||||
if( !reload && themeInfo.lafClassName.equals( UIManager.getLookAndFeel().getClass().getName() ) )
|
||||
return;
|
||||
|
||||
FlatAnimatedLafChange.showSnapshot();
|
||||
if( !reload )
|
||||
FlatAnimatedLafChange.showSnapshot();
|
||||
|
||||
try {
|
||||
UIManager.setLookAndFeel( themeInfo.lafClassName );
|
||||
@@ -304,81 +299,59 @@ public class IJThemesPanel
|
||||
showInformationDialog( "Failed to create '" + themeInfo.lafClassName + "'.", ex );
|
||||
}
|
||||
} else if( themeInfo.themeFile != null ) {
|
||||
FlatAnimatedLafChange.showSnapshot();
|
||||
if( !reload )
|
||||
FlatAnimatedLafChange.showSnapshot();
|
||||
|
||||
try {
|
||||
if( themeInfo.themeFile.getName().endsWith( ".properties" ) ) {
|
||||
if( themeInfo.themeFile.getName().endsWith( ".properties" ) )
|
||||
FlatLaf.setup( new FlatPropertiesLaf( themeInfo.name, themeInfo.themeFile ) );
|
||||
} else
|
||||
else
|
||||
FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( themeInfo.themeFile ) ) );
|
||||
|
||||
DemoPrefs.getState().put( DemoPrefs.KEY_LAF_THEME, DemoPrefs.FILE_PREFIX + themeInfo.themeFile );
|
||||
DemoPrefs.getState().put( DemoPrefs.KEY_LAF_THEME_FILE, themeInfo.themeFile.getAbsolutePath() );
|
||||
} catch( Exception ex ) {
|
||||
LoggingFacade.INSTANCE.logSevere( null, ex );
|
||||
showInformationDialog( "Failed to load '" + themeInfo.themeFile + "'.", ex );
|
||||
}
|
||||
} else {
|
||||
FlatAnimatedLafChange.showSnapshot();
|
||||
|
||||
IntelliJTheme.setup( getClass().getResourceAsStream( THEMES_PACKAGE + themeInfo.resourceName ) );
|
||||
DemoPrefs.getState().put( DemoPrefs.KEY_LAF_THEME, DemoPrefs.RESOURCE_PREFIX + themeInfo.resourceName );
|
||||
JOptionPane.showMessageDialog( SwingUtilities.windowForComponent( this ),
|
||||
"Missing lafClassName for '" + themeInfo.name + "'",
|
||||
"FlatLaf", JOptionPane.INFORMATION_MESSAGE );
|
||||
return;
|
||||
}
|
||||
|
||||
// update all components
|
||||
FlatLaf.updateUI();
|
||||
FlatAnimatedLafChange.hideSnapshotWithAnimation();
|
||||
|
||||
if( !reload )
|
||||
FlatAnimatedLafChange.hideSnapshotWithAnimation();
|
||||
}
|
||||
|
||||
private void saveTheme() {
|
||||
private void browsePlugin() {
|
||||
IJThemeInfo themeInfo = themesList.getSelectedValue();
|
||||
if( themeInfo == null || themeInfo.resourceName == null )
|
||||
if( themeInfo == null || themeInfo.pluginUrl == null )
|
||||
return;
|
||||
|
||||
JFileChooser fileChooser = new JFileChooser();
|
||||
fileChooser.setSelectedFile( new File( lastDirectory, themeInfo.resourceName ) );
|
||||
if( fileChooser.showSaveDialog( SwingUtilities.windowForComponent( this ) ) != JFileChooser.APPROVE_OPTION )
|
||||
return;
|
||||
|
||||
File file = fileChooser.getSelectedFile();
|
||||
lastDirectory = file.getParentFile();
|
||||
|
||||
// save theme
|
||||
try {
|
||||
Files.copy( getClass().getResourceAsStream( THEMES_PACKAGE + themeInfo.resourceName ),
|
||||
file.toPath(), StandardCopyOption.REPLACE_EXISTING );
|
||||
} catch( IOException ex ) {
|
||||
showInformationDialog( "Failed to save theme to '" + file + "'.", ex );
|
||||
return;
|
||||
}
|
||||
|
||||
// save license
|
||||
if( themeInfo.licenseFile != null ) {
|
||||
try {
|
||||
File licenseFile = new File( file.getParentFile(),
|
||||
StringUtils.removeTrailing( file.getName(), ".theme.json" ) +
|
||||
themeInfo.licenseFile.substring( themeInfo.licenseFile.indexOf( '.' ) ) );
|
||||
Files.copy( getClass().getResourceAsStream( THEMES_PACKAGE + themeInfo.licenseFile ),
|
||||
licenseFile.toPath(), StandardCopyOption.REPLACE_EXISTING );
|
||||
} catch( IOException ex ) {
|
||||
showInformationDialog( "Failed to save theme license to '" + file + "'.", ex );
|
||||
return;
|
||||
}
|
||||
}
|
||||
browse( themeInfo.pluginUrl );
|
||||
}
|
||||
|
||||
private void browseSourceCode() {
|
||||
IJThemeInfo themeInfo = themesList.getSelectedValue();
|
||||
if( themeInfo == null || themeInfo.resourceName == null )
|
||||
if( themeInfo == null || themeInfo.sourceCodeUrl == null )
|
||||
return;
|
||||
|
||||
String themeUrl = themeInfo.sourceCodeUrl;
|
||||
if( themeInfo.sourceCodePath != null )
|
||||
themeUrl += '/' + themeInfo.sourceCodePath;
|
||||
themeUrl = themeUrl.replace( " ", "%20" );
|
||||
browse( themeUrl );
|
||||
}
|
||||
|
||||
private void browse( String url ) {
|
||||
url = url.replace( " ", "%20" );
|
||||
try {
|
||||
Desktop.getDesktop().browse( new URI( themeUrl ) );
|
||||
Desktop.getDesktop().browse( new URI( url ) );
|
||||
} catch( IOException | URISyntaxException ex ) {
|
||||
showInformationDialog( "Failed to browse '" + themeUrl + "'.", ex );
|
||||
showInformationDialog( "Failed to browse '" + url + "'.", ex );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,8 +387,11 @@ public class IJThemesPanel
|
||||
|
||||
private void lafChanged( PropertyChangeEvent e ) {
|
||||
if( "lookAndFeel".equals( e.getPropertyName() ) ) {
|
||||
selectedCurrentLookAndFeel();
|
||||
lastLafChangeTime = System.currentTimeMillis();
|
||||
// use invokeLater() because KEY_LAF_THEME_FILE is updated after this event
|
||||
EventQueue.invokeLater( () -> {
|
||||
selectedCurrentLookAndFeel();
|
||||
lastLafChangeTime = System.currentTimeMillis();
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -430,19 +406,19 @@ public class IJThemesPanel
|
||||
if( laf instanceof FlatLaf ) {
|
||||
List<Class<?>> lafClasses = new ArrayList<>();
|
||||
|
||||
// same as in UIDefaultsLoader.getLafClassesForDefaultsLoading()
|
||||
for( Class<?> lafClass = laf.getClass();
|
||||
FlatLaf.class.isAssignableFrom( lafClass );
|
||||
lafClass = lafClass.getSuperclass() )
|
||||
{
|
||||
lafClasses.add( 0, lafClass );
|
||||
}
|
||||
|
||||
// same as in IntelliJTheme.ThemeLaf.getLafClassesForDefaultsLoading()
|
||||
if( laf instanceof IntelliJTheme.ThemeLaf ) {
|
||||
boolean dark = ((FlatLaf)laf).isDark();
|
||||
lafClasses.add( FlatLaf.class );
|
||||
lafClasses.add( dark ? FlatDarkLaf.class : FlatLightLaf.class );
|
||||
lafClasses.add( dark ? FlatDarculaLaf.class : FlatIntelliJLaf.class );
|
||||
lafClasses.add( IntelliJTheme.ThemeLaf.class );
|
||||
} else {
|
||||
for( Class<?> lafClass = laf.getClass();
|
||||
FlatLaf.class.isAssignableFrom( lafClass );
|
||||
lafClass = lafClass.getSuperclass() )
|
||||
{
|
||||
lafClasses.add( 0, lafClass );
|
||||
}
|
||||
lafClasses.add( 1, dark ? FlatDarkLaf.class : FlatLightLaf.class );
|
||||
lafClasses.add( 2, dark ? FlatDarculaLaf.class : FlatIntelliJLaf.class );
|
||||
}
|
||||
|
||||
boolean reload = false;
|
||||
@@ -463,29 +439,25 @@ public class IJThemesPanel
|
||||
}
|
||||
|
||||
if( reload )
|
||||
setTheme( themesList.getSelectedValue() );
|
||||
setTheme( themesList.getSelectedValue(), true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void selectedCurrentLookAndFeel() {
|
||||
LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
|
||||
String theme = UIManager.getLookAndFeelDefaults().getString( DemoPrefs.THEME_UI_KEY );
|
||||
|
||||
if( theme == null && (lookAndFeel instanceof IntelliJTheme.ThemeLaf || lookAndFeel instanceof FlatPropertiesLaf) )
|
||||
return;
|
||||
|
||||
Predicate<IJThemeInfo> test;
|
||||
if( theme != null && theme.startsWith( DemoPrefs.RESOURCE_PREFIX ) ) {
|
||||
String resourceName = theme.substring( DemoPrefs.RESOURCE_PREFIX.length() );
|
||||
test = ti -> Objects.equals( ti.resourceName, resourceName );
|
||||
} else if( theme != null && theme.startsWith( DemoPrefs.FILE_PREFIX ) ) {
|
||||
File themeFile = new File( theme.substring( DemoPrefs.FILE_PREFIX.length() ) );
|
||||
String lafClassName = UIManager.getLookAndFeel().getClass().getName();
|
||||
if( FlatPropertiesLaf.class.getName().equals( lafClassName ) ||
|
||||
IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) )
|
||||
{
|
||||
String themeFileName = DemoPrefs.getState().get( DemoPrefs.KEY_LAF_THEME_FILE, "" );
|
||||
if( themeFileName == null )
|
||||
return;
|
||||
|
||||
File themeFile = new File( themeFileName );
|
||||
test = ti -> Objects.equals( ti.themeFile, themeFile );
|
||||
} else {
|
||||
String lafClassName = lookAndFeel.getClass().getName();
|
||||
} else
|
||||
test = ti -> Objects.equals( ti.lafClassName, lafClassName );
|
||||
}
|
||||
|
||||
int newSel = -1;
|
||||
for( int i = 0; i < themes.size(); i++ ) {
|
||||
@@ -512,7 +484,7 @@ public class IJThemesPanel
|
||||
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||
JLabel themesLabel = new JLabel();
|
||||
toolBar = new JToolBar();
|
||||
saveButton = new JButton();
|
||||
pluginButton = new JButton();
|
||||
sourceCodeButton = new JButton();
|
||||
filterComboBox = new JComboBox<>();
|
||||
themesScrollPane = new JScrollPane();
|
||||
@@ -535,11 +507,11 @@ public class IJThemesPanel
|
||||
{
|
||||
toolBar.setFloatable(false);
|
||||
|
||||
//---- saveButton ----
|
||||
saveButton.setToolTipText("Save .theme.json of selected IntelliJ theme to file.");
|
||||
saveButton.setIcon(new FlatSVGIcon("com/formdev/flatlaf/demo/icons/download.svg"));
|
||||
saveButton.addActionListener(e -> saveTheme());
|
||||
toolBar.add(saveButton);
|
||||
//---- pluginButton ----
|
||||
pluginButton.setToolTipText("Opens the IntelliJ plugin page of selected IntelliJ theme in the browser.");
|
||||
pluginButton.setIcon(new FlatSVGIcon("com/formdev/flatlaf/demo/icons/plugin.svg"));
|
||||
pluginButton.addActionListener(e -> browsePlugin());
|
||||
toolBar.add(pluginButton);
|
||||
|
||||
//---- sourceCodeButton ----
|
||||
sourceCodeButton.setToolTipText("Opens the source code repository of selected IntelliJ theme in the browser.");
|
||||
@@ -574,7 +546,7 @@ public class IJThemesPanel
|
||||
|
||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||
private JToolBar toolBar;
|
||||
private JButton saveButton;
|
||||
private JButton pluginButton;
|
||||
private JButton sourceCodeButton;
|
||||
private JComboBox<String> filterComboBox;
|
||||
private JScrollPane themesScrollPane;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
JFDML JFormDesigner: "8.1.0.0.283" Java: "19.0.2" encoding: "UTF-8"
|
||||
JFDML JFormDesigner: "8.3" encoding: "UTF-8"
|
||||
|
||||
new FormModel {
|
||||
contentType: "form/swing"
|
||||
@@ -22,10 +22,10 @@ new FormModel {
|
||||
name: "toolBar"
|
||||
"floatable": false
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "saveButton"
|
||||
"toolTipText": "Save .theme.json of selected IntelliJ theme to file."
|
||||
"icon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/demo/icons/download.svg" )
|
||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "saveTheme", false ) )
|
||||
name: "pluginButton"
|
||||
"toolTipText": "Opens the IntelliJ plugin page of selected IntelliJ theme in the browser."
|
||||
"icon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/demo/icons/plugin.svg" )
|
||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "browsePlugin", false ) )
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "sourceCodeButton"
|
||||
|
||||
@@ -38,6 +38,9 @@ public class IJThemesUpdater
|
||||
themesManager.loadBundledThemes();
|
||||
|
||||
for( IJThemeInfo ti : themesManager.bundledThemes ) {
|
||||
if( ti.discontinued )
|
||||
continue;
|
||||
|
||||
if( ti.sourceCodeUrl == null || ti.sourceCodePath == null ) {
|
||||
System.out.println( " " + ti.name + " NOT downloaded. Needs manual update from release on JetBrains Plugin portal." );
|
||||
continue;
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<!-- Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<polygon fill="#6E6E6E" points="9 7 12 7 8 11 4 7 7 7 7 2 9 2" transform="matrix(-1 0 0 1 16 0)"/>
|
||||
<rect width="12" height="2" x="2" y="12" fill="#6E6E6E"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 448 B |
@@ -0,0 +1,4 @@
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 4H7C5.34315 4 4 5.34315 4 7V9C4 10.6569 5.34315 12 7 12H11V11V10V6V5V4ZM12 5V4C12 3.44772 11.5523 3 11 3H7C5.13616 3 3.57006 4.27477 3.12602 6H1C0.447715 6 0 6.44772 0 7V9C0 9.55228 0.447715 10 1 10H3.12602C3.57006 11.7252 5.13616 13 7 13H11C11.5523 13 12 12.5523 12 12V11H15.5C15.7761 11 16 10.7761 16 10.5C16 10.2239 15.7761 10 15.5 10H12V6H15.5C15.7761 6 16 5.77614 16 5.5C16 5.22386 15.7761 5 15.5 5H12ZM3 7V9H1V7L3 7Z" fill="#6C707E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 724 B |
@@ -0,0 +1,4 @@
|
||||
<!-- Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 4H7C5.34315 4 4 5.34315 4 7V9C4 10.6569 5.34315 12 7 12H11V11V10V6V5V4ZM12 5V4C12 3.44772 11.5523 3 11 3H7C5.13616 3 3.57006 4.27477 3.12602 6H1C0.447715 6 0 6.44772 0 7V9C0 9.55228 0.447715 10 1 10H3.12602C3.57006 11.7252 5.13616 13 7 13H11C11.5523 13 12 12.5523 12 12V11H15.5C15.7761 11 16 10.7761 16 10.5C16 10.2239 15.7761 10 15.5 10H12V6H15.5C15.7761 6 16 5.77614 16 5.5C16 5.22386 15.7761 5 15.5 5H12ZM3 7V9H1V7L3 7Z" fill="#CED0D6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 724 B |
@@ -1,186 +1,213 @@
|
||||
{
|
||||
"arc-theme.theme.json": {
|
||||
"name": "Arc",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "arc-themes.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12451-arc-theme",
|
||||
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
|
||||
"sourceCodePath": "blob/master/arc-theme-idea-light/resources/arc-theme.theme.json"
|
||||
},
|
||||
"arc-theme-orange.theme.json": {
|
||||
"name": "Arc - Orange",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcOrangeIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "arc-themes.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12451-arc-theme",
|
||||
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
|
||||
"sourceCodePath": "blob/master/arc-theme-idea-light/resources/arc-theme-orange.theme.json"
|
||||
},
|
||||
"arc_theme_dark.theme.json": {
|
||||
"name": "Arc Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "arc-themes.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/15175-arc-theme-dark",
|
||||
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
|
||||
"sourceCodePath": "blob/master/arc-theme-idea-dark/resources/arc_theme_dark.theme.json"
|
||||
},
|
||||
"arc_theme_dark_orange.theme.json": {
|
||||
"name": "Arc Dark - Orange",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcDarkOrangeIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "arc-themes.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/15175-arc-theme-dark",
|
||||
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
|
||||
"sourceCodePath": "blob/master/arc-theme-idea-dark/resources/arc_theme_dark_orange.theme.json"
|
||||
},
|
||||
"Carbon.theme.json": {
|
||||
"name": "Carbon",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatCarbonIJTheme",
|
||||
"license": "Apache License 2.0",
|
||||
"licenseFile": "arc-themes.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12280-carbon",
|
||||
"sourceCodeUrl": "https://github.com/luisfer0793/theme-carbon",
|
||||
"sourceCodePath": "blob/master/resources/matte_carbon_basics.theme.json"
|
||||
},
|
||||
"Cobalt_2.theme.json": {
|
||||
"name": "Cobalt 2",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatCobalt2IJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Cobalt_2.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/10745-cobalt-2",
|
||||
"sourceCodeUrl": "https://github.com/ngehlert/cobalt2",
|
||||
"sourceCodePath": "blob/master/Cobalt2-UI-Theme/resources/Cobalt_2.theme.json"
|
||||
},
|
||||
"Cyan.theme.json": {
|
||||
"name": "Cyan light",
|
||||
"license": "MIT",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatCyanLightIJTheme",
|
||||
"licenseFile": "Cyan.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12102-cyan-light-theme",
|
||||
"sourceCodeUrl": "https://github.com/OlyaB/CyanTheme",
|
||||
"sourceCodePath": "blob/master/src/Cyan.theme.json"
|
||||
},
|
||||
"DarkFlatTheme.theme.json": {
|
||||
"name": "Dark Flat",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatDarkFlatIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "DarkFlatTheme.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12165-dark-flat-theme",
|
||||
"sourceCodeUrl": "https://github.com/nerzhulart/DarkFlatTheme",
|
||||
"sourceCodePath": "blob/master/src/DarkFlatTheme.theme.json"
|
||||
},
|
||||
"DarkPurple.theme.json": {
|
||||
"name": "Dark purple",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatDarkPurpleIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "DarkPurple.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12100-dark-purple-theme",
|
||||
"sourceCodeUrl": "https://github.com/OlyaB/DarkPurpleTheme",
|
||||
"sourceCodePath": "blob/master/src/DarkPurple.theme.json"
|
||||
},
|
||||
"Dracula.theme.json": {
|
||||
"name": "Dracula",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatDraculaIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Dracula.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12275-dracula-theme",
|
||||
"sourceCodeUrl": "https://github.com/dracula/jetbrains",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/Dracula.theme.json"
|
||||
},
|
||||
"Gradianto_dark_fuchsia.theme.json": {
|
||||
"name": "Gradianto Dark Fuchsia",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoDarkFuchsiaIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Gradianto.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto",
|
||||
"sourceCodeUrl": "https://github.com/thvardhan/Gradianto",
|
||||
"sourceCodePath": "blob/master/src/main/resources/Gradianto_dark_fuchsia.theme.json"
|
||||
},
|
||||
"Gradianto_deep_ocean.theme.json": {
|
||||
"name": "Gradianto Deep Ocean",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoDeepOceanIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Gradianto.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto",
|
||||
"sourceCodeUrl": "https://github.com/thvardhan/Gradianto",
|
||||
"sourceCodePath": "blob/master/src/main/resources/Gradianto_deep_ocean.theme.json"
|
||||
},
|
||||
"Gradianto_midnight_blue.theme.json": {
|
||||
"name": "Gradianto Midnight Blue",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoMidnightBlueIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Gradianto.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto",
|
||||
"sourceCodeUrl": "https://github.com/thvardhan/Gradianto",
|
||||
"sourceCodePath": "blob/master/src/main/resources/Gradianto_midnight_blue.theme.json"
|
||||
},
|
||||
"Gradianto_Nature_Green.theme.json": {
|
||||
"name": "Gradianto Nature Green",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoNatureGreenIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Gradianto.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto",
|
||||
"sourceCodeUrl": "https://github.com/thvardhan/Gradianto",
|
||||
"sourceCodePath": "blob/master/src/main/resources/Gradianto_Nature_Green.theme.json"
|
||||
},
|
||||
"Gray.theme.json": {
|
||||
"name": "Gray",
|
||||
"license": "MIT",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme",
|
||||
"licenseFile": "Gray.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12103-gray-theme",
|
||||
"sourceCodeUrl": "https://github.com/OlyaB/GreyTheme",
|
||||
"sourceCodePath": "blob/master/src/Gray.theme.json"
|
||||
},
|
||||
"gruvbox_dark_hard.theme.json": {
|
||||
"name": "Gruvbox Dark Hard",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "gruvbox_theme.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme",
|
||||
"sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme",
|
||||
"sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_hard.theme.json"
|
||||
},
|
||||
"gruvbox_dark_medium.theme.json": {
|
||||
"name": "Gruvbox Dark Medium",
|
||||
"dark": true,
|
||||
"license": "MIT",
|
||||
"licenseFile": "gruvbox_theme.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme",
|
||||
"sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_medium.theme.json"
|
||||
},
|
||||
"gruvbox_dark_soft.theme.json": {
|
||||
"name": "Gruvbox Dark Soft",
|
||||
"dark": true,
|
||||
"license": "MIT",
|
||||
"licenseFile": "gruvbox_theme.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme",
|
||||
"sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_soft.theme.json"
|
||||
},
|
||||
"HiberbeeDark.theme.json": {
|
||||
"name": "Hiberbee Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Hiberbee.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12118-hiberbee-theme",
|
||||
"sourceCodeUrl": "https://github.com/Hiberbee/themes",
|
||||
"sourceCodePath": "blob/latest/src/intellij/src/main/resources/themes/HiberbeeDark.theme.json"
|
||||
},
|
||||
"HighContrast.theme.json": {
|
||||
"name": "High contrast",
|
||||
"name": "High Contrast",
|
||||
"dark": true,
|
||||
"license": "MIT",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme",
|
||||
"license": "Apache License 2.0",
|
||||
"licenseFile": "HighContrast.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/OlyaB/HighContrastTheme",
|
||||
"sourceCodePath": "blob/master/src/HighContrast.theme.json"
|
||||
"sourceCodeUrl": "https://github.com/JetBrains/intellij-community",
|
||||
"sourceCodePath": "blob/master/platform/platform-resources/src/themes/HighContrast.theme.json"
|
||||
},
|
||||
"LightFlatTheme.theme.json": {
|
||||
"name": "Light Flat",
|
||||
"license": "MIT",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme",
|
||||
"licenseFile": "LightFlatTheme.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12169-light-flat-theme",
|
||||
"sourceCodeUrl": "https://github.com/nerzhulart/LightFlatTheme",
|
||||
"sourceCodePath": "blob/master/src/LightFlatTheme.theme.json"
|
||||
},
|
||||
"MaterialTheme.theme.json": {
|
||||
"name": "Material Design Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "MaterialTheme.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12134-material-design-dark-theme",
|
||||
"sourceCodeUrl": "https://github.com/xinkunZ/NotReallyMDTheme",
|
||||
"sourceCodePath": "blob/master/src/main/resources/MaterialTheme.theme.json"
|
||||
},
|
||||
"Monocai.theme.json": {
|
||||
"name": "Monocai",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Monocai.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/bmikaili/intellij-monocai-theme",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12163-monocai-color-theme",
|
||||
"sourceCodeUrl": "https://github.com/TheEggi/intellij-monocai-theme",
|
||||
"sourceCodePath": "blob/master/resources/Monocai.theme.json"
|
||||
},
|
||||
"Monokai_Pro.default.theme.json": {
|
||||
"name": "Monokai Pro",
|
||||
"discontinued": true,
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatMonokaiProIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Monokai_Pro.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/subtheme-dev/monokai-pro"
|
||||
@@ -188,22 +215,28 @@
|
||||
"nord.theme.json": {
|
||||
"name": "Nord",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatNordIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "nord.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/arcticicestudio/nord-jetbrains",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/10321-nord",
|
||||
"sourceCodeUrl": "https://github.com/nordtheme/jetbrains",
|
||||
"sourceCodePath": "blob/main/src/nord.theme.json"
|
||||
},
|
||||
"one_dark.theme.json": {
|
||||
"name": "One Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "one_dark.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/11938-one-dark-theme",
|
||||
"sourceCodeUrl": "https://github.com/one-dark/jetbrains-one-dark-theme",
|
||||
"sourceCodePath": "blob/master/buildSrc/templates/oneDark.template.theme.json"
|
||||
},
|
||||
"SolarizedDark.theme.json": {
|
||||
"name": "Solarized Dark",
|
||||
"discontinued": true,
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme",
|
||||
"license": "The Unlicense",
|
||||
"licenseFile": "Solarized.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/4lex4/intellij-platform-solarized",
|
||||
@@ -211,6 +244,8 @@
|
||||
},
|
||||
"SolarizedLight.theme.json": {
|
||||
"name": "Solarized Light",
|
||||
"discontinued": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatSolarizedLightIJTheme",
|
||||
"license": "The Unlicense",
|
||||
"licenseFile": "Solarized.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/4lex4/intellij-platform-solarized",
|
||||
@@ -219,24 +254,30 @@
|
||||
"Spacegray.theme.json": {
|
||||
"name": "Spacegray",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatSpacegrayIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Spacegray.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12122-spacegray-theme",
|
||||
"sourceCodeUrl": "https://github.com/mturlo/intellij-spacegray",
|
||||
"sourceCodePath": "blob/master/src/Spacegray.theme.json"
|
||||
},
|
||||
"vuesion_theme.theme.json": {
|
||||
"name": "Vuesion",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatVuesionIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "vuesion_theme.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/12226-vuesion-theme",
|
||||
"sourceCodeUrl": "https://github.com/vuesion/intellij-theme",
|
||||
"sourceCodePath": "blob/master/resources/META-INF/vuesion_theme.theme.json"
|
||||
},
|
||||
"Xcode-Dark.theme.json": {
|
||||
"name": "Xcode-Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.FlatXcodeDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "Xcode-Dark.LICENSE.txt",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/13106-xcode-dark-theme",
|
||||
"sourceCodeUrl": "https://github.com/antelle/intellij-xcode-dark-theme",
|
||||
"sourceCodePath": "blob/master/resources/Xcode-Dark.theme.json"
|
||||
},
|
||||
@@ -244,132 +285,166 @@
|
||||
"material-theme-ui-lite/Arc Dark.theme.json": {
|
||||
"name": "Material Theme UI Lite / Arc Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTArcDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Arc Dark.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Atom One Dark.theme.json": {
|
||||
"name": "Material Theme UI Lite / Atom One Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Atom One Dark.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Atom One Light.theme.json": {
|
||||
"name": "Material Theme UI Lite / Atom One Light",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneLightIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Atom One Light.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Dracula.theme.json": {
|
||||
"name": "Material Theme UI Lite / Dracula",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTDraculaIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Dracula.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/GitHub.theme.json": {
|
||||
"name": "Material Theme UI Lite / GitHub",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/GitHub.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/GitHub Dark.theme.json": {
|
||||
"name": "Material Theme UI Lite / GitHub Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/GitHub Dark.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Light Owl.theme.json": {
|
||||
"name": "Material Theme UI Lite / Light Owl",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTLightOwlIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Light Owl.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Material Darker.theme.json": {
|
||||
"name": "Material Theme UI Lite / Material Darker",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDarkerIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Darker.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Material Deep Ocean.theme.json": {
|
||||
"name": "Material Theme UI Lite / Material Deep Ocean",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDeepOceanIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Deep Ocean.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Material Lighter.theme.json": {
|
||||
"name": "Material Theme UI Lite / Material Lighter",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialLighterIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Lighter.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Material Oceanic.theme.json": {
|
||||
"name": "Material Theme UI Lite / Material Oceanic",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialOceanicIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Oceanic.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Material Palenight.theme.json": {
|
||||
"name": "Material Theme UI Lite / Material Palenight",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialPalenightIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Palenight.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Monokai Pro.theme.json": {
|
||||
"name": "Material Theme UI Lite / Monokai Pro",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMonokaiProIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Monokai Pro.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Moonlight.theme.json": {
|
||||
"name": "Material Theme UI Lite / Moonlight",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMoonlightIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Moonlight.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Night Owl.theme.json": {
|
||||
"name": "Material Theme UI Lite / Night Owl",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTNightOwlIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Night Owl.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Solarized Dark.theme.json": {
|
||||
"name": "Material Theme UI Lite / Solarized Dark",
|
||||
"dark": true,
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedDarkIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Solarized Dark.theme.json"
|
||||
},
|
||||
"material-theme-ui-lite/Solarized Light.theme.json": {
|
||||
"name": "Material Theme UI Lite / Solarized Light",
|
||||
"lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedLightIJTheme",
|
||||
"license": "MIT",
|
||||
"licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
|
||||
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
|
||||
"pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui",
|
||||
"sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite",
|
||||
"sourceCodePath": "blob/master/src/main/resources/themes/regular/Solarized Light.theme.json"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user