in languagetool-gui-commons/src/main/java/org/languagetool/gui/ConfigurationDialog.java [741:1018]
private JPanel getOfficeTechnicalElements() {
// technical settings
JPanel portPanel = new JPanel();
portPanel.setLayout(new GridBagLayout());
GridBagConstraints cons = new GridBagConstraints();
cons.insets = new Insets(0, SHIFT1, 0, 0);
cons.gridx = 0;
cons.gridy = 0;
cons.anchor = GridBagConstraints.WEST;
cons.fill = GridBagConstraints.NONE;
cons.weightx = 0.0f;
JCheckBox saveCacheBox = new JCheckBox(Tools.getLabel(messages.getString("guiSaveCacheToFile")));
JTextField otherServerNameField = new JTextField(config.getServerUrl() == null ? "" : config.getServerUrl(), 25);
otherServerNameField.setMinimumSize(new Dimension(100, 25));
otherServerNameField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
String serverName = otherServerNameField.getText();
serverName = serverName.trim();
if(serverName.isEmpty()) {
serverName = null;
}
if (config.isValidServerUrl(serverName)) {
otherServerNameField.setForeground(Color.BLACK);
config.setOtherServerUrl(serverName);
} else {
otherServerNameField.setForeground(Color.RED);
}
}
});
JCheckBox useServerBox = new JCheckBox(Tools.getLabel(messages.getString("guiUseServer")) + " ");
useServerBox.setSelected(config.useOtherServer());
useServerBox.addItemListener(e -> {
int select = JOptionPane.OK_OPTION;
boolean selected = useServerBox.isSelected();
if(selected && firstSelection) {
select = showRemoteServerHint(useServerBox, true);
firstSelection = false;
} else {
firstSelection = true;
}
if(select == JOptionPane.OK_OPTION) {
useServerBox.setSelected(selected);
config.setUseOtherServer(useServerBox.isSelected());
otherServerNameField.setEnabled(useServerBox.isSelected());
} else {
useServerBox.setSelected(false);
firstSelection = true;
}
});
JLabel usernameLabel = new JLabel(Tools.getLabel(messages.getString("guiPremiumUsername")));
JTextField usernameField = new JTextField(config.getRemoteUsername() == null ? "" : config.getRemoteUsername(), 25);
usernameField.setMinimumSize(new Dimension(100, 25));
usernameField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
String username = usernameField.getText();
username = username.trim();
if(username.isEmpty()) {
username = null;
}
if (username != null) {
config.setRemoteUsername(username);
}
}
});
JLabel apiKeyLabel = new JLabel(Tools.getLabel(messages.getString("guiPremiumApiKey")));
JTextField apiKeyField = new JTextField(config.getRemoteApiKey() == null ? "" : config.getRemoteApiKey(), 25);
apiKeyField.setMinimumSize(new Dimension(100, 25));
apiKeyField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
String apiKey = apiKeyField.getText();
apiKey = apiKey.trim();
if(apiKey.isEmpty()) {
apiKey = null;
}
if (apiKey != null) {
config.setRemoteApiKey(apiKey);
}
}
});
JCheckBox isPremiumBox = new JCheckBox(Tools.getLabel(messages.getString("guiUsePremiumAccount")) + " ");
isPremiumBox.setSelected(config.isPremium());
isPremiumBox.addItemListener(e -> {
boolean selected = isPremiumBox.isSelected();
config.setPremium(selected);
usernameLabel.setEnabled(selected);
usernameField.setEnabled(selected);
apiKeyLabel.setEnabled(selected);
apiKeyField.setEnabled(selected);
});
JRadioButton[] typeOfCheckButtons = new JRadioButton[3];
ButtonGroup typeOfCheckGroup = new ButtonGroup();
typeOfCheckButtons[0] = new JRadioButton(Tools.getLabel(messages.getString("guiOneThread")));
typeOfCheckButtons[0].addActionListener(e -> {
otherServerNameField.setEnabled(false);
useServerBox.setEnabled(false);
usernameLabel.setEnabled(false);
usernameField.setEnabled(false);
apiKeyLabel.setEnabled(false);
apiKeyField.setEnabled(false);
isPremiumBox.setEnabled(false);
config.setMultiThreadLO(false);
config.setRemoteCheck(false);
});
typeOfCheckButtons[1] = new JRadioButton(Tools.getLabel(messages.getString("guiIsMultiThread")));
typeOfCheckButtons[1].addActionListener(e -> {
otherServerNameField.setEnabled(false);
useServerBox.setEnabled(false);
usernameLabel.setEnabled(false);
usernameField.setEnabled(false);
apiKeyLabel.setEnabled(false);
apiKeyField.setEnabled(false);
isPremiumBox.setEnabled(false);
config.setMultiThreadLO(true);
config.setRemoteCheck(false);
});
typeOfCheckButtons[2] = new JRadioButton(Tools.getLabel(messages.getString("guiUseRemoteServer")));
typeOfCheckButtons[2].addActionListener(e -> {
int select = JOptionPane.OK_OPTION;
boolean selected = typeOfCheckButtons[2].isSelected();
if(selected && firstSelection) {
select = showRemoteServerHint(typeOfCheckButtons[2], false);
firstSelection = false;
} else {
firstSelection = true;
}
if(select == JOptionPane.OK_OPTION) {
// typeOfCheckButtons[2].setSelected(selected);
otherServerNameField.setEnabled(useServerBox.isSelected());
useServerBox.setEnabled(true);
usernameLabel.setEnabled(isPremiumBox.isSelected());
usernameField.setEnabled(isPremiumBox.isSelected());
apiKeyLabel.setEnabled(isPremiumBox.isSelected());
apiKeyField.setEnabled(isPremiumBox.isSelected());
isPremiumBox.setEnabled(true);
config.setMultiThreadLO(false);
config.setRemoteCheck(true);
} else {
if (config.isMultiThread()) {
typeOfCheckButtons[1].setSelected(true);
} else {
typeOfCheckButtons[0].setSelected(true);
}
firstSelection = true;
}
});
for (int i = 0; i < 3; i++) {
typeOfCheckGroup.add(typeOfCheckButtons[i]);
}
if (config.doRemoteCheck()) {
typeOfCheckButtons[2].setSelected(true);
otherServerNameField.setEnabled(useServerBox.isSelected());
useServerBox.setEnabled(true);
usernameLabel.setEnabled(isPremiumBox.isSelected());
usernameField.setEnabled(isPremiumBox.isSelected());
apiKeyLabel.setEnabled(isPremiumBox.isSelected());
apiKeyField.setEnabled(isPremiumBox.isSelected());
isPremiumBox.setEnabled(true);
config.setMultiThreadLO(false);
config.setRemoteCheck(true);
} else if (config.isMultiThread()) {
typeOfCheckButtons[1].setSelected(true);
otherServerNameField.setEnabled(false);
useServerBox.setEnabled(false);
usernameLabel.setEnabled(false);
usernameField.setEnabled(false);
apiKeyLabel.setEnabled(false);
apiKeyField.setEnabled(false);
isPremiumBox.setEnabled(false);
config.setMultiThreadLO(true);
config.setRemoteCheck(false);
} else {
typeOfCheckButtons[0].setSelected(true);
otherServerNameField.setEnabled(false);
useServerBox.setEnabled(false);
usernameLabel.setEnabled(false);
usernameField.setEnabled(false);
apiKeyLabel.setEnabled(false);
apiKeyField.setEnabled(false);
isPremiumBox.setEnabled(false);
config.setMultiThreadLO(false);
config.setRemoteCheck(false);
}
cons.gridy++;
cons.insets = new Insets(0, SHIFT2, 0, 0);
for (int i = 0; i < 3; i++) {
portPanel.add(typeOfCheckButtons[i], cons);
if (i < 3) cons.gridy++;
}
JPanel serverPanel = new JPanel();
serverPanel.setLayout(new GridBagLayout());
GridBagConstraints cons1 = new GridBagConstraints();
cons1.insets = new Insets(0, SHIFT2, 0, 0);
cons1.gridx = 0;
cons1.gridy = 0;
cons1.anchor = GridBagConstraints.WEST;
cons1.fill = GridBagConstraints.NONE;
cons1.weightx = 0.0f;
serverPanel.add(useServerBox, cons1);
cons1.gridx++;
serverPanel.add(otherServerNameField, cons1);
JLabel serverExampleLabel = new JLabel(" " + Tools.getLabel(messages.getString("guiUseServerExample")));
serverExampleLabel.setEnabled(false);
cons1.gridy++;
serverPanel.add(serverExampleLabel, cons1);
cons.gridx = 0;
cons.gridy++;
portPanel.add(serverPanel, cons);
JPanel premiumPanel = new JPanel();
premiumPanel.setLayout(new GridBagLayout());
cons1 = new GridBagConstraints();
cons1.insets = new Insets(0, SHIFT2, 0, 0);
cons1.gridx = 0;
cons1.gridy = 0;
cons1.anchor = GridBagConstraints.WEST;
cons1.fill = GridBagConstraints.NONE;
cons1.weightx = 0.0f;
premiumPanel.add(isPremiumBox, cons1);
cons1.insets = new Insets(0, SHIFT3, 0, 0);
cons1.gridy++;
premiumPanel.add(usernameLabel, cons1);
cons1.gridy++;
premiumPanel.add(usernameField, cons1);
cons1.gridy++;
premiumPanel.add(apiKeyLabel, cons1);
cons1.gridy++;
premiumPanel.add(apiKeyField, cons1);
cons.gridx = 0;
cons.gridy++;
portPanel.add(premiumPanel, cons);
saveCacheBox.setSelected(config.saveLoCache());
saveCacheBox.addItemListener(e1 -> {
config.setSaveLoCache(saveCacheBox.isSelected());
});
cons.insets = new Insets(0, SHIFT2, 0, 0);
cons.gridx = 0;
cons.gridy++;
portPanel.add(saveCacheBox, cons);
cons.gridy++;
portPanel.add(getNgramPanel(), cons);
return portPanel;
}