use of net.mcreator.ui.laf.SlickDarkScrollBarUI in project MCreator by MCreator.
the class ProcedureGUI method initGUI.
@Override
protected void initGUI() {
pane5.setOpaque(false);
localVarsList.setOpaque(false);
localVarsList.setCellRenderer(new LocalVariableListRenderer());
localVarsList.setBorder(BorderFactory.createEmptyBorder());
localVarsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JList<Dependency> dependenciesList = new JList<>(dependencies);
dependenciesList.setOpaque(false);
dependenciesList.setCellRenderer(new DependenciesListRenderer());
dependenciesList.setBorder(BorderFactory.createEmptyBorder());
dependenciesList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JList<Dependency> dependenciesExtTrigList = new JList<>(dependenciesExtTrigger);
dependenciesExtTrigList.setOpaque(false);
dependenciesExtTrigList.setCellRenderer(new DependenciesListRenderer());
dependenciesExtTrigList.setBorder(BorderFactory.createEmptyBorder());
dependenciesExtTrigList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
returnType.setVisible(false);
returnType.setOpaque(false);
returnType.add("Center", returnTypeLabel);
returnTypeLabel.setOpaque(true);
returnTypeLabel.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
returnTypeLabel.setBorder(BorderFactory.createEmptyBorder(0, 7, 9, 0));
ComponentUtils.deriveFont(returnType, 13);
JToolBar bar4 = new JToolBar();
bar4.setBorder(BorderFactory.createEmptyBorder(2, 2, 5, 0));
bar4.setFloatable(false);
bar4.setOpaque(false);
bar4.add(ComponentUtils.deriveFont(L10N.label("elementgui.procedure.return_type"), 13));
JPanel rettypeHeader = new JPanel(new GridLayout());
rettypeHeader.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
rettypeHeader.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
rettypeHeader.add(bar4);
returnType.add("North", rettypeHeader);
returnType.setOpaque(false);
returnType.setPreferredSize(new Dimension(150, 46));
returnType.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT")));
triggerInfoPanel.setOpaque(false);
triggerInfoPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
triggerInfoPanel.add("North", cancelableTriggerLabel);
triggerInfoPanel.add("Center", hasResultTriggerLabel);
triggerInfoPanel.add("South", sideTriggerLabel);
JPanel localVarsPan = new JPanel(new BorderLayout());
localVarsPan.setOpaque(false);
JScrollPane scrollPane = new JScrollPane(localVarsList);
scrollPane.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
scrollPane.getViewport().setOpaque(false);
scrollPane.getVerticalScrollBar().setUnitIncrement(11);
scrollPane.getVerticalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), scrollPane.getVerticalScrollBar()));
scrollPane.getVerticalScrollBar().setPreferredSize(new Dimension(8, 0));
scrollPane.getHorizontalScrollBar().setUnitIncrement(11);
scrollPane.getHorizontalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), scrollPane.getHorizontalScrollBar()));
scrollPane.getHorizontalScrollBar().setPreferredSize(new Dimension(0, 8));
scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
localVarsPan.add("Center", scrollPane);
JToolBar bar = new JToolBar();
bar.setBorder(BorderFactory.createEmptyBorder(2, 2, 5, 0));
bar.setFloatable(false);
bar.setOpaque(false);
bar.add(ComponentUtils.deriveFont(L10N.label("elementgui.procedure.local_variables"), 13));
JButton addvar = new JButton(UIRES.get("16px.add.gif"));
addvar.setContentAreaFilled(false);
addvar.setOpaque(false);
ComponentUtils.deriveFont(addvar, 11);
addvar.setBorder(BorderFactory.createEmptyBorder(1, 6, 0, 2));
bar.add(addvar);
JButton remvar = new JButton(UIRES.get("16px.delete.gif"));
remvar.setContentAreaFilled(false);
remvar.setOpaque(false);
ComponentUtils.deriveFont(remvar, 11);
remvar.setBorder(BorderFactory.createEmptyBorder(1, 1, 0, 1));
bar.add(remvar);
addvar.addActionListener(e -> {
VariableElement element = NewVariableDialog.showNewVariableDialog(mcreator, false, new OptionPaneValidatior() {
@Override
public Validator.ValidationResult validate(JComponent component) {
Validator validator = new JavaMemberNameValidator((VTextField) component, false, false);
String textname = Transliteration.transliterateString(((VTextField) component).getText());
for (int i = 0; i < localVars.getSize(); i++) {
String nameinrow = localVars.get(i).getName();
if (textname.equals(nameinrow))
return new Validator.ValidationResult(Validator.ValidationResultType.ERROR, L10N.t("common.name_already_exists"));
}
for (Dependency dependency : dependenciesArrayList) {
String nameinrow = dependency.getName();
if (textname.equals(nameinrow))
return new ValidationResult(ValidationResultType.ERROR, L10N.t("elementgui.procedure.name_already_exists_dep"));
}
return validator.validate();
}
}, VariableTypeLoader.INSTANCE.getLocalVariableTypes(mcreator.getGeneratorConfiguration()));
if (element != null) {
blocklyPanel.addLocalVariable(element.getName(), element.getType().getBlocklyVariableType());
localVars.addElement(element);
}
});
remvar.addActionListener(e -> {
VariableElement element = localVarsList.getSelectedValue();
if (element != null) {
int n = JOptionPane.showConfirmDialog(mcreator, L10N.t("elementgui.procedure.confirm_delete_var_msg"), L10N.t("common.confirmation"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (n == JOptionPane.YES_OPTION) {
blocklyPanel.removeLocalVariable(element.getName());
localVars.removeElement(element);
}
}
});
localVarsList.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (localVars.getSize() > 0 && e.getClickCount() == 2) {
VariableElement selectedVar = localVarsList.getSelectedValue();
VariableType type = selectedVar.getType();
String blockXml = "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"variables_" + (e.isAltDown() ? "set_" : "get_") + type.getName() + "\"><field name=\"VAR\">local:" + selectedVar.getName() + "</field></block></xml>";
blocklyPanel.addBlocksFromXML(blockXml);
}
}
});
dependenciesList.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (dependencies.getSize() > 0 && e.getClickCount() == 2) {
Dependency selectedDep = dependenciesList.getSelectedValue();
String blockXml = selectedDep.getDependencyBlockXml();
if (blockXml != null)
blocklyPanel.addBlocksFromXML(blockXml);
}
}
});
dependenciesExtTrigList.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (dependenciesExtTrigger.getSize() > 0 && e.getClickCount() == 2) {
Dependency selectedDep = dependenciesExtTrigList.getSelectedValue();
String blockXml = selectedDep.getDependencyBlockXml();
if (blockXml != null)
blocklyPanel.addBlocksFromXML(blockXml);
}
}
});
JPanel varHeader = new JPanel(new GridLayout());
varHeader.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
varHeader.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
varHeader.add(bar);
localVarsPan.add("North", varHeader);
localVarsPan.setOpaque(false);
localVarsPan.setPreferredSize(new Dimension(150, 0));
JPanel depsPan = new JPanel(new BorderLayout());
depsPan.setOpaque(false);
JToolBar bar2 = new JToolBar();
bar2.setBorder(BorderFactory.createEmptyBorder(2, 2, 5, 0));
bar2.setFloatable(false);
bar2.setOpaque(false);
bar2.add(ComponentUtils.deriveFont(L10N.label("elementgui.procedure.required_dependencies"), 13));
JPanel depsHeader = new JPanel(new BorderLayout());
depsHeader.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
depsHeader.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
depsHeader.add("North", bar2);
depsHeader.add("South", ComponentUtils.deriveFont(depsWarningLabel, 11));
depsPan.add("North", depsHeader);
depsPan.setOpaque(false);
depsPan.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT")));
JScrollPane scrollPaneDeps = new JScrollPane(dependenciesList);
scrollPaneDeps.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
scrollPaneDeps.getViewport().setOpaque(false);
scrollPaneDeps.getVerticalScrollBar().setUnitIncrement(11);
scrollPaneDeps.getVerticalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), scrollPaneDeps.getVerticalScrollBar()));
scrollPaneDeps.getVerticalScrollBar().setPreferredSize(new Dimension(8, 0));
scrollPaneDeps.getHorizontalScrollBar().setUnitIncrement(11);
scrollPaneDeps.getHorizontalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), scrollPaneDeps.getHorizontalScrollBar()));
scrollPaneDeps.getHorizontalScrollBar().setPreferredSize(new Dimension(0, 8));
scrollPaneDeps.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
depsPan.add("Center", scrollPaneDeps);
depsPan.setPreferredSize(new Dimension(150, 0));
JToolBar bar3 = new JToolBar();
bar3.setBorder(BorderFactory.createEmptyBorder(2, 2, 5, 0));
bar3.setFloatable(false);
bar3.setOpaque(false);
bar3.add(ComponentUtils.deriveFont(extDepsLab, 13));
JPanel extdepsHeader = new JPanel(new BorderLayout());
extdepsHeader.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
extdepsHeader.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
extdepsHeader.add("North", bar3);
triggerDepsPan.add("North", extdepsHeader);
triggerDepsPan.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
triggerDepsPan.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT")));
JScrollPane scrollPaneExtDeps = new JScrollPane(dependenciesExtTrigList);
scrollPaneExtDeps.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
scrollPaneExtDeps.getViewport().setOpaque(false);
scrollPaneExtDeps.getVerticalScrollBar().setUnitIncrement(11);
scrollPaneExtDeps.getVerticalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), scrollPaneExtDeps.getVerticalScrollBar()));
scrollPaneExtDeps.getVerticalScrollBar().setPreferredSize(new Dimension(8, 0));
scrollPaneExtDeps.getHorizontalScrollBar().setUnitIncrement(11);
scrollPaneExtDeps.getHorizontalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), scrollPaneExtDeps.getHorizontalScrollBar()));
scrollPaneExtDeps.getHorizontalScrollBar().setPreferredSize(new Dimension(0, 8));
scrollPaneExtDeps.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
triggerDepsPan.add("Center", PanelUtils.northAndCenterElement(triggerInfoPanel, PanelUtils.northAndCenterElement(ComponentUtils.deriveFont(L10N.label("elementgui.procedure.provided_dependencies"), 13), scrollPaneExtDeps, 0, 1), 0, 4));
triggerDepsPan.setPreferredSize(new Dimension(150, 0));
triggerDepsPan.setVisible(false);
JPanel eastPan = new JPanel();
eastPan.setLayout(new BoxLayout(eastPan, BoxLayout.PAGE_AXIS));
eastPan.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
eastPan.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, (Color) UIManager.get("MCreatorLAF.DARK_ACCENT")));
eastPan.add(localVarsPan);
eastPan.add(depsPan);
eastPan.add(triggerDepsPan);
pane5.add("East", PanelUtils.centerAndSouthElement(eastPan, returnType));
pane5.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
externalBlocks = BlocklyLoader.INSTANCE.getProcedureBlockLoader().getDefinedBlocks();
blocklyPanel = new BlocklyPanel(mcreator);
blocklyPanel.addTaskToRunAfterLoaded(() -> {
BlocklyLoader.INSTANCE.getProcedureBlockLoader().loadBlocksAndCategoriesInPanel(blocklyPanel, ExternalBlockLoader.ToolboxType.PROCEDURE);
BlocklyLoader.INSTANCE.getExternalTriggerLoader().getExternalTrigers().forEach(blocklyPanel.getJSBridge()::addExternalTrigger);
for (VariableElement variable : mcreator.getWorkspace().getVariableElements()) {
blocklyPanel.addGlobalVariable(variable.getName(), variable.getType().getBlocklyVariableType());
}
blocklyPanel.getJSBridge().setJavaScriptEventListener(() -> new Thread(this::regenerateProcedure).start());
if (!isEditingMode()) {
blocklyPanel.setXML("<xml><block type=\"event_trigger\" deletable=\"false\" x=\"40\" y=\"40\"></block></xml>");
}
});
pane5.add("Center", blocklyPanel);
pane5.add("South", compileNotesPanel);
compileNotesPanel.setPreferredSize(new Dimension(0, 70));
BlocklyEditorToolbar blocklyEditorToolbar = new BlocklyEditorToolbar(mcreator, BlocklyEditorType.PROCEDURE, blocklyPanel, this);
blocklyEditorToolbar.setTemplateLibButtonWidth(168);
pane5.add("North", blocklyEditorToolbar);
addPage(PanelUtils.gridElements(1, 1, pane5));
}
use of net.mcreator.ui.laf.SlickDarkScrollBarUI in project MCreator by MCreator.
the class WorkspacePanelLocalizations method reloadElements.
@Override
public void reloadElements() {
for (var al : del.getActionListeners()) del.removeActionListener(al);
for (var al : imp.getActionListeners()) imp.removeActionListener(al);
for (var al : exp.getActionListeners()) exp.removeActionListener(al);
pane.removeAll();
sorters = new ArrayList<>();
for (var entry : workspacePanel.getMcreator().getWorkspace().getLanguageMap().entrySet()) {
ConcurrentHashMap<String, String> entries = entry.getValue();
JTable elements = new JTable(new DefaultTableModel(new Object[] { L10N.t("workspace.localization.column_key"), "Localized text for " + entry.getKey() + (entry.getKey().equals("en_us") ? " - values in en_us might get overwritten!" : " - mappings can be edited here") }, 0));
final Font textFont = new Font("Sans-Serif", Font.PLAIN, 13);
elements.setFont(textFont);
elements.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
var c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setFont(textFont);
return c;
}
});
elements.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new JTextField()) {
final JComponent component = new JTextField();
{
component.setFont(textFont);
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex) {
((JTextField) component).setText((String) value);
return component;
}
@Override
public Object getCellEditorValue() {
return ((JTextField) component).getText();
}
});
TableRowSorter<TableModel> sorter = new TableRowSorter<>(elements.getModel());
elements.setRowSorter(sorter);
sorters.add(sorter);
elements.setBackground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
elements.setSelectionBackground((Color) UIManager.get("MCreatorLAF.BRIGHT_COLOR"));
elements.setForeground((Color) UIManager.get("MCreatorLAF.BRIGHT_COLOR"));
elements.setSelectionForeground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
elements.setBorder(BorderFactory.createEmptyBorder());
elements.setGridColor((Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"));
elements.setRowHeight(22);
elements.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
elements.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 13));
JTableHeader header = elements.getTableHeader();
header.setBackground((Color) UIManager.get("MCreatorLAF.MAIN_TINT"));
header.setForeground((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"));
DefaultTableModel model = (DefaultTableModel) elements.getModel();
for (Map.Entry<String, String> langs : entries.entrySet()) {
model.addRow(new String[] { langs.getKey(), langs.getValue() });
}
// save values on table edit, do it in another thread
// we add the listener after the values are inserted
elements.getModel().addTableModelListener(e -> new Thread(() -> {
if (e.getType() == TableModelEvent.UPDATE) {
ConcurrentHashMap<String, String> keyValueMap = new ConcurrentHashMap<>();
for (int i = 0; i < elements.getModel().getRowCount(); i++) {
keyValueMap.put((String) elements.getModel().getValueAt(i, 0), (String) elements.getModel().getValueAt(i, 1));
}
workspacePanel.getMcreator().getWorkspace().updateLanguage(entry.getKey(), keyValueMap);
}
}).start());
JScrollPane sp = new JScrollPane(elements);
sp.setOpaque(false);
sp.getViewport().setOpaque(false);
sp.getVerticalScrollBar().setUnitIncrement(11);
sp.getVerticalScrollBar().setUI(new SlickDarkScrollBarUI((Color) UIManager.get("MCreatorLAF.DARK_ACCENT"), (Color) UIManager.get("MCreatorLAF.LIGHT_ACCENT"), sp.getVerticalScrollBar()));
sp.getVerticalScrollBar().setPreferredSize(new Dimension(8, 0));
sp.setColumnHeaderView(null);
final int id = pane.getTabCount();
pane.addTab(entry.getKey(), null, sp);
JPanel tab = new JPanel(new FlowLayout(FlowLayout.LEFT, 1, 1));
tab.setOpaque(false);
JButton button = new JButton(UIRES.get("16px.delete.gif"));
button.setContentAreaFilled(false);
button.setBorder(BorderFactory.createEmptyBorder());
button.setMargin(new Insets(0, 0, 0, 0));
button.addActionListener(e -> {
int n = JOptionPane.showConfirmDialog(workspacePanel.getMcreator(), L10N.t("workspace.localization.confirm_delete_map"), L10N.t("common.confirmation"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null);
if (n == 0) {
workspacePanel.getMcreator().getWorkspace().removeLocalizationLanguage(entry.getKey());
reloadElements();
}
});
button.setEnabled(!entry.getKey().equals("en_us"));
String flagpath = "/flags/" + entry.getKey().split("_")[1].toUpperCase(Locale.ENGLISH) + ".png";
JLabel label = new JLabel(" " + entry.getKey() + " ");
ComponentUtils.deriveFont(label, 12);
try {
@SuppressWarnings("ConstantConditions") BufferedImage image = ImageIO.read(getClass().getResourceAsStream(flagpath));
label.setIcon(new ImageIcon(ImageUtils.crop(image, new Rectangle(1, 2, 14, 11))));
} catch (Exception ignored) {
// flag not found, ignore
}
label.setBorder(BorderFactory.createEmptyBorder());
tab.add(label);
tab.add(button);
pane.setTabComponentAt(id, tab);
del.addActionListener(e -> {
if (elements.getSelectedRow() == -1 || pane.getSelectedIndex() != id)
return;
String key = (String) elements.getValueAt(elements.getSelectedRow(), 0);
if (key != null) {
int n = JOptionPane.showConfirmDialog(workspacePanel.getMcreator(), L10N.t("workspace.localization.confirm_delete_entry"), L10N.t("common.confirmation"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (n == 0) {
Arrays.stream(elements.getSelectedRows()).mapToObj(el -> (String) elements.getValueAt(el, 0)).forEach(workspacePanel.getMcreator().getWorkspace()::removeLocalizationEntryByKey);
reloadElements();
}
}
});
exp.addActionListener(e -> {
if (pane.getSelectedIndex() != id)
return;
if (entry.getKey().equals("en_us")) {
JOptionPane.showMessageDialog(workspacePanel.getMcreator(), L10N.t("workspace.localization.confirm_export"), L10N.t("workspace.localization.export_translation"), JOptionPane.WARNING_MESSAGE);
return;
}
File expFile = FileDialogs.getSaveDialog(workspacePanel.getMcreator(), new String[] { ".csv" });
if (expFile != null) {
Map<String, String> en_us = workspacePanel.getMcreator().getWorkspace().getLanguageMap().get("en_us");
ByteArrayOutputStream csvResult = new ByteArrayOutputStream();
Writer outputWriter = new OutputStreamWriter(csvResult);
CsvWriter writer = new CsvWriter(outputWriter, new CsvWriterSettings());
writer.writeHeaders("Translation key (DON'T EDIT)", "TRANSLATION IN " + entry.getKey() + " - EDIT THIS COLUMN", "English text (DON'T EDIT - reference only)");
for (Map.Entry<String, String> langs : workspacePanel.getMcreator().getWorkspace().getLanguageMap().get(entry.getKey()).entrySet()) writer.writeRow(langs.getKey(), langs.getValue(), en_us.get(langs.getKey()));
writer.close();
FileIO.writeUTF8toFile("SEP=,\n" + csvResult.toString(StandardCharsets.UTF_8), expFile);
}
});
imp.addActionListener(e -> {
if (pane.getSelectedIndex() != id)
return;
if (entry.getKey().equals("en_us")) {
JOptionPane.showMessageDialog(workspacePanel.getMcreator(), L10N.t("workspace.localization.warning_export"), L10N.t("workspace.localization.export_translation"), JOptionPane.WARNING_MESSAGE);
return;
}
File impFile = FileDialogs.getOpenDialog(workspacePanel.getMcreator(), new String[] { ".csv" });
if (impFile != null) {
ConcurrentHashMap<String, String> en_us = workspacePanel.getMcreator().getWorkspace().getLanguageMap().get("en_us");
CsvParserSettings settings = new CsvParserSettings();
settings.setDelimiterDetectionEnabled(true);
CsvParser parser = new CsvParser(settings);
List<String[]> rows = parser.parseAll(impFile, StandardCharsets.UTF_8);
ConcurrentHashMap<String, String> keyValueMap = new ConcurrentHashMap<>();
for (String[] row : rows) {
if (row.length < 2)
continue;
String key = row[0];
String value = row[1];
if (en_us.containsKey(key) && value != null)
keyValueMap.put(key, value);
}
workspacePanel.getMcreator().getWorkspace().updateLanguage(entry.getKey(), keyValueMap);
SwingUtilities.invokeLater(this::reloadElements);
}
});
}
int lastid = pane.getTabCount();
pane.addTab("", null, null);
pane.setTabComponentAt(lastid, new JLabel(UIRES.get("16px.add.gif")));
pane.removeChangeListener(changeListener);
changeListener = e -> {
if (pane.getSelectedIndex() == lastid) {
pane.setSelectedIndex(0);
newLocalizationDialog();
}
};
pane.addChangeListener(changeListener);
refilterElements();
}
Aggregations